Можно ли отправлять запросы на пакетную обработку с помощью Python Youtube API? - PullRequest
1 голос
/ 01 февраля 2010

Я пишу приложение, использующее Python, которое добавляет видео в плейлист пользователя на Youtube.Выполнение этого по одному приводит к тому, что Youtube начинает регулировать мои запросы.

Существует API пакетной обработки, который позволяет отправлять 50 запросов одновременно, но я не могу узнать из документов, как отправитьзапрос на пакетную обработку.Единственная информация о нем касается содержимого XML, которое необходимо отправить для запроса.

Кто-нибудь знает, как отправить запрос на пакетную обработку?

Ответы [ 2 ]

3 голосов
/ 03 ноября 2011

Мне удалось сделать так:

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 )

Результирующий канал может быть повторен как стандартный канал API YouTube. Хотя особое внимание следует уделить отсутствующим видео и другим -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
3 голосов
/ 02 февраля 2010

Похоже, что это задокументировано в вики gdata-python-client: http://code.google.com/p/gdata-python-client/wiki/UsingBatchOperations. Хотя примеры на этой странице относятся к базовым и электронным таблицам, а не к YouTube, должно быть довольно просто применить те же методы к API YouTube. Я полагаю, вам нужно будет использовать API v2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...