使用分页youtube api播放列表结果,尝试计算播放列表中所有视频的总持续时间

时间:2012-07-28 20:35:28

标签: 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";
$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页面,但我不知道这么做。我不是程序员,这是我用有限的编程知识想出来的。 我应该在代码中添加什么来计算播放列表中的所有视频?或者,如果有人可以帮助我使用另一个片段,那也是完美的。

谢谢!

1 个答案:

答案 0 :(得分:0)

很抱歉无法在此测试,但考虑到您遇到的错误,我认为您首先需要检查从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."
}

?>