Как получить новые результаты при каждом выполнении функции поиска в API данных YouTube - PullRequest
0 голосов
/ 15 февраля 2019

Я работаю со скриптом YouTube в скриптах Google Apps. Я использую функцию поиска, чтобы получать результаты по ключевым словам, но при каждом выполнении я получаю тот же результат, что и при выводе, мне нужны новые результаты, или результат не должен дублироваться.Это мой текущий скрипт:

(после получения поискового запроса и необходимо получить полное описание с помощью этого раздела кода YouTube.Videos.list)

/**getting Videos from Youtube with IDs**/

function searchByKeyword(){

  var results = YouTube.Search.list("id,snippet", {q : "trailers", maxResults: "10",type: "video"});
    Logger.log(' search results: %s', results.items);

  for(var i in results.items) {
    var item = results.items[i];
    Logger.log("[%s] Title: %s", item.id.videoId, item.snippet.title);
  }
  var item = results.items[i];
 //videosListById(item2.id.videoId)

  var results = YouTube.Videos.list("id,snippet",{'id': item.id.videoId });
  for(var i in results.items) {
    var item = results.items[i];
    Logger.log('%s Description: %s', item.snippet.title, item.snippet.description);


}

  for(var i in results.item) {
    var item = results.item[i];

  }

1 Ответ

0 голосов
/ 15 февраля 2019

Вы должны использовать нумерацию страниц

Приведенный ниже код демонстрирует, как использовать нумерацию страниц в рамках рекурсии.

  • Максимальный счет установлен на 10 элементов
  • Размер пагинации: 1

Измените это, если вам нужно.

/**
 * @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;
}
...