Domanda

Sto scrivendo un'applicazione utilizzando Python che aggiunge un video alla playlist di un utente su Youtube. Fare questo uno alla volta provoca Youtube per avviare strozzamento le mie richieste.

C'è un'API di elaborazione batch che permette di inviare 50 richieste in una sola volta, ma non riesco a trovare fuori dalla documentazione come presentare una richiesta di elaborazione batch. Le uniche informazioni su di esso copre il contenuto XML che deve essere inviato per la richiesta.

Qualcuno sa come presentare una richiesta di elaborazione batch?

È stato utile?

Soluzione

Sembra che questo è documentato sul wiki GData-python-client: http://code.google.com/p/gdata-python-client/wiki/UsingBatchOperations . Mentre gli esempi in quella pagina sono per Base e fogli di calcolo, non è YouTube, dovrebbe essere abbastanza semplice per applicare le stesse tecniche per l'API di YouTube. Si, credo, bisogno di essere utilizzando l'API v2.

Altri suggerimenti

sono riuscito a ottenere le cose fatto in questo modo:

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 )

Con conseguente alimentazione può essere iterato come feed youtube API standard. Anche se particolare attenzione di video mancanti e altri -es dovrebbero essere prese:

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top