Php 一直在对youtube api播放列表结果进行分页,试图计算播放列表中所有视频的总持续时间

Php 一直在对youtube api播放列表结果进行分页,试图计算播放列表中所有视频的总持续时间,php,drupal,pagination,youtube-api,code-snippets,Php,Drupal,Pagination,Youtube Api,Code Snippets,我想为我的drupal站点制作一个小php片段,它统计youtube播放列表中所有视频的持续时间。 我在这个网站上找到了一个很好的起点,我做了一些改变,几乎很好: <?php $playlist_id = "266DBEDBE6892C11"; $url = "https://gdata.youtube.com/feeds/api/playlists/".$playlist_id."?v=2&alt=json&start-index=1&max-results=50

我想为我的drupal站点制作一个小php片段,它统计youtube播放列表中所有视频的持续时间。 我在这个网站上找到了一个很好的起点,我做了一些改变,几乎很好:

<?php
$playlist_id = "266DBEDBE6892C11";
$url = "https://gdata.youtube.com/feeds/api/playlists/".$playlist_id."?v=2&alt=json&start-index=1&max-results=50";
$data = json_decode(file_get_contents($url),true);
$info = $data["feed"];
$video = $info["entry"];
$nVideo = count($video);
$length = 0;

echo "Playlist Name: ".$info["title"]['$t'].'<br/>';
echo "Number of Videos (".$nVideo."):<br/>";
for($i=0;$i<200;$i++){
$temporary_length =  $video[$i]['media$group']['yt$duration']['seconds'];
$length += $temporary_length;
echo "Lenght: ". $temporary_length ."<br/>";
}

echo "Length: " . $length ;

?>

我的问题是,我不能分页,youtube最多只能给我50个结果。 我尝试使用start index参数,但这对我不起作用。 我在youtube的api页面上搜索,但我不知道该怎么做。我不是程序员,这是我用有限的编程知识所能想到的。 我应该在代码中添加什么来计算播放列表中的所有视频?或者如果有人能帮我写另一个片段,那也太好了


谢谢大家!

很抱歉,我们无法在这里测试这一点,但考虑到您遇到的错误,我认为您首先需要检查从youtube收到的数据

我还以一种友好的方式为您测试当前页面和每页请求

<?php

//Configurable
$playlist_id = "266DBEDBE6892C11";
$results_per_request = 50;
$current_page = 1;

$start_index = $request_per_page * ($current_page - 1) + (($current_page > 1) ? 1 : 0);
$url = "https://gdata.youtube.com/feeds/api/playlists/".$playlist_id."?v=2&alt=json&start-index=".$start_index."&max-results=".$results_per_request;
$data = json_decode(file_get_contents($url),true);

if (is_array($data) && count($data) > 0)
{
$info = $data["feed"];
$video = $info["entry"];
$nVideo = count($video);
$length = 0;

echo "Playlist Name: ".$info["title"]['$t'].'<br/>';
echo "Number of Videos (".$nVideo."):<br/>";
for($i=0;$i<200;$i++){
$temporary_length =  $video[$i]['media$group']['yt$duration']['seconds'];
$length += $temporary_length;
echo "Lenght: ". $temporary_length ."<br/>";
}

echo "Length: " . $length ;
}
else
{
echo "Youtube did not return any more results."
}

?>


youtube api url中的e max results参数如何?max result参数的最大值是50,youtube不会一次给你更多的结果,至少据我所知:(你是否尝试过将start index设置为51?是的,它本身可以工作,但如果我尝试多次发出请求,它会给出一个“Parse error:syntax error,unexpected T_STRING”错误。我只是简单地将请求行粘贴到代码段的末尾,没有任何更改,它一直给我这个错误。