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?
to działa dla żądań YouTube api wersji 3? Ponieważ Twój link jest częścią api Cloud Storage. – Als
Tak, robi. Możesz użyć apiclient.http.BatchHttpRequest, aby łatwo utworzyć zadanie wsadowe. – hoozecn