Я пытаюсь получить около 500–1000 результатов поиска для любого запроса, поиск которого выполняется с помощью API данных YouTube v3, но когда я go для результатов на второй странице, передавая nextpagetoken, мой 'item []' оказывается пусто. Я использую приведенный ниже код. может быть так передан следующий код токена?
пожалуйста, ваш вклад очень ценится. Большое спасибо.
import sys
sys.path.append("D:\youtube_cov_exp")
import csv
from apiclient.discovery import build
from apiclient.errors import HttpError
from oauth2client.tools import argparser
DEVELOPER_KEY = "your api key here"
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"
def youtube_search(q, max_results, token):
youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,
developerKey=DEVELOPER_KEY)
search_response = youtube.search().list(
q=q,
type="video",
pageToken=token,
order = "date",
part="id,snippet",
maxResults=max_results,
publishedAfter="2020-02-01T00:00:00Z",
videoType="any"
).execute()
videos = []
#print("search response",search_response)
for search_result in search_response.get("items", []):
if search_result["id"]["kind"] == "youtube#video":
videos.append(search_result)
#print("search_result",search_result)
try:
nexttok = search_response['nextPageToken']
#print(type(nexttok),nexttok)
return(nexttok, videos)
except Exception as e:
nexttok = "last_page"
return(nexttok, videos)
query = "recipe"
max_result = 50 # results per page limit is 50
max_page = 2 # pages to scrap
test = []
test = youtube_search(query,max_result,"") #returns token and then search results
#print("test",test)
results = []
results.append(test[1])
print(len(test[1]))
tokens = []
tokens.append(test[0])
nextpagetoken= str(tokens[0])
count=1
while nextpagetoken != "last_page" and count<max_page:
temp=[]
#print(nextpagetoken)
temp = youtube_search(query,max_result,token=nextpagetoken)
print(len(temp))
tokens.append(temp[0])
results.append(temp[1])
nextpagetoken = tokens[count]
count+=1
#print("results len",len(results))