Как узнать, транслируется ли сейчас канал YouTube без использования поиска? - PullRequest
0 голосов
/ 30 мая 2019

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

Чтобы узнать, является ли канал потоковым и получить ссылки на прямой эфир, которые я использовал:

https://www.googleapis.com/youtube/v3/search?part=snippet&channelId={CHANNEL_ID}&eventType=live&maxResults=10&type=video&key={API_KEY}

Однако с минимальной квотой 10000 и каждым поиском стоимостью 100, я могу выполнить только около 100 поисков, прежде чем превыслю свой предел квоты, что совсем не помогает.В итоге я превысил квоту примерно за 10 минут.: (

Кто-нибудь знает лучший способ выяснить, является ли канал в настоящее время живым потоком и каковы ссылки на прямой эфир, используя как можно меньше точек квоты?

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

Надеемся, у кого-то есть хорошее решение этой проблемы!

Если с ссылками ничего не поделаешь, большая помощь в определении того, жив ли пользователь, не используя каждый раз по 100 квот,

Ответы [ 2 ]

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

Поскольку в вопросе указывалось только то, что квоты API поиска не должны использоваться при выяснении, является ли канал потоковым, я подумал, что поделюсь своего рода обходным методом.Это может потребовать немного больше работы, чем простой вызов API, но практически сводит к минимуму использование API-квот:

Я использовал простой запрос Perl GET для получения главной страницы канала Youtube.В HTML-коде страницы канала, которая транслируется в прямом эфире, найдено несколько уникальных элементов:

Количество тегов количества активных зрителей, например, <li>753 watching</li>.Значок LIVE NOW: <span class="yt-badge yt-badge-live" >Live now</span>.

Чтобы выяснить, транслируется ли канал в данный момент в прямом эфире, требуется простое совпадение, чтобы увидеть, содержится ли уникальный HTML-тег в результатах запроса GET.Что-то вроде: if ($get_results =~ /$unique_html/) (Perl).Затем вызов API может быть сделан только для идентификатора канала, который фактически является потоковым, для получения идентификатора видео потока.

Преимущество этого в том, что вы уже знаете, что канал потоковый, вместо того, чтобы использовать тысячи точек квоты для выяснения этого.Мой тестовый скрипт успешно определяет, является ли канал потоковым, просматривая HTML-код для: <span class="yt-badge yt-badge-live" > (обратите внимание на странные лишние пробелы в коде с Youtube).

Я не знаю, на каком языке OPиспользуя, или я бы помог с базовым запросом GET на этом языке.Я использовал Perl и включил заголовки браузера, пользовательский агент и куки, чтобы выглядеть как обычный визит на компьютер.

Youtube's robots.txt не запрещает сканировать главную страницу канала, только страницу сообщества канала.

Дайте мне знать, что вы думаете оплюсы и минусы этого метода, и, пожалуйста, прокомментируйте, что может быть улучшено, а не неприязнь, если вы обнаружите недостаток.Спасибо, счастливого кодирования!

0 голосов
/ 09 июня 2019

Вот мои два предложения:

  • Проверьте мой ответ , где я объясняю, как вы можете проверить, как получить видео с каналов, которые liverteaming.
  • Другойможно использовать следующий URL и каким-либо образом каждый раз делать запрос (-ы) для проверки наличия прямой трансляции.

https://www.youtube.com/channel/<CHANNEL_ID>/live

Где CHANNEL_ID - это идентификатор канала, который вы хотите проверить, транслируется ли этот канал 1 .


1 Просто обратите внимание, что, возможно, URL не будетработать на всех каналах (и это зависит от самого канала) .

Например, если вы проверите ссылку channel_id UC7_YxT-KID8kRbqZo7MyscQ - на этот каналканал прямой трансляции - https://www.youtube.com/channel/UC4nprx9Vd84-ly7N-1Ce6Og/live, этот канал покажет, транслируется ли он в прямом эфире, но с ссылкой на его канал UC4nprx9Vd84-ly7N-1Ce6Og - ссылка на этот канал прямой трансляции - покажет его главную страницувместо этого.

...