Hi@all
brauche mal dringend Hilfe bitte.
Versuche schon den ganzen Tage eine Liste meiner YoutubeVideos auszulesen.
Da das Ausleseergebniss über die Youtube APi auf maxResult 50 begrenzt ist muss ich das über erneuten Aufruf des Links mittel PageToken machen.
Bis hierher klappt das auch ganz gut.
Nun wollte ich die Ergebnisse in einem einzigen Array zusammenfassen um eine Gesamtliste ausgeben zu können.
Aber irgendwie funktioniert das zusammenfügen der Daten nicht, es wird mir immer nur der erste Array-Inhalt angezeigt.
Ich hoffe ich hab mich verständlich ausgedrückt.
Thx@all for help
brauche mal dringend Hilfe bitte.
Versuche schon den ganzen Tage eine Liste meiner YoutubeVideos auszulesen.
Da das Ausleseergebniss über die Youtube APi auf maxResult 50 begrenzt ist muss ich das über erneuten Aufruf des Links mittel PageToken machen.
Bis hierher klappt das auch ganz gut.
Nun wollte ich die Ergebnisse in einem einzigen Array zusammenfassen um eine Gesamtliste ausgeben zu können.
Aber irgendwie funktioniert das zusammenfügen der Daten nicht, es wird mir immer nur der erste Array-Inhalt angezeigt.
Ich hoffe ich hab mich verständlich ausgedrückt.
PHP-Code:
<?php
//YouTube API v3.0
//for debugging purposes
$time_start = microtime(true);
# Link Data
$api_key = "___"; //your public access API key from google's developer console, enable youtube data api v3
$playlist_id = "___"; //replace with a youtube playlist ID, eg: PLOU2XLYxmsIJQhUeN9S2kQ-3PWzPZVZD0
$maxResults = "50"; //max JSON results
$path = getPath();
$inhalt_gesamt="";
# Link umwandeln
#$feed = json_decode(file_get_contents($path));
//Speichern der API Abfrage im JSON Format
$api = getSslPage($path);
//Umwandeln des JSON Format in einen PHP Array
$feed = json_decode($api, true);
# Info Ausgabe
echo "<b>Playlist id:</b> ".$playlist_id."<br>";
echo "<b>Max Results:</b> ".$maxResults."<br>";
echo "<b>Feed URL:</b> <a href='".$path."' target='_blank'>".$path."</a><br><br>"; //output the path used
echo "<hr>";
# Daten zusammenfassen
$inhalt_gesamt = $feed;
# Ausgabe erste Seite (0-50)
parseJSON($inhalt_gesamt);
# prüfen ob weitere Daten vorhanden
nextToken();
# Ausgabe
parseJSON($inhalt_gesamt);
# Funktion Next Page
function nextToken()
{
global $playlist_id, $api_key, $maxResults, $feed, $inhalt_gesamt;
if(isset($feed['nextPageToken']))
{
$nextToken = $feed['nextPageToken']; //get the next token
echo "<b>Next page token:</b> ".$nextToken."<br><br>";
echo "<hr>";
echo "<i>Using the next page token, we can retrieve the next set of results.</i><br><br>";
# Link zur nächsten Seite (51-100 usw.) erzeugen
$path = getPath($nextToken);
# Link umwandeln
#$feed = json_decode(file_get_contents($path));
//Speichern der API Abfrage im JSON Format
$api = getSslPage($path);
//Umwandeln des JSON Format in einen PHP Array
$feed = json_decode($api, true);
# Info Ausgabe
echo "<b>Feed URL:</b> <a href='".$path."' target='_blank'>".$path."</a><br><br>"; //output the path used
# Ausgabe
array_push($inhalt_gesamt, $feed); // ??? - funktioniert nicht ???
parseJSON($feed);
# Prüfen ob weitere Seiten vorhanden
nextToken();
# Letzte Seite
if(isset($feed['nextPageToken']))
{
//check for last page
$nextToken = $feed['nextPageToken'];
echo "<b>Next page token:</b> ".$nextToken."<br>";
}
else
{
echo "No more next page token!<br>";
}
$prevToken = $feed['prevPageToken']; //we can also retrieve a previous token
echo "<b>Previous page token:</b> ".$prevToken."<br><br>";
}
else
{
//if playlist is shorter than max results
echo "<b>Next page token doesn't exist because playlist is too short!<br>Please choose a playlist longer than your max results: </b>".$maxResults;
}
}
echo "<hr>";
# Funktion Pfad erzeugen
function getPath($nextToken = FALSE)
{
if($nextToken === FALSE)
{
//check for next page token
$nextPageToken = "";
}
else
{
$nextPageToken = "&pageToken=".$nextToken."";
}
global $playlist_id, $api_key, $maxResults;
$path = "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=".$maxResults."&playlistId=".$playlist_id."".$nextPageToken."&key=".$api_key."";
return $path;
}
# Funktion Ausgabe
function parseJSON($feed)
{
global $maxResults;
echo "<br><br>";
for($i = 0; $i < 1000; $i++)
{
if(isset($feed['items'][$i]))
{
//if result exist
//retrieve video information
$video_title = $feed['items'][$i]['snippet']['title'];
$video_description = $feed['items'][$i]['snippet']['description'];
//output the results
echo ($i+1)." <b>Title: </b>".$video_title."<br>";
#echo "<b>Description: </b>".$video_description."<br><br>";
}
}
}
# Funktion zum Auslesen einer Datei mit cURL
function getSslPage($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
//for debugging purposes
$time_end = microtime(true);
$time = $time_end - $time_start;
echo "<br>Loading time: ".$time;
?>
Kommentar