admin
2021-08-27 8fee151ffae0c3818694b7318583814bf92663e2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package com.yeshi.buwan.videos.sohu;
 
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.yeshi.buwan.videos.sohu.entity.RootCategory;
import com.yeshi.buwan.videos.sohu.entity.SecondCategory;
import com.yeshi.buwan.videos.sohu.entity.SoHuAlbum;
import com.yeshi.buwan.videos.sohu.entity.SoHuVideo;
import com.yeshi.buwan.videos.sohu.entity.SohuVideoContent;
import com.yeshi.buwan.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");
    }
}