Youtube api YouTube分析:如何获取特定YouTube视频集的总视图

Youtube api YouTube分析:如何获取特定YouTube视频集的总视图,youtube-api,analytics,google-api-python-client,youtube-analytics,Youtube Api,Analytics,Google Api Python Client,Youtube Analytics,我正在使用“youtubeAnalytics”服务的“v1”获取YouTube视频的浏览量。我可以使用“filters”参数获取特定视频的查看数据,但我不确定如何在一次调用中获取多个视频的数据。以下是我目前为获取一个视频的视图所做的工作: YOUTUBE_ANALYTICS_API_SERVICE_NAME = "youtubeAnalytics" YOUTUBE_ANALYTICS_API_VERSION = "v1" youtube_id = item.get_youtube_id() y

我正在使用“youtubeAnalytics”服务的“v1”获取YouTube视频的浏览量。我可以使用“filters”参数获取特定视频的查看数据,但我不确定如何在一次调用中获取多个视频的数据。以下是我目前为获取一个视频的视图所做的工作:

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_服务”是构建函数的包装器:

from apiclient.discovery import build

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


您需要进行多个分析API调用,每个视频id调用一个。您可以在单独的线程中同时发出几个请求,并获得相当好的吞吐量。我为给定频道中的所有视频编写了一些示例代码(Ruby,但这些概念也适用于Python):

作为对Jeff答案的反驳:

实际上,您可以一次查询多个视频。您的过滤器看起来像:

video==id1,id2,id3,...,idn;
说到这里,返回的数据将被聚合!在某些情况下,如视图,它将是一个总和(id1的视图+id2的视图+…+idn的视图)。它不会单独告诉您每个视频id的视图

然而,我不清楚(也许有人会来澄清这一点)其他指标是如何聚合的。例如,我尝试获取两个视频的平均ViewDuration。我的结果如下:

id1: 1.8937 averageViewDuration
id2: 45.24135 averageViewDuration
both: 3.09112 averageViewDuration
这显然不是一个总和,也不是两个值的简单平均值。也许它是以某种方式加权的,但从文档中不清楚如何为每个可能的度量聚合这些数据。事实上,文档中几乎没有关于在同一个调用中过滤多个视频id的内容

我目前正在与YouTube的一位代表进行沟通,因此我将在将来的回答中添加有关这方面的任何新信息

更新

实际上,您可以在一个analytics API调用中检索多个视频的每个视频数据。使用维度“视频”。例如,如果希望视频ID“a”和“b”的视图从1/1/15到1/31/15,则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(每秒查询)不同。

谢谢,杰夫。我想写一个多线程的方式,只是想确认我没有遗漏任何可以节省我精力的功能。谢谢