Как проверить, транслируется ли канал YouTube в прямом эфире

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

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


person mpgn    schedule 08.09.2015    source источник
comment


Ответы (6)


Вы можете сделать это, используя search.list и указав идентификатор канала, установив тип video и установка eventType на live.

Например, когда я искал:

https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UCXswCcAMb5bvEUIDEzXFGYg&type=video&eventType=live&key=[API_KEY]

Получил следующее:

{
 "kind": "youtube#searchListResponse",
 "etag": "\"sGDdEsjSJ_SnACpEvVQ6MtTzkrI/gE5P_aKHWIIc6YSpRcOE57lf9oE\"",
 "pageInfo": {
  "totalResults": 1,
  "resultsPerPage": 5
 },
 "items": [
  {
   "kind": "youtube#searchResult",
   "etag": "\"sGDdEsjSJ_SnACpEvVQ6MtTzkrI/H-6Tm7-JewZC0-CW4ALwOiq9wjs\"",
   "id": {
    "kind": "youtube#video",
    "videoId": "W4HL6h-ZSws"
   },
   "snippet": {
    "publishedAt": "2015-09-08T11:46:23.000Z",
    "channelId": "UCXswCcAMb5bvEUIDEzXFGYg",
    "title": "Borussia Dortmund vs St. Pauli 1-0 Live Stream",
    "description": "Borussia Dortmund vs St. Pauli Live Stream Friendly Match.",
    "thumbnails": {
     "default": {
      "url": "https://i.ytimg.com/vi/W4HL6h-ZSws/default.jpg"
     },
     "medium": {
      "url": "https://i.ytimg.com/vi/W4HL6h-ZSws/mqdefault.jpg"
     },
     "high": {
      "url": "https://i.ytimg.com/vi/W4HL6h-ZSws/hqdefault.jpg"
     }
    },
    "channelTitle": "",
    "liveBroadcastContent": "live"
   }
  }
 ]
}
person not_a_bot    schedule 08.09.2015
comment
а можно id видео steam? - person mpgn; 08.09.2015
comment
Идентификатор можно узнать, просмотрев ресурс items - ›id -› videoId. В приведенном выше примере идентификатор видеопотока - W4HL6h-ZSws. - person not_a_bot; 08.09.2015
comment
Нет проблем, рад помочь. - person not_a_bot; 24.09.2015
comment
Но этот API на самом деле отвечает только через несколько минут после запуска прямой трансляции, он не показывает никаких данных, когда поток только что стартовал. @not_a_bot не могли бы вы предложить альтернативу. - person Mohammed Irfan; 07.06.2018
comment
Это также возвращает видео, которые транслируются, но на самом деле не транслируются, есть ли способ отфильтровать этих парней? - person Different55; 02.08.2018
comment
Любые обновления по этому поводу, последние два комментария все еще остаются для меня проблемами. - person 10000RubyPools; 20.12.2018

Метод поиска (https://www.googleapis.com/youtube/v3/search) ужасно дорого в использовании. Это стоит 100 единиц квоты (https://developers.google.com/youtube/v3/determine_quota_cost) из 10000 у вас по умолчанию. Это означает, что вы получаете всего 100 запросов в день, что ужасно.

Вы можете запросить увеличение квоты, но это кажется грубым форсированием проблемы.

Неужели нет другого более простого метода?

person Smorfty    schedule 02.04.2019
comment
Добро пожаловать в SO. Этот пост на самом деле не отвечает на вопрос. Когда вы наберете больше репутации, вы сможете публиковать такие материалы в виде комментариев ... - person Nick; 02.04.2019
comment
это именно моя битва прямо сейчас в 2019 году ... трудно представить, что youtube не предоставляет дешевый запрос API только для того, чтобы увидеть, активен ли канал ... использование liveBroadcast API не помогает, потому что он не является исчерпывающим для меня и нет возможности указать канал ... - person aequalsb; 18.10.2019
comment
Может помочь: stackoverflow.com/questions/56385532/ - person Lee Goddard; 28.07.2020

Я знаю, что это старый, но я сам понял это с помощью php.

$API_KEY = 'your api3 key';
$ChannelID = 'the users channel id';

$channelInfo = 'https://www.googleapis.com/youtube/v3/search?part=snippet&channelId='.$ChannelID.'&type=video&eventType=live&key='.$API_KEY;

$extractInfo = file_get_contents($channelInfo);
$extractInfo = str_replace('},]',"}]",$extractInfo);
$showInfo = json_decode($extractInfo, true);

if($showInfo['pageInfo']['totalResults'] === 0){

echo 'Users channel is Offline';

}else{

echo 'Users channel is LIVE!';

}
person TJ Dobbs    schedule 29.07.2016
comment
Существует более полный официальный пример кода для перечисления прямых трансляций: github.com/youtube/api-samples/blob/master/php/list_streams.php - person Xeoncross; 08.04.2019

Я также боролся с ограничениями API. Самый надежный и дешевый способ, который я нашел, - это просто HEAD запрос к https://www.youtube.com/channel/CHANNEL_ID/live. Если канал активен, он автоматически загрузит поток. Если нет, то он загрузит канал видео каналов. Вы можете просто проверить размер заголовка Content-Length, чтобы определить, какой именно. В живом состоянии размер почти в 2 раза больше, чем вживую.

И в зависимости от вашего региона вам может нужно принять страницу согласия на использование файлов cookie. Просто отправьте свой запрос с cookies={ "CONSENT": "YES+cb.20210420-15-p1.en-GB+FX+634" }.

person eth0    schedule 23.04.2021

если вы укажете streamlink на https://www.youtube.com/channel/CHANNEL_ID/live ссылку, он сообщит вам, активна она или нет

  • например lofi beats обычно вживую,
$ streamlink "https://www.youtube.com/channel/UCSJ4gkVC6NrvII8umztf0Ow/live"
[cli][info] Found matching plugin youtube for URL https://www.youtube.com/channel/UCSJ4gkVC6NrvII8umztf0Ow/live
Available streams: 144p (worst), 240p, 360p, 480p, 720p, 1080p (best)
  • тогда как MKBHD не
$ streamlink "https://www.youtube.com/c/mkbhd/live"          
[cli][info] Found matching plugin youtube for URL https://www.youtube.com/c/mkbhd/live
error: Could not find a video on this page
person Elijah Yap    schedule 16.02.2021

Я обнаружил, что API YouTube очень ограничен, учитывая стоимость операции поиска. Очистка веб-страниц с помощью aiohttp и beautifulsoup была невозможна, поскольку для более эффективных индикаторов требовалась поддержка javascript. Поэтому я обратился к селену. Я искал селектор css

#info-text, а затем найдите строку Started streaming или с watching now в ней.

Вы можете запустить небольшой API на heroku с помощью flask.

person Monu Yadav    schedule 08.04.2021