如何使用 Java API 访问 YouTube 观看次数

Posted

技术标签:

【中文标题】如何使用 Java API 访问 YouTube 观看次数【英文标题】:How to access YouTube view count with Java API 【发布时间】:2021-04-12 13:56:41 【问题描述】:

我发现 this answer 显示了如何使用 Java YouTube API 获取视频的观看次数,但很明显,在过去 7 年左右的时间里,有些事情肯定发生了变化,因为我无法弄清楚代码。

这一行

YouTube.Videos.List list = youtube.videos().list("statistics");

在 Eclipse 中产生错误,因为 Videos 类中的 list 方法(至少在当前 API 版本中)具有 List<String>not String 类型的参数...所以有人可以告诉我如何使用当前 API 实现我的目标,因为上面链接的代码由于 API 的更改而无效?

编辑:这是我在 pom.xml 文件中定义 YouTube API 的依赖项的方式

<dependency>
    <groupId>com.google.apis</groupId>
    <artifactId>google-api-services-youtube</artifactId>
  <version>v3-rev20201202-1.31.0</version>
</dependency>

【问题讨论】:

确实,当使用生成的Java库Google Java API Client Services——特别是that corresponding to YouTube Data API——时,list方法的规范正如Eclipse所示。 并不是说这对您(作为客户端库的用户)很重要,但事实上 YouTube 数据 API 的 Videos.list 端点有其请求参数 part 类型为 string (其中的值被指定为一个或多个视频资源属性的逗号分隔列表)。客户端库将这个请求参数的类型抽象为List&lt;String&gt; 那么,我如何获取最新 API 版本的观看次数呢?比如,那我应该将什么传递给list 方法?我链接的问题中的旧版本有String“统计信息”,我应该把它放在List 中并通过它还是我错了? part 参数设置为:Arrays.asList("statistics") 是的,我让程序工作了!我也必须使用Arrays.asList 作为list.setId 方法的参数。 【参考方案1】:

感谢 stvar 的一点帮助,当然还有我在问题中链接到的旧问题,我想出了我需要做什么。这是工作代码:

import java.io.IOException;
import java.util.Arrays;

import com.google.api.client.http.HttpRequest;
import com.google.api.client.http.HttpRequestInitializer;
import com.google.api.services.youtube.*;
import com.google.api.services.youtube.model.Video;

public class Main 
    public static void main(String[] args) throws IOException
    
        YouTube youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, new HttpRequestInitializer() 
            public void initialize(HttpRequest request) throws IOException 
            
        ).setApplicationName("youtube-view-count-test").build();
    
        YouTube.Videos.List list = youtube.videos().list(Arrays.asList("statistics"));
        list.setId(Arrays.asList("kffacxfA7G4"));
        String apiKey = "[redacted]";
        list.setKey(apiKey);            
        Video v = list.execute().getItems().get(0);
        System.out.println("The view count is: "+v.getStatistics().getViewCount());
    

我的代码中使用的 Auth 类取自 here,它是 Google 的 API 示例的一部分

【讨论】:

以上是关于如何使用 Java API 访问 YouTube 观看次数的主要内容,如果未能解决你的问题,请参考以下文章

Youtube 数据 API : 获取媒体流和播放 (JAVA)

如何使用 Youtube API 访问特定播放列表中的所有视频?

如何使用 YouTube Java API 通过主题标签获取随机视频

我如何访问 youtube api v3 私人播放列表 [关闭]

如何通过 Firebase Google 身份验证获取带有刷新令牌的 YouTube 数据 API 访问令牌?

使用访问令牌 - 调用 YouTube 数据 API C#