2016-09-19 99 views
0

我想为Youtube JS API的搜索查询添加排序,但我无法使其工作。Youtube JS API cuePlaylist Filtering

这是使用浏览器

https://www.youtube.com/results?search_query=test 

这是做同样的搜索脚本的一部分,但在使用播放器

player.cuePlaylist({listType:'search', list:'test'}); 

测试了一个标准的搜索和它完美的作品。但是,当我想向搜索查询添加排序时。它不起作用。

例如,使用额外的过滤器“Today”搜索测试。 IT不起作用(播放列表是空阵列)。

浏览器搜索

https://www.youtube.com/results?sp=CAESAggC&q=test 

然而,这

player.cuePlaylist({listType:'search', list:'sp=CAESAggC&q=test'}); 

不会产生结果。所述documentation状态:

If the listType property value is search, then the list property specifies the search query. 

我试图与&一个量m P替换&;(没有空格),但仍没有骰子。

我也找不到与文档中的过滤相关的任何内容。

基本上问题是如何对cuePlaylist方法应用过滤。

编辑:

尝试这样:

player.cuePlaylist({listType:'search', list:'test', sp:'CAESAggC'}); 

的SP什么也没做

回答

1

我不知道如果cuePlaylist支持筛选,但是,我可以建议最接近的是使用搜索功能

type: 'GET', 
data: { 
key: 'API_KEY', 
q: query, 
part: 'snippet' 
} 
}) 

然后添加一个订单或者您可以添加的任何过滤器,您可以检查Search文档获取更多信息。

这里是一个片段吧:

// search video 
$("#search").click(function() { 
var query = $("#query").attr("value"); 
if (!query) { 
return; 
} 
$.ajax({ 
url: 'https://www.googleapis.com/youtube/v3/search', 
dataType: 'json', 
type: 'GET', 
data: { 
key: 'AIzaSyBda8mhaE8x10RiF0uzvBMPUszbUIQsy0g', 
q: query, 
part: 'snippet' 
} 
}).done(function(data) { 
player.stopVideo(); 
player.clearVideo(); 
$('#video').fadeIn(); 
var videos = []; 
console.log(data); 
$.each(data.items, function() { 
console.log(this.id.videoId) 
videos.push(this.id.videoId); 
}); 
// sort by favorite 
videos = videos.sort(function(a, b) { 
return b.favoriteCount - a.favoriteCount; 
}); 
player.cuePlaylist(videos); 
}); 
}); 
}); 

下面是snippet源,我做了使用tutorial因为github上使用API​​ V2一些调整。

希望这会有所帮助!

+0

非常感谢,你需要添加订单,它会工作。例如,先上传最新上传的视频,然后订购:“日期”。视频排序不需要(无论如何)。此外,由于视频中包含字符串,因此视频中的id不能确定您的意思是favoriteCount。 –