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