youtube api过滤搜索

时间:2012-01-31 11:38:59

标签: php api youtube youtube-api

我有一个使用Youtube Api的音乐网站。我想按大小过滤视频。因为当有高质量的视频,音乐会节目等流媒体可以在低速互联网连接时蹒跚而行。 另外,我想展示纯音乐视频。我不希望演唱会音乐会,封面或混音等。我可以选择哪种方式来过滤原始音乐唱片。

顺便说一句,我使用的搜索代码是

 /*
$params: string, artist_name - song
returns an array >> video_id, video name, video length
*/      
function youtube_find_video($params)
{
    str_replace("'", "", $params);
    $q = preg_replace('/[[:space:]]/', '/', trim($params));
    $q = utf8_decode(utf8_encode($q));
    $replacements = array(',', '?', '!', '.');
    $q = str_replace($replacements, "", $q);
    $feedURL = "http://gdata.youtube.com/feeds/api/videos/-/{$q}?orderby=relevance&max-results=1";
    $sxml = simplexml_load_file($feedURL);
    if(!$sxml)
    {
        return false;
    }       
    else{
        $entry  = $sxml->entry;
        if(!$entry)
        {
            return false;
        }

        // get nodes in media: namespace for media information
        $media = $entry->children('http://search.yahoo.com/mrss/');

        if($media)
        {
            // get video player URL
            $attrs = $media->group->player->attributes();
            $url = $attrs['url'];
            if(!$url)
            {
                return false;
                break;
            }
            parse_str( parse_url( $url, PHP_URL_QUERY ), $my_array_of_vars );
            $watch['id'] = $my_array_of_vars['v'];

            // get video name
            $watch['name'] = $media->group->title;

            // get <yt:duration> node for video length[minute]
            $yt = $media->children('http://gdata.youtube.com/schemas/2007');
            $attrs = $yt->duration->attributes();
            $watch['length'] = sprintf("%0.2f", $attrs['seconds']/60);

            $watch = simplexml_kurtul($watch); 
            return $watch;           
        }

        else
        {
            return false;
        }
    }


}     

1 个答案:

答案 0 :(得分:1)

无法从搜索结果中排除高清视频。取自文档:

  

要仅检索高清视频,请将hd参数值设置为true或在请求中包含参数,但不指定参数值。请注意,false不是有效的参数值,您无法限制搜索结果以排除高清视频。 API的默认行为是返回所有视频,无论其分辨率如何。在视频供稿条目中,<yt:hd>标记表示视频包含高清内容。

YouTube播放器JavaScript API有setting the video quality的方法,您可以在视频加载时执行此操作。

除音乐视频外,也不可能排除。但是,据我所知,您可以搜索仅由YouTube合作伙伴上传的视频,其中包括VEVO:

  

uploader参数(仅支持搜索请求)允许您将查询限制为YouTube合作伙伴视频。 YouTube合作伙伴是已被接受并参与YouTube合作伙伴计划的个人或组织。上传者参数的值必须为partner

搜索视频的所有选项均为in the docs