Я использую API данных YouTube для извлечения всех понравившихся видео из аккаунта аутентифицированного пользователя.
Общее количество понравившихся видео из моей учетной записи превышает 3000. Я использую nextPageToken
для перехода на следующую страницу. Однако я могу пройти только до 20 страниц. Поскольку я установил maxResults = 50
, это составляет в общей сложности 1000 видео, что мне кажется довольно специфичным. Я не понимаю, почему на 20-й странице нет nextPageToken
, хотя 3000 видео не были охвачены, есть ли другое ограничение, которое, возможно, говорит о том, что вы не можете получить более 1000 видео?
Я написал следующий код для хранения количества видео по каждой категории в словаре. Категория ID 10 соответствует музыке, 20 - играм и т. Д.
request = youtube.videos().list(part = 'snippet', myRating = 'like', maxResults = 50)
likedVideos = request.execute()
print(likedVideos['pageInfo']) # prints {'totalResults': 3398, 'resultsPerPage': 50}
countByCategoryId = {}
for video in likedVideos['items']:
catId = video['snippet']['categoryId']
if catId in countByCategoryId:
countByCategoryId[catId] += 1
else:
countByCategoryId[catId] = 1
count = 1
while 'nextPageToken' in likedVideos.keys():
count += 1
print('page', count) # prints numbers from 2 to 20
print(likedVideos['pageInfo']) # prints {'totalResults': 3398, 'resultsPerPage': 50} in every iteration
request = youtube.videos().list(part = 'snippet', myRating = 'like', maxResults = 50, pageToken = likedVideos['nextPageToken'])
likedVideos = request.execute()
for video in likedVideos['items']:
catId = video['snippet']['categoryId']
if catId in countByCategoryId:
countByCategoryId[catId] += 1
else:
countByCategoryId[catId] = 1
print('nextPageToken' in likedVideos.keys()) # prints False
print(sum(countByCategoryId.values()) # prints 974, less than 1000 because some videos were deleted or made private