Pregunta

Estoy escribiendo una aplicación que utiliza Python que se suma a la lista de reproducción de vídeos de un usuario en Youtube. Al hacer esto uno a la vez hace que Youtube para iniciar estrangulamiento mis peticiones.

Hay una API de procesamiento por lotes que le permite presentar 50 solicitudes a la vez, pero no puede averiguar a través de la documentación de la forma de presentar una solicitud de procesamiento por lotes. La única información sobre el mismo cubre el contenido XML que tiene que ser enviado para la solicitud.

¿Alguien sabe cómo enviar una solicitud de procesamiento por lotes?

¿Fue útil?

Solución

Parece que esto está documentado en el wiki gdata-python-cliente: http://code.google.com/p/gdata-python-client/wiki/UsingBatchOperations . Si bien los ejemplos de esa página son de base y hojas de cálculo, no YouTube, que debe ser bastante sencillo de aplicar las mismas técnicas para la API de YouTube. Usted, yo creo, necesidad de estar utilizando la versión 2 del API.

Otros consejos

Me las he arreglado para hacer las cosas de esta manera:

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 )

alimentación resultante puede repetirse como alimentaciones youtube API estándar. Aunque el cuidado especial de los vídeos perdidos y otros -es deben tomarse:

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top