Youtube api Youtube数据API v3搜索查询,带有Freebase主题id和日期

Youtube api Youtube数据API v3搜索查询,带有Freebase主题id和日期,youtube-api,Youtube Api,我正在尝试使用YouTube数据API通过使用Freebase主题搜索视频。 它适用于只包含一个主题的简单搜索,但不适用于包含两个参数的搜索:主题id和“发布日期” 例如,要搜索有关Richard Branson(Freebase id=/m/0n839)的视频,youtube数据api站点: 使用以下参数: 部分:代码片段 主题ID:/m/0n839 显示2165个视频的结果 但当您尝试使用搜索有关id=/m/0n839的视频时 部分:代码片段 主题ID:/m/0n839 发布时间:2013-

我正在尝试使用YouTube数据API通过使用Freebase主题搜索视频。 它适用于只包含一个主题的简单搜索,但不适用于包含两个参数的搜索:主题id和“发布日期”

例如,要搜索有关Richard Branson(Freebase id=/m/0n839)的视频,youtube数据api站点: 使用以下参数:

部分:代码片段

主题ID:/m/0n839

显示2165个视频的结果

但当您尝试使用搜索有关id=/m/0n839的视频时

部分:代码片段

主题ID:/m/0n839

发布时间:2013-05-21T21:47:38Z

响应指示147个视频,但响应中仅包含3个视频。 在响应中,您可以看到3个视频ID是J6PY5vxLU8Y、SCkFwpW3kiE、CBvDp0i8Iok

{
 "kind": "youtube#searchListResponse",
 "etag": "\"g-RLCMLrfPIk8n3AxYYPPliWWoo/_-rYO0M0nvpPO6QN7DPFGEYa9ho\"",
 "pageInfo": {
     "totalResults": 147,
     "resultsPerPage": 5
     },
 "nextPageToken": "CAUQAA",
 "items": [
     {
     "kind": "youtube#searchResult",
     "etag": "\"g-RLCMLrfPIk8n3AxYYPPliWWoo/3nxQ-ejnv0qekcbyq09HD2RQt_w\"",
     "id": {
         "kind": "youtube#video",
         "videoId": "J6PY5vxLU8Y"
     },
     "snippet": {
         "publishedAt": "2013-05-22T09:58:34.000Z",
         "channelId": "UCimPiDCqxvfqwVJltL4YzHg",
         "title": "Bono, Richard Branson, and Olivia Wilde Joined Matt Damon's Strike!",
         "description": "Support the strike: http://strikewithme.org/ Millions of celebrities have joined Matt Damon's \"Toilet Strike\" protesting the lack of access to safe water and...",
         "thumbnails": {
             "default": {
                 "url": "https://i.ytimg.com/vi/J6PY5vxLU8Y/default.jpg"
                 },
             "medium": {
                 "url": "https://i.ytimg.com/vi/J6PY5vxLU8Y/mqdefault.jpg"
                 },
             "high": {
                 "url": "https://i.ytimg.com/vi/J6PY5vxLU8Y/hqdefault.jpg"
                 }
             },
         "channelTitle": "water"
    }
},
{
 "kind": "youtube#searchResult",
 "etag": "\"g-RLCMLrfPIk8n3AxYYPPliWWoo/gNslTbFkShGLlUBcXgHw7q9tuJc\"",
 "id": {
     "kind": "youtube#video",
     "videoId": "SCkFwpW3kiE"
     },
 "snippet": {
     "publishedAt": "2013-05-23T16:27:31.000Z",
     "channelId": "UCeF4WiRKOA4XzphWYzR9aVw",
     "title": "Sir Richard Branson dresses as an air stewardess after losing bet",
     "description": "(Reuters) - A man was arrested at the Cannes film festival on Friday after firing a starting pistol during a live TV broadcast on the palm-lined waterfront, ...",
     "thumbnails": {
         "default": {
             "url": "https://i.ytimg.com/vi/SCkFwpW3kiE/default.jpg"
             },
         "medium": {
             "url": "https://i.ytimg.com/vi/SCkFwpW3kiE/mqdefault.jpg"
             },
         "high": {
             "url": "https://i.ytimg.com/vi/SCkFwpW3kiE/hqdefault.jpg"
             }
         },
     "channelTitle": "TheDailyPolitics247"
     }
},
{
 "kind": "youtube#searchResult",
 "etag": "\"g-RLCMLrfPIk8n3AxYYPPliWWoo/-_OEOHhzgCBTLr7x5UoDk2kHlJM\"",
 "id": {
     "kind": "youtube#video",
     "videoId": "CBvDp0i8Iok"
     },
 "snippet": {
     "publishedAt": "2013-05-25T22:38:00.000Z",
     "channelId": "UC2j75rAKcfjBAhW7WmNY4Qg",
     "title": "Virgin Galactic Spaceship Passes Big Test (Y)",
     "description": "A spaceship bankrolled by British tycoon Sir Richard Branson made its first engine-powered flight Monday. The test flight moves Virgin Galactic toward its go...",
     "thumbnails": {
     "default": {
         "url": "https://i.ytimg.com/vi/CBvDp0i8Iok/default.jpg"
         },
     "medium": {
         "url": "https://i.ytimg.com/vi/CBvDp0i8Iok/mqdefault.jpg"
         },
     "high": {
         "url": "https://i.ytimg.com/vi/CBvDp0i8Iok/hqdefault.jpg"
     }
 },
"channelTitle": "NewActionNews"
}
}
]
}
如果使用nextPageToken:“CAUQAA”搜索下一个视频,则响应包含相同的视频ID(J6PY5vxLU8Y、SCkFwpW3kiE、CBvDp0i8Iok):

}

