我正在使用“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_service”是构建函数的包装器:
from apiclient.discovery import build
答案 0 :(得分: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”的视图从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(每秒查询数)不同。
答案 1 :(得分:1)
在一次通话中无法获取多个视频ID的数据。您可以在某些类型的报告中获取通道级数据,但不能仅获取视频ID子集的数据。
您需要针对每个视频ID进行多次Analytics API调用。您可以在单独的线程中同时发出一些请求,并获得相当好的吞吐量。我已经为一些给定频道中的所有视频制作了一些示例代码(在Ruby中,但这些概念也适用于Python):https://code.google.com/p/youtube-api-samples/source/browse/#git%2Fanalytics-dump