【问题标题】:Why is my YouTube API Insight report query 404ing?为什么我的 YouTube API Insight 报告查询 404?
【发布时间】:2011-12-02 07:48:50
【问题描述】:

我有一个 Ruby 脚本,可以下载特定日期范围内特定视频的 YouTube Insight 报告。它使用 ClientLogin 进行授权,检索视频的 <entry> XML 数据,并从该数据中提取指向 CSV 报告的 URL:

http://insight.youtube.com/video-analytics/csvreports
  ?query={VIDEO_ID}
  &type=v
  &starttime=1315353600000
  &endtime=1317772800000
  &user_starttime=1317168000000
  &user_endtime=1317772800000
  &region=world
  &token={API_TOKEN}
  &hl=en_US

上述网址有效。但是,我想要一个特定日期范围的报告,而不是提供的默认范围。

Insight 报告查询的请求日期范围在 user_starttimeuser_endtime 参数中设置。 (在上面的默认情况下,它是 2011-09-27 到 2011-10-04。)YouTube API docs say,您可以通过替换时间戳(以毫秒为单位)来指定自己的日期范围(最多 28 天)代表您想要的日期。

那么,为什么会出现以下查询 404?

http://insight.youtube.com/video-analytics/csvreports
  ?query={VIDEO_ID}
  &type=v
  &starttime=1315353600000
  &endtime=1317772800000
  &user_starttime=1307937600000
  &user_endtime=1308110400000
  &region=world
  &token={API_TOKEN}
  &hl=en_US

日期范围看起来不错:

ruby > Time.at 1307937600
=> 2011-06-13 00:00:00 -0400 
ruby > Time.at 1308110400
=> 2011-06-15 00:00:00 -0400 

“默认”URL 有效的事实表明我一定是对这些日期值做错了,但我不知道是什么。我忽略了什么?

【问题讨论】:

    标签: ruby api youtube youtube-api


    【解决方案1】:

    更新 2 -- 2011 年 11 月 4 日:

    YouTube Data API Protocol for Insight 数据最近发生了变化,下面的答案不再准确。

    YouTube 现在允许单个 Insight 报告查询的日期范围最长为 31 天,并且他们现在允许与可追溯到 2009 年 3 月 1 日的日期有关的请求。文档现在说:

    You can adjust the date range for which a report contains data 
    to a period of up to 31 days beginning no earlier than March 1, 2009. 
    

    这是个好消息。 (将以下内容留给后代。)


    我相信我已经弄清楚为什么上面带有自定义日期范围的 Insight 报告查询是 404ing。我能够检索到具有如下自定义日期范围的报告:

    http://insight.youtube.com/video-analytics/csvreports
    ?query={VIDEO_ID}
    &type=v
    &starttime=1315353600000
    &endtime=1317772800000
    &user_starttime=1315627200000
    &user_endtime=1315972800000
    &region=world
    &token={API_TOKEN}
    &hl=en_US
    

    在我上面的问题中,这个(好的)URL 和之前的(坏的)URL 有什么区别?好吧,我在这里的自定义日期范围,在user_starttimeuser_endtime 参数中指定都在YouTube 设置的范围内 starttime endtime 参数

    换句话说,starttimeendtime 似乎代表了通过这些类型的请求可能实现的任何用户指定的自定义日期范围的外部边界。

    所以,当 YouTube API 文档说:

    您可以将报告包含数据的日期范围调整为最长 28 天

    我想他们的意思是:

    • 您的日期范围跨度不得超过 28 天 ...而且 ...
    • 您的日期范围可能不会超出一个日期范围,该日期范围可以追溯到当前可用报告的最近日期的 28 天,我们通过starttimeendtime 告诉您参数。

    更新:

    YouTube API 团队成员在this thread 中说:

    您应该将 starttime 值视为支持的绝对最早开始日期,并将 endtime 视为支持的绝对最晚结束日期。如果您尝试将 user_starttime 设置为早于 starttime 的值,那么您将要求提供可追溯到 28 天以上的数据,并且该数据不可用。

    这个确切的文本应该在文档中。

    【讨论】:

    • 感谢您跟进您的回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多