Twitch.tv API Past Broadcasts einbinden

Losty

RB Leipzig Neider
Teammitglied
Registriert
15 Juli 2013
Beiträge
2.927
Huhu,

Vielleicht kann mir ja jemand der sich mit PHP und dem ganzen Kram mehr auskennt als ich ein wenig behilflich sein. Ein Kumpel und Ich streamen desöfteren über Twitch.tv und wir haben den Twitch Player u.a. auch auf unserer Website eingebunden.

Das geht ja ganz leicht mit folgendem Code hier:


Dort kann man ohne Probleme den Code kopieren, Channel Name anpassen und zack läuft alles. Jetzt wollten wir allerdings unter dem Livestream Player die letzten Broadcasts unseres Channels anzeigen lassen, also das hier:
(Irgendein Random Beispiel Channel)

Sollte dann auf der Website so aussehen:

Jetzt hab ich allerdings keinen Schimmer wie das ganze hinzubekommen ist da es dafür keinen simplen Code zum einbinden gibt. Ich hatte im Twitch Developer Forum schon erstellt aber großartig Antworten gibt es dort nicht, bzw. hilft mir die eine nicht weiter da ich keine Ahnung davon hab ^^

Wäre nett bzw. toll wenn es hier jemanden geben würde der davon Ahnung hat und schnell (falls das nicht aufwendig sein sollte) aushelfen könnte :)

gruß
 
Hast du mal die durchgeschaut?
Wenn ich das richtig sehe, dann sollten
[src=text]GET /streams/summary Get a summary of streams[/src]
und / oder
[src=text]GET /channels/:channel/videos Get channel's list of videos[/src]
sein, was du suchst.
 
  • Thread Starter Thread Starter
  • #3
Ok das Streams Summary hatte ich gesehen aber das zeigt ja wohl nur eine Liste bzw. Zusammenfassung von Streams an die gerade Online sind oder sowas in der Art.

Channel Videos könnte es allerdings sein..


Dort kann man ja mit dem broadcasts Parameter (true) angeben das man nur die letzten Broadcasts angezeigt haben möchte und nicht die Highlights oder andere Videos.

Allerdings weiß ich jetzt eben nicht wie ich das ganze auf meiner Seite einbinde/abrufe:
 
Hi Losty,

Die API stellt ja wirklich nur die Daten bereit, sonst nichts. Die musst Du also selbst durchlaufen und die Daten dann Stück für Stück ausgeben. Geht zum Beispiel so:

[src=php]<?php
header('Content-Type: text/html; charset=utf8');

$channel = 'vanillatv';

//if(true){
$url = 'https://api.twitch.tv/kraken/channels/' . $channel . '/videos?limit=10';
$data = json_decode(file_get_contents($url));

echo '<ul>';
foreach($data->videos as $video){
//$url = '?id=' . htmlspecialchars($video->broadcast_id);
$url = htmlspecialchars($video->url);
?>
<li>
<h2>
<a href="<?php echo $url; ?>">
<?php echo htmlspecialchars($video->title); ?>
</a>
</h2>
<a href="<?php echo $url; ?>">
<img alt="<?php echo htmlspecialchars($video->game); ?>" src="<?php echo htmlspecialchars($video->preview); ?>">
</a>
<p><?php echo htmlspecialchars($video->description); ?></p>
</li>
<?php }
echo '</ul>';
//}

?>[/src]

Normalerweise sollte man für jedes Video auch einen embed-Code ausgegeben bekommen, wenn ich das richtig gesehen habe. Hab nun aber kein Video gefunden, in dem das möglich war. Wenn man im Channel einstellen kann, dass die Videos auf fremden Seiten eingebunden werden können, wird der Code sicher auch von der API ausgeliefert. Falls Du mir einen Channel nennen kannst, in dem das möglich ist, kann ich den Code gerne erweitern.
 
  • Thread Starter Thread Starter
  • #5
Der Code ansich reicht ja schon aus, vielen Dank.

Das einzige was ich ändern musste war
[src=php]$url = 'https://api.twitch.tv/kraken/channels/' . $channel . '/videos?limit=10';[/src]

zu
[src=php]$url = 'https://api.twitch.tv/kraken/channels/' . $channel . '/videos?broadcasts=true&limit=5';[/src]

Weil ich ja die "Past Broadcasts" abrufen wollte und nicht die Highlight Videos. Der Rest ist dann CSS Anpasserei.

Kann man denn auch noch mehr Details anzeigen lassen? Also die Anzeigedauer oben rechts, das Spiele Bild unten rechts auf dem Vorschau Bild und das unten drunter "itsHafu about 9 hours ago".

Beispiel hier:


Zumindest die Länge des Videos und das "x Days/Hours ago". Das Spielebild jetzt nicht wirklich muss.

Ok die Länge funzt mit
[src=php]<p><?php echo htmlspecialchars($video->length); ?></p>[/src]
Wobei das natürlich nur die Sekunden anzeigt, bzw. mit length / 60 wird es in Minuten angezeigt. Wie automatisiere ich das ganze? Gibt ja auch noch Stunden ^^
 
Zuletzt bearbeitet:
[src=php]
$secs = 12345; // sekunden aus dem Stream hier setzen

$now = date_create('now', new DateTimeZone('GMT'));
$here = clone $now;
$here->modify($secs.' seconds');

$diff = $now->diff($here);

echo $diff->format('%a tag(e) %h stunde👎 %i minute👎 %s sekunde👎');
[/src]
 
Zurück
Oben