Наткнулся на YouTube на топ-20 общественно-политических ютуб-каналов, результат за месяц. Подумал, такое легко сделать самому, заодно изучу API YT и проверю результаты. А готовый алгоритм можно применить и на другие тематические каналы.
Почитал статью на Хабр, посмотрел ролик на YouTube, полистал документацию и приступил писать код на коленке в jupyter notebook.
Первая проблема - как выбрать каналы, которые будут участвовать в рейтинге? Поиск по каналам по ключевым словам оказался бесполезным. Для отладки взял готовый список каналов из оригинального обзора. Для других тематик идея такая: ищем топ видео за месяц/неделю по заданным ключевым словам с сортировкой по количеству просмотров. Выделяем уникальные каналы. Проверяем глазками на корректность.
Далее проходимся по каналам, собираем все видео, которые были опубликованы в прошлом месяце. Затем по каждому видео собираем статистику просмотров. В оригинальном обзоре shorts учитываются с коэффициентом 1/10. В API нет признака видео shorts или нет. ChatGPT любезно подсказал определять по длине видео: меньше минуты - shorts. (По факту не так. На StackOverflow предлагают ходить по адресу https://www.youtube.com/shorts/<video_id> , если вернулся код 301 редирект, значит не shorts) Ок, вытаскиваем длину видео, определяем тип, коэффициент и взвешенное количество просмотров. Сортируем и получаем список. Сверяем с оригиналом.
Скрытый текст
В целом неплохо, место каналов более менее похоже. Но представьте, какого участникам рейтинга, если из-за ошибки кто-то попадет на 4, вместо 3 места. Нужен более однозначный алгоритм. Сравниваю количество просмотров - отклонения местами гигантские, например, 11 млн просмотров.
Время сделать шаг назад и вспомнить предположения. Я считал, что раз это новостные каналы, то интерес к видео будет не более недели. Кто будет смотреть вчерашние новости. Поэтому собрать статистику на 5й день следующего месяца будет вполне хорошим приближением. Но на каналах из списка есть не только новостные видео. Эти могут смотреть и через год.
Возвращаемся к решению. На ум приходит два варианта:
брать общее количество просмотров канала на начало месяца и брать разницу между месяцами. То есть инкрементное увеличение общего количества просмотров и есть количество просмотров канала за месяц.
Проблема - как вычленить shorts?
проходиться дополнительно по всем старым видео на канале и фиксировать их количество просмотров, а потом по каждому видео высчитывать увеличение.
Проблема - объемы и лимиты. На YT API есть лимит обращений в сутки в 10К. Причем поиск стоит 100 очков. По 25 каналам за последний месяц у меня набралось порядка 3 тысяч видео. Смотреть во всю глубину канала и собирать статистику выглядит дорого. Как я понял, именно так и делали в оригинальном обзоре.
Можно использовать комбинацию решений. Смотреть изменение числа просмотров канала, сравнить с суммой просмотров по видео и копать вглубь, пока эти величины не будут в рамках желаемой погрешности. Но такое решение кажется сложноватым для такой "простой" изначальной задачи. Для проверки этого подхода нужно иметь данные по каналу за прошлый месяц. Смогу проверить через месяц.
Для чего я описал этот случай. Мне он показался наглядным примером частых случаев, когда заказчик дает "простую" задачу, которая из-за каких-то деталей может иметь сложное техническое решение. Вспомнилось
Любая сложная задача имеет простое, легкое для понимания неправильное решение.
Хотя может я не до конца разобрался с API YouTube и есть элегантное решение? Если есть идеи, пишите в комментариях. Интересно ваше мнение.
P.S. код писал на коленке для себя. Но по рекомендациям вставлю ссылку на репозитарий.
Комментарии (48)
drmiltonfine
09.09.2024 10:46+25Забавно, что каналы почти все сплошная мусорка от крайне тупых пропагандистов, ориентированные на умственно-отсталый электорат
georgiy08
09.09.2024 10:46+4Забавно, что во многих странах люди не всегда доверяют правительственным каналам, и только в России ситуация кардинально наоборот.
1CHer
09.09.2024 10:46+18Я бы имея хоть капельку мозгов не доверял бы большинству каналов из списка. Столь отборной лапши ещё поискать нужно. Вообще топ непонятен абсолютно. Разве что этот топ активно раскручивается ботами. Вот на это бы проверить.
RKrop
09.09.2024 10:46+8А каким каналам, имея хоть каплю мозгов, посоветуете доверять? Неужели, первому каналу из телевизора?
Psychosynthesis
09.09.2024 10:46+2Если вам вариант только такой на ум приходит, то и правда лучше не доверять никаким каналам. А ещё лучше вам вообще интернетом не пользоваться, там плохого же наговорят кучу.
RKrop
09.09.2024 10:46+2Понятно же что в моем вопросе был элемент троллинга. А так то я этим вашим интернетом пользуюсь с 98го года, сейчас уже не смогу его бросить - привычка!
larasage
09.09.2024 10:46Доверять кому-то в области политики? Как по мне - довольно наивно. Зачем позволять вкладывать в свою голову чужую систему ценностей. Официоз я получаю из новостей на РБК. Взгляд "с той стороны" - 2-3 раза в неделю читая BBC (Есть обычай на Руси ночью слушать БиБиСи). Со всех сторон - пропаганда. Умышленная или невольная. Простой пример - что говорят про потери Украины прозападные каналы и что говорят про потери РФ - проофициальные каналы. И те и другие - молчат.
И выбирать себе в этой области источники информации только те, что транслируют взгляды, близкие тебе самому... Ну такое...RKrop
09.09.2024 10:46Ну существуют же какие-никакие стандарты журналистики. BBC действительно довольно близка к ним. РБК раньше читал, но в последнее время перестал: слишком много новостей стали подавать под одним углом. Из наших СМИ почитываю Коммерсант - он пока ещё не вызывает большого отвращения. Вообще, мне кажется, на чистые новости нет смысла время тратить - от новостного шума особо пользы нет, лучше уж какую-нибудь аналитику по новостным поводам (поэтому и Коммерсант, а не РБК).
gedo
09.09.2024 10:46Кроме стандартов, у ВВС есть ещё и госфинансирование. Журналистика может и есть, но независимая ли?
Опираться на чужую аналитику, буквально что бы кто-то подумал за тебя - ещё более сомнительная идея.
Bombus
09.09.2024 10:46Куда вы клоните понятно. Жалко что только задаете вопросы и пытаетесь одним только этим "набросить тень на плетень". Факты бы, конкретные примеры нарушения стандартов журналистики.
Так и науку тоже финансируют, они не на самообеспечении. Или это просто другое?
Правильно ли я понимаю, что так как все СМИ финансируются, то вы не смотрите/читаете никакие СМИ. Да и блогеров, чтобы вы не думали как они?
Вот в чем соглашусь - не буду опираться на вашу аналитику.larasage
09.09.2024 10:46Ну я уже писал про потери в текущем конфликте - BBC считают потери России, но не считают потери Украины. Что это как не принятие одной из сторон?
larasage
09.09.2024 10:46Если вы читаете аналитику с одной стороны - значит согласны принять точку зрения авторов.
Bombus
09.09.2024 10:46Прочитал контракт значит подписался?
Ну конечно же нет. Просто читаешь аргументы и доводы и потом делаешь выводы самостоятельно.И вобще нормально узнавать разные мнения, и уже потом делать выводы. И нормально отказываться от тех источников, которые являются пропагандой.
Juggernaut
09.09.2024 10:46+3Ну так представьте список каналов, соответствующих вашей капельке мозгов.
Bombus
09.09.2024 10:46Застеснялся "умственно-неотсталый" предоставить список "правильных" каналов. Тоже посмотрел бы, но нет.
fed_medved007
09.09.2024 10:46+2так альтернативные давно уже банан получили, поэтому на ютубе только мусорка осталась или нужно поискать.
Кстати довольно много набирают видео с переводом иностранных аналитиков и обозревателей, которые более менее говорят нормальные вещи.
Alexx5222
09.09.2024 10:46+7"Но представьте, какого участникам рейтинга..."
"Какого" чего? Х*я или числа?
georgiy08
09.09.2024 10:46"он некрасивый и непонятный" - в любом случае, фрагменты все равно стоит прикреплять. Даже если "забьют" за код - так сможете и улучшить код, и получить (скажем так) консультации.
AlexandrovRoman
09.09.2024 10:46+4Здорово что решили написать статью, но ощущается она незавершенной. И результат в виде кода всё же стоит по возможности прикреплять. Плюс, но авансом
legofrend Автор
09.09.2024 10:46спасибо :) обновил статью, добавил ссылку на репозитарий и в комм. выше
"ощущается она незавершенной" - согласен, решения пока не нашел. Для умного алгоритма нужны данные по каналам за прошлый период. Сейчас я сохранил их, в следующем месяце смогу проверить. Обновлю по результатам
PA_Marvin
09.09.2024 10:46+3Странно что в списке нет unian, кажется надо тоже добавить.
legofrend Автор
09.09.2024 10:46Это как раз первая проблема - как составить список каналов. Если вручную, то возникает много вопросов "почему Х не включен". Если запросить топ каналов в поиске YT, то там полная ерунда. Например хотел сделать рейтинг юморных каналов, вот что получаю таким способом. На 2 месте канал с 14 подписчиками :(
Так что в данном конкретном случае вопрос про unian надо адресовать автору оригинала. Я просто повторил %)
IceGerda
09.09.2024 10:46Я могу понять вражьи голоса, уровень съёмок и дикторов там очень высокий (не будем спорить про взгляды и навязывание) - но какие-то Швецы, Кацы. Это же унылый блоггинг -уныло говорящие головы
Grogcm20
09.09.2024 10:46Нужно добавить графы "левый / правый", "способ финансирования", "за войну / против войны / нейтральный".
А то "рейтинг" выглядит, как будто дождь самый лучший, но это только по просмотрам.
tambiet88
09.09.2024 10:46Следует внимательней читатать статью. Автор занимается числом просмотров, а не оценкой каналов.
legofrend Автор
09.09.2024 10:46За подобным анализом это к другим. Я хотел универсальный алгоритм для составления рейтинга каналов по каким-то объективным метрикам, типа просмотры, лайки, коменты, доля лайков.
Согласен, "лучший" и количество просмотров разные вещи
moscowman
09.09.2024 10:46Я не настолько силён в каналах. НО от Ходорковского я отписался довольно давно, смотрел его выборочно, как правило Асланяна. В начале был хорош.
Но потом и его понесло куда-то совсем не туда, такую дичь стал пороть, что смотреть его - свой холодильник не уважать.
Psychosynthesis
09.09.2024 10:46+1А зачем вообще считать шортсы? У них конверсия оклонулевая, там коэффициент должен быть 1/10000, можно просто выкинуть их из статы вообще без потери смысла.
Ivan22
09.09.2024 10:46+1ты статью читал? Автор не нашел 100% точного способа отличить шортс от нешортса в API
Psychosynthesis
09.09.2024 10:46Читал, там написано что их можно определить по длительности, что довольно очевидно и что он и сделал. На этом этапе их и нужно было удалить из статистики.
legofrend Автор
09.09.2024 10:46Коэффициент учета шортсов можно сделать параметром. В коде это легко скорректировать. А вот удалить совсем - это сделать менее универсальный алгоритм. Зачем? Если применять его потом для другой тематики каналов, например где будут только шортсы, то код будет бесполезен.
P.s. я ошибся с определением шортса. Обновил в статье. Надо ходить по адресу в youtube https://www.youtube.com/shorts/<video_id> , если вернулся код 301 редирект, значит не shorts. Так что все еще геморойнее %)
Viktoriatory
09.09.2024 10:46Панченко алгоритм игнорирует?
legofrend Автор
09.09.2024 10:46я для теста брал каналы как в оригинале. Но ради интереса добавлю ее, посмотрим
killyself
Мне кажется, что как раз шортсы и смотрят в первый месяц. Так что как вариант можно взять общий прирост просмотров, выкинуть просмотры только свежих шортсов и посмотреть что получится.
legofrend Автор
мне YT порой в шортсах показывает видео годовой давности. Так что кажется не очень надежный подход