【问题标题】:How to retrieve Videos from a YouTube CHANNEL with java gdata client如何使用 java gdata 客户端从 YouTube 频道中检索视频
【发布时间】:2012-10-19 14:18:40
【问题描述】:

我正在使用 java google gdata 客户端 api 来检索到目前为止工作正常的 youtube 视频。 但是今天我遇到了一个问题。我试图从 频道 接收视频,但没有得到任何结果。 我试图查找视频的频道的(示例)网址: http://www.youtube.com/channel/HCrrUf3dKG1Gw

我尝试将 YouTubeQuery setAuthor 方法与“HCrrUf3dKG1Gw”(无论 setPartner 是 false 还是 true)和 setFullTextQuery “PERSONA 4”一起使用 -> 没有结果

从包含“用户”的 url 获取视频可以很好地在查询中设置作者。

这就是我使用的代码(稍作修改):

YouTubeService service = new YouTubeService(<clientId>)
service.setConnectTimeout(2000)
YouTubeQuery query = new YouTubeQuery(new URL(<url>)
query.setOrderBy(YouTubeQuery.OrderBy.RELEVANCE)
query.setTime(Time.ALL_TIME)
query.setFullTextQuery(<query>)
query.setSafeSearch(YouTubeQuery.SafeSearch.NONE)
query.setMaxResults(50)
if (isPartner) {
   query.setUploader(Uploader.PARTNER)
}
if (author) {
   query.setAuthor(<author>)
}
VideoFeed videoFeed = service.query(query, VideoFeed.class)
List<VideoEntry> videos = videoFeed.getEntries()

有人知道我在这里缺少什么吗?频道的处理方式与用户不同吗?

【问题讨论】:

    标签: java youtube-api gdata-api


    【解决方案1】:

    我遇到了同样的问题。 网址错误。在 gdata 库中调用这个

    https://GDATA.youtube.com/feeds/api/channels
    

    如果使用 Data API 2.0,则必须用于通道查询。

    https://GDATA.youtube.com/feeds/api/videos
    

    用于视频查询。

    https://developers.google.com/youtube/2.0/developers_guide_protocol_channel_search

    如果是 Data API 3.0

    https://www.googleapis.com/youtube/v3/channels
    https://www.googleapis.com/youtube/v3/videos
    https://developers.google.com/youtube/v3/docs/channels/list
    

    试试这个例子 https://developers.google.com/youtube/v3/code_samples/java#retrieve_my_uploads

    【讨论】:

      【解决方案2】:

      先解决 HTTP URL,再考虑 java API。

      当URL以“videos”结尾时,可以在“?”后面添加查询参数:

      http://gdata.youtube.com/feeds/api/videos?q=puppy&safeSearch=none&orderby=viewCount

      当 URL 以“channels”/channelID 结尾时,您不能这样做。

      在您的频道页面http://www.youtube.com/channel/HCrrUf3dKG1Gw 上,在“搜索频道”框中输入“MODOK”并进行搜索。结果页面为
      http://www.youtube.com/channel/HCrrUf3dKG1Gw/videos?query=MODOK

      即在添加查询参数之前,基于通道的 URL 必须如下所示:

      http://www.youtube.com/channel/HCrrUf3dKG1Gw/videos.

      Java API 生成 HTTP URL 并通过基于 HTTP 的套接字发送它们 - 与上述相同。

      解决方案:

       YouTubeQuery query = 
       new YouTubeQuery(new URL("http://www.youtube.com/channel/HCrrUf3dKG1Gw/videos");
      

      【讨论】:

      • Thx @Glen 我尝试了你的建议,但遇到了一个例外:com.google.gdata.util.ParseException: Unrecognized content type:text/html;charset=utf-8 at com.google.gdata.client.Service.parseResponseData(Service.java:2136) 这个解决方案真的适合你吗?如果是:您使用的是什么 gdata api 版本?我正在使用 gdata-youtube-2.0 客户端。
      猜你喜欢
      • 2013-07-02
      • 2012-05-27
      • 1970-01-01
      • 2014-04-15
      • 2015-07-12
      • 2014-12-15
      • 2014-10-13
      • 2020-06-25
      • 2012-05-06
      相关资源
      最近更新 更多