Почему у меня так быстро заканчиваются цитаты - PullRequest
0 голосов
/ 21 сентября 2019

Я нанял фрилансера для создания аддона, и он сказал, что я должен запросить Google Qoutes, чтобы использовать приложение, которое я запрашивал.Ну, Google продолжает повторять мне, чтобы заполнить форму каждый раз, когда я ее заполняю.Так что не повезло.

Я сделал несколько расчетов, используя это: https://developers.google.com/youtube/v3/determine_quota_cost И я думаю, что когда я выбираю 14 видео, это должно быть около 900 цитат.Тем не менее, после выбора 15-го видео в списке подписки у меня нет 10000 цитат.

Теперь этот аддон либо использовал кто-то другой, либо код запрашивает все выбранные видео снова и снова.

* 1008Может ли кто-нибудь проверить, правильно ли написан код, потому что я не уверен?Я выкладываю соответствующий код ниже.

Этот git также является открытым исходным кодом, если кто-то хочет использовать или отладить аддон: https://github.com/whitevo/youtubeAddon


function getVideoListForChannels(channels) {
    let target = $("#channel-video-list");
    target.find('.loading-msg').show();
    target.find('.content-window, .error-msg').hide();
    let allChannels = [];

    let filterDate = new Date();
    filterDate = filterDate.setDate(filterDate.getDate() - 14); // how many days goes into past
    filterDate = new Date(filterDate).toISOString();

    channels.forEach((channelId, index) => {
        allChannels.push(getChannelVideos(channelId, filterDate));
    });
    Promise.all(allChannels).then(function(channelVideos) {
        let videos = [].concat.apply([], channelVideos);
        //sort all videos
        videos.sort(function(a,b){
            // Turn your strings into dates, and then subtract them
            // to get a value that is either negative, positive, or zero.
            return new Date(b.snippet.publishedAt) - new Date(a.snippet.publishedAt);
        });
        buildChanelVideoList(videos);
    });
}

function getChannelVideos(channelId, date, nextPageToken) {
    const page = nextPageToken ? '&pageToken='+nextPageToken : '';
    const url = "https://www.googleapis.com/youtube/v3/search?key={}&channelId="+channelId+"&part=snippet,id&order=date&publishedAfter="+date+"&maxResults=50"+page;
    return fireApi(url).then(response => {
        let items = response.items;
        if (response.nextPageToken) {
            return getChannelVideos(channelId, date, response.nextPageToken).then(newItems => items.concat(newItems));
        } else { 
            return items;
        }
    });
}

function fireApi(url, method, body) {
    let accessToken = token;
    const requestURL = url;
    const requestHeaders = new Headers();
    requestHeaders.append('Authorization', 'Bearer ' + accessToken);
    requestHeaders.append('Content-Type', 'application/json');
    const request = new Request(requestURL, {
        method: method ? method : "GET",
        headers: requestHeaders,
        mode : 'cors',
        redirect : 'follow',
        body : JSON.stringify(body)
    });

  return fetch(request).then((response) => {
    if (response.status === 200) {
            return response.json();
    } else {
            if (response.status === 401) {
                invalidCredentials();
            }
      throw response.status;
    }
  });

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...