【问题标题】:YouTube Analytics: How to get total views for a specific set of YouTube videosYouTube 分析:如何获得一组特定 YouTube 视频的总观看次数
【发布时间】:2013-04-18 08:07:13
【问题描述】:

我正在使用“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

【问题讨论】:

    标签: youtube-api analytics google-api-python-client youtube-analytics


    【解决方案1】:

    作为对杰夫回答的反驳:

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

    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(每秒查询数)不同。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 谢谢,杰夫。我正在考虑编写一种多线程方式,只是想确认我没有遗漏任何可以节省我努力的功能。谢谢!
      猜你喜欢
      • 2023-03-17
      • 2018-09-02
      • 2013-11-29
      • 1970-01-01
      • 2019-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多