2014-05-17 21 views
5

ile birden fazla kanal son yüklemeleri almak için UC6nrst90rsd3Z5t-N3Ra3-HC', 'UC6nSFpjd329th0rt-tuTH3-HA']En etkili yolu kimlikleri gibi kanalın bir listesini kullanarak YouTube API v3

Ben olduğunca az http isteklerini ve olduğunca az zaman kullanarak, YouTube Veri API v3 kullanarak tüm bu kanallar için son 50 video yüklemelerine almak istiyorum mümkün.

Şu anda bunu yapıyorum yoludur: Çalışır ancak sunucu aramaları bir çok kullanır ve tam olarak hızlı değildir

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 

. Belgeleri okudum ama daha hızlı bir yöntem, herhangi bir fikir bulamıyorum?

cevap

1

Bunu YouTube API sürümü 3'ün istekleri için çalışır mı Sending Batch Requests

+0

ile birden istek gönderebilirsiniz? Bağlantınız Bulut Depolama API'sinin bir parçası olduğu için. – Als

+0

Evet, öyle. Kolayca toplu istek oluşturmak için apiclient.http.BatchHttpRequest kullanabilirsiniz. – hoozecn

İlgili konular