为什么我的YouTube API Insight报告会查询404?

时间:2011-10-06 14:44:03

标签: ruby api youtube youtube-api

我有一个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你可以通过替换timestamps来指定你自己的日期范围(覆盖最多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工作的事实表明我必须对这些日期值做错,但我无法弄清楚是什么。我在俯瞰什么?

1 个答案:

答案 0 :(得分:1)

更新2 - 2011年11月4日:

最近针对Insight数据的YouTube数据API协议进行了更改,以下答案不再准确。

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

上述问题中此(好)网址与之前(不良)网址的区别是什么?好吧,我在user_starttimeuser_endtime参数中指定的自定义日期范围都在 starttime 中设置的范围内/ strong> endtime 参数

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

因此,当YouTube API文档说:

  

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

我认为他们的意思是:

  
      
  • 您的日期范围可能跨度超过28天...... 并且 ......
  •   
  • 您的日期范围可能不会超出日期范围,该日期范围将从目前可用报告的最近日期起28天后返回,我们会通过starttime和{endtime告诉您{1}}参数。
  •   

<强>更新

this thread中,YouTube API小组成员说:

  

您应该将启动时间值视为绝对最早支持的开始日期和结束时间绝对最新支持的结束日期。如果您尝试将user_starttime设置为早于starttime的时间,那么您将要求提供超过28天的数据,并且该数据不可用。

这个确切的文字应该在文件中。