我正在尝试将youtube脚本迁移到youtube API版本2有些视频没有3GP或MP4移动流,我有
致命错误:在第29行的C:\wamp\www\view.php中的非对象上调用成员函数attributes()
第29行为
/* Get 3GP STREAM URL */
$attrs = $media->group->content[1]->attributes(); /* THIS IS LINE 29 */
$obj->tgpp = $attrs['url'];
我试着用空和isset函数做一个条件语句来检查3GP/MP4流链接是否可用
if (!empty($media->group->content[1]->attributes())) {
$attrs = $media->group->content[1]->attributes();
$obj->tgpp = $attrs['url'];
} else {
echo "";
}
if (isset($media->group->content[1]->attributes())) {
$attrs = $media->group->content[1]->attributes();
$obj->tgpp = $attrs['url'];
} else {
echo "";
}
两者都抛出错误
致命错误:在第29行的C:\wamp\www\view.php中,无法在写入上下文中使用方法返回值
使用这个片段
if ($media->group->content[1]->attributes() == "") { echo ""; }
else {
$attrs = $media->group->content[1]->attributes();
$obj->tgpp = $attrs['url'];
}
我返回错误
致命错误:在第29行的C:\wamp\www\view.php中的非对象上调用成员函数attributes()
这是的脚本
<?php
header("Content-type: text/html; charset=UTF-8");
echo "<?xml version="1.0" encoding="UTF-8"?>n";
/* Function to parse a video <entry> */
function parseVideoEntry($entry) {
$obj= new stdClass;
/* Get author name and feed URL */
$obj->author = $entry->author->name;
$obj->authorURL = $entry->author->uri;
/* Geet video publish date */
$obj->publish = $entry->published;
/* Get nodes in media: namespace for media information */
$media = $entry->children('http://search.yahoo.com/mrss/');
$obj->title = $media->group->title;
$obj->description = $media->group->description;
/* Get video category */
$attrs = $media->group->category->attributes();
$obj->category = $attrs['label'];
/* Get FLV STREAM URL */
$attrs = $media->group->content[0]->attributes();
$obj->flv = $attrs['url'];
/* Get 3GP STREAM URL */
$attrs = $media->group->content[1]->attributes();
$obj->tgpp = $attrs['url'];
/* Get MP4 STREAM URL */
$attrs = $media->group->content[2]->attributes();
$obj->mp4 = $attrs['url'];
/* Get video thumbnail */
$attrs = $media->group->thumbnail[0]->attributes();
$obj->thumbnailURL = $attrs['url'];
/* Get <yt:duration> node for video length */
$yt = $media->children('http://gdata.youtube.com/schemas/2007');
$attrs = $yt->duration->attributes();
$obj->length = $attrs['seconds'];
/* Get <yt:stats> node for viewer statistics */
$yt = $entry->children('http://gdata.youtube.com/schemas/2007');
if ($yt->statistics)
{
$attrs = $yt->statistics->attributes();
$obj->viewCount = $attrs['viewCount'];
}
else
{
$obj->viewCount = 0;
}
//LIKES get <yt:rating> node for number of likes statistics
//$yt = $entry->children('http://gdata.youtube.com/schemas/2007');
if ($yt->rating)
{
$attrs = $yt->rating->attributes();
$obj->numLikes = $attrs['numLikes'];
}
else
{
$obj->numLikes = 0;
}
//DISLIKES get <yt:rating> node for number of dislikes statistics
//$yt = $entry->children('http://gdata.youtube.com/schemas/2007');
if ($yt->rating)
{
$attrs = $yt->rating->attributes();
$obj->numDislikes = $attrs['numDislikes'];
} else
{
$obj->numDislikes = 0;
}
return $obj;
} // close funcion parseVideoEntry
/* Get video ID from $_GET */
!isset($_GET['id']) ? die ('ERROR: Missing video ID') : $vid = $_GET['id'];
/* Set video data feed URL */
$feedURL = 'http://gdata.youtube.com/feeds/api/videos/'.$vid.'?v=2';
/* Read feed into SimpleXML object */
$entry = simplexml_load_file($feedURL);
/* Parse video entry */
$video = parseVideoEntry($entry);
?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><?=$video->title?></title>
<link href="./style.css" rel="stylesheet" type="text/css" />
</head>
<ul>
<li>Stream:</li>
<li><a href="<?=$video->tgpp?>">3GP</a></li>
<li><a href="<?=$video->mp4?>">MP4</a></li>
<li><a href="<?=$video->flv?>">Youtube Player</a></li>
</ul>
if(isset($media) and isset($media->group) and isset($media->group->content[1])) {
$attrs = $media->group->content[1]->attributes();
$obj->tgpp = $attrs['url'];
}
else {
...