【问题标题】:How to use Youtube API v3 to filter out videos by category?如何使用 Youtube API v3 按类别过滤视频?
【发布时间】:2019-07-21 09:08:29
【问题描述】:

我正在尝试在 python 中构建一个 Youtube 查询,以过滤掉例如类别 39 - 恐怖。 我正在寻找类似的东西:

searchResults = YouTube.Search.list('id,snippet', {
    maxResults: "10",
    q: "The ring",
    type: "video",
    videoCategoryId: "-10"
  });

或任何一种解决方法。

我什至考虑过不使用过滤器进行搜索,然后尝试从该类别中排除那些,但查询提供的信息不包括视频的类别。而且它非常难看,因为我真的想要 10 个结果,而且我可能需要进行更多查询才能填写列表。

我在谷歌上发现的只是如何从指定类别中获取视频。

你能帮我解决这个问题吗?

【问题讨论】:

    标签: python youtube-data-api


    【解决方案1】:

    通过使用 YouTube 数据 API,您可以在此处查看现有的 videoCategories。

    在这个demo available in the Google API Explorer,你可以检索videoCategories。

    选择videoCategoryId 后,使用以下搜索请求:

    https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults=10&q=The+ring&regionCode=US&type=video&videoCategoryId=1&fields=items(id(channelId%2CvideoId)%2Csnippet(channelId%2CchannelTitle%2Cdescription%2Ctitle))%2CnextPageToken%2CpageInfo%2CprevPageToken%2CregionCode&key={YOUR_API_KEY}
    

    在这里,我使用 search.list 请求获取“来自美国地区”的视频,videoCategoryId 1 = (Film & Animation) 并检索 YouTube 视频的 title,即 videoIdchannel titlechannel_id 来自上传视频的频道。

    这里是demo

    似乎并非所有地区都支持videoCategoryId(这可能是我无法检索带有videoCategoryId=39“这是美国的恐怖类别”的视频的原因) .

    欲了解更多信息,read this answer

    【讨论】:

    • 感谢您的回答,但也许我没有正确地提出问题。我所说的过滤掉一个类别的意思是从我的搜索中排除一个或多个类别。在我的问题示例中,我想要 10 个视频来自搜索不属于类别 39 的“戒指”。
    • @HuevoPodrido 然后你必须将请求返回的videoIds 获取到“search.list”,然后向“videos.list”发出其他请求,在那里,你传递了videoId 用逗号分隔并检查其categoryId,并在您的代码中忽略具有给定videoCategory的视频。检查此demo。希望对您有所帮助。
    • 非常感谢,我猜这是我能得到的最接近的了。
    • @HuevoPodrido 欢迎您。我很高兴能提供帮助,并且(您可能已经注意到了),YouTube 数据 API 有点受限于特定任务。你能做的最好的就是根据你的目的重新排列结果。
    猜你喜欢
    • 2021-07-16
    • 2015-06-27
    • 2013-10-11
    • 2022-11-04
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    • 2018-07-12
    • 2012-12-09
    相关资源
    最近更新 更多