【问题标题】:youtube api filtered searchyoutube api 过滤搜索
【发布时间】:2012-02-23 03:12:32
【问题描述】:

我有一个使用 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;
        }
    }


}     

【问题讨论】:

  • 欢迎来到 SO。你的问题是什么,什么不起作用?
  • 谢谢 :) 该代码工作正常,但我想改进它。我用哪种方式过滤原创音乐视频?不是,音乐会,翻唱或混音。只是原创的纯音乐视频。

标签: php api youtube youtube-api


【解决方案1】:

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

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

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

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

uploader 参数仅支持搜索请求,可让您将查询限制为 YouTube 合作伙伴视频。 YouTube 合作伙伴是指已获准加入并参与 YouTube 合作伙伴计划的个人或组织。 uploader 参数的值必须是partner

所有搜索视频的选项都存在in the docs

【讨论】:

    猜你喜欢
    • 2016-06-21
    • 2014-07-01
    • 2020-11-28
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    • 2017-03-06
    • 2021-02-23
    • 1970-01-01
    相关资源
    最近更新 更多