Цветовая схема
Alex Four
5 сент. 2024

📼 История борьбы с ютубом. Часть 2

Почему я решил ограничить для себя YouTube, можно прочитать в предыдущем посте. А сегодня я расскажу о втором "подходе к снаряду", который работал почти два года, о котором я рассказывал на собеседовании в Delivery Club и который в конце концов "убил" мой iPhone.

Как программист, я решил самостоятельно разработать решение для моей проблемы с YouTube.

Вообще, я очень люблю подкасты. Я слушал их до того, как это стало мейнстримом. У меня даже был свой подкаст лет 15 назад на ныне несуществующем rpod.ru.

Все подкасты я слушал на своём Android с программой Podcast Addict, которой пользовался почти 10 лет. Это настоящий комбайн, которому можно скормить любую RSS-ленту, даже сгенерированную YouTube (да, он так может). Проблема в том, что Podcast Addict не умеет проигрывать видео без перехода в приложение YouTube. Когда-то мог, но потом это ограничение добавили специально, чтобы Google не терял трафик.

Моя цель была в просмотре новых видео с избранных каналов без перехода на сайт. Задача — научить Podcast Addict загружать и проигрывать видео.

Я написал собственный сервис-прослойку для проксирования запросов на YouTube. Если пользователь запрашивал видео, сервис скачивал его и возвращал в виде файла. Если RSS-ленту, то шел за ней на YouTube и возвращал её, подменяя ссылки на свои.

Таким образом, приложение на телефоне обращалось к моему сервису, фактически к YouTube. Я добавлял интересные каналы и смотрел их без посещения YouTube и столкновения с лентой рекомендаций.

Еще одной фишкой Podcast Addict был открытый каталог RSS-лент. Любая добавленная лента по умолчанию публиковалась в каталоге и была доступна всем пользователям. Через некоторое время я заметил, что мои "обернутые" каналы смотрят не только я.

Я решил не блокировать доступ, а заняться оптимизацией.

При запросе к видео сервис сначала скачивал его, а потом отдавал скачанный файл назад, не разрывая соединение. Иногда соединение обрывалось само или клиентом, а сервис продолжал скачивать видео. Чтобы этого избежать, я внедрил систему кэширования, позволяющую узнавать статус скачивания и отдавать файл сразу, если он уже скачан.

Так как на сервере было всего 10 Гб места, я написал динамическую очистку скачанных файлов. Они могли лежать неделю или удаляться через пять часов.

Именно об этом пути улучшений и постоянных модификаций я рассказывал на собеседовании в DC. Рассказы про работу C++ библиотек внутри JS нас так увлекли, что заняли больше времени, чем разговоры про фронтенд.

Этим сервисом я пользовался почти два года, пока не купил iPhone. Оказалось, что, несмотря на то что концепцию подкастов придумали именно ребята из Apple, такого же удобного и всеядного RSS-клиента для iPhone нет. Я перестал пользоваться этим сервисом.

Потом начались массовые блокировки YouTube программ для скачивания видео. Мне было лень разбираться, как починить, и я его отключил.

Так закончилась, пожалуй, самая успешная моя попытка смотреть YouTube без захода на сайт.

В следующем посте я расскажу про текущую решения, которыми я пользуюсь сейчас.