嗨,朋友们,我正在尝试使用youtube api v3搜索获取所有结果。这是代码。。
<!doctype html>
<html>
<head>
<title>Search</title>
</head>
<body>
<div id="buttons">
<label> <input id="query" value='cats' type="text"/><button id="search-button" onclick="search()">Search</button></label>
</div>
<div id="search-container">
</div>
<button id="prev-button" class="paging-button" onclick="previousPage(document.getElementById('query').value);">Previous Page</button>
<button id="next-button" class="paging-button" onclick="nextPage(document.getElementById('query').value);">Next Page</button><br><br>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="search.js"></script>
<script src="https://apis.google.com/js/client.js?onload=googleApiClientReady"></script>
</body>
这是脚本代码。。
var search,nextPageToken, prevPageToken;
function search(pageToken) {
var q = $('#query').val();
gapi.client.load('youtube', 'v3', function() {
gapi.client.setApiKey('Api-key');
var request = gapi.client.youtube.search.list({
q: q,
part: 'snippet',
type: 'playlist',
maxResults: 50,
order: 'viewCount'
});
if (pageToken) {
request.pageToken = pageToken;
}
request.execute(function(response) {
nextPageToken = response.result.nextPageToken;
var nextVis = nextPageToken ? 'visible' : 'hidden';
$('#next-button').css('visibility', nextVis);
prevPageToken = response.result.prevPageToken
var prevVis = prevPageToken ? 'visible' : 'hidden';
$('#prev-button').css('visibility', prevVis);
var playlistItems = response.result.items;
if (playlistItems) {
$.each(playlistItems, function(index, item) {
displayResult(item.id);
});
} else {
$('#search-container').html('Sorry you have no uploaded videos');
}
});
});
}
function displayResult(videoSnippet) {
var title = videoSnippet.playlistId;
$('#search-container').append( title + '<br>');
}
function nextPage(val) {;
var search_val=val;
search(nextPageToken,search_val);
}
// Retrieve the previous page of videos in the playlist.
function previousPage(listid) {
var search=listid;
search(prevPageToken,search);
}
我试图使用pagetoken获取所有结果,但无法获得所有结果。我重复获得相同的50个结果。。如何使用搜索获得准确结果
要使用pageToken
参数,您应该将第一组结果中得到的字符串代码放在这里。
例如,我使用带有以下参数的Search:list:
- part: snippet
- maxResults: 6
- order: viewCount
- type: playlist
https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.search.list?part=snippet&maxResults=6&order=viewCount&type=播放列表&_h=4&
以下是的结果
- 流行音乐视频
- 现在很受欢迎-俄罗斯
- 现在很受欢迎
- 英国官方40强单曲排行榜-2017年2月4日">
- 重要视频
- 音乐热门2017-最佳歌曲播放列表
现在,如果我们在这个请求中使用maxResults: 3
,我们会得到预期的前3个。
https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.search.list?part=snippet&maxResults=3&order=viewCount&type=播放列表&_h=2&
{
"kind": "youtube#searchListResponse",
"etag": ""uQc-MPTsstrHkQcRXL3IWLmeNsM/ytSWQ-kg4VSK7qMICh0IzyEBj9k"",
"nextPageToken": "CAMQAA",
"regionCode": "PH",
"pageInfo": {
"totalResults": 1000000,
"resultsPerPage": 3
},
"items": [
{
"kind": "youtube#searchResult",
"etag": ""uQc-MPTsstrHkQcRXL3IWLmeNsM/WsiG1obELyLKGKhqpeHgqP3Zr0g"",
"id": {
"kind": "youtube#playlist",
"playlistId": "PLFgquLnL59alCl_2TQvOiD5Vgm1hCaGSI"
},
"snippet": {
"publishedAt": "2013-11-20T16:21:03.000Z",
"channelId": "UC-9-kyTW8ZkZNDHQJ6FgpwQ",
"title": "Popular Music Videos",
"description": "",
"thumbnails": {
"default": {
"url": ,
"width": 120,
"height": 90
},
"medium": {
"url": ",
"width": 320,
"height": 180
},
"high": {
"url": "",
"width": 480,
"height": 360
}
},
"channelTitle": "Music",
"liveBroadcastContent": "none"
}
},
{
"kind": "youtube#searchResult",
"etag": ""uQc-MPTsstrHkQcRXL3IWLmeNsM/HSVXUxTS3sWhu_EXXqL19b-n3VE"",
"id": {
"kind": "youtube#playlist",
"playlistId": "PLgMaGEI-ZiiZ0ZvUtduoDRVXcU5ELjPcI"
},
"snippet": {
"publishedAt": "2014-01-13T16:24:21.000Z",
"channelId": "UCtxxJi5P0rk6rff3_dCfQVw",
"title": "Popular Right Now - Russia",
"description": "",
"thumbnails": {
"default": {
"url": "",
"width": 120,
"height": 90
},
"medium": {
"url": "",
"width": 320,
"height": 180
},
"high": {
"url": "",
"width": 480,
"height": 360
}
},
"channelTitle": "Popular on YouTube - Russia",
"liveBroadcastContent": "none"
}
},
{
"kind": "youtube#searchResult",
"etag": ""uQc-MPTsstrHkQcRXL3IWLmeNsM/smJq1QWQX4SzucjteOJ91pLe96Y"",
"id": {
"kind": "youtube#playlist",
"playlistId": "PLrEnWoR732-BHrPp_Pm8_VleD68f9s14-"
},
"snippet": {
"publishedAt": "2014-01-03T17:55:03.000Z",
"channelId": "UCF0pVplsI8R5kcAqgtoRqoA",
"title": "Popular Right Now",
"description": "",
"thumbnails": {
"default": {
"url": "",
"width": 120,
"height": 90
},
"medium": {
"url": "",
"width": 320,
"height": 180
},
"high": {
"url": "",
"width": 480,
"height": 360
}
},
"channelTitle": "Popular on YouTube",
"liveBroadcastContent": "none"
}
}
]
}
您将在上面的结果中注意到参数"nextPageToken":">CAMQAA",这是您需要在下一个请求中提供的字符串代码,以获得下一个页面,或者在本例中获得接下来的三个结果,即:
- 英国官方40强单曲排行榜-2017年2月4日">
- 重要视频
- 音乐热门2017-最佳歌曲播放列表
https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.search.list?part=snippet&maxResults=3&order=viewCount&pageToken=CAMQAA&type=播放列表&_h=3&
{
"kind": "youtube#searchListResponse",
"etag": ""uQc-MPTsstrHkQcRXL3IWLmeNsM/MUqIBto7KPYKqDBGqUboyp81FPs"",
"nextPageToken": "CAYQAA",
"prevPageToken": "CAMQAQ",
"regionCode": "PH",
"pageInfo": {
"totalResults": 1000000,
"resultsPerPage": 3
},
"items": [
{
"kind": "youtube#searchResult",
"etag": ""uQc-MPTsstrHkQcRXL3IWLmeNsM/yRymKW4Nn45KqMRXNQAMKnKeUB8"",
"id": {
"kind": "youtube#playlist",
"playlistId": "PL2vrmw2gup2Jre1MK2FL72rQkzbQzFnFM"
},
"snippet": {
"publishedAt": "2015-01-04T15:21:08.000Z",
"channelId": "UCchuF2Q0QhYzeUShQUm1yzQ",
"title": "The Official UK Top 40 Singles Chart - 4th February 2017",
"description": "The Official UK Top 40 Singles Chart [Update Every Week]",
"thumbnails": {
"default": {
"url": "",
"width": 120,
"height": 90
},
"medium": {
"url": "",
"width": 320,
"height": 180
},
"high": {
"url": "",
"width": 480,
"height": 360
}
},
"channelTitle": "MUSIC CHARTS",
"liveBroadcastContent": "none"
}
},
{
"kind": "youtube#searchResult",
"etag": ""uQc-MPTsstrHkQcRXL3IWLmeNsM/JCiR47eVFaF_o19Ax9V5_K2_Ux8"",
"id": {
"kind": "youtube#playlist",
"playlistId": "PL7XlqX4npddfrdpMCxBnNZXg2GFll7t5y"
},
"snippet": {
"publishedAt": "2015-12-30T03:21:42.000Z",
"channelId": "UCZj9kF7Wu2IE_-DzbQZwCEw",
"title": "important videos",
"description": "",
"thumbnails": {
"default": {
"url": "",
"width": 120,
"height": 90
},
"medium": {
"url": "",
"width": 320,
"height": 180
},
"high": {
"url": "",
"width": 480,
"height": 360
}
},
"channelTitle": "eljolto",
"liveBroadcastContent": "none"
}
},
{
"kind": "youtube#searchResult",
"etag": ""uQc-MPTsstrHkQcRXL3IWLmeNsM/BBQhDUu22HGejcoP1QvArM4001U"",
"id": {
"kind": "youtube#playlist",
"playlistId": "PLw-VjHDlEOgvtnnnqWlTqByAtC7tXBg6D"
},
"snippet": {
"publishedAt": "2015-06-07T17:54:39.000Z",
"channelId": "UCo7i93EtJhQub3SDKrtIAPA",
"title": "Music Hits 2017 - Best Songs Playlist",
"description": "Follow this playlist on Spotify: https:xxx/DZ8tw6 Follow this playlist on Deezer: https:xxxxJmKIaH "Music can change the world because it can change ...",
"thumbnails": {
"default": {
"url": ,
"width": 120,
"height": 90
},
"medium": {
"url": "",
"width": 320,
"height": 180
},
"high": {
"url": "",
"width": 480,
"height": 360
}
},
"channelTitle": "#RedMusic: HotMusicCharts",
"liveBroadcastContent": "none"
}
}
]
}
然后再次使用"nextPageToken": string
来获得下一页的结果。
希望这些信息对你有所帮助。