Новость Все новости
6 февраля 2025 19:41
История в коде (как мы показывали трейлеры на Кинонавигаторе) Как известно, сейчас Youtube в России - заблокирован ( Поэтому все российские пользователи, которые не пользуются VPN при работе с нашим Кинонавигатором остались без трейлеров (все трейлеры у нас показывались с Youtube, и никаких альтернативных вариантов не предполагалось). Мы подумали и решили подключить возможность использования трейлеров с ВКонтакте (там уже есть практически все русифицированные трейлеры). Что надо было сделать, в принципе было понятно. И я засучил рукава и полез в js-код в Кинонавигаторе, отвечающий за трейлеры. Код оказался довольно коротким (~200 строк), но очень запутанным, с множеством исторических напластований и с большим количеством неиспользуемого функционала. В результате его оказалось проще переписать заново. Разбирая код, я вспомнил – как развивалась история с трейлерами на Кинонавигаторе, и она показалась мне очень поучительной. В этом маленьком кусочке кода, как в капле воды, отразилась история того, как IT-компании и политики портили жизнь разработчиков и пользователей на протяжении последних 5 лет. Итак – история. 1. В свое время у youtube была полезная функция - возможность встраивания в сторонние сайты плееров не для конкретного ролика с его уникальным ID, а для поискового запроса. В результате youtube сам формировал плей-лист, и открывал его в плеере, предоставляя возможность прямо там перебирать ролики. Когда мы запускали Кинонавигатор (февраль 2019), мы использовали именно эту функцию - при генерации странички подставляли в src фрейма с трейлером поисковый запрос типа "фильм {Название} {год} трейлер". Т.е. никакого кода не было вообще. И, в общем, все более или менее работало. 2. Пока не начались жалобы пользователей. В окошке плеера первым часто показывалась какая-то фигня, а нужные трейлеры зачастую не находились даже долгим листанием плей-листа (ну и не все догадывались что его можно листать). Выяснилось, что Youtube ищет довольно странно и весьма чувствителен к порядку слов в запросе. Причем для разных фильмов – по-разному. Что бы он сразу выдал то, что надо - иногда лучше было слово «трейлер» написать впереди, иногда лучше было не писать год... Вот тут началось программирование. Мы решили, что будем генерировать пачку возможных поисковых запросов для русских и английских названий, и позволять пользователям голосовать и перебирать их листанием (не тот трейлер / тот трейлер), а порядок показа выстраивать в соответствии с голосованием. Сделали, и оно работало год. Пока вдруг не перестало работать. Трейлеры перестали показываться совсем. 3. Выяснилось, что Гугль просто закрыл эту опцию (поисковый запрос во фрейме youtube:). И теперь, чтобы получать список роликов по запросу, надо использовать Youtube-API. А для этого надо зарегистрироваться в google developers console, получить одобрение, создать проект, получить ключ и тогда можно будет пользоваться API. В общем, я потратил пару дней, чтобы через все это прорваться и дописать код. При этом у него сильно изменилась логика. Появился смысл сохранять в базе полученные через API идентификаторы видео, и показывать их, прежде чем лезть с запросами к API. Голосование и листание осталось, но теперь оно стало относиться не к поисковому запросу, а к конкретному ролику. Запросы, впрочем, тоже перебирать надо было, так как не любые запросы вообще давали релевантный результат - с появлением API Youtube не поумнел... Сделал, запустил. Заработало. И работало ровно полчаса. 4. Выяснилось, что в бесплатном API у Гугля есть лимит на этот запрос – чего-то типа не больше 100 штук в день. И как лимит заканчивался (а закончился он быстро) - все переставало работать на сутки.
Ну хрен с ним, подумал я. В конце концов, за несколько месяцев для большинства популярных фильмов трейлеры накачаются. Но тут мы сделали возможность ручного добавления трейлеров. И пользователи начала их довольно активно добавлять.
5. Параллельно я отправил запрос в Гугл на увеличение бесплатного лимита (такая возможность есть, как выяснилось). В ответ мне прислали Application Form на 5 листах с кучей дурацких вопросов. Я на них ответил как смог, и отправил. Через неделю мне пришел ответ - типа "мы все таки не поняли, что у вас за проект" и новая Application Form – уже на 8 листах, с неделей на ответ.
Тут я плюнул, и понял, что бюрократию Гугл не прошибешь. Надо искать другой выход. А бюрократия Гугл, как выяснилось, плюнула на меня. Спустя месяц я получил письмо, что поскольку я не ответил и проект мой ваще какой-то непонятный, то бесплатный лимит мне урезают. 6. Я тогда игрался с интегратором пиратских плееров yohoho - чтобы обеспечить себе и близким возможность просмотра фильмов непосредственно на Кинонавигаторе. Для всех открывать это было стремно, можно было попасть под раздачу. Я и так регулярно получал грозные письма от правообладателей по поводу ссылок на пиратки в окошке «Смотреть». А у yohoho был режим, когда запрашивались не фильмы, а трейлеры. И я подключил показ трейлера с yohoho, если трейлеров не было среди сохраненных, и запрос по API к Youtube не сработал.
Стало лучше. Почти совсем хорошо. 7. Пока yohoho не заблочил Роскомнадзор. Он еще некоторое время скитался по разным доменам (и я все это отслеживал) пока не сдох окончательно. Стало хуже, но к тому времени пользователи уже наладились добавлять трейлеры, так что было терпимо. 8. А тут наступил 2022 год.
И когда через какое-то время API Youtube перестал работать, выяснилось, что ключ для запросов к API надо регулярно продлевать, а Гугль заблокировал вход в developers console для российских IP (причем как-то так, что даже VPN не помогал). В результате вся моя хитрая техника добычи трейлеров отвалилась. Осталось только пользовательское добавление. Но большинство популярных фильмов к тому времени уже получили трейлеры, так что как то с этим можно было жить. 9. Но были не только плохие новости, но и хорошие. Я подключился к (неофициальному) API Кинопоиска для обновления данных, и там обнаружилось, что Кинопоиск знает кучу трейлеров (тоже с youtube), и API их отдает. Я начал их брать оттуда, и стало совсем хорошо. 9. Пока Youtube не заблокировали. И тут я занялся тем, что собственно, написано в начале - подключением плеера с ВК. Пришлось довольно много чего добавить и в бэке и на фронте. Логику показа трейлеров я заложил простую - пользователям с российским ip показывать только VK-трейлеры (страну по ip я уже определять умел), а с нероссийским - все. Потому что если у тебя российский IP - ты не увидишь Youtube, а если ходишь через VPN - то и IP будет не российский. Выложил, протестировал, и кинул клич по активным пользователям - с просьбой добавлять трейлеры с ВК там, где их нет. Пользователи откликнулись. И не только добавлением трейлеров. 10. В первые же сутки пошли жалобы от людей, которые до этого видели трейлеры, а теперь – нет. Оказалась, что заложенная логика – неправильная. Потому что существуют прилады типа Юбуст, которые, не являясь VPN, позволяют полноценно смотреть Youtube. IP при этом остается российским. И пользуется ими уже много кто (только у Юбуст больше 1млн установок). Это тоже пришлось учесть - оставлять youtube-трейлеры и для российских пользователей, но показывать их в ротации после ВК-шных. Еще выяснилось, что по непонятной причине ВК не все ролики дает встраивать. Т.е. встраивать он их дает, но показывает окно с ошибкой. В результате понадобился учет - кто именно добавлял тот или иной трейлер, и функция для удаления, доступная тому, кто добавлял. А еще выяснилось, что из каких-то стран, в частности Латвии и Украины ВК недоступен. Но с этим я пока ничего не делал. P.S. Я сильно подозреваю, что история на этом не закончилась. Потому что ни IT-компании, ни тем более политики, очевидно, не собираются останавливаться в своем главном деле – усложнять людям жизнь…
Ну хрен с ним, подумал я. В конце концов, за несколько месяцев для большинства популярных фильмов трейлеры накачаются. Но тут мы сделали возможность ручного добавления трейлеров. И пользователи начала их довольно активно добавлять.
5. Параллельно я отправил запрос в Гугл на увеличение бесплатного лимита (такая возможность есть, как выяснилось). В ответ мне прислали Application Form на 5 листах с кучей дурацких вопросов. Я на них ответил как смог, и отправил. Через неделю мне пришел ответ - типа "мы все таки не поняли, что у вас за проект" и новая Application Form – уже на 8 листах, с неделей на ответ.
Тут я плюнул, и понял, что бюрократию Гугл не прошибешь. Надо искать другой выход. А бюрократия Гугл, как выяснилось, плюнула на меня. Спустя месяц я получил письмо, что поскольку я не ответил и проект мой ваще какой-то непонятный, то бесплатный лимит мне урезают. 6. Я тогда игрался с интегратором пиратских плееров yohoho - чтобы обеспечить себе и близким возможность просмотра фильмов непосредственно на Кинонавигаторе. Для всех открывать это было стремно, можно было попасть под раздачу. Я и так регулярно получал грозные письма от правообладателей по поводу ссылок на пиратки в окошке «Смотреть». А у yohoho был режим, когда запрашивались не фильмы, а трейлеры. И я подключил показ трейлера с yohoho, если трейлеров не было среди сохраненных, и запрос по API к Youtube не сработал.
Стало лучше. Почти совсем хорошо. 7. Пока yohoho не заблочил Роскомнадзор. Он еще некоторое время скитался по разным доменам (и я все это отслеживал) пока не сдох окончательно. Стало хуже, но к тому времени пользователи уже наладились добавлять трейлеры, так что было терпимо. 8. А тут наступил 2022 год.
И когда через какое-то время API Youtube перестал работать, выяснилось, что ключ для запросов к API надо регулярно продлевать, а Гугль заблокировал вход в developers console для российских IP (причем как-то так, что даже VPN не помогал). В результате вся моя хитрая техника добычи трейлеров отвалилась. Осталось только пользовательское добавление. Но большинство популярных фильмов к тому времени уже получили трейлеры, так что как то с этим можно было жить. 9. Но были не только плохие новости, но и хорошие. Я подключился к (неофициальному) API Кинопоиска для обновления данных, и там обнаружилось, что Кинопоиск знает кучу трейлеров (тоже с youtube), и API их отдает. Я начал их брать оттуда, и стало совсем хорошо. 9. Пока Youtube не заблокировали. И тут я занялся тем, что собственно, написано в начале - подключением плеера с ВК. Пришлось довольно много чего добавить и в бэке и на фронте. Логику показа трейлеров я заложил простую - пользователям с российским ip показывать только VK-трейлеры (страну по ip я уже определять умел), а с нероссийским - все. Потому что если у тебя российский IP - ты не увидишь Youtube, а если ходишь через VPN - то и IP будет не российский. Выложил, протестировал, и кинул клич по активным пользователям - с просьбой добавлять трейлеры с ВК там, где их нет. Пользователи откликнулись. И не только добавлением трейлеров. 10. В первые же сутки пошли жалобы от людей, которые до этого видели трейлеры, а теперь – нет. Оказалась, что заложенная логика – неправильная. Потому что существуют прилады типа Юбуст, которые, не являясь VPN, позволяют полноценно смотреть Youtube. IP при этом остается российским. И пользуется ими уже много кто (только у Юбуст больше 1млн установок). Это тоже пришлось учесть - оставлять youtube-трейлеры и для российских пользователей, но показывать их в ротации после ВК-шных. Еще выяснилось, что по непонятной причине ВК не все ролики дает встраивать. Т.е. встраивать он их дает, но показывает окно с ошибкой. В результате понадобился учет - кто именно добавлял тот или иной трейлер, и функция для удаления, доступная тому, кто добавлял. А еще выяснилось, что из каких-то стран, в частности Латвии и Украины ВК недоступен. Но с этим я пока ничего не делал. P.S. Я сильно подозреваю, что история на этом не закончилась. Потому что ни IT-компании, ни тем более политики, очевидно, не собираются останавливаться в своем главном деле – усложнять людям жизнь…
