Pergunta

Estou escrevendo um aplicativo usando o Python que adiciona vídeos à lista de reprodução de um usuário no YouTube. Fazer isso de cada vez faz com que o YouTube comece a acelerar meus pedidos.

Há uma API de processamento de lote que permite enviar 50 solicitações de uma só vez, mas não consigo descobrir pelos documentos como enviar uma solicitação de processamento em lote. A única informação sobre isso abrange o conteúdo XML que precisa ser enviado para a solicitação.

Alguém sabe como enviar uma solicitação de processamento em lote?

Foi útil?

Solução

Parece que isso está documentado no Wiki GDATA-Python-Client: http://code.google.com/p/gdata-python-client/wiki/usingbatchoperations. Embora os exemplos nessa página sejam para base e planilhas, não o YouTube, deve ser bastante simples aplicar as mesmas técnicas à API do YouTube. Acredito que você precisará usar a API V2.

Outras dicas

Consegui fazer as coisas desta maneira:

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 )

O feed resultante pode ser iterado como feeds de API padrão do YouTube. Embora tenha cuidado especial de vídeos ausentes e outros u003Cbatch:status>-es deve ser tomado:

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top