2

我正在使用“youtubeAnalytics”服务的“v1”来获取 YouTube 视频的观看次数。我可以使用“过滤器”参数获取特定视频的观看数据,但我不确定如何在一次通话中获取多个视频的数据。以下是我目前为获得一个视频的观看次数所做的工作:

YOUTUBE_ANALYTICS_API_SERVICE_NAME = "youtubeAnalytics"
YOUTUBE_ANALYTICS_API_VERSION = "v1"

youtube_id = item.get_youtube_id()
youtube_analytics = get_yt_service(credential, YOUTUBE_ANALYTICS_API_SERVICE_NAME, YOUTUBE_ANALYTICS_API_VERSION)
result = youtube_analytics.reports().query(ids="channel=={0}".format(get_username(credential)),
                                           metrics="views",
                                           dimensions='day',
                                           filters='video=={0}'.format(youtube_id),
                                           start_date=start_date,
                                           end_date=end_date,
                                           sort='-views'
                                          ).execute()

需要明确的是,我使用的是 Google API 客户端,而“get_yt_service”是构建函数的包装器:

from apiclient.discovery import build
4

2 回答 2

2

作为对杰夫回答的反驳:

实际上,您一次可以查询多个视频。您的过滤器将如下所示:

video==id1,id2,id3,...,idn;

话虽如此,返回的数据将被聚合!在某些情况下,就像视图一样,它将是一个总和(id1 的视图 + id2 的视图 + ... + idn 的视图)。它不会分别告诉您每个视频 ID 的观看次数。

但是,我不清楚(也许有人会过来澄清这一点)其他指标是如何汇总的。例如,我尝试获取两个视频的 averageViewDuration。我的结果如下:

id1: 1.8937 averageViewDuration
id2: 45.24135 averageViewDuration
both: 3.09112 averageViewDuration

这显然不是总和,也不是两个值的简单平均值。也许它以某种方式加权,但从文档中不清楚如何为每个可能的指标聚合这些数据。事实上,文档中几乎没有关于在同一通话中过滤多个视频 ID 的内容。

我目前正在与 YouTube 代表进行沟通,因此我会在将来的回答中附加任何有关此问题的新信息。

更新

实际上,您可以在一次分析 API 调用中检索多个视频的每个视频数据。使用维度“视频”。例如,如果您希望视频 ID“a”和“b”在 2015 年 1 月 1 日到 2015 年 1 月 31 日的观看次数,您的 API 请求将如下所示

GET https://www.googleapis.com/youtube/analytics/v1/reports?ids=contentOwner%3D%3DOwnerName&start-date=2015-01-01&end-date=2015-01-31&metrics=views&dimensions=video&filters=video%3D%3Da%2b%3B&sort=-views&start-index=1&key={YOUR_API_KEY}

警告:您每分钟可以查询多少个不同的视频 ID,这与您的 QPS(每秒查询数)不同。

于 2015-03-05T22:29:15.853 回答
1

在一次通话中无法获取多个视频 ID 的数据。您可以在某些类型的报告中获取频道级数据,但不能仅获取视频 ID 子集的数据。

您需要进行多次 Analytics API 调用,每个视频 ID 调用一次。您可以在单独的线程中同时发出几个请求并获得相当好的吞吐量。我已经为给定频道中的所有视频整理了一些示例代码(在 Ruby 中,但这些概念也适用于 Python):https ://code.google.com/p/youtube-api-samples/源/浏览/#git%2Fanalytics-dump

于 2013-04-24T17:57:22.550 回答