2014-05-17 10 views
5

Korzystanie listę kanale identyfikatory, takie jak:Najbardziej skutecznym sposobem, aby pobrać najnowsze przesłane z wielu kanałów z YouTube API v3

channel_ids = [ 'UC6nSFpj9HTCZ5t-N3Ra3-HB', 'UC6nSFpjSEBUCZ5t-N3Ra3-HB', " UC6nrst90rsd3Z5t-N3Ra3-HC”,«UC6nSFpjd329th0rt-tuTH3-HA»]

Chcę odzyskać 50 ostatnich przesyłanie wideo dla wszystkich tych kanałów z wykorzystaniem API v3 danych YouTube, przy użyciu jak najmniejszej liczby żądań hTTP i tak mało czasu jak możliwy.

Sposób Jestem obecnie robi to jest:

from apiclient.discovery import build 

youtube = build('youtube', 'v3', developerKey=key) 

channel_ids = ['UC6nSFpj9HTCZ5t-N3Ra3-HB', 'UC6nSFpjSEBUCZ5t-N3Ra3-HB', 'UC6nrst90rsd3Z5t-N3Ra3-HC', 'UC6nSFpjd329th0rt-tuTH3-HA'] 
videos_by_channel = {} 

for channel_id in channel_ids: 

    search_response = youtube.search().list(part="id", 
              type='video', 
              order='date', 
              channelId=channel_id, 
              maxResults=50).execute() 

    videoIds = [] 
    for search_result in search_response.get("items", []): 
     if search_result["id"]["kind"] == "youtube#video": 
      videoIds.append(search_result['id']['videoId']) 

    search_response = youtube.videos().list(
              id=",".join(videoIds), 
              part="id,snippet" 
              ).execute() 

    videos_by_channel[channel_id] = search_response 

To działa, ale zużywa dużo połączeń serwerowych i to nie jest dokładnie to szybko. Czytałem dokumentację, ale nie mogę znaleźć szybszej metody, żadnych pomysłów?

Odpowiedz

1

można wysyłać wielokrotne prośby o Sending Batch Requests

+0

to działa dla żądań YouTube api wersji 3? Ponieważ Twój link jest częścią api Cloud Storage. – Als

+0

Tak, robi. Możesz użyć apiclient.http.BatchHttpRequest, aby łatwo utworzyć zadanie wsadowe. – hoozecn

Powiązane problemy