【发布时间】:2019-07-16 04:44:02
【问题描述】:
我正在尝试通过在 YouTube 数据 API 中执行搜索功能来获得新结果。我需要的是在每次执行中获取新结果作为输出,即不重复结果。我知道分页会这样做,但我不知道如何避免在每次执行中重复结果。
我将 Google Apps 脚本用于服务器端 cron 作业,因此无论何时执行,它都需要缓存结果或避免发布已发布的结果。
这是我的两种类型的代码,一种是从我之前的一个问题中提取的,但这并不能完全解决我的问题,所以我请求任何人解决这些问题。 函数 searchByKeyword(nextPageToken) { var 结果 = YouTube.Search.list('id,sn-p', { 问:“狗”, 最大结果:1, pageToken:下一个PageToken }); Logger.log(结果) var item = results.items; var res = searchByKeyword( results.nextPageToken ); 记录器.log(res) // for (var i = 0; i
// var nextPageToken = '';
while (nextPageToken != null) {
var results
Logger.log('[%s] Title: %s', item.id.videoId, item.snippet.title);
}
}}
上面的代码打印的结果比我需要在每次执行中传递的结果要多。
/**
* @file getting Videos from Youtube with IDs
*/
/* exported userActionRun */
/**
* User action. Runs the snippet
*/
function userActionRun() {
var data = [];
var res = searchByKeyword_('trailers');
while (res.items.length && data.length < 10) {
data = data.concat(res.items);
res = searchByKeyword_('trailers', res.nextPageToken);
}
Logger.log(data.length);
Logger.log(
'\n%s',
data
.map(function(item, i) {
return Utilities.formatString('%s. %s', i + 1, item.snippet.title);
})
.join('\n')
);
}
/**
* Returns YouTube search result
* @param {string} keyword
* @param {string} nextPageToken
* @returns {object}
*/
function searchByKeyword_(keyword, nextPageToken) {
var q = { q: keyword, maxResults: '1', type: 'video' };
if (nextPageToken) q.pageToken = nextPageToken;
var results = YouTube.Search.list('id,snippet', q);
return results;
}
此代码打印结果,但每次执行的结果相同。
【问题讨论】:
标签: google-apps-script youtube-data-api