Как лучше всего выбирать все каналы YouTube и их статистику (ежедневно) - PullRequest
0 голосов
/ 02 мая 2019

Я хочу получить все каналы с YouTube и их ежедневную статистику.

Когда я исследовал этот подход, я должен следовать:

  1. Получить все каналы и сохранить, если я не сохранял ранее с этим API: ->

    Search.list с такими параметрами: type=channel, publishedAfter=yesterday's 00:00, publishedBefore=Today 00:00, maxResults 50, order=Date. Я передам 24-часовой диапазон в publishedAfter, publishedBefore (например, от 00:00 до следующего дня 00:00), чтобы я мог получить максимальное количество результатов, поскольку API-интерфейсы YouTube имеют некоторые ошибки / ограничения в разбивке на страницы. Они дают максимум 500 результатов за удар. Я пробовал с датой 2019 года для publishedBefore и датой 2005 года для publishedAfter, но у меня было только около 400 каналов. Вот почему я прохожу небольшой круг 24 часа.

  2. После извлечения всех каналов я получу общедоступную статистику для этого канала с помощью этого API. Channels.list

Я создам задание cron, которое будет выполнять эти шаги каждый день в какое-то время. Может быть, в 00:00. А затем я вычислю статистику текущего дня с некоторым расчетом со статистикой предыдущего дня.

, например

10th April views = 11 April 00:00 views - 10 April 00:00 Views

Мои запросы:

Есть ли другой подход, которым я могу следовать?

Есть ли проблема с вышеуказанным подходом?

1 Ответ

1 голос
/ 02 мая 2019

Это не будет работать из-за ограничений API.

В принципе, ваша идея в порядке. Я думаю, что это не сработает из-за определенных ограничений.

Если вы считаете, этот сайт - у YouTube более 23 миллионов каналов (по состоянию на декабрь 2018 года).

YouTube имеет некоторые ограничения на запросы, из документации YouTube:

Проекты, в которых включен API данных YouTube, имеют квоту по умолчанию выделение 10 тысяч единиц в сутки , сумма, достаточная для Подавляющее большинство наших пользователей API. Квота по умолчанию, которая может быть изменено, помогает нам оптимизировать распределение квот и инфраструктура таким образом, чтобы это было более значимым для наших пользователей API. Вы Вы можете увидеть использование квоты на вкладке Использование API в Google. Консоль разработчика.

Предполагая, что у вас включена эта функция, похоже, что вам выделено 10 тыс. Единиц в день, и каждый из ваших поисковых запросов стоит 100 единиц .

Это означает, что вы можете вызывать API поиска 100 раз (исчерпав свои единицы перед вызовом API каналов) - что с флагом максимального результата (50 MAX) должно давать вам 5K результатов в день.

Если это число больше, чем у людей, которые публикуют каждый день в течение этого 24-часового промежутка времени, у вас все будет хорошо, и в конечном итоге вы можете получить некоторые важные данные. Но вы не можете получить все данные через вызовы API. Вы будете ограничены вызовами API.

Если количество опубликованных видеофайлов в день превышает 5 КБ (что, я думаю, в любом случае должно быть намного выше), вы потеряете много данных.

Это довольно часто, но есть и лучшие способы.

(Это может не относиться к YouTube, просто рекомендация в целом)

У нас есть что-то похожее на то, что вы описали для внутреннего использования - периодически принимает источник данных. Так что да, в отрасли довольно стандартно иметь работу cron, чтобы делать что-то подобное. ** Лучший способ **, который требует другой архитектуры, был бы чем-то вроде веб-крючков. По сути, каждый раз, когда изменяется статистика, вы в конечном итоге уведомляете заинтересованные стороны, что что-то изменилось. См. Pub / Sub pattern для получения дополнительной информации.

...