YouTube Api 播放列表视频限制为 50 个。如何获取更多?
Posted
技术标签:
【中文标题】YouTube Api 播放列表视频限制为 50 个。如何获取更多?【英文标题】:YouTube Api playlist Video restricted to 50. How do I fetch more? 【发布时间】:2018-09-16 12:53:36 【问题描述】:我正在尝试从频道的播放列表中获取视频。有 132 个视频,但我无法获取超过 50 个视频。
我知道必须获取 nextPageToken 并与 url 一起传递? 这是我第一次使用 api。
这就是我获取 50 个视频的方法。
编辑
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:
添加了以下内容,但未获取任何值。
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();
【问题讨论】:
我可以知道你传递给 api 调用的 URL 吗? 编辑了问题。请检查 【参考方案1】:您需要添加一个额外的查询参数pageToken
,如下所示
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
。
你会得到数据
"kind": "youtube#searchListResponse",
"etag": "\"RmznBCICv9YtgWaaa_nWDIH1_GM/MgcKz6rwie5hyKKWdwMChcXzNzU\"",
"nextPageToken": "CJYBEAA",
"prevPageToken": "CGQQAQ",
"regionCode": "IN",
"pageInfo":
"totalResults": 184,
"resultsPerPage": 50
,
"items": [...]
所以,把这些数据转换成JSONObject
as
JSONObject mainObject = new JSONObject(data);
NEXT_PAGE_TOKEN = mainObject.getString("nextPageToken");
...//Rest your task here
这很好用。
【讨论】:
问题是如何获得这个 NEXT_PAGE_TOKEN?我要 api。 我尝试添加此代码,但它没有获取任何值。请检查更新的代码 我通过修改得到了 nextPageToken。以上是关于YouTube Api 播放列表视频限制为 50 个。如何获取更多?的主要内容,如果未能解决你的问题,请参考以下文章
在达到 API 配额限制之前,YouTube 视频上传被拒绝
无法使用 YouTube Android Player API 播放某些 Youtube 视频
Youtube API v3 - 如何以迭代方式获取视频列表