是否可以使用Python Youtube API提交批处理请求?
-
24-09-2019 - |
题
我正在使用 Python 编写一个应用程序,将视频添加到 Youtube 上用户的播放列表中。一次执行此操作会导致 Youtube 开始限制我的请求。
有一个批处理 API 允许您一次提交 50 个请求,但我无法从文档中找到如何提交批处理请求。有关它的唯一信息包括需要为请求发送的 XML 内容。
有人知道如何提交批量处理请求吗?
解决方案
看起来 gdata-python-client wiki 上有记录: http://code.google.com/p/gdata-python-client/wiki/UsingBatchOperations. 。虽然该页面上的示例适用于 Base 和 Spreadsheets,而不是 YouTube,但将相同的技术应用于 YouTube API 应该相当简单。我相信您将需要使用 v2 API。
其他提示
我已经成功地完成事情是这样的:
query = "<feed xmlns=\"http://www.w3.org/2005/Atom\""
query += " xmlns:media=\"http://search.yahoo.com/mrss/\""
query += " xmlns:batch=\"http://schemas.google.com/gdata/batch\""
query += " xmlns:yt=\"http://gdata.youtube.com/schemas/2007\">"
query += "<batch:operation type=\"query\"/>"
# Assume ids contain list of YouTube video IDs
for vid in ids:
query += ("<entry><id>http://gdata.youtube.com/feeds/api/videos/%s</id></entry>" % vid)
query += "</feed>"
uri = 'http://gdata.youtube.com/feeds/api/videos/batch'
feed = client.Post( query, uri, converter=gdata.youtube.YouTubeVideoFeedFromString )
得到的进料可以迭代作为标准YouTube API饲料。虽然特殊照顾的缺失视频和其他 <批次:状态> -es应采取:
if len(feed.entry):
for entry in feed.entry:
skip = False
for x in entry.extension_elements:
if x.tag == "status" and x.namespace == "http://schemas.google.com/gdata/batch" and x.attributes["code"] != "200":
if x.attributes["code"] == "404":
skip = True
# Likewize you can check for entry's 403 e.g. Quota Exceeded etc
... # Your entry processing goes here
不隶属于 StackOverflow