(Java, JSON) 使用 Youtube API 从包含已删除项目的播放列表中获取数据
(Java, JSON) Get data from a playlist with a deleted item using Youtube API
我在 SO 上搜索了很多主题,我已经走了很远。但是现在我有一个问题,关于如何正确地从这个 URL 中读取数据:
http://gdata.youtube.com/feeds/api/playlists/PLsksxTH4pR3KtrWWeupRy5h0Di7N_MufB?v=2&alt=jsonc&max-results=50
第22位有一个视频被Youtube拒绝,因此被屏蔽,所以无法观看。我现在遇到的问题是我无法成功跳过该条目并继续下一个条目。即使上面 URL 中有 50 个条目,我的应用程序也只会显示 21,停止在被阻止的视频所在的位置。
我尝试使用该视频的 JsonObject "status" 并检查它是否具有值 "rejected",但我做不到。
欢迎任何帮助,提前致谢:)
这是我的代码:
ArrayList<String> msg = new ArrayList<String>();
ArrayList<String> title = new ArrayList<String>();
ArrayList<Bitmap> thumb = new ArrayList<Bitmap>();
public void getData()
{
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpGet request = new HttpGet("http://gdata.youtube.com/feeds/api/playlists/PLsksxTH4pR3KtrWWeupRy5h0Di7N_MufB?v=2&alt=jsonc&max-results=50");
try
{
HttpResponse response = httpclient.execute(request);
HttpEntity resEntity = response.getEntity();
String _response= EntityUtils.toString(resEntity); // content will be consume only once
JSONObject json = new JSONObject(_response);
JSONArray jsonArray = json.getJSONObject("data").getJSONArray("items");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i).getJSONObject("video");
String title1 = jsonObject.getString("title");
title.add(title1);
String thumbUrl = jsonObject.getJSONObject("thumbnail").getString("sqDefault");
URL url1 = new URL(thumbUrl);
Bitmap bmp = BitmapFactory.decodeStream(url1.openConnection().getInputStream());
thumb.add(bmp);
String url;
try {
url = jsonObject.getJSONObject("player").getString("default");
msg.add(url);
} catch (JSONException ignore) {
}
}
}
catch(Exception e1)
{
e1.printStackTrace();
}
httpclient.getConnectionManager().shutdown();
}
I tried to use the JsonObject "status" of that video and checking if
it has the value "rejected", but I couldn't do it.
从 items
JSONArray 中获取所有项目而没有被阻止的项目。在从 video
JSONObject.like:
访问其他键之前,使用 JSONObject.has 方法检查 status
对象是否可用
JSONObject jsonObject = jsonArray.getJSONObject(i).getJSONObject("video");
if(jsonObject.has("status")){
// ignore video object
}else{
//... get other thumbnail, player objects
}
我在 SO 上搜索了很多主题,我已经走了很远。但是现在我有一个问题,关于如何正确地从这个 URL 中读取数据: http://gdata.youtube.com/feeds/api/playlists/PLsksxTH4pR3KtrWWeupRy5h0Di7N_MufB?v=2&alt=jsonc&max-results=50
第22位有一个视频被Youtube拒绝,因此被屏蔽,所以无法观看。我现在遇到的问题是我无法成功跳过该条目并继续下一个条目。即使上面 URL 中有 50 个条目,我的应用程序也只会显示 21,停止在被阻止的视频所在的位置。
我尝试使用该视频的 JsonObject "status" 并检查它是否具有值 "rejected",但我做不到。
欢迎任何帮助,提前致谢:)
这是我的代码:
ArrayList<String> msg = new ArrayList<String>();
ArrayList<String> title = new ArrayList<String>();
ArrayList<Bitmap> thumb = new ArrayList<Bitmap>();
public void getData()
{
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpGet request = new HttpGet("http://gdata.youtube.com/feeds/api/playlists/PLsksxTH4pR3KtrWWeupRy5h0Di7N_MufB?v=2&alt=jsonc&max-results=50");
try
{
HttpResponse response = httpclient.execute(request);
HttpEntity resEntity = response.getEntity();
String _response= EntityUtils.toString(resEntity); // content will be consume only once
JSONObject json = new JSONObject(_response);
JSONArray jsonArray = json.getJSONObject("data").getJSONArray("items");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i).getJSONObject("video");
String title1 = jsonObject.getString("title");
title.add(title1);
String thumbUrl = jsonObject.getJSONObject("thumbnail").getString("sqDefault");
URL url1 = new URL(thumbUrl);
Bitmap bmp = BitmapFactory.decodeStream(url1.openConnection().getInputStream());
thumb.add(bmp);
String url;
try {
url = jsonObject.getJSONObject("player").getString("default");
msg.add(url);
} catch (JSONException ignore) {
}
}
}
catch(Exception e1)
{
e1.printStackTrace();
}
httpclient.getConnectionManager().shutdown();
}
I tried to use the JsonObject "status" of that video and checking if it has the value "rejected", but I couldn't do it.
从 items
JSONArray 中获取所有项目而没有被阻止的项目。在从 video
JSONObject.like:
status
对象是否可用
JSONObject jsonObject = jsonArray.getJSONObject(i).getJSONObject("video");
if(jsonObject.has("status")){
// ignore video object
}else{
//... get other thumbnail, player objects
}