我有一个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
®ion=world
&token={API_TOKEN}
&hl=en_US
上述URL 有效。但是,我想要一个特定日期范围的报告,而不是提供的默认范围。
Insight报表查询请求的日期范围在user_starttime
和user_endtime
参数中设置。(在上面的默认情况下,日期是2011-09-27到2011-10-04。)YouTube API文档说,你可以通过替换时间戳(以毫秒为单位)来指定你想要的日期,从而指定你自己的日期范围(最多覆盖28天)。
http://insight.youtube.com/video-analytics/csvreports
?query={VIDEO_ID}
&type=v
&starttime=1315353600000
&endtime=1317772800000
&user_starttime=1307937600000
&user_endtime=1308110400000
®ion=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工作的事实表明,我必须做一些错误的这些日期值,但我不知道是什么。我忽略了什么?
更新2 - 11月4日,2011:
最近对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
®ion=world
&token={API_TOKEN}
&hl=en_US
这个(好的)URL和我上面问题中的前一个(坏的)URL有什么区别?嗯,我在这里的自定义日期范围,在user_starttime
和user_endtime
参数中指定,都在YouTube在 starttime
和 endtime
参数中设置的范围内。
换句话说,starttime
和endtime
似乎代表了通过这些类型的请求可能实现的任何用户指定的自定义日期范围的外部边界。
当YouTube API文档说:
您可以将报表包含数据的日期范围调整为最多28天的周期
我想他们的意思是:
- 您的日期范围跨度不得超过28天…和…
- 您的日期范围可能不会落在日期范围之外,从报告当前可用的最近日期向后28天,我们通过
starttime
和endtime
参数告诉您。
更新:
在这个帖子里,一个YouTube API团队成员说:您应该考虑starttime值为支持的绝对最早的开始日期,而endtime值为支持的绝对最晚的结束日期。如果你试图将user_starttime设置为比starttime更早的东西,那么你将请求超过28天的数据,而这些数据是不可用的。