1

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

谢谢!

4

1 回答 1

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."
}

?>
于 2012-07-29T09:36:15.670 回答