Я пытаюсь получить количество просмотров для списка видео с канала. Я написал функцию, и когда я пытаюсь запустить ее, используя только «video_id», «название» и «дату публикации», я получаю результат. Однако, когда мне нужно количество просмотров или что-то еще из статистической части API, это дает ключевую ошибку.
Вот код:
def get_video_details(youtube, video_ids):
all_video_stats = []
for i in range(0, len(video_ids), 50):
request = youtube.videos().list(
part='snippet,statistics',
id = ','.join(video_ids[i:i+50]))
response = request.execute()
for video in response['items']:
video_stats = dict(
Video_id = video['id'],
Title = video['snippet']['title'],
Published_date = video['snippet']['publishedAt'],
Views = video['statistics']['viewCount'])
all_video_stats.append(video_stats)
return all_video_stats
get_video_details(youtube, video_ids)
И это сообщение об ошибке:
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_18748/3337790216.py in <module>
----> 1 get_video_details(youtube, video_ids)
~\AppData\Local\Temp/ipykernel_18748/1715852978.py in get_video_details(youtube, video_ids)
14 Title = video['snippet']['title'],
15 Published_date = video['snippet']['publishedAt'],
---> 16 Views = video['statistics']['viewCount'])
17
18 all_video_stats.append(video_stats)
KeyError: 'viewCount'
Я ссылался на это видео YouTube, чтобы написать свой код.
Заранее спасибо.
Вы делали нулевую проверку? Я протестировал его, и он отлично работает для меня, если есть viewCount.
Как сказал @DalmTo, не исключено, что значение viewCount
равно нулю, насколько я помню, работал с ним, оно может быть нулевым или любым целым числом (включая 0)
Когда я пытаюсь запустить код для одного видео, я получаю ответ. Но я хочу решение для списка видео, а видео так много.
Я понял.
Мне пришлось использовать .get(), чтобы избежать KeyErrors. Он вернет None для KeyErrors.
Заменил этот код, чтобы получить решение.
Views = video['statistics'].get('viewCount')
Вы пытались проверить, какие ключи находятся присутствуют в результате? Вы пробовали читать документацию API, чтобы понять, что должно присутствовать?