You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过YouTube API获取播放列表中超过50条的视频?

嘿,别担心,第一次用YouTube API碰到分页问题太正常啦!我来一步步教你怎么把那132条视频全部捞出来~

解决YouTube播放列表分页获取视频的问题

核心逻辑

YouTube的playlistItems接口最多一次返回50条数据(maxResults的上限就是50),所以要拿到所有视频,得靠**nextPageToken分页令牌**循环发起请求,直到响应里没有这个令牌为止——那时候就说明所有视频都获取完啦。

具体实现步骤

1. 从首次请求里提取nextPageToken

你第一次调用接口后,返回的JSON响应里会有nextPageToken字段(只要还有未返回的数据)。你需要把这个令牌存下来,作为下一次请求的参数。

2. 循环请求直到没有令牌

每次请求时,把上一次拿到的nextPageToken拼到URL里,格式是&pageToken=你的令牌值。重复这个过程,直到响应里不再出现nextPageToken。

3. 调整你的代码示例(Java版)

下面是修改后的完整逻辑,适配分页需求:

private static String GOOGLE_YOUTUBE_API_KEY = "<API Key>";
// 基础URL,把你的playlistId和key拼进去
private static String PLAYLIST_ITEMS_BASE_URL = "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=50&playlistId=PL-nbe4FPvDBElyW0Iww5suxJ...&key=" + GOOGLE_YOUTUBE_API_KEY;

public static void getAllPlaylistVideos() throws IOException {
    String nextPageToken = null;
    do {
        // 构建带分页令牌的请求URL
        String requestUrl = PLAYLIST_ITEMS_BASE_URL;
        if (nextPageToken != null) {
            requestUrl += "&pageToken=" + nextPageToken;
        }

        // 发送HTTP请求(这里用Java原生HttpClient,你也可以用OkHttp等工具)
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(requestUrl))
                .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        String responseBody = response.body();

        // 解析JSON响应(用Gson示例,你也可以用Jackson)
        JsonObject jsonResponse = JsonParser.parseString(responseBody).getAsJsonObject();
        JsonArray videoItems = jsonResponse.getAsJsonArray("items");

        // 处理当前页的视频数据,比如打印标题或者存入数据库
        for (JsonElement item : videoItems) {
            JsonObject snippet = item.getAsJsonObject().getAsJsonObject("snippet");
            String videoTitle = snippet.get("title").getAsString();
            System.out.println("视频标题:" + videoTitle);
        }

        // 更新分页令牌,判断是否继续循环
        nextPageToken = jsonResponse.has("nextPageToken") 
            ? jsonResponse.get("nextPageToken").getAsString() 
            : null;

    } while (nextPageToken != null); // 没有令牌了就停止循环
}

额外提醒

  • 注意API配额:YouTube API有请求次数限制,批量获取视频时别超过配额,不然会被暂时限制请求。
  • 加异常处理:实际代码里要捕获HTTP请求失败、JSON解析错误等情况,避免程序直接崩溃。
  • maxResults不用改:你已经设为50了,这是该接口允许的最大值,效率最高。

这样就能把132条视频全部获取到啦!如果还有细节卡壳,随时问~

内容的提问来源于stack exchange,提问作者Anant Pundir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:26:02