Utilizzo di un elenco di canali ID quali:modo più efficace per recuperare recenti arrivi da più canali con YouTube API v3
channel_ids = [ 'UC6nSFpj9HTCZ5t-N3Ra3-HB', 'UC6nSFpjSEBUCZ5t-N3Ra3-HB', ' UC6nrst90rsd3Z5t-N3Ra3-HC', 'UC6nSFpjd329th0rt-tuTH3-HA']
voglio recuperare i 50 più recenti upload di video per tutti quei canali che utilizzano l'API v3 YouTube dati, utilizzando il minor numero di richieste HTTP e il minor tempo possibile.
Il modo in cui sto facendo attualmente è:
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
Funziona, ma utilizza un sacco di chiamate al server e non è esattamente veloce. Ho letto la documentazione ma non riesco a trovare un metodo più veloce, qualche idea?
Funziona per le richieste del YouTube API versione 3? Poiché il tuo link fa parte dell'API di Cloud Storage. – Als
Sì, lo fa. È possibile utilizzare apiclient.http.BatchHttpRequest per creare facilmente una richiesta batch. – hoozecn