Delete PushAgentQQ.java
This commit is contained in:
@@ -1,299 +0,0 @@
|
||||
package com.github.catvod.spider;
|
||||
|
||||
import com.github.catvod.crawler.SpiderDebug;
|
||||
import com.github.catvod.utils.Misc;
|
||||
import com.github.catvod.utils.okhttp.OkHttpUtil;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
public class PushAgentQQ extends PushAgent {
|
||||
private static String douban_api_host = "https://frodo.douban.com/api/v2";
|
||||
public static JSONObject getUrls(){
|
||||
String _urls = "{" +
|
||||
" \"search\": \"/search/weixin\"," +
|
||||
" \"search_agg\": \"/search\"," +
|
||||
" \"movie_recommend\": \"/movie/recommend\"," +
|
||||
" \"movie_tag\": \"/movie/tag\"," +
|
||||
" \"tv_tag\": \"/tv/tag\"," +
|
||||
" \"movie_search\": \"/search/movie\"," +
|
||||
" \"tv_search\": \"/search/movie\"," +
|
||||
" \"book_search\": \"/search/book\"," +
|
||||
" \"group_search\": \"/search/group\"," +
|
||||
" \"movie_showing\": \"/subject_collection/movie_showing/items\"," +
|
||||
" \"movie_hot_gaia\": \"/subject_collection/movie_hot_gaia/items\"," +
|
||||
" \"movie_soon\": \"/subject_collection/movie_soon/items\"," +
|
||||
" \"movie_top250\": \"/subject_collection/movie_top250/items\"," +
|
||||
" \"movie_scifi\": \"/subject_collection/movie_scifi/items\"," +
|
||||
" \"movie_comedy\": \"/subject_collection/movie_comedy/items\"," +
|
||||
" \"movie_action\": \"/subject_collection/movie_action/items\"," +
|
||||
" \"movie_love\": \"/subject_collection/movie_love/items\"," +
|
||||
" \"tv_hot\": \"/subject_collection/tv_hot/items\"," +
|
||||
" \"tv_domestic\": \"/subject_collection/tv_domestic/items\"," +
|
||||
" \"tv_american\": \"/subject_collection/tv_american/items\"," +
|
||||
" \"tv_japanese\": \"/subject_collection/tv_japanese/items\"," +
|
||||
" \"tv_korean\": \"/subject_collection/tv_korean/items\"," +
|
||||
" \"tv_animation\": \"/subject_collection/tv_animation/items\"," +
|
||||
" \"tv_variety_show\": \"/subject_collection/tv_variety_show/items\"," +
|
||||
" \"tv_chinese_best_weekly\": \"/subject_collection/tv_chinese_best_weekly/items\"," +
|
||||
" \"tv_global_best_weekly\": \"/subject_collection/tv_global_best_weekly/items\"," +
|
||||
" \"show_hot\": \"/subject_collection/show_hot/items\"," +
|
||||
" \"show_domestic\": \"/subject_collection/show_domestic/items\"," +
|
||||
" \"show_foreign\": \"/subject_collection/show_foreign/items\"," +
|
||||
" \"book_bestseller\": \"/subject_collection/book_bestseller/items\"," +
|
||||
" \"book_top250\": \"/subject_collection/book_top250/items\"," +
|
||||
" \"book_fiction_hot_weekly\": \"/subject_collection/book_fiction_hot_weekly/items\"," +
|
||||
" \"book_nonfiction_hot_weekly\": \"/subject_collection/book_nonfiction_hot_weekly/items\"," +
|
||||
" \"music_single\": \"/subject_collection/music_single/items\"," +
|
||||
" \"movie_rank_list\": \"/movie/rank_list\"," +
|
||||
" \"movie_year_ranks\": \"/movie/year_ranks\"," +
|
||||
" \"book_rank_list\": \"/book/rank_list\"," +
|
||||
" \"tv_rank_list\": \"/tv/rank_list\"," +
|
||||
" \"movie_detail\": \"/movie/\"," +
|
||||
" \"movie_rating\": \"/movie/%s/rating\"," +
|
||||
" \"movie_photos\": \"/movie/%s/photos\"," +
|
||||
" \"movie_trailers\": \"/movie/%s/trailers\"," +
|
||||
" \"movie_interests\": \"/movie/%s/interests\"," +
|
||||
" \"movie_reviews\": \"/movie/%s/reviews\"," +
|
||||
" \"movie_recommendations\": \"/movie/%s/recommendations\"," +
|
||||
" \"movie_celebrities\": \"/movie/%s/celebrities\"," +
|
||||
" \"tv_detail\": \"/tv/\"," +
|
||||
" \"tv_rating\": \"/tv/%s/rating\"," +
|
||||
" \"tv_photos\": \"/tv/%s/photos\"," +
|
||||
" \"tv_trailers\": \"/tv/%s/trailers\"," +
|
||||
" \"tv_interests\": \"/tv/%s/interests\"," +
|
||||
" \"tv_reviews\": \"/tv/%s/reviews\"," +
|
||||
" \"tv_recommendations\": \"/tv/%s/recommendations\"," +
|
||||
" \"tv_celebrities\": \"/tv/%s/celebrities\"," +
|
||||
" \"book_detail\": \"/book/\"," +
|
||||
" \"book_rating\": \"/book/%s/rating\"," +
|
||||
" \"book_interests\": \"/book/%s/interests\"," +
|
||||
" \"book_reviews\": \"/book/%s/reviews\"," +
|
||||
" \"book_recommendations\": \"/book/%s/recommendations\"," +
|
||||
" \"music_detail\": \"/music/\"," +
|
||||
" \"music_rating\": \"/music/%s/rating\"," +
|
||||
" \"music_interests\": \"/music/%s/interests\"," +
|
||||
" \"music_reviews\": \"/music/%s/reviews\"," +
|
||||
" \"music_recommendations\": \"/music/%s/recommendations\" }";
|
||||
|
||||
try {
|
||||
JSONObject jsonObject = new JSONObject(_urls);
|
||||
return jsonObject;
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static JSONArray getDouban(String key,String sort,Integer count) throws JSONException {
|
||||
if(sort==null)sort="U";
|
||||
if(count ==null) count =120;
|
||||
JSONObject ju = getUrls();
|
||||
String url = douban_api_host + ju.getString(key)+"?sort="+sort+"&start=0&count="+count+"&apikey=" + Misc.apikey + "&channel=Douban";
|
||||
String json = OkHttpUtil.string(url, getHeaderDB());
|
||||
JSONArray jSONArray = new JSONArray();
|
||||
JSONObject jo = new JSONObject(json),o1 = null,op1=null,vo=null;
|
||||
|
||||
JSONArray ay = jo.getJSONArray("subject_collection_items");
|
||||
String remark = "", title = "",pic="";
|
||||
Object o = null;
|
||||
for (int i = 0; i < ay.length(); i++) {
|
||||
JSONObject v = ay.getJSONObject(i);
|
||||
vo = new JSONObject();
|
||||
title = v.getString("title");
|
||||
o = v.get("rating");
|
||||
if (!o.toString().equals("null")) {
|
||||
o1 = v.getJSONObject("rating");
|
||||
remark = o1.optString("value", "暂无评分");
|
||||
}else {
|
||||
remark = "暂无评分";
|
||||
}
|
||||
op1 = v.getJSONObject("pic");
|
||||
pic = op1.optString("normal", "");
|
||||
vo.put("vod_id", "");
|
||||
vo.put("vod_name", title);
|
||||
vo.put("vod_remarks", remark);
|
||||
vo.put("vod_pic", pic);
|
||||
jSONArray.put(vo);
|
||||
}
|
||||
return jSONArray;
|
||||
}
|
||||
|
||||
protected static HashMap<String, String> getHeaderDB() {
|
||||
HashMap<String, String> headers = new HashMap<>();
|
||||
headers.put("Host","frodo.douban.com");
|
||||
headers.put("Connection", "Keep-Alive");
|
||||
headers.put("Referer", "https://servicewechat.com/wx2f9b06c1de1ccfca/84/page-frame.html");
|
||||
headers.put("content-type", "application/json");
|
||||
headers.put("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 MicroMessenger/7.0.9.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat");
|
||||
return headers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String homeContent(boolean filter) {
|
||||
try {
|
||||
fetchRule(true,1);
|
||||
JSONObject result = new JSONObject();
|
||||
JSONArray classes = new JSONArray();
|
||||
String[] fenleis = getRuleVal(Misc.siteRule,"fenlei", "").split("#");
|
||||
for (String fenlei : fenleis) {
|
||||
String[] info = fenlei.split("\\$");
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("type_name", info[0]);
|
||||
jsonObject.put("type_id", info[1]);
|
||||
classes.put(jsonObject);
|
||||
}
|
||||
result.put("class", classes);
|
||||
return result.toString();
|
||||
} catch (
|
||||
Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
@Override
|
||||
public String homeVideoContent() {
|
||||
try {
|
||||
JSONObject jo = fetchRule(true,1);
|
||||
JSONArray videos = new JSONArray();
|
||||
String[] fenleis = getRuleVal(jo, "fenlei", "").split("#");
|
||||
for (String fenlei : fenleis) {
|
||||
String[] info = fenlei.split("\\$");
|
||||
JSONObject data = category(info[1], "1", false, new HashMap<>(),jo);
|
||||
if (data != null) {
|
||||
JSONArray vids = data.optJSONArray("list");
|
||||
if (vids != null) {
|
||||
for (int i = 0; i < vids.length() && i < 5; i++) {
|
||||
videos.put(vids.getJSONObject(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (videos.length() >= 30)
|
||||
break;
|
||||
}
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("list", videos);
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
private JSONObject category(String tid, String pg, boolean filter, HashMap<String, String> extend,JSONObject jo) {
|
||||
try {
|
||||
JSONArray videos = new JSONArray();
|
||||
String url=null,name=null,pic=null;
|
||||
JSONObject jsonObject = null, v = null;
|
||||
if (tid.equals("bili")) {
|
||||
String json = OkHttpUtil.string("https://api.bilibili.com/x/web-interface/ranking/v2?rid=0&type=all", null);
|
||||
JSONObject j = new JSONObject(json);
|
||||
JSONObject o = j.getJSONObject("data");
|
||||
JSONArray array = o.getJSONArray("list");
|
||||
for (int i = 0; i < array.length(); i++) {
|
||||
jsonObject = array.getJSONObject(i);
|
||||
url = jsonObject.optString("short_link", "");
|
||||
name = jsonObject.optString("title", "");
|
||||
pic = jsonObject.optString("pic", "");
|
||||
v = new JSONObject();
|
||||
v.put("vod_id", url + "$$$" + pic + "$$$" + name);
|
||||
v.put("vod_name", name);
|
||||
v.put("vod_pic", pic);
|
||||
v.put("vod_remarks", "");
|
||||
videos.put(v);
|
||||
}
|
||||
}else if (tid.startsWith("douban-")) {
|
||||
String [] arr = tid.split("-");
|
||||
String key = arr[1];
|
||||
String sort = null;
|
||||
Integer count = 120;
|
||||
if(arr.length>2)sort = arr[2];
|
||||
if(arr.length>3)count = Integer.parseInt(arr[3]);
|
||||
videos = getDouban(key, sort, count);
|
||||
}else{
|
||||
if (jo == null) jo = fetchRule(true,1);
|
||||
JSONArray array = jo.getJSONArray(tid);
|
||||
for (int i = 0; i < array.length(); i++) {
|
||||
jsonObject = array.getJSONObject(i);
|
||||
url = getRuleVal(jsonObject, "url");
|
||||
name = getRuleVal(jsonObject, "name");
|
||||
pic = getRuleVal(jsonObject, "pic");
|
||||
if(pic.equals("")) pic = Misc.getWebName(url, 1);
|
||||
v = new JSONObject();
|
||||
v.put("vod_id", url + "$$$" + pic + "$$$" + name);
|
||||
v.put("vod_name", name);
|
||||
v.put("vod_pic", pic);
|
||||
v.put("vod_remarks", Misc.getWebName(url,0));
|
||||
videos.put(v);
|
||||
}
|
||||
}
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("page", pg);
|
||||
result.put("pagecount", 1);
|
||||
result.put("limit", Integer.MAX_VALUE);
|
||||
result.put("total", Integer.MAX_VALUE);
|
||||
result.put("list", videos);
|
||||
return result;
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String categoryContent(String tid, String pg, boolean filter, HashMap<String, String> extend) {
|
||||
JSONObject obj = category(tid, pg, filter, extend,null);
|
||||
return obj != null ? obj.toString() : "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String searchContent(String key, boolean quick) {
|
||||
JSONObject result = new JSONObject();
|
||||
JSONArray videos = new JSONArray();
|
||||
try {
|
||||
fetchRule(false,0);
|
||||
String url = "",webUrl,detailRex,siteUrl,siteName;
|
||||
JSONArray siteArray = Misc.siteRule.getJSONArray("sites");
|
||||
for (int j = 0; j < siteArray.length(); j++) {
|
||||
JSONObject site = siteArray.getJSONObject(j);
|
||||
siteUrl = site.optString("site");
|
||||
siteName = site.optString("name");
|
||||
detailRex = siteUrl+site.optString("detailRex","/vod/%s.html");
|
||||
webUrl = siteUrl + "/index.php/ajax/suggest?mid=1&wd="+key;
|
||||
|
||||
JSONObject data = new JSONObject(OkHttpUtil.string(webUrl, Misc.Headers(0)));
|
||||
JSONArray vodArray = data.getJSONArray("list");
|
||||
for (int i = 0; i < vodArray.length(); i++) {
|
||||
JSONObject vod = vodArray.getJSONObject(i);
|
||||
String name = vod.optString("name").trim();
|
||||
String id = vod.optString("id").trim();
|
||||
String pic = vod.optString("pic").trim();
|
||||
pic = Misc.fixUrl(webUrl, pic);
|
||||
|
||||
url = detailRex.replace("%s",id);
|
||||
JSONObject v = new JSONObject();
|
||||
v.put("vod_id", url + "$$$" + pic + "$$$" + name);
|
||||
v.put("vod_name", "["+siteName+"]"+name);
|
||||
v.put("vod_pic", pic);
|
||||
v.put("vod_remarks", "");
|
||||
videos.put(v);
|
||||
}
|
||||
}
|
||||
result.put("list", videos);
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
if (videos.length() > 0) {
|
||||
try {
|
||||
result.put("list", videos);
|
||||
} catch (JSONException jsonException) {
|
||||
jsonException.printStackTrace();
|
||||
}
|
||||
return result.toString();
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user