2017-02-22 7 views
0

Erstens sah ich alle anderen Titel. Alle von ihnen veraltet. Ich meine, sie benutzen alte API.Wie bekomme ich alle Kommentare von einem Youtube Video

schreibe ich einen Code, um alle Kommentare zur Liste mit ihren nextPageToken


<?php 
$url  = "SE0wDh_pILk"; // Youtube video ID 
$ytkey = "IzaSyCaRXmJ9XDC4XucAZCzXx7hisCtYEH0mNs"; //"IzaSyBuu-rnbmPAj1DjR6WmyxGmpmQKz8aTXbw" Your api key 
$nextPage = ""; // Next Page Token for get comments of next Page. 
//$i =0; // DO NOT CHANGE 


for ($i = 0; $i < 5; $i++) { 
    $str = file_get_contents("https://www.googleapis.com/youtube/v3/commentThreads?key=" . "$ytkey" . "&textFormat=plainText&part=snippet&videoId=" . "$url" . "&maxResults=100&nextPagetoken=" . "$nextPage"); 

    $json = json_decode($str, true); // decode the JSON into an associative array 
    //echo '<pre>' . print_r($json, true) . '</pre>'; // Print json data as array structer .. 

    echo "$i - " . "Next Page Token : " . $json['nextPageToken']; // Take the next Page Token for get next 100 comment... 
    echo "<hr>"; // Divider 


    $nextPage = $json['nextPageToken']; // Take token for next query 
    // print comments. 

    foreach ($json['items'] as $val) { // Loop for list comments... 
     $author = $val['snippet']['topLevelComment']['snippet']['authorDisplayName']; //Get Comment Author Name. 
     //$author_url = $val['snippet']['topLevelComment']['snippet']['authorChannelUrl']; //Get Comment Author URL. 
     //$author_thumbnail_url = $val['snippet']['topLevelComment']['snippet']['authorProfileImageUrl']; //Get Comment Author Thumbnail URL. 
     $comment = $val['snippet']['topLevelComment']['snippet']['textDisplay']; //Get Comment Content. 

     echo "<span style='color:red';>" . "$author" . "</span>" . " --> " . "$comment"; // Author and comment 
     echo "<hr>"; // Divider 
    } 

} 

echo "Process over. "; 
?> 

ich lernen, wie man json analysieren und wie sie auf php von Stackoverflow zu zeigen.

Jetzt gibt es kein Problem mit nextPageTokens. Aber ich kann keine Kommentare bekommen.

Wenn ich das Skript ausführen, gibt es anders nextPageToken aber Kommentare sind gleich, sie kommen von der ersten Seite.

Ich versuche, genügend Kommentarzeile hinzuzufügen. Entschuldigung, ich kann die PHP-Codes nicht färben.

+0

Gibt es Gründe, warum Sie dies manuell tun und nicht mit die Google PHP-Client-Bibliothek? https://github.com/google/google-api-php-client – DaImTo

+0

könnten Sie Ihre Antwort erweitern? – user5481342

+1

Gerade jetzt codierst du das alles selbst. Es gibt eine von Google für PHP erstellte Bibliothek, die all dies für Sie erledigt. Sie machen es schwieriger für sich selbst, dann muss es https://developers.google.com/youtube/v3/code_samples/php#create_and_manage_comments – DaImTo

Antwort

2

Sie rufen commentThreads mit dem Parameter &nextPagetoken=.

Der richtige zu verwendende Parameter ist &pageToken=.

+0

Gleiches Ergebnis :(Token sind in Ordnung, aber Kommentare sind die gleichen. – user5481342

+1

Für die Video-ID SE0wDh_pILk in Ihrem Code ist die totalResults 90, weniger als die 100 angefordert. Ehrlich gesagt weiß ich nicht warum YouTube gibt in diesem Fall ein nextPageToken zurück, da es nur eine Seite mit Ergebnissen gibt. – johnh10

+0

im Video, Seite sagt "es gibt mehr als 200 Kommentare. Aber zeige nur etwa 100 in json – user5481342

Verwandte Themen