Youtube 数据 API 在一段时间内的大多数浏览中得到错误的结果

问题描述 投票:0回答:1

我正在探索 Youtube Data API,我正在尝试获取一段时间内发布的观看次数最多的视频。问题是,我没有得到准确的结果。我输入了我的代码和结果。

from datetime import datetime
import requests
import json

def get_most_watched_videos(api_key, year_b, month_b, day_b, hour_b, min_b, year_a, month_a, day_a, hour_a, min_a, category_id):
    published_before = datetime(year_b, month_b, day_b, hour_b, min_b).isoformat("T") + "Z"
    published_after = datetime(year_a, month_a, day_a, hour_a, min_a).isoformat("T") + "Z"

    params = {
        'part': 'snippet',
        'maxResults': 10,
        'order': 'viewCount',
        'type': 'video',
        'publishedBefore': published_before,
        'publishedAfter': published_after,
        'region': 'US',
        #'relevanceLanguage': 'en',
        'key': api_key,
    }

    response = requests.get('https://www.googleapis.com/youtube/v3/search', params=params)

    return response.json()


year_b, month_b, day_b, hour_b, min_b = 2023, 6, 25, 0, 0
year_a, month_a, day_a, hour_a, min_a = 2010, 6, 24, 0, 0
videos = get_most_watched_videos(api_key, year_b, month_b, day_b, hour_b, min_b, year_a, month_a, day_a, hour_a, min_a, category_id)
video_ids = [video['id']['videoId'] for video in videos['items']]

# get the view count for each video
view_counts = []
video_list = []
for video_id in video_ids:
    response = requests.get(f'https://www.googleapis.com/youtube/v3/videos?part=statistics&id={video_id}&key={api_key}')
    video = json.loads(response.text)
    video_list.append(video)
    view_count = int(video['items'][0]['statistics']['viewCount'])
    view_counts.append((video_id, view_count))

# sort the videos by view count
view_counts.sort(key=lambda x: x[1], reverse=True)

# print the videos and their view counts
for video_id, view_count in view_counts:
    print(f'Video ID: {video_id}, View Count: {view_count}')

该函数的结果在现实生活中并不准确。 我是否以错误的方式使用 API?或者它不起作用?

我已经在 youtube data api search by viewCount error results 上搜索过此问题,但他们建议使用 v1 版本的 API,该版本已弃用。

这是我运行前面的代码时得到的结果(它们显然是错误的,因为“Despacito”有超过 17M 的浏览量:

视频ID:Qpd5dox2GlI,观看次数:17148767
视频ID:9tXsku7CQQA,观看次数:13613482
视频ID:o3cYy7IGQ_w,观看次数:11185616
视频 ID:ygCxKydStJ8,观看次数:9768904
视频 ID:F6MfmV-u2kc,观看次数:7319194
视频 ID:6weJp1JkFcg,观看次数:5612655
视频 ID:lo7SH3S6zCw,观看次数:4121992
视频 ID:iDMren1gIzw,观看次数:4061525
视频 ID:9iNrvndVBqE,观看次数:3842975
视频 ID:oYX5v_W3qT0,观看次数:3316633

有时我会更改开始日期(更长的时间段),但会得到较低的结果。

python youtube youtube-api youtube-data-api
1个回答
0
投票

这可能是一个迟到的回复,但如果它可以帮助某人,那么我很高兴。

我发现该 API 只允许您传递一个参数 IE

publishedAfter
,但如果同时传递
publishedAfter
publishedBefore
则两者都不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.