package com.newvideo.sohu;
|
|
import java.lang.reflect.Type;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import org.apache.commons.httpclient.HttpClient;
|
import org.apache.commons.httpclient.methods.GetMethod;
|
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
import com.newvideo.sohu.entity.RootCategory;
|
import com.newvideo.sohu.entity.SecondCategory;
|
import com.newvideo.sohu.entity.SoHuAlbum;
|
import com.newvideo.sohu.entity.SoHuVideo;
|
import com.newvideo.sohu.entity.SohuVideoContent;
|
import com.newvideo.util.HttpUtil;
|
|
import net.sf.json.JSONObject;
|
|
public class SoHuApi {
|
private static String root_category = "http://open.mb.hd.sohu.com/v4/category/pgc.json";
|
private static String second_category = "http://open.mb.hd.sohu.com/v4/category/catecode/%s.json";
|
private static String content_list = "http://open.mb.hd.sohu.com/v4/category/channel/%s.json";
|
private static String video_detail = "http://open.mb.hd.sohu.com/v4/video/info/%s.json";
|
private static String album_detail = "http://open.mb.hd.sohu.com/v4/album/info/%s.json";
|
private static String video_list = "http://open.mb.hd.sohu.com/v4/album/videos/%s.json";
|
|
private final static String CHANNLE_ID = "19278";
|
private final static String KEY = "abdc5ebb0c7ce08c6c56b74d6e492669";
|
static Gson gson = new GsonBuilder().setVersion(1).create();
|
|
public static List<RootCategory> rootCategoryList() {
|
String result = get(String.format(root_category + "?partner=%s&api_key=%s", CHANNLE_ID, KEY));
|
JSONObject obj = JSONObject.fromObject(result);
|
|
if (obj.optInt("status") == 200) {// 成功
|
Type listType = new TypeToken<List<RootCategory>>() {
|
}.getType();
|
return gson.fromJson(obj.optJSONArray("data").toString(), listType);
|
|
}
|
return null;
|
}
|
|
public static List<SecondCategory> secondCategoryList(int rootCategoryId) {
|
String result = get(
|
String.format(second_category + "?partner=%s&api_key=%s", rootCategoryId + "", CHANNLE_ID, KEY));
|
JSONObject obj = JSONObject.fromObject(result);
|
|
if (obj.optInt("status") == 200) {// 成功
|
Type listType = new TypeToken<List<SecondCategory>>() {
|
}.getType();
|
if (obj.optJSONArray("data") != null)
|
return gson.fromJson(obj.optJSONArray("data").toString(), listType);
|
|
}
|
return null;
|
}
|
|
public static Map<String, Object> getContentList(int cid, int secondCategory, int page, int pageSize) {
|
Map<String, Object> map = new HashMap<String, Object>();
|
|
String result = get(String.format(
|
content_list + "?partner=%s&api_key=%s&cid=%s&o=1&page_size=%s&page=%s&"
|
+ (cid == 9004 ? "" : "is_pgc=1&") + "cat=%s",
|
cid + "", CHANNLE_ID, KEY, cid, pageSize + "", page + "",
|
secondCategory > 0 ? secondCategory + "" : ""));
|
JSONObject obj = JSONObject.fromObject(result);
|
|
if (obj.optInt("status") == 200) {// 成功
|
map.put("count", obj.optJSONObject("data").optInt("count"));
|
Type listType = new TypeToken<List<SohuVideoContent>>() {
|
}.getType();
|
map.put("data", gson.fromJson(obj.optJSONObject("data").optJSONArray("videos").toString(), listType));
|
|
}
|
return map;
|
}
|
|
/**
|
* 获取视频详情
|
*
|
* @param vid
|
*/
|
public static void getVideoDetail(String vid) {
|
String result = get(String.format(video_detail + "?partner=%s&api_key=%s", vid + "", CHANNLE_ID, KEY));
|
JSONObject obj = JSONObject.fromObject(result);
|
|
}
|
|
/**
|
* 获取专辑详情
|
*
|
* @param id
|
* @return
|
*/
|
public static SoHuAlbum getAlbumDetail(String id) {
|
String result = get(
|
String.format(album_detail + "?partner=%s&api_key=%s&aid=%s", id + "", CHANNLE_ID, KEY, id + ""));
|
JSONObject obj = JSONObject.fromObject(result);
|
if (obj.optInt("status") == 200) {
|
SoHuAlbum album = gson.fromJson(obj.optJSONObject("data").toString(), SoHuAlbum.class);
|
if (album == null)
|
return null;
|
|
return album;
|
}
|
return null;
|
}
|
|
/**
|
* 获取专辑里面的视频列表
|
*
|
* @param aid
|
* @return
|
*/
|
public static Map<String, Object> getVideoList(String aid, int page, int pageSize) {
|
Map<String, Object> map = new HashMap<String, Object>();
|
String result = get(String.format(video_list + "?partner=%s&api_key=%s&aid=%s&page=%s&page_size=%s", aid + "",
|
CHANNLE_ID, KEY, aid + "", page + "", pageSize + ""));
|
JSONObject obj = JSONObject.fromObject(result);
|
if (obj.optInt("status") == 200) {
|
JSONObject data = obj.optJSONObject("data");
|
map.put("count", data.optInt("count"));
|
Type listType = new TypeToken<List<SoHuVideo>>() {
|
}.getType();
|
if (data.optJSONArray("videos") != null)
|
map.put("data", gson.fromJson(data.optJSONArray("videos").toString(), listType));
|
}
|
return map;
|
}
|
|
public static String get(String url) {
|
return HttpUtil.get(url,"ISO-8859-1");
|
}
|
}
|