web-dev-qa-db-fra.com

Comment vérifier si la chaîne YouTube est diffusée en direct

Je ne trouve aucune information pour vérifier si une chaîne YouTube diffuse ou non. Avec Twitch, vous avez juste besoin du nom du canal, et avec l'API, vous pouvez vérifier s'il y a un live ou non.

Je ne veux pas utiliser OAuth, normalement une clé API publique suffit. Comme vérifier les vidéos d'une chaîne, je veux savoir si la chaîne est en streaming.

14
mpgn

Vous pouvez le faire en utilisant search.list et en spécifiant l'ID de canal, en définissant le type sur video et en définissant eventType sur live.

Par exemple, lorsque j'ai recherché:

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

J'ai obtenu ce qui suit:

{
 "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"
   }
  }
 ]
}
29
not_a_bot

Je sais que c'est vieux mais je l'ai compris moi-même avec 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!';

}
6
TJ Dobbs

La méthode de recherche ( https://www.googleapis.com/youtube/v3/search ) est terriblement coûteuse à utiliser. Il en coûte 100 unités de quota ( https://developers.google.com/youtube/v3/determine_quota_cost ) sur les 10 000 que vous avez par défaut. Cela signifie que vous ne recevez que 100 demandes par jour, ce qui est terrible.

Vous pourriez demander une augmentation du quota mais cela semble être une force brute forçant le problème.

N'y a-t-il vraiment pas d'autre méthode plus simple?

4
Smorfty