Ist es möglich, Batch-Verarbeitung von Anforderungen mit dem Python Youtube API einreichen?
-
24-09-2019 - |
Frage
Ich schreibe eine Anwendung mit Python, die Videos eines Benutzers Playlist auf Youtube erstellt. Dadurch einen nach dem anderen bewirkt, dass Youtube meine Anfragen starten Drosselung.
Es gibt eine Batch-Verarbeitung API, die Sie 50 Anfragen auf einmal einreichen können, aber ich kann aus der Dokumentation nicht herausfinden, wie eine Batch-Verarbeitungsanforderung vorzulegen. Die einzige Information darüber umfasst den XML-Inhalt, dass der Bedarf für die Anforderung gesendet werden.
Weiß jemand, wie eine Batch-Verarbeitungsanfrage einreichen?
Lösung
Andere Tipps
Ich habe es geschafft, die Dinge zu bekommen auf diese Weise getan:
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 )
Feed Resultierende kann als Standard-YouTube-api Feeds wiederholt werden. Obwohl besondere Pflege von fehlenden Videos und anderen
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