错误youtube v3 python响应没准备好

时间:2013-11-04 19:44:24

标签: api python-2.7 youtube youtube-api

我使用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()

你对我遇到这种行为的原因有什么暗示吗?

感谢。

1 个答案:

答案 0 :(得分:0)

Python httplib ResponseNotReady

解释了该特定异常

但有一点需要指出的是,您不需要为每个视频ID执行单独的youtube.videos.list()调用。您可以将最多50个以逗号分隔的视频ID作为id=参数传递给单个youtube.videos.list()来电。减少您正在进行的HTTP请求的数量将带来更好的性能,并可能解决异常问题。