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

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

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

Ответ 1

Вы можете сделать это, используя 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"
   }
  }
 ]
}

Ответ 2

Я знаю, что это уже давно, но я понял это с помощью 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!';

}

Ответ 3

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

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

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