获取YouTube视频的标题,说明和观看次数

时间:2013-06-22 12:59:47

标签: php

$youtube = simplexml_load_file('http://gdata.youtube.com/feeds/api/videos/wGG543FeHOE?v=2');
$title = $youtube->title;

这得到了标题。但我怎么能得到viewcount和描述?已尝试$youtube->description;$youtube->views;

3 个答案:

答案 0 :(得分:22)

我建议您使用JSON输出而不是XML输出。

您可以通过在网址中添加alt=json参数来获取它:

http://gdata.youtube.com/feeds/api/videos/wGG543FeHOE?v=2&alt=json

然后你必须加载json并解析它:

<?php
$json_output = file_get_contents("http://gdata.youtube.com/feeds/api/videos/wGG543FeHOE?v=2&alt=json");
$json = json_decode($json_output, true);

//This gives you the video description
$video_description = $json['entry']['media$group']['media$description']['$t'];

//This gives you the video views count
$view_count = $json['entry']['yt$statistics']['viewCount'];

//This gives you the video title
$video_title = $json['entry']['title']['$t'];
?>

希望这有帮助。

<强>更新

要查看JSON输出有哪些变量,请将prettyprint=true参数添加到URL并在浏览器中打开它,它将美化JSON输出以使其更易于理解:

http://gdata.youtube.com/feeds/api/videos/wGG543FeHOE?v=2&alt=json&prettyprint=true

您可以写

,而不是浏览网址
echo "<pre>";
print_r($json);
echo "</pre>";

$json = json_decode($json_output, true);

它将打印格式化的JSON输出

答案 1 :(得分:4)

我的代码:

$vId = "Jer8XjMrUB4";
$gkey = "AIzaSyCO5lIc_Jlrey0aroqf1cHXVF1MUXLNuR0";

$dur = file_get_contents("https://www.googleapis.com/youtube/v3/videos?part=snippet,contentDetails&id=".$vId."&key=".$gkey."");


$data = json_decode($dur, true);
foreach ($data['items'] as $rowdata) {
     $vTime = $rowdata['contentDetails']['duration'];
     $desc = $rowdata['snippet']['description'];
}


$interval = new DateInterval($vTime);
$vsec = $interval->h * 3600 + $interval->i * 60 + $interval->s;

if($vsec > 3600)
    $vsec = gmdate("H:i:s", $vsec);
else
    $vsec = gmdate("i:s", $vsec);

echo $vsec."--".$desc;

结果:

02:47 - 继备受好评的全球红极一时的X战警之后:

答案 2 :(得分:3)

Youtube API V2.0已被弃用。您必须切换到V3 API。它需要API密钥。

所以更喜欢使用但是这样就无法获得视频描述

 router.get('/users/:username/suspend', function(req, res){
    var username = req.params.username;
    User.findByUsername(username, function(err, user){
        console.log(user);
        user.suspended = true;
        user.markModified('suspended');
        user.save(function(err, u){
            res.redirect('ok');
        });

    });

});