在PHP中访问YouTube yt:rating(喜欢/不喜欢)系统

时间:2011-01-05 11:42:31

标签: php api youtube

我正在使用PHP访问YouTube视频属性,例如标题,网址,缩略图,持续时间等。

不是gd:rating(5星评级)已被yt:rating(喜欢/不喜欢系统)取代,我正在尝试修改我的PHP。

gd:评分(旧)

$gd = $entry->children('http://schemas.google.com/g/2005');  
if ($gd->rating) {  
    $attrs = $gd->rating->attributes();  
    $rating = $attrs['average'];   
} else {  
    $rating = 0;   
}

yt:评分(新)

$yt = $entry->children('http://gdata.youtube.com/schemas/2007');  
if ($yt->rating && $yt->rating[0]->attributes()) {  
    $attrs = $yt->rating[0]->attributes();  
    $videoobj[$loopCounter]['dislikes'] = strval($attrs['numDislikes']);  
    $videoobj[$loopCounter]['likes'] = strval($attrs['numLikes']);  
} else {  
    $videoobj[$loopCounter]['dislikes'] = 0;  
    $videoobj[$loopCounter]['likes'] = 0;  
}

使用yt:评级代码不起作用。即使我做print_r($yt->rating);,数组中也没有任何内容。

我哪里错了?

1 个答案:

答案 0 :(得分:2)

校正。你可以。

您访问的URL需要将其附加到末尾:

    $url = 'http://gdata.youtube.com/feeds/api/videos/' . $vid . '?v=2';

这就完全不同了 - 所以我的代码的最后一点是:

// get <yt:rating> node for like/dislikes
$yt = $entry->children('http://gdata.youtube.com/schemas/2007');
$attrs = $yt->rating->attributes();
$obj->dislikes = $attrs['numDislikes'];
$obj->likes = $attrs['numLikes'];
echo $obj->dislikes;
echo ' ';
echo $obj->likes;