我做错了什么吗?

在API的早期版本中,“totalResults”属性始终只是搜索算法在实际检索任何结果之前提供的一个估计值,因此可以安全地假设v3也是这样。然而,有点奇怪的是,估计可能如此遥远;对于您的查询,实际上只有几个结果(我认为是5个或6个,因为自从您发表这篇初始帖子以来,已经上传了几个)

我已经研究了一些不同的参数,似乎对totalResults近似值的准确性影响最大的因素是'q'参数——您在这里提供的值越具体,totalResults就越精确

当然,在您的查询中,q参数是空的,totalResults近似值非常遥远(事实上,如果您将publishedAfter参数更改为5月21日的5月1日,您实际得到的结果近似值要少一些,即使是更早的日期!)。但是,如果您执行这样的查询:

https://www.googleapis.com/youtube/v3/search?part=id&maxResults=50&publishedAfter=2010-05-01T21%3A47%3A38Z&topicId=%2Fm%2F0n839&key={YOUR_KEY}&q=Bran
然后得到与实际结果数完全匹配的totalResults近似值

当然,这可能会令人沮丧,因为在合并Freebase ID时,您通常不想使用q参数——Freebase ID的全部要点是使用语义相关的信息,而不仅仅是基于字符串匹配!但很明显,这告诉了我们一些关于YouTube内部搜索算法以及它们所依赖的东西。我敢说,随着Freebase集成变得越来越成熟,搜索算法将能够更好地适应,您将再次看到更好的totalResults近似值


作为一种解决方法,您可以使用您在“nextPageToken”中注意到的内容来获得更好的计数。在查询中,将maxResults设置为50,当您得到实际结果时,让例程对其进行计数。如果他们不到50岁,你就拥有了全部。如果该页面上的结果是50,您可能希望预取下一组结果(如果它们是新结果,您可以继续,而如果它们与您的结果相同,那么您正好有50个响应)。一个问题是,这将阻止您在应用程序中显示准确的总结果计数(即,如果您在某个地方进行了分页),因此这不是完美的,但解决方法是什么?

我很确定,结果数和实际显示数之间的差异是由于日期限制(开始时间:1369172858,“发布日期:2013-05-21T21:47:38Z”的表示已实现。 顺便说一下,我现在看到了10场比赛,包括上面提到的三场

第一个结果是使用包括请求的日期范围在内的最窄限制范围检索的。这就是如何获得约140个匹配项的方法。然后过滤检索成功的视频,拒绝实际请求范围之外的视频。很有可能在该阶段丢弃了130个视频,剩下的10个确实令人满意根据请求

匹配项的计数表示检索到的数量——对于日期范围,这通常是高估的,可能是严重的。
我们通常不保证报告为“匹配”的数字实际上都匹配,因为在检索后会发生各种过滤。

您的使用似乎是正确的,我们会跟进。
https://www.googleapis.com/youtube/v3/search?part=id&maxResults=50&publishedAfter=2010-05-01T21%3A47%3A38Z&topicId=%2Fm%2F0n839&key={YOUR_KEY}&q=Bran