0

live_stats weiß ich, dass es möglich ist, die Anzahl der gleichzeitigen Zuschauer für ein bestimmtes Live-Streaming YouTube Ereignis mit diesem Link zu erhalten: https://www.youtube.com/live_stats?v= {videoid}abrufen YouTube gleichzeitige Zuschauer aus dem Kanal statt spezifischen Live-Event Video

Ich war frage mich, ob es möglich ist, die live_stats für einen Kanal oder eine Playlist anstatt eines bestimmten Live-Events zu erhalten.

Ich möchte diese Daten in einer Webseite einbetten, die mehrere verschiedene Live-Ereignisse wöchentlich auftreten. Ändern der Video-ID für jedes Ereignis wird eine Belastung sein. Wenn dies nicht direkt möglich ist, gibt es eine Möglichkeit, die Video-ID eines aktuellen Live-Ereignisses von einem Kanal zu erhalten und Java-Skript oder PHP zu verwenden, um die ID im Link zu ersetzen? Bitte helfen Sie mir, dies herauszufinden.

+0

Ist das eine undokumentierte API? Ich sehe in den Dokumenten keine Erwähnung über einen 'live_stats' Endpunkt. – JAL

+1

'Da Sie nicht mehrere Ereignisse gleichzeitig von einem einzigen Konto streamen können ', wo haben Sie das gelesen? Es sollte kein Problem bei der Planung und Übertragung mehrerer Live-Ereignisse von einem einzelnen Kanal geben, solange Sie zwei separate Ereignisse mit zwei separaten Encodern haben. – JAL

+0

Ja, Sie haben Recht ... Ich dachte nur, dass es nicht möglich ist, mehrere Ereignisse zu streamen. Es tut mir leid, ich lag falsch. Gut zu wissen. Ich weiß eigentlich nicht, wer diesen API-Link ursprünglich eingeführt hat, aber ich habe ihn hier gefunden und er funktioniert wirklich gut. Ich habe mich nur gefragt, ob die Jungs von YouTube mir mit dieser Methode etwas mehr geben könnten. Da ich meine Live-Events ständig in einer Playlist poste, konnte ich irgendwie die Video-ID nur des ersten Videos mit einer API bekommen? Ich könnte das mit etwas PHP und jQuery verwenden, um zu bekommen, was ich brauche. –

Antwort

0

Nach einiger Zeit, ich dachte, das selbst heraus ...

ich ein PHP-Skript erstellt, das die Video-ID des ersten Videos in einer Playlist abruft und setzt die ID in den Link Live-Statistiken. Ich nehme den Link von Live-Events und lege sie zur einfachen Verwendung in eine Playlist.

<?php 
// Retrieves video info from Youtube playlist. Just update [PLAYLIST_ID] and [API_KEY] 
$json_url = "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=1&playlistId=[PLAYLIST_ID]&fields=items%2Fsnippet%2FresourceId%2FvideoId&key=[API_KEY]"; 
$json = file_get_contents($json_url); 
$json=str_replace('}, 

]',"} 

]",$json); 
$data = json_decode($json, true); 

$videoId = $data['items'][0]['snippet']['resourceId']['videoId']; 

$viewers = file_get_contents("https://www.youtube.com/live_stats?v=$videoId"); 
echo $viewers; 
?> 

Ich erstellte dann eine HTML-Seite, wo die Daten mit jQuery dynamisch aktualisiert werden.

<html> 
<body> 
<div id="status" style="color: #666; line-height: 24px; font-size: 19px; font-weight: normal; font: 19px Roboto,arial,sans-serif;"></div> 
<script src="http://code.jquery.com/jquery-1.7.1.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
function update() { 
    $.ajax({ 
     url: 'viewers.php', 
     dataType: 'text', 
     success: function(data) { 
      if (parseInt(data) == 0) { 
       $("#status").css({ display: "none" }); 
      } else { 
       $("#status").text(parseInt(data) + ' watching now'); 
      } 
     } 
    }) 
} 
update(); 
var statusIntervalId = window.setInterval(update, 5000); 
</script> 
</body> 
</html> 

Das ist, wie weit ich gekommen bin. Jetzt frage ich mich nur, ob es eine bessere Möglichkeit gibt, diese Codes zu kombinieren, um weniger Serveranforderungen zu erstellen. Jede jQuery-Anfrage erfolgt alle 5 Sekunden und hat eine Größe von ca. 240 Bytes. Obwohl die Anforderungen gering sind, können sie dennoch eine Seite verlangsamen.

Wenn Sie können, bitte helfen Sie mir, meine Lösung zu verbessern. Vielen Dank im Voraus.