Youtube api V3 nextPageToken повторяется - PullRequest
0 голосов
/ 14 марта 2019

Я получаю некоторые странные результаты, используя URL для получения элементов плейлиста YouTube. Прежде всего, список воспроизведения YouTube может содержать до 200 элементов списка воспроизведения.

https://www.googleapis.com/youtube/v3/playlistItems?part=snippet,status,contentDetails&maxResults=50&playlistId=PLFgquLnL59alCl_2TQvOiD5Vgm1hCaGSI&key=API_KEY

  1. Когда я запускаю это, я получаю правильные результаты (возвращено 50 элементов, общее количество результатов 200, результатов на страницу 50, nextPageToken: "CDIQAA")

  2. Затем я продолжаю выполнять новый запрос всегда с последним nextPageToken:

https://www.googleapis.com/youtube/v3/playlistItems?part=snippet,status,contentDetails&maxResults=49&playlistId=PLFgquLnL59alCl_2TQvOiD5Vgm1hCaGSI&key=API_KEY&pageToken=CDEQAA

100 результатов, nextPageToken: "CGQQAA",

  1. https://www.googleapis.com/youtube/v3/playlistItems?part=snippet,status,contentDetails&maxResults=49&playlistId=PLFgquLnL59alCl_2TQvOiD5Vgm1hCaGSI&key=API_KEY&pageToken=CGQQAA

150 результатов, nextPageToken: "CDIQAA"

Теперь этот nextPageToken повторяет то же самое вначале nextPageToken, почему я до сих пор не получил все 200 результатов?

1 Ответ

1 голос
/ 15 марта 2019

Я предполагаю, что в вашем коде есть логическая проблема, после третьего запроса у меня есть токен CJYBEAA. Здесь функция, которая отлично работает с вашим идентификатором плейлиста и возвращает целых 200 идентификаторов видео:

def getPlaylistVideosIDs(playlist_id):
    videos_IDs = []
    search = YOUR_YOUTUBE_KEY.playlistItems().list(part='snippet', playlistId=playlist_id,
                                              maxResults=50).execute()

    try:
        nextPageToken = search['nextPageToken']
    except KeyError:
        nextPageToken = None

    for item in search['items']:
        videos_IDs.append(item['snippet']['resourceId']['videoId'])

    while (nextPageToken):
        search = YOUR_YOUTUBE_KEY.playlistItems().list(pageToken=nextPageToken, part='snippet',
                                                  playlistId=playlist_id,
                                                  maxResults=50).execute()
        for item in search['items']:
            videos_IDs.append(item['snippet']['resourceId']['videoId'])

        try:
            nextPageToken = search['nextPageToken']
        except KeyError:
            break

    return videos_IDs
...