0

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'];

empty および 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>
4

1 に答える 1

0
if(isset($media) and isset($media->group) and isset($media->group->content[1])) {
    $attrs = $media->group->content[1]->attributes();
    $obj->tgpp = $attrs['url'];
}
else {
...
于 2013-07-09T05:33:20.440 に答える