YouTube Api 播放列表视频限制为 50 个.如何获取更多视频? [英] YouTube Api playlist Video restricted to 50. How do I fetch more?

查看:79
本文介绍了YouTube Api 播放列表视频限制为 50 个.如何获取更多视频?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从频道的播放列表中提取视频.有 132 个视频,但我无法获取超过 50 个视频.

I am trying to fetch videos from a channel's playlist. There are 132 videos but I cant fetch more than 50 videos.

我知道必须获取 nextPageToken 并与 url 一起传递?这是我第一次使用 api.

I know that nextPageToken has to be fetched and passed along with url? This is my first time working with api.

这就是我能够获取 50 个视频的方式.

This is how I am able to fetch 50 videos.

编辑

private static String GOOGLE_YOUTUBE_API_KEY = "<API Key>";
     private static String CHANNLE_GET_URL="https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=50&playlistId=PL-nbe4FPvDBElyW0Iww5suxJqqmuGBgIH&key="+GOOGLE_YOUTUBE_API_KEY;

public ArrayList<YoutubeDataModel> parseVideoListFromResponse(JSONObject jsonObject) {
    ArrayList<YoutubeDataModel> mList = new ArrayList<>();

    if (jsonObject.has("items")) {
        try {
            JSONArray jsonArray = jsonObject.getJSONArray("items");
            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject json = jsonArray.getJSONObject(i);
                if (json.has("id")) {
                    JSONObject jsonID = json.getJSONObject("id");
                    String video_id = "";
                    if (jsonID.has("videoId")) {
                        video_id = jsonID.getString("videoId");
                    }
                    if (jsonID.has("kind")) {
                        if (jsonID.getString("kind").equals("youtube#video")) {
                            YoutubeDataModel youtubeObject = new YoutubeDataModel();
                            JSONObject jsonSnippet = json.getJSONObject("snippet");
                            String title = jsonSnippet.getString("title");
                            String description = jsonSnippet.getString("description");
                            String publishedAt = jsonSnippet.getString("publishedAt");
                            String thumbnail = jsonSnippet.getJSONObject("thumbnails").getJSONObject("high").getString("url");

                            youtubeObject.setTitle(title);
                            youtubeObject.setDescription(description);
                            youtubeObject.setPublishedAt(publishedAt);
                            youtubeObject.setThumbnail(thumbnail);
                            youtubeObject.setVideo_id(video_id);
                            mList.add(youtubeObject);
                        }
                    }
                }
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

    return mList;
}

编辑 2:

添加了以下内容,但未获取任何值.

Added the following but it is not fetching any value.

try {
   // String data=null;
    JSONObject reader = new JSONObject();
  String next_Page_Token = reader.getString("nextPageToken");
    Log.d("NextPAgeToken", "NpT"+next_Page_Token);
}
catch (JSONException e)
{
    Log.e("Error", "Error is "+e.getMessage());
    Toast.makeText(getApplicationContext(),"No next page found", Toast.LENGTH_LONG).show();
}

推荐答案

你需要添加一个额外的查询参数 pageToken 如下图

You need to add one extra query parameter pageToken like below

private static String CHANNLE_GET_URL = 
    "https://www.googleapis.com/youtube/v3/playlistItems" + 
        "?part=snippet" +
        "&maxResults=50" +
        "&playlistId=PL-nbe4FPvDBElyW0Iww5suxJqqmuGBgIH" + 
        "&key="+GOOGLE_YOUTUBE_API_KEY +
        "pageToken=" + NEXT_PAGE_TOKEN;

//Pass like this one
"https://www.googleapis.com/youtube/v3/search?part=snippet&order=date&channelId=UC2LrGJYe_uzI3FBj05BuvLA&key=AIzaSyBlj1dJ9txGcXOOblCJuQ0iwIkhUCgVt1Y&maxResults=50&pageToken=CJYBEAA"

并且当您获取数据时,您需要通过从 nextPageToken 获取值来更新 NEXT_PAGE_TOKEN.

and when you get data, you need to update NEXT_PAGE_TOKEN by fetching value from nextPageToken.

你会得到数据

{
    "kind": "youtube#searchListResponse",
    "etag": "\"RmznBCICv9YtgWaaa_nWDIH1_GM/MgcKz6rwie5hyKKWdwMChcXzNzU\"",
    "nextPageToken": "CJYBEAA",
    "prevPageToken": "CGQQAQ",
    "regionCode": "IN",
    "pageInfo": {
        "totalResults": 184,
        "resultsPerPage": 50
},
    "items": [...]
}

因此,将此数据转换为 JSONObject as

So, convert this data into JSONObject as

JSONObject mainObject = new JSONObject(data);
NEXT_PAGE_TOKEN = mainObject.getString("nextPageToken");
...//Rest your task here

这很好用.

这篇关于YouTube Api 播放列表视频限制为 50 个.如何获取更多视频?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