我使用python脚本使用youtube v3 api搜索视频信息。在一台计算机上,脚本可以正常工作,但在另一台计算机上,它会收到以下错误:
文件“script.py”,第105行,在youtube_search(选项)中 文件“script.py”,第16行,在youtube_search developerKey = DEVELOPER_KEY中 ..... 文件“C:\ Python27 \ lib \ httplib.py”,第1013行,在getresponse中引发ResponseNotReady() httplib.ResponseNotReady。
我正在使用的youtube_search()函数是:
def youtube_search(options):
youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,
developerKey=DEVELOPER_KEY)
search_response = youtube.search().list(
q = options.q,
part = "id, snippet",
maxResults=options.maxResults
).execute()
videos = []
channels = []
playlists = []
videoInfo = []
t = datetime.datetime.now()
ff_name = '[' + options.q + '].txt'
f = open(ff_name, 'w')
no_results = search_response.get("pageInfo")["totalResults"]
page = 1
while (page <= (no_results / 50)):
nextPage = search_response.get("nextPageToken")
for search_result in search_response.get("items", []):
if search_result["id"]["kind"] == "youtube#video":
info = youtube.videos().list(
part = "statistics,contentDetails"
,id = search_result["id"]["videoId"]).execute()
for info_result in info.get("items", []):
videos.append("%s<|>%s<|>%s" % (
time.strftime("%x")
,nextPage
,search_result["snippet"]["title"]
)
f.write(str(videos))
f.write('\n')
videos = []
page = page + 1
search_response = youtube.search().list(
q = options.q,
part = "id,snippet",
maxResults = options.maxResults,
pageToken = nextPage
).execute()
你对我遇到这种行为的原因有什么暗示吗?
感谢。
答案 0 :(得分:0)
Python httplib ResponseNotReady
解释了该特定异常但有一点需要指出的是,您不需要为每个视频ID执行单独的youtube.videos.list()
调用。您可以将最多50个以逗号分隔的视频ID作为id=
参数传递给单个youtube.videos.list()
来电。减少您正在进行的HTTP请求的数量将带来更好的性能,并可能解决异常问题。