Add files via upload
This commit is contained in:
@@ -0,0 +1,187 @@
|
||||
package com.github.catvod.spider;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.github.catvod.crawler.Spider;
|
||||
import com.github.catvod.utils.okhttp.OKCallBack;
|
||||
import com.github.catvod.utils.okhttp.OkHttpUtil;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import okhttp3.Call;
|
||||
|
||||
public class Alist extends Spider {
|
||||
private String ext;
|
||||
|
||||
public String categoryContent(String tid, String pg, boolean filter, HashMap<String, String> hashMap) {
|
||||
try {
|
||||
String url = this.ext + "/api/public/path";
|
||||
JSONObject params = new JSONObject();
|
||||
params.put("path", tid);
|
||||
|
||||
JSONArray jSONArray2 = new JSONArray();
|
||||
OkHttpUtil.postJson(OkHttpUtil.defaultClient(), url, params.toString(), new OKCallBack.OKCallBackString() {
|
||||
@Override
|
||||
protected void onFailure(Call call, Exception e) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResponse(String response) {
|
||||
try {
|
||||
JSONObject retval = new JSONObject(response);
|
||||
JSONArray list = retval.getJSONObject("data").getJSONArray("files");
|
||||
for (int i =0; i < list.length(); ++i){
|
||||
JSONObject o = list.getJSONObject(i);
|
||||
String pic = o.getString("thumbnail");
|
||||
if(pic.isEmpty()){
|
||||
pic = "http://img1.3png.com/281e284a670865a71d91515866552b5f172b.png";
|
||||
}
|
||||
JSONObject jSONObject2 = new JSONObject();
|
||||
jSONObject2.put("vod_id", tid + (tid.charAt(tid.length()-1) == '/' ? "" : "/") + o.getString("name"));
|
||||
jSONObject2.put("vod_name", o.getString("name"));
|
||||
jSONObject2.put("vod_pic", pic);
|
||||
jSONObject2.put("vod_tag",o.getInt("type")==1 ? "folder" : "file" );
|
||||
jSONObject2.put("vod_remarks", o.getInt("type")==1 ? "文件夹" : "文件");
|
||||
jSONArray2.put(jSONObject2);
|
||||
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
JSONObject jSONObject3 = new JSONObject();
|
||||
jSONObject3.put("page", 1);
|
||||
jSONObject3.put("pagecount", 1);
|
||||
jSONObject3.put("limit", jSONArray2.length());
|
||||
jSONObject3.put("total", jSONArray2.length());
|
||||
jSONObject3.put("list", jSONArray2);
|
||||
return jSONObject3.toString();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
public String detailContent(List<String> ids) {
|
||||
try
|
||||
{
|
||||
String filename = ids.get(0);
|
||||
String url = this.ext + "/api/public/path";
|
||||
JSONObject params = new JSONObject();
|
||||
params.put("path", filename);
|
||||
|
||||
JSONObject result = new JSONObject();
|
||||
JSONArray list = new JSONArray();
|
||||
|
||||
OkHttpUtil.postJson(OkHttpUtil.defaultClient(), url, params.toString(), new OKCallBack.OKCallBackString() {
|
||||
@Override
|
||||
protected void onFailure(Call call, Exception e) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResponse(String response) {
|
||||
try {
|
||||
JSONObject retval = new JSONObject(response);
|
||||
JSONArray files = retval.getJSONObject("data").getJSONArray("files");
|
||||
for (int i =0; i < files.length(); ++i){
|
||||
JSONObject o = files.getJSONObject(i);
|
||||
String url = o.getString("url");
|
||||
if(url.indexOf("//") ==0){
|
||||
url = "http:"+url;
|
||||
}
|
||||
JSONObject jSONObject2 = new JSONObject();
|
||||
jSONObject2.put("vod_id", filename + "/" + o.getString("name"));
|
||||
jSONObject2.put("vod_name", o.getString("name"));
|
||||
jSONObject2.put("vod_pic", o.getString("thumbnail"));
|
||||
jSONObject2.put("vod_tag",o.getInt("type")==1 ? "folder" : "file" );
|
||||
jSONObject2.put("vod_play_from", "播放");
|
||||
jSONObject2.put("vod_play_url", o.getString("name")+"$"+url);
|
||||
list.put(jSONObject2);
|
||||
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
result.put("list", list);
|
||||
return result.toString();
|
||||
}
|
||||
catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return "";
|
||||
|
||||
}
|
||||
|
||||
|
||||
String fileTime(long time, String fmt) {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTimeInMillis(time);
|
||||
Date date = calendar.getTime();
|
||||
SimpleDateFormat sdf = new SimpleDateFormat(fmt);
|
||||
return sdf.format(date);
|
||||
}
|
||||
|
||||
public String homeContent(boolean z) {
|
||||
try {
|
||||
JSONArray classes = new JSONArray();
|
||||
JSONObject newCls = new JSONObject();
|
||||
newCls.put("type_id", "/");
|
||||
newCls.put("type_name", "Alist");
|
||||
newCls.put("type_flag", "1"); // 1 列表形式的文件夹 2 缩略图 0 或者不存在 表示正常
|
||||
classes.put(newCls);
|
||||
|
||||
JSONArray jSONArray3 = new JSONArray();
|
||||
|
||||
JSONObject jSONObject4 = new JSONObject();
|
||||
jSONObject4.put("class", classes);
|
||||
if(z) {
|
||||
jSONObject4.put("filters", new JSONObject("{}"));
|
||||
}
|
||||
return jSONObject4.toString();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
public void init(Context context, String ext){
|
||||
Alist.super.init(context);
|
||||
this.ext = ext;
|
||||
}
|
||||
|
||||
public String playerContent(String str, String str2, List<String> list) {
|
||||
try{
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("parse", 0);
|
||||
result.put("playUrl", "");
|
||||
result.put("url", str2);
|
||||
return result.toString();
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public String searchContent(String str, boolean z) {
|
||||
try {
|
||||
return "";
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,604 @@
|
||||
package com.github.catvod.spider;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Base64;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
|
||||
|
||||
import com.github.catvod.crawler.Spider;
|
||||
import com.github.catvod.crawler.SpiderDebug;
|
||||
import com.github.catvod.utils.Misc;
|
||||
import com.github.catvod.utils.gZip;
|
||||
import com.github.catvod.utils.okhttp.OKCallBack;
|
||||
import com.github.catvod.utils.okhttp.OkHttpUtil;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.jsoup.Jsoup;
|
||||
import org.jsoup.nodes.Document;
|
||||
import org.jsoup.nodes.Element;
|
||||
import org.jsoup.select.Elements;
|
||||
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
|
||||
import okhttp3.Call;
|
||||
import okhttp3.Response;
|
||||
|
||||
|
||||
|
||||
|
||||
public class Bdys01 extends Spider {
|
||||
private static final String siteUrl = "https://www.bdys01.com";
|
||||
private static final String siteHost = "www.bdys01.com";
|
||||
private String cookie="";
|
||||
private String referer="";
|
||||
private String rspurl="";
|
||||
|
||||
/**
|
||||
* 筛选配置
|
||||
*/
|
||||
private JSONObject filterConfig;
|
||||
|
||||
|
||||
@Override
|
||||
public void init(Context context) {
|
||||
super.init(context);
|
||||
try {
|
||||
filterConfig = new JSONObject("{\"0\":[{\"key\":\"s\",\"name\":\"类型\",\"value\":[{\"n\":\"全部\",\"v\":\"all\"},{\"n\":\"动作\",\"v\":\"dongzuo\"},{\"n\":\"爱情\",\"v\":\"aiqing\"},{\"n\":\"喜剧\",\"v\":\"xiju\"},{\"n\":\"科幻\",\"v\":\"kehuan\"},{\"n\":\"恐怖\",\"v\":\"kongbu\"},{\"n\":\"战争\",\"v\":\"zhanzheng\"},{\"n\":\"武侠\",\"v\":\"wuxia\"},{\"n\":\"魔幻\",\"v\":\"mohuan\"},{\"n\":\"剧情\",\"v\":\"juqing\"},{\"n\":\"动画\",\"v\":\"donghua\"},{\"n\":\"惊悚\",\"v\":\"jingsong\"},{\"n\":\"3D\",\"v\":\"3D\"},{\"n\":\"灾难\",\"v\":\"zainan\"},{\"n\":\"悬疑\",\"v\":\"xuanyi\"},{\"n\":\"警匪\",\"v\":\"jingfei\"},{\"n\":\"文艺\",\"v\":\"wenyi\"},{\"n\":\"青春\",\"v\":\"qingchun\"},{\"n\":\"冒险\",\"v\":\"maoxian\"},{\"n\":\"犯罪\",\"v\":\"fanzui\"},{\"n\":\"纪录\",\"v\":\"jilu\"},{\"n\":\"古装\",\"v\":\"guzhuang\"},{\"n\":\"奇幻\",\"v\":\"qihuan\"},{\"n\":\"国语\",\"v\":\"guoyu\"},{\"n\":\"综艺\",\"v\":\"zongyi\"},{\"n\":\"历史\",\"v\":\"lishi\"},{\"n\":\"运动\",\"v\":\"yundong\"},{\"n\":\"原创压制\",\"v\":\"yuanchuang\"},{\"n\":\"美剧\",\"v\":\"meiju\"},{\"n\":\"韩剧\",\"v\":\"hanju\"},{\"n\":\"国产电视剧\",\"v\":\"guoju\"},{\"n\":\"日剧\",\"v\":\"riju\"},{\"n\":\"英剧\",\"v\":\"yingju\"},{\"n\":\"德剧\",\"v\":\"deju\"},{\"n\":\"俄剧\",\"v\":\"eju\"},{\"n\":\"巴剧\",\"v\":\"baju\"},{\"n\":\"加剧\",\"v\":\"jiaju\"},{\"n\":\"西剧\",\"v\":\"anish\"},{\"n\":\"意大利剧\",\"v\":\"yidaliju\"},{\"n\":\"泰剧\",\"v\":\"taiju\"},{\"n\":\"港台剧\",\"v\":\"gangtaiju\"},{\"n\":\"法剧\",\"v\":\"faju\"},{\"n\":\"澳剧\",\"v\":\"aoju\"}]},{\"key\":\"area\",\"name\":\"地区\",\"value\":[{\"n\":\"不限\",\"v\":\"\"},{\"n\":\"中国大陆\",\"v\":\"中国大陆\"},{\"n\":\"中国香港\",\"v\":\"中国香港\"},{\"n\":\"中国台湾\",\"v\":\"中国台湾\"},{\"n\":\"美国\",\"v\":\"美国\"},{\"n\":\"英国\",\"v\":\"英国\"},{\"n\":\"日本\",\"v\":\"日本\"},{\"n\":\"韩国\",\"v\":\"韩国\"},{\"n\":\"法国\",\"v\":\"法国\"},{\"n\":\"印度\",\"v\":\"印度\"},{\"n\":\"德国\",\"v\":\"德国\"},{\"n\":\"西班牙\",\"v\":\"西班牙\"},{\"n\":\"意大利\",\"v\":\"意大利\"},{\"n\":\"澳大利亚\",\"v\":\"澳大利亚\"},{\"n\":\"比利时\",\"v\":\"比利时\"},{\"n\":\"瑞典\",\"v\":\"瑞典\"},{\"n\":\"荷兰\",\"v\":\"荷兰\"},{\"n\":\"丹麦\",\"v\":\"丹麦\"},{\"n\":\"加拿大\",\"v\":\"加拿大\"},{\"n\":\"俄罗斯\",\"v\":\"俄罗斯\"}]},{\"key\":\"year\",\"name\":\"年份\",\"value\":[{\"n\":\"全部\",\"v\":\"\"},{\"n\":\"2022\",\"v\":\"2022\"},{\"n\":\"2021\",\"v\":\"2021\"},{\"n\":\"2020\",\"v\":\"2020\"},{\"n\":\"2019\",\"v\":\"2019\"},{\"n\":\"2018\",\"v\":\"2018\"},{\"n\":\"2017\",\"v\":\"2017\"},{\"n\":\"2016\",\"v\":\"2016\"},{\"n\":\"2015\",\"v\":\"2015\"},{\"n\":\"2014\",\"v\":\"2014\"},{\"n\":\"2013\",\"v\":\"2013\"},{\"n\":\"2012\",\"v\":\"2012\"},{\"n\":\"2011\",\"v\":\"2011\"},{\"n\":\"2010\",\"v\":\"2010\"},{\"n\":\"2009\",\"v\":\"2009\"},{\"n\":\"2008\",\"v\":\"2008\"},{\"n\":\"2007\",\"v\":\"2007\"},{\"n\":\"2006\",\"v\":\"2006\"},{\"n\":\"2005\",\"v\":\"2005\"},{\"n\":\"2004\",\"v\":\"2004\"},{\"n\":\"2003\",\"v\":\"2003\"},{\"n\":\"2002\",\"v\":\"2002\"},{\"n\":\"2001\",\"v\":\"2001\"},{\"n\":\"2000\",\"v\":\"2000\"}]},{\"key\":\"order\",\"name\":\"排序\",\"value\":[{\"n\":\"更新时间\",\"v\":\"0\"},{\"n\":\"豆瓣评分\",\"v\":\"1\"}]}],\"1\":[{\"key\":\"s\",\"name\":\"类型\",\"value\":[{\"n\":\"全部\",\"v\":\"all\"},{\"n\":\"动作\",\"v\":\"dongzuo\"},{\"n\":\"爱情\",\"v\":\"aiqing\"},{\"n\":\"喜剧\",\"v\":\"xiju\"},{\"n\":\"科幻\",\"v\":\"kehuan\"},{\"n\":\"恐怖\",\"v\":\"kongbu\"},{\"n\":\"战争\",\"v\":\"zhanzheng\"},{\"n\":\"武侠\",\"v\":\"wuxia\"},{\"n\":\"魔幻\",\"v\":\"mohuan\"},{\"n\":\"剧情\",\"v\":\"juqing\"},{\"n\":\"动画\",\"v\":\"donghua\"},{\"n\":\"惊悚\",\"v\":\"jingsong\"},{\"n\":\"3D\",\"v\":\"3D\"},{\"n\":\"灾难\",\"v\":\"zainan\"},{\"n\":\"悬疑\",\"v\":\"xuanyi\"},{\"n\":\"警匪\",\"v\":\"jingfei\"},{\"n\":\"文艺\",\"v\":\"wenyi\"},{\"n\":\"青春\",\"v\":\"qingchun\"},{\"n\":\"冒险\",\"v\":\"maoxian\"},{\"n\":\"犯罪\",\"v\":\"fanzui\"},{\"n\":\"纪录\",\"v\":\"jilu\"},{\"n\":\"古装\",\"v\":\"guzhuang\"},{\"n\":\"奇幻\",\"v\":\"qihuan\"},{\"n\":\"国语\",\"v\":\"guoyu\"},{\"n\":\"综艺\",\"v\":\"zongyi\"},{\"n\":\"历史\",\"v\":\"lishi\"},{\"n\":\"运动\",\"v\":\"yundong\"},{\"n\":\"原创压制\",\"v\":\"yuanchuang\"},{\"n\":\"美剧\",\"v\":\"meiju\"},{\"n\":\"韩剧\",\"v\":\"hanju\"},{\"n\":\"国产电视剧\",\"v\":\"guoju\"},{\"n\":\"日剧\",\"v\":\"riju\"},{\"n\":\"英剧\",\"v\":\"yingju\"},{\"n\":\"德剧\",\"v\":\"deju\"},{\"n\":\"俄剧\",\"v\":\"eju\"},{\"n\":\"巴剧\",\"v\":\"baju\"},{\"n\":\"加剧\",\"v\":\"jiaju\"},{\"n\":\"西剧\",\"v\":\"anish\"},{\"n\":\"意大利剧\",\"v\":\"yidaliju\"},{\"n\":\"泰剧\",\"v\":\"taiju\"},{\"n\":\"港台剧\",\"v\":\"gangtaiju\"},{\"n\":\"法剧\",\"v\":\"faju\"},{\"n\":\"澳剧\",\"v\":\"aoju\"}]},{\"key\":\"area\",\"name\":\"地区\",\"value\":[{\"n\":\"不限\",\"v\":\"\"},{\"n\":\"中国大陆\",\"v\":\"中国大陆\"},{\"n\":\"中国香港\",\"v\":\"中国香港\"},{\"n\":\"中国台湾\",\"v\":\"中国台湾\"},{\"n\":\"美国\",\"v\":\"美国\"},{\"n\":\"英国\",\"v\":\"英国\"},{\"n\":\"日本\",\"v\":\"日本\"},{\"n\":\"韩国\",\"v\":\"韩国\"},{\"n\":\"法国\",\"v\":\"法国\"},{\"n\":\"印度\",\"v\":\"印度\"},{\"n\":\"德国\",\"v\":\"德国\"},{\"n\":\"西班牙\",\"v\":\"西班牙\"},{\"n\":\"意大利\",\"v\":\"意大利\"},{\"n\":\"澳大利亚\",\"v\":\"澳大利亚\"},{\"n\":\"比利时\",\"v\":\"比利时\"},{\"n\":\"瑞典\",\"v\":\"瑞典\"},{\"n\":\"荷兰\",\"v\":\"荷兰\"},{\"n\":\"丹麦\",\"v\":\"丹麦\"},{\"n\":\"加拿大\",\"v\":\"加拿大\"},{\"n\":\"俄罗斯\",\"v\":\"俄罗斯\"}]},{\"key\":\"year\",\"name\":\"年份\",\"value\":[{\"n\":\"全部\",\"v\":\"\"},{\"n\":\"2022\",\"v\":\"2022\"},{\"n\":\"2021\",\"v\":\"2021\"},{\"n\":\"2020\",\"v\":\"2020\"},{\"n\":\"2019\",\"v\":\"2019\"},{\"n\":\"2018\",\"v\":\"2018\"},{\"n\":\"2017\",\"v\":\"2017\"},{\"n\":\"2016\",\"v\":\"2016\"},{\"n\":\"2015\",\"v\":\"2015\"},{\"n\":\"2014\",\"v\":\"2014\"},{\"n\":\"2013\",\"v\":\"2013\"},{\"n\":\"2012\",\"v\":\"2012\"},{\"n\":\"2011\",\"v\":\"2011\"},{\"n\":\"2010\",\"v\":\"2010\"},{\"n\":\"2009\",\"v\":\"2009\"},{\"n\":\"2008\",\"v\":\"2008\"},{\"n\":\"2007\",\"v\":\"2007\"},{\"n\":\"2006\",\"v\":\"2006\"},{\"n\":\"2005\",\"v\":\"2005\"},{\"n\":\"2004\",\"v\":\"2004\"},{\"n\":\"2003\",\"v\":\"2003\"},{\"n\":\"2002\",\"v\":\"2002\"},{\"n\":\"2001\",\"v\":\"2001\"},{\"n\":\"2000\",\"v\":\"2000\"}]},{\"key\":\"order\",\"name\":\"排序\",\"value\":[{\"n\":\"更新时间\",\"v\":\"0\"},{\"n\":\"豆瓣评分\",\"v\":\"1\"}]}],\"a\":[{\"key\":\"s\",\"name\":\"类型\",\"value\":[{\"n\":\"全部\",\"v\":\"all\"},{\"n\":\"动作\",\"v\":\"dongzuo\"},{\"n\":\"爱情\",\"v\":\"aiqing\"},{\"n\":\"喜剧\",\"v\":\"xiju\"},{\"n\":\"科幻\",\"v\":\"kehuan\"},{\"n\":\"恐怖\",\"v\":\"kongbu\"},{\"n\":\"战争\",\"v\":\"zhanzheng\"},{\"n\":\"武侠\",\"v\":\"wuxia\"},{\"n\":\"魔幻\",\"v\":\"mohuan\"},{\"n\":\"剧情\",\"v\":\"juqing\"},{\"n\":\"动画\",\"v\":\"donghua\"},{\"n\":\"惊悚\",\"v\":\"jingsong\"},{\"n\":\"3D\",\"v\":\"3D\"},{\"n\":\"灾难\",\"v\":\"zainan\"},{\"n\":\"悬疑\",\"v\":\"xuanyi\"},{\"n\":\"警匪\",\"v\":\"jingfei\"},{\"n\":\"文艺\",\"v\":\"wenyi\"},{\"n\":\"青春\",\"v\":\"qingchun\"},{\"n\":\"冒险\",\"v\":\"maoxian\"},{\"n\":\"犯罪\",\"v\":\"fanzui\"},{\"n\":\"纪录\",\"v\":\"jilu\"},{\"n\":\"古装\",\"v\":\"guzhuang\"},{\"n\":\"奇幻\",\"v\":\"qihuan\"},{\"n\":\"国语\",\"v\":\"guoyu\"},{\"n\":\"综艺\",\"v\":\"zongyi\"},{\"n\":\"历史\",\"v\":\"lishi\"},{\"n\":\"运动\",\"v\":\"yundong\"},{\"n\":\"原创压制\",\"v\":\"yuanchuang\"},{\"n\":\"美剧\",\"v\":\"meiju\"},{\"n\":\"韩剧\",\"v\":\"hanju\"},{\"n\":\"国产电视剧\",\"v\":\"guoju\"},{\"n\":\"日剧\",\"v\":\"riju\"},{\"n\":\"英剧\",\"v\":\"yingju\"},{\"n\":\"德剧\",\"v\":\"deju\"},{\"n\":\"俄剧\",\"v\":\"eju\"},{\"n\":\"巴剧\",\"v\":\"baju\"},{\"n\":\"加剧\",\"v\":\"jiaju\"},{\"n\":\"西剧\",\"v\":\"anish\"},{\"n\":\"意大利剧\",\"v\":\"yidaliju\"},{\"n\":\"泰剧\",\"v\":\"taiju\"},{\"n\":\"港台剧\",\"v\":\"gangtaiju\"},{\"n\":\"法剧\",\"v\":\"faju\"},{\"n\":\"澳剧\",\"v\":\"aoju\"}]},{\"key\":\"area\",\"name\":\"地区\",\"value\":[{\"n\":\"不限\",\"v\":\"\"},{\"n\":\"中国大陆\",\"v\":\"中国大陆\"},{\"n\":\"中国香港\",\"v\":\"中国香港\"},{\"n\":\"中国台湾\",\"v\":\"中国台湾\"},{\"n\":\"美国\",\"v\":\"美国\"},{\"n\":\"英国\",\"v\":\"英国\"},{\"n\":\"日本\",\"v\":\"日本\"},{\"n\":\"韩国\",\"v\":\"韩国\"},{\"n\":\"法国\",\"v\":\"法国\"},{\"n\":\"印度\",\"v\":\"印度\"},{\"n\":\"德国\",\"v\":\"德国\"},{\"n\":\"西班牙\",\"v\":\"西班牙\"},{\"n\":\"意大利\",\"v\":\"意大利\"},{\"n\":\"澳大利亚\",\"v\":\"澳大利亚\"},{\"n\":\"比利时\",\"v\":\"比利时\"},{\"n\":\"瑞典\",\"v\":\"瑞典\"},{\"n\":\"荷兰\",\"v\":\"荷兰\"},{\"n\":\"丹麦\",\"v\":\"丹麦\"},{\"n\":\"加拿大\",\"v\":\"加拿大\"},{\"n\":\"俄罗斯\",\"v\":\"俄罗斯\"}]},{\"key\":\"year\",\"name\":\"年份\",\"value\":[{\"n\":\"全部\",\"v\":\"\"},{\"n\":\"2022\",\"v\":\"2022\"},{\"n\":\"2021\",\"v\":\"2021\"},{\"n\":\"2020\",\"v\":\"2020\"},{\"n\":\"2019\",\"v\":\"2019\"},{\"n\":\"2018\",\"v\":\"2018\"},{\"n\":\"2017\",\"v\":\"2017\"},{\"n\":\"2016\",\"v\":\"2016\"},{\"n\":\"2015\",\"v\":\"2015\"},{\"n\":\"2014\",\"v\":\"2014\"},{\"n\":\"2013\",\"v\":\"2013\"},{\"n\":\"2012\",\"v\":\"2012\"},{\"n\":\"2011\",\"v\":\"2011\"},{\"n\":\"2010\",\"v\":\"2010\"},{\"n\":\"2009\",\"v\":\"2009\"},{\"n\":\"2008\",\"v\":\"2008\"},{\"n\":\"2007\",\"v\":\"2007\"},{\"n\":\"2006\",\"v\":\"2006\"},{\"n\":\"2005\",\"v\":\"2005\"},{\"n\":\"2004\",\"v\":\"2004\"},{\"n\":\"2003\",\"v\":\"2003\"},{\"n\":\"2002\",\"v\":\"2002\"},{\"n\":\"2001\",\"v\":\"2001\"},{\"n\":\"2000\",\"v\":\"2000\"}]},{\"key\":\"order\",\"name\":\"排序\",\"value\":[{\"n\":\"更新时间\",\"v\":\"0\"},{\"n\":\"豆瓣评分\",\"v\":\"1\"}]}]}");
|
||||
} catch (JSONException e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 爬虫headers
|
||||
*
|
||||
* @param url
|
||||
* @return
|
||||
*/
|
||||
protected HashMap<String, String> getHeaders(String url,String ref) {
|
||||
HashMap<String, String> headers = new HashMap<>();
|
||||
headers.put("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36");
|
||||
if(!ref.equals("google")){
|
||||
headers.put("Authority", "www.bdys01.com");
|
||||
if(ref.length()>0){
|
||||
if(ref.equals("origin")){
|
||||
headers.put("Origin", "https://www.bdys01.com");
|
||||
} else {
|
||||
headers.put("Referer", ref);
|
||||
}
|
||||
}
|
||||
if(cookie.length()>0){
|
||||
headers.put("Cookie", cookie);
|
||||
}
|
||||
}
|
||||
headers.put("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");
|
||||
return headers;
|
||||
}
|
||||
|
||||
protected HashMap<String, String> getHeaders2(String url) {
|
||||
HashMap<String, String> headers = new HashMap<>();
|
||||
String ss = url.replace("https://","").split("/")[0];
|
||||
headers.put("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36");
|
||||
headers.put("Authority", ss);
|
||||
headers.put("Origin", "www.bdys01.com");
|
||||
headers.put("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");
|
||||
return headers;
|
||||
}
|
||||
|
||||
|
||||
protected void getCookie(){
|
||||
cookie="";
|
||||
String cookieurl="https://www.bdys01.com/zzzzz";
|
||||
Map<String, List<String>> cookies = new HashMap<>();
|
||||
OkHttpUtil.string(cookieurl,getHeaders(cookieurl,""),cookies);
|
||||
for( Map.Entry<String, List<String>> entry : cookies.entrySet() ){
|
||||
if(entry.getKey().equals("set-cookie")){
|
||||
cookie = "Messi YYDS Forever 8K ;" + TextUtils.join(";",entry.getValue());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取分类数据 + 首页最近更新视频列表数据
|
||||
*
|
||||
* @param filter 是否开启筛选 关联的是 软件设置中 首页数据源里的筛选开关
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String homeContent(boolean filter) {
|
||||
try {
|
||||
getCookie();
|
||||
Document doc = Jsoup.parse(OkHttpUtil.string(siteUrl, getHeaders(siteUrl,referer)));
|
||||
referer=siteUrl+"/";
|
||||
// 分类节点
|
||||
JSONObject result = new JSONObject();
|
||||
JSONArray classes = new JSONArray();
|
||||
String catestr ="{\"全部\": \"a\",\"电影\": \"0\",\"电视剧\": \"1\"}";
|
||||
JSONObject catedef = new JSONObject(catestr);
|
||||
Iterator it = catedef.keys();
|
||||
while(it.hasNext()){
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
String key =(String) it.next();
|
||||
jsonObject.put("type_name", key);
|
||||
jsonObject.put("type_id", catedef.getString(key));
|
||||
classes.put(jsonObject);
|
||||
}
|
||||
result.put("class", classes);
|
||||
if (filter) {
|
||||
result.put("filters", filterConfig);
|
||||
}
|
||||
try {
|
||||
// 取首页推荐视频列表
|
||||
Element homeList = doc.select("div.row.row-cards").get(0);
|
||||
Elements list = homeList.select("div.col-4.rows-md-7");
|
||||
JSONArray videos = new JSONArray();
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
Element vod = list.get(i);
|
||||
String title = vod.selectFirst("h3.card-title").text();
|
||||
String cover = vod.selectFirst("img.w-100" ).attr("data-src");
|
||||
String remark = vod.selectFirst("p.text-muted").text();
|
||||
String id =vod.selectFirst("a.d-block.cover").attr("href");
|
||||
JSONObject v = new JSONObject();
|
||||
v.put("vod_id", id);
|
||||
v.put("vod_name", title);
|
||||
v.put("vod_pic", cover);
|
||||
v.put("vod_remarks", remark);
|
||||
videos.put(v);
|
||||
}
|
||||
result.put("list", videos);
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取分类信息数据
|
||||
*
|
||||
* @param tid 分类id
|
||||
* @param pg 页数
|
||||
* @param filter 同homeContent方法中的filter
|
||||
* @param extend 筛选参数{k:v, k1:v1}
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String categoryContent(String tid, String pg, boolean filter, HashMap<String, String> extend) {
|
||||
try {
|
||||
String url = siteUrl + "/s/" ;
|
||||
if (extend != null && extend.size() > 0 ) {
|
||||
String urlformat= "";
|
||||
if(tid.equals("a")){
|
||||
urlformat= url +"{s}/"+ pg +"?&area={area}&year={year}&order={order}";
|
||||
}else {
|
||||
urlformat= url +"{s}/"+ pg +"?&type="+tid+"&area={area}&year={year}&order={order}";
|
||||
}
|
||||
for (Iterator<String> it = extend.keySet().iterator(); it.hasNext(); ) {
|
||||
String key = it.next();
|
||||
String value = extend.get(key);
|
||||
if (value.length() > 0) {
|
||||
urlformat=urlformat.replace("{"+key+"}",URLEncoder.encode(value));
|
||||
}
|
||||
}
|
||||
for (int i=0 ;i<4;i++) {
|
||||
if (urlformat.contains("{s}")) {
|
||||
urlformat = urlformat.replace("{s}", "all");
|
||||
} else if (urlformat.contains("{area}")) {
|
||||
urlformat = urlformat.replace("&area={area}", "");
|
||||
} else if (urlformat.contains("{year}")) {
|
||||
urlformat = urlformat.replace("&year={year}", "");
|
||||
} else if (urlformat.contains("{order}")) {
|
||||
urlformat = urlformat.replace("{order}", "0");
|
||||
}
|
||||
}
|
||||
url = urlformat;
|
||||
} else {
|
||||
if(tid.equals("a")){
|
||||
url += "all/" + pg + "?&order=0";
|
||||
}else {
|
||||
url += "all/" + pg + "?&type=" + tid + "&order=0";
|
||||
}
|
||||
}
|
||||
referer=siteUrl+"/";
|
||||
String html = OkHttpUtil.string(url, getHeaders(url,referer));
|
||||
referer = url;
|
||||
Document doc = Jsoup.parse(html);
|
||||
JSONObject result = new JSONObject();
|
||||
JSONArray videos = new JSONArray();
|
||||
if (!html.contains("没有找到您想要的结果哦")) {
|
||||
// 取当前分类页的视频列表
|
||||
Elements list = doc.select("div.col-lg-8");
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
Element vod = list.get(i);
|
||||
String title = vod.selectFirst("h3.mb-0").text();
|
||||
String cover = vod.selectFirst("img.w-100").attr("src");
|
||||
String remark = vod.selectFirst("p.mb-0").text();
|
||||
String idtt = vod.selectFirst("a.d-block").attr("href");
|
||||
String id ="";
|
||||
if(idtt.contains("JSESSIONID")) {
|
||||
int end = idtt.indexOf(";");
|
||||
id = idtt.substring(0,end);
|
||||
}else{
|
||||
id =idtt;
|
||||
}
|
||||
JSONObject v = new JSONObject();
|
||||
v.put("vod_id", id);
|
||||
v.put("vod_name", title);
|
||||
v.put("vod_pic", cover);
|
||||
v.put("vod_remarks", remark);
|
||||
videos.put(v);
|
||||
}
|
||||
}
|
||||
int page =Integer.parseInt(pg);
|
||||
result.put("page", page);
|
||||
result.put("pagecount", videos.length()== 24 ? page + 1 : page);
|
||||
result.put("limit", 24);
|
||||
result.put("total",Integer.MAX_VALUE );
|
||||
result.put("list", videos);
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* 视频详情信息
|
||||
*
|
||||
* @param ids 视频id
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String detailContent(List<String> ids) {
|
||||
try {
|
||||
String url = siteUrl + ids.get(0);
|
||||
Document doc = Jsoup.parse(OkHttpUtil.string(url, getHeaders(url,referer)));
|
||||
referer=url;
|
||||
JSONObject result = new JSONObject();
|
||||
JSONObject vodList = new JSONObject();
|
||||
String cover = doc.selectFirst("div.col-md-auto img").attr("src");
|
||||
String title = doc.selectFirst("h1.d-none.d-md-block").text();
|
||||
String desc = doc.select("div.card.collapse > div.card-body").text();
|
||||
String year = doc.select("span.badge.bg-purple-lt").text().replace("更新时间:","").split("-")[0];
|
||||
String category = "", area = "", remark = "", director = "", actor = "";
|
||||
Element details = doc.select("div.col.mb-2").get(0);
|
||||
Elements allp = details.select("p");
|
||||
for (int i = 0; i < allp.size(); i++) {
|
||||
Element text = allp.get(i);
|
||||
String info = text.selectFirst("strong").text();
|
||||
if (info.equals("类型:")) {
|
||||
List<String> categorys = new ArrayList<>();
|
||||
Elements aa = text.select("a");
|
||||
for (int j = 0; j < aa.size(); j++) {
|
||||
categorys.add(aa.get(j).text());
|
||||
}
|
||||
category ="类型:"+TextUtils.join(",", categorys);
|
||||
} else if (info.contains("地区")) {
|
||||
int start= text.text().indexOf("[")+1;
|
||||
int end = text.text().indexOf("]");
|
||||
area = text.text().substring(start,end);
|
||||
} else if (info.contains("豆瓣")) {
|
||||
remark = "豆瓣:"+text.text();
|
||||
} else if (info.contains("导演:")) {
|
||||
director = text.selectFirst("a").text();
|
||||
} else if (info.contains("主演:")) {
|
||||
List<String> actors = new ArrayList<>();
|
||||
Elements aa = text.select("a");
|
||||
for (int j = 0; j < aa.size(); j++) {
|
||||
actors.add(aa.get(j).text());
|
||||
}
|
||||
actor =TextUtils.join(",", actors);
|
||||
}
|
||||
}
|
||||
String vid = ids.get(0);
|
||||
vodList.put("vod_id", vid);
|
||||
vodList.put("vod_name", title);
|
||||
vodList.put("vod_pic", cover);
|
||||
vodList.put("type_name", category);
|
||||
vodList.put("vod_year", year);
|
||||
vodList.put("vod_area", area);
|
||||
vodList.put("vod_remarks", remark);
|
||||
vodList.put("vod_actor", actor);
|
||||
vodList.put("vod_director", director);
|
||||
vodList.put("vod_content", desc);
|
||||
Map<String, String> vod_play = new TreeMap<>();
|
||||
// 取播放列表数据
|
||||
Elements playListA = doc.select("a.btn.btn-square");
|
||||
String sourceName = "播放列表";
|
||||
String playList = "";
|
||||
List<String> vodItems = new ArrayList<>();
|
||||
for (int j = 0; j < playListA.size(); j++) {
|
||||
Element vod = playListA.get(j);
|
||||
String idtt = vod.attr("href");
|
||||
String playURL ="";
|
||||
if(idtt.contains("JSESSIONID")) {
|
||||
int end = idtt.indexOf(";");
|
||||
playURL = idtt.substring(0,end);
|
||||
}else{
|
||||
playURL =idtt;
|
||||
}
|
||||
vodItems.add(vod.text() + "$" + playURL);
|
||||
}
|
||||
if (vodItems.size() > 0)
|
||||
playList = TextUtils.join("#", vodItems);
|
||||
vod_play.put(sourceName, playList);
|
||||
if (vod_play.size() > 0) {
|
||||
String vod_play_from = TextUtils.join("$$$", vod_play.keySet());
|
||||
String vod_play_url = TextUtils.join("$$$", vod_play.values());
|
||||
vodList.put("vod_play_from", vod_play_from);
|
||||
vodList.put("vod_play_url", vod_play_url);
|
||||
}
|
||||
JSONArray list = new JSONArray();
|
||||
list.put(vodList);
|
||||
result.put("list", list);
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取视频播放信息
|
||||
*
|
||||
* @param flag 播放源
|
||||
* @param id 视频id
|
||||
* @param vipFlags 所有可能需要vip解析的源
|
||||
* @return
|
||||
*/
|
||||
@TargetApi(Build.VERSION_CODES.KITKAT)
|
||||
@Override
|
||||
public String playerContent(String flag, String id, List<String> vipFlags) {
|
||||
try {
|
||||
String url = siteUrl + id ;
|
||||
String htmlplay = OkHttpUtil.string(url, getHeaders(url,referer));
|
||||
Document doc = Jsoup.parse(htmlplay);
|
||||
Elements allScript = doc.select("script");
|
||||
JSONObject result = new JSONObject();
|
||||
String pid="";
|
||||
for (int i = 0; i < allScript.size(); i++) {
|
||||
String scContent = allScript.get(i).toString();
|
||||
if (scContent.contains("var pid =")) {
|
||||
int start = scContent.indexOf("var pid =");
|
||||
int end = scContent.lastIndexOf("var time") + 1;
|
||||
String pidtmp = scContent.substring(start, end);
|
||||
start = pidtmp.indexOf("=")+2;
|
||||
end = pidtmp.lastIndexOf(";") ;
|
||||
pid = pidtmp.substring(start, end);
|
||||
break;
|
||||
}
|
||||
}
|
||||
long t = System.currentTimeMillis();
|
||||
String key = Misc.MD5(pid+"-"+t, StandardCharsets.UTF_8).substring(0,16);
|
||||
String sg = encrypt(pid+"-"+t,key);
|
||||
String geturl = siteUrl+"/lines?t="+t+"&sg="+sg+"&pid="+pid;
|
||||
String urlsrc = OkHttpUtil.string(geturl, getHeaders(geturl,""));
|
||||
JSONObject urlsrcobj = new JSONObject(urlsrc);
|
||||
JSONObject urldb = urlsrcobj.getJSONObject("data");
|
||||
List <String> urldblist = new ArrayList<>();
|
||||
if(!urldb.isNull("url3")){
|
||||
String url3 = urldb.optString("url3");
|
||||
urldblist.add(url3);
|
||||
}
|
||||
if(!urldb.isNull("m3u8")){
|
||||
String m3u8 = urldb.optString("m3u8").replace("www.bde4.cc","www.bdys01.com");
|
||||
urldblist.add(m3u8);
|
||||
}
|
||||
if(!urldb.isNull("m3u8_2")){
|
||||
String m3u8_2 =urldb.optString("m3u8_2");
|
||||
String[] m2=m3u8_2.split(",");
|
||||
for(int i=0; i< m2.length ;i++){
|
||||
urldblist.add(m2[i].replace("www.bde4.cc","www.bdys01.com"));
|
||||
}
|
||||
}
|
||||
if(urldblist.isEmpty()){
|
||||
rspurl="";
|
||||
t = System.currentTimeMillis();
|
||||
key = Misc.MD5(pid+"-"+t, StandardCharsets.UTF_8).substring(0,16);
|
||||
sg = encrypt(pid+"-"+t,key);
|
||||
geturl = siteUrl+"/god/"+pid;
|
||||
HashMap<String, String> hashMap = new HashMap();
|
||||
hashMap.put("t", Long.toString(t));
|
||||
hashMap.put("sg", sg);
|
||||
hashMap.put("verifyCode", "666");
|
||||
OkHttpUtil.post(OkHttpUtil.defaultClient(), geturl, hashMap,getHeaders(geturl,"origin") ,new OKCallBack.OKCallBackString() {
|
||||
@Override
|
||||
protected void onFailure(Call call, Exception exc) {
|
||||
}
|
||||
|
||||
public void onResponse(String str) {
|
||||
try {
|
||||
JSONObject rspobj = new JSONObject(str);
|
||||
if(rspobj.isNull("url")){
|
||||
rspurl="";
|
||||
}else {
|
||||
rspurl = rspobj.getString("url");
|
||||
}
|
||||
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
if(rspurl.isEmpty()){
|
||||
t = System.currentTimeMillis();
|
||||
key = Misc.MD5(pid+"-"+t, StandardCharsets.UTF_8).substring(0,16);
|
||||
sg = encrypt(pid+"-"+t,key);
|
||||
geturl = siteUrl+"/god/"+pid+"?type=1";
|
||||
HashMap<String, String> hashMap2 = new HashMap();
|
||||
hashMap2.put("t", Long.toString(t));
|
||||
hashMap2.put("sg", sg);
|
||||
hashMap2.put("verifyCode", "888");
|
||||
OkHttpUtil.post(OkHttpUtil.defaultClient(), geturl, hashMap2,getHeaders(geturl,"origin") ,new OKCallBack.OKCallBackString() {
|
||||
@Override
|
||||
protected void onFailure(Call call, Exception exc) {
|
||||
}
|
||||
|
||||
public void onResponse(String str) {
|
||||
try {
|
||||
rspurl = new JSONObject(str).getString("url");
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
String realurl ="";
|
||||
if(rspurl.contains("rkey")){
|
||||
t = System.currentTimeMillis();
|
||||
realurl =rspurl.replace("?rkey",t+".mp4?ver=6010&rkey");
|
||||
}else if (rspurl.contains("ixigua")) {
|
||||
realurl = rspurl;
|
||||
}else{
|
||||
t = System.currentTimeMillis();
|
||||
realurl = rspurl.replace("http:","https:") +"/"+t+".mp4";
|
||||
}
|
||||
result.put("parse", 0);
|
||||
result.put("playUrl", "");
|
||||
result.put("url", realurl);
|
||||
result.put("header", "");
|
||||
return result.toString();
|
||||
}
|
||||
int index =new Random().nextInt(urldblist.size());
|
||||
String videourl = urldblist.get(index);
|
||||
if(videourl.contains("mp4")){
|
||||
result.put("parse", 0);
|
||||
result.put("playUrl", "");
|
||||
result.put("url", videourl);
|
||||
result.put("header", "");
|
||||
return result.toString();
|
||||
}
|
||||
Map<String, List<String>> respHeaders = new HashMap<>();
|
||||
OkHttpUtil.stringNoRedirect(videourl, getHeaders(videourl,""), respHeaders);
|
||||
String redirect = OkHttpUtil.getRedirectLocation(respHeaders);
|
||||
String realm3u8="";
|
||||
OKCallBack.OKCallBackDefault callBack = new OKCallBack.OKCallBackDefault() {
|
||||
@Override
|
||||
protected void onFailure(Call call, Exception e) {
|
||||
}
|
||||
@Override
|
||||
protected void onResponse(Response response) {
|
||||
}
|
||||
};
|
||||
OkHttpUtil.get(OkHttpUtil.defaultClient(), redirect, null, getHeaders2(redirect), callBack);
|
||||
if (callBack.getResult().code() == 200) {
|
||||
InputStream picsrc = callBack.getResult().body().byteStream();
|
||||
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
|
||||
int nRead;
|
||||
byte[] data = new byte[4];
|
||||
while ((nRead = picsrc.read(data, 0, data.length)) != -1) {
|
||||
buffer.write(data, 0, nRead);
|
||||
}
|
||||
buffer.flush();
|
||||
byte[] targetArray = buffer.toByteArray();
|
||||
picsrc.close();
|
||||
byte[] dep = Arrays.copyOfRange(targetArray,3354,targetArray.length);
|
||||
String pp = gZip.KS(dep);
|
||||
String[] m3u8ori = pp.split("\n");
|
||||
for(int i=0;i<m3u8ori.length;i++){
|
||||
String mt= m3u8ori[i];
|
||||
if(mt.contains(".ts")){
|
||||
mt="https://vod.bdys.me/"+mt;
|
||||
m3u8ori[i]=mt;
|
||||
}
|
||||
}
|
||||
realm3u8= TextUtils.join("\n",m3u8ori);
|
||||
}
|
||||
String realm3u8b64=Base64.encodeToString(realm3u8.getBytes(), 2);
|
||||
result.put("url", "data:application/vnd.apple.mpegurl;base64,"+realm3u8b64);
|
||||
result.put("parse", 0);
|
||||
result.put("playUrl", "");
|
||||
result.put("header", new JSONObject(getHeaders2("https://vod.bdys.me/")).toString());
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String searchContent(String key, boolean quick) {
|
||||
try {
|
||||
String url = "https://www.google.com/search?q=site%3A" + siteHost + "+" + URLEncoder.encode(key);
|
||||
Document doc = Jsoup.parse(OkHttpUtil.string(url,getHeaders(url,"google")));
|
||||
JSONObject result = new JSONObject();
|
||||
JSONArray videos = new JSONArray();
|
||||
Elements sourceList = doc.select("div.yuRUbf a");
|
||||
if(sourceList.size()>0){
|
||||
for (int i = 0; i < 1; i++) {
|
||||
Element sourcess = sourceList.get(i);
|
||||
String sourceName = sourcess.select("h3.LC20lb.MBeuO.DKV0Md").text();
|
||||
String list1 = sourcess.attr("href");
|
||||
if(list1.contains("/s/")||list1.contains("play")||list1.contains("performer")||list1.contains("search")||list1.contains("jsessionid")){
|
||||
continue;
|
||||
}
|
||||
if (sourceName.contains(key)) {
|
||||
Document ddrklink = Jsoup.parse(OkHttpUtil.string(list1, getHeaders(list1,referer)));
|
||||
JSONObject v = new JSONObject();
|
||||
String cover = ddrklink.selectFirst("div.col-md-auto img").attr("src");
|
||||
String title = ddrklink.selectFirst("h2.d-sm-block.d-md-none").text();
|
||||
String id =list1.replace("https://www.bdys01.com","");
|
||||
v.put("vod_name", title);
|
||||
v.put("vod_remarks", "");
|
||||
v.put("vod_id", id);
|
||||
v.put("vod_pic", cover);
|
||||
videos.put(v);
|
||||
}
|
||||
}
|
||||
result.put("list", videos);
|
||||
return result.toString();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
protected String encrypt(String src, String KEY) {
|
||||
try {
|
||||
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding");
|
||||
SecretKeySpec keySpec = new SecretKeySpec(KEY.getBytes(), "AES");
|
||||
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
|
||||
return bytesToHexStr(cipher.doFinal(src.getBytes())).toUpperCase();
|
||||
} catch (Exception exception) {
|
||||
SpiderDebug.log(exception);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected String bytesToHexStr(byte[] bytes) {
|
||||
StringBuilder hexStr = new StringBuilder();
|
||||
for (byte b : bytes) {
|
||||
String hex = Integer.toHexString(b & 0xFF);
|
||||
if (hex.length() == 1) {
|
||||
hex = '0' + hex;
|
||||
}
|
||||
hexStr.append(hex);
|
||||
}
|
||||
return hexStr.toString();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,386 @@
|
||||
package com.github.catvod.spider;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.util.Base64;
|
||||
import com.github.catvod.crawler.Spider;
|
||||
import com.github.catvod.crawler.SpiderDebug;
|
||||
import com.github.catvod.utils.CBC;
|
||||
import com.github.catvod.utils.okhttp.OkHttpUtil;
|
||||
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.TreeMap;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
import org.jsoup.Jsoup;
|
||||
import org.jsoup.nodes.Document;
|
||||
import org.jsoup.nodes.Element;
|
||||
import org.jsoup.select.Elements;
|
||||
|
||||
/* loaded from: classes.dElements */
|
||||
public class Bttwoo extends Spider {
|
||||
private final String O = "{}";
|
||||
private final Pattern G = Pattern.compile("https://www.bttwoo.com/(\\S+)");
|
||||
private final Pattern n = Pattern.compile("https://www.bttwoo.com/movie/(\\d+).html");
|
||||
private final Pattern Ur = Pattern.compile("https://www.bttwoo.com/v_play/(\\S+).html");
|
||||
private final Pattern eA = Pattern.compile("https://www.bttwoo.com/\\S+/page/(\\d+)");
|
||||
private final Pattern o = Pattern.compile("=\"(.*?)\";var");
|
||||
private final Pattern F = Pattern.compile("parse\\(\"(.*?)\"\\);var iv");
|
||||
private final Pattern Cp = Pattern.compile("iv=md5\\.enc\\.Utf8\\.parse\\((.*?)\\);var decrypted");
|
||||
private final Pattern JC = Pattern.compile("url: \"(.*?)\"");
|
||||
|
||||
protected HashMap<String, String> header(String str) {
|
||||
HashMap<String, String> hashMap = new HashMap<>();
|
||||
hashMap.put("method", "GET");
|
||||
if (!TextUtils.isEmpty(str)) {
|
||||
hashMap.put("Referer", str);
|
||||
}
|
||||
hashMap.put("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36");
|
||||
return hashMap;
|
||||
}
|
||||
|
||||
public String categoryContent(String str, String str2, boolean z, HashMap<String, String> hashMap) {
|
||||
int i;
|
||||
try {
|
||||
String str3 = "https://www.bttwoo.com/" + str + "/page/" + str2;
|
||||
String h = OkHttpUtil.string(str3, header(str3));
|
||||
Document ue = Jsoup.parse(h);
|
||||
JSONObject jSONObject = new JSONObject();
|
||||
Matcher matcher = this.eA.matcher(ue.select("div.pagenavi_txt > a.extend").attr("href"));
|
||||
int i2 = 1;
|
||||
int parseInt = matcher.find() ? Integer.parseInt(matcher.group(1).trim()) : 1;
|
||||
|
||||
Elements B1 = ue.select("div.pagenavi_txt > a ");
|
||||
int i3 = 0;
|
||||
if (B1.size() > 0) {
|
||||
i = Integer.parseInt(str2);
|
||||
for (int i4 = 0; i4 < B1.size(); i4++) {
|
||||
Element O = B1.get(i4).selectFirst("a");
|
||||
if (O != null) {
|
||||
O.text().trim();
|
||||
if (O.hasClass("current")) {
|
||||
Matcher matcher2 = this.eA.matcher(O.attr("href"));
|
||||
if (matcher2.find()) {
|
||||
i = Integer.parseInt(matcher2.group(1).trim());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
i = 1;
|
||||
// i = Integer.parseInt(str2);
|
||||
}
|
||||
JSONArray jSONArray = new JSONArray();
|
||||
if (!h.contains("没有找到您想要的结果哦")) {
|
||||
Elements B12 = ue.select("div.bt_img > ul > li");
|
||||
while (i3 < B12.size()) {
|
||||
Element hq = B12.get(i3);
|
||||
String pE = hq.selectFirst("h3.dytit > a").text();
|
||||
String Pd = hq.selectFirst("a > img ").attr("data-original");
|
||||
Element O2 = hq.selectFirst("div.jidi > span");
|
||||
String pE2 = O2 != null ? O2.text() : "";
|
||||
Matcher matcher3 = this.n.matcher(hq.selectFirst("h3.dytit > a").attr("href"));
|
||||
if (matcher3.find()) {
|
||||
String group = matcher3.group(i2);
|
||||
JSONObject jSONObject2 = new JSONObject();
|
||||
jSONObject2.put("vod_id", group);
|
||||
jSONObject2.put("vod_name", pE);
|
||||
jSONObject2.put("vod_pic", Pd);
|
||||
jSONObject2.put("vod_remarks", pE2);
|
||||
jSONArray.put(jSONObject2);
|
||||
}
|
||||
i3++;
|
||||
i2 = 1;
|
||||
}
|
||||
}
|
||||
System.out.println("page: "+i);
|
||||
jSONObject.put("page", i);
|
||||
jSONObject.put("pagecount", parseInt);
|
||||
jSONObject.put("limit", 25);
|
||||
jSONObject.put("total", parseInt <= 1 ? jSONArray.length() : parseInt * 25);
|
||||
jSONObject.put("list", jSONArray);
|
||||
return jSONObject.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
public String detailContent(List<String> list) {
|
||||
String str ="";
|
||||
Exception e;
|
||||
Document ue = null;
|
||||
JSONObject jSONObject = null;
|
||||
String Pd = "";
|
||||
String pE = "";
|
||||
String pE2 ="";
|
||||
Elements B1 = null;
|
||||
String str2 =" ";
|
||||
String str3 = "";
|
||||
String str4 = "";
|
||||
String str5 = "";
|
||||
String str6 = "";
|
||||
String str7 = "";
|
||||
int i = 0;
|
||||
Element hq = null;
|
||||
String str8;
|
||||
String str9 = "$$$";
|
||||
String str10 = "";
|
||||
try {
|
||||
String str11 = "https://www.bttwoo.com/movie/" + list.get(0) + ".html";
|
||||
ue = Jsoup.parse(OkHttpUtil.string(str11, header(str11)));
|
||||
jSONObject = new JSONObject();
|
||||
Pd = ue.selectFirst("div.dyimg > img").attr("src");
|
||||
pE = ue.selectFirst("div.moviedteail_tt > h1").text();
|
||||
pE2 = Jsoup.parse(ue.selectFirst("meta[name=description]").attr("content")).text();
|
||||
B1 = ue.select("ul.moviedteail_list > li");
|
||||
str2 = str10;
|
||||
str3 = str2;
|
||||
str4 = str3;
|
||||
str5 = str4;
|
||||
str6 = str5;
|
||||
str7 = str6;
|
||||
// i = 0;
|
||||
} catch (Exception e2) {
|
||||
e = e2;
|
||||
str = str10;
|
||||
return "1111";
|
||||
}
|
||||
while (true) {
|
||||
str = str10;
|
||||
if (i >= B1.size()) {
|
||||
break;
|
||||
}
|
||||
try {
|
||||
Element hq2 = B1.get(i);
|
||||
Elements exVar = B1;
|
||||
String pE3 = hq2.text();
|
||||
JSONObject jSONObject3 = jSONObject;
|
||||
if (pE3.contains("类型:")) {
|
||||
str2 = hq2.text();
|
||||
} else if (pE3.contains("年份:")) {
|
||||
str3 = hq2.text();
|
||||
} else if (pE3.contains("地区:")) {
|
||||
str4 = hq2.text();
|
||||
} else if (pE3.contains("上映:")) {
|
||||
str5 = hq2.text();
|
||||
} else {
|
||||
str8 = str9;
|
||||
if (pE3.contains("导演:")) {
|
||||
ArrayList arrayList = new ArrayList();
|
||||
Elements B12 = hq2.select("a");
|
||||
for (int i2 = 0; i2 < B12.size(); i2++) {
|
||||
arrayList.add(B12.get(i2).text());
|
||||
}
|
||||
str7 = TextUtils.join(",", arrayList);
|
||||
} else if (pE3.contains("主演:")) {
|
||||
ArrayList arrayList2 = new ArrayList();
|
||||
Elements B13 = hq2.select("a");
|
||||
for (int i3 = 0; i3 < B13.size(); i3++) {
|
||||
arrayList2.add(B13.get(i3).text());
|
||||
}
|
||||
str6 = TextUtils.join(",", arrayList2);
|
||||
}
|
||||
}
|
||||
str8 = str9;
|
||||
i++;
|
||||
str10 = str;
|
||||
B1 = exVar;
|
||||
jSONObject = jSONObject3;
|
||||
str9 = str8;
|
||||
} catch (Exception e3) {
|
||||
e = e3;
|
||||
SpiderDebug.log(e);
|
||||
return str;
|
||||
}
|
||||
}
|
||||
String str12 = str9;
|
||||
JSONObject jSONObject4 = jSONObject;
|
||||
JSONObject jSONObject2 = new JSONObject();
|
||||
try{
|
||||
jSONObject2.put("vod_id", list.get(0));
|
||||
jSONObject2.put("vod_name", pE);
|
||||
jSONObject2.put("vod_pic", Pd);
|
||||
jSONObject2.put("type_name", str2);
|
||||
jSONObject2.put("vod_year", str3);
|
||||
jSONObject2.put("vod_area", str4);
|
||||
jSONObject2.put("vod_remarks", str5);
|
||||
jSONObject2.put("vod_actor", str6);
|
||||
jSONObject2.put("vod_director", str7);
|
||||
jSONObject2.put("vod_content", pE2);
|
||||
TreeMap treeMap = new TreeMap();
|
||||
Elements B14 = ue.select("div.mi_paly_box > div > div.ypxingq_t");
|
||||
Elements B15 = ue.select("div.paly_list_btn");
|
||||
|
||||
for (int i4 = 0; i4 < B14.size(); i4++) {
|
||||
String pE4 = B14.get(i4).text();
|
||||
Elements B16 = B15.get(i4).select("a");
|
||||
ArrayList arrayList3 = new ArrayList();
|
||||
for (int i5 = 0; i5 < B16.size(); i5++) {
|
||||
String name = B16.get(i5).text();
|
||||
Matcher matcher = this.Ur.matcher(B16.get(i5).attr("href"));
|
||||
if (matcher.find()) {
|
||||
arrayList3.add(name + "$" + matcher.group(1));
|
||||
}
|
||||
}
|
||||
String join = arrayList3.size() > 0 ? TextUtils.join("#", arrayList3) : str;
|
||||
if (join.length() != 0) {
|
||||
treeMap.put(pE4, join);
|
||||
}
|
||||
}
|
||||
if (treeMap.size() > 0) {
|
||||
String join2 = TextUtils.join(str12, treeMap.keySet());
|
||||
String join3 = TextUtils.join(str12, treeMap.values());
|
||||
jSONObject2.put("vod_play_from", join2);
|
||||
jSONObject2.put("vod_play_url", join3);
|
||||
}
|
||||
JSONArray jSONArray = new JSONArray();
|
||||
jSONArray.put(jSONObject2);
|
||||
jSONObject4.put("list", jSONArray);
|
||||
|
||||
}catch (Exception e4){
|
||||
SpiderDebug.log(e4);
|
||||
}
|
||||
|
||||
return jSONObject4.toString();
|
||||
}
|
||||
|
||||
public String homeContent(boolean z) {
|
||||
int i;
|
||||
try {
|
||||
Document ue = Jsoup.parse(OkHttpUtil.string("https://www.bttwoo.com/", header("https://www.bttwoo.com")));
|
||||
Elements B1 = ue.select("ul.navlist > li > a");
|
||||
JSONArray jSONArray = new JSONArray();
|
||||
Iterator<Element> it = B1.iterator();
|
||||
while (true) {
|
||||
i = 0;
|
||||
if (!it.hasNext()) {
|
||||
break;
|
||||
}
|
||||
Element next = it.next();
|
||||
String pE = next.text();
|
||||
if (pE.equals("最新电影")) {
|
||||
pE = "最新";
|
||||
}
|
||||
if (pE.equals("热门下载")) {
|
||||
pE = "热门放映";
|
||||
}
|
||||
if (pE.equals("最新") || pE.equals("本月热门") || pE.equals("热门放映") || pE.equals("国产剧") || pE.equals("日韩剧") || pE.equals("美剧")) {
|
||||
i = 1;
|
||||
}
|
||||
if (i != 0) {
|
||||
Matcher matcher = this.G.matcher(next.attr("href"));
|
||||
if (matcher.find()) {
|
||||
String trim = matcher.group(1).trim();
|
||||
JSONObject jSONObject = new JSONObject();
|
||||
jSONObject.put("type_id", trim);
|
||||
jSONObject.put("type_name", pE);
|
||||
jSONArray.put(jSONObject);
|
||||
}
|
||||
}
|
||||
}
|
||||
JSONObject jSONObject2 = new JSONObject();
|
||||
if (z) {
|
||||
jSONObject2.put("filters", new JSONObject("{}"));
|
||||
}
|
||||
jSONObject2.put("class", jSONArray);
|
||||
try {
|
||||
Elements B12 = ue.select("div.leibox > ul > li ");
|
||||
JSONArray jSONArray2 = new JSONArray();
|
||||
while (i < B12.size()) {
|
||||
Element hq = B12.get(i);
|
||||
String pE2 = hq.selectFirst("h3.dytit > a").text();
|
||||
String Pd = hq.selectFirst("a > img").attr("data-original");
|
||||
Element O = hq.selectFirst("div.jidi > span ");
|
||||
String pE3 = O != null ? O.text() : "";
|
||||
Matcher matcher2 = this.n.matcher(hq.selectFirst("h3.dytit > a").attr("href"));
|
||||
if (matcher2.find()) {
|
||||
String group = matcher2.group(1);
|
||||
JSONObject jSONObject3 = new JSONObject();
|
||||
jSONObject3.put("vod_id", group);
|
||||
jSONObject3.put("vod_name", pE2);
|
||||
jSONObject3.put("vod_pic", Pd);
|
||||
jSONObject3.put("vod_remarks", pE3);
|
||||
jSONArray2.put(jSONObject3);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
jSONObject2.put("list", jSONArray2);
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return jSONObject2.toString();
|
||||
} catch (Exception e2) {
|
||||
SpiderDebug.log(e2);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
public String playerContent(String str, String str2, List<String> list) {
|
||||
try {
|
||||
String str3 = "https://www.bttwoo.com/v_play/" + str2 + ".html";
|
||||
Document ue = Jsoup.parse(OkHttpUtil.string(str3, header(str3)));
|
||||
JSONObject jSONObject = new JSONObject();
|
||||
Matcher matcher = this.o.matcher(ue.toString());
|
||||
Matcher matcher2 = this.F.matcher(ue.toString());
|
||||
Matcher matcher3 = this.Cp.matcher(ue.toString());
|
||||
if (matcher.find() && matcher2.find() && matcher3.find()) {
|
||||
// Matcher matcher4 = this.JC.matcher(AES.decryptToString(Base64.decode(matcher.group(1), 0), matcher2.group(1).getBytes(), matcher3.group(1).getBytes(),AES.AES_CBC_PKCS7Padding));
|
||||
Matcher matcher4 = this.JC.matcher(CBC.DECRYPT(Base64.decode(matcher.group(1), 0), matcher2.group(1).getBytes(), matcher3.group(1).getBytes()));
|
||||
if (matcher4.find()) {
|
||||
String group = matcher4.group(1);
|
||||
HashMap hashMap = new HashMap();
|
||||
hashMap.put("User-Agent", " Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36");
|
||||
jSONObject.put("url", group);
|
||||
jSONObject.put("header", new JSONObject(hashMap).toString());
|
||||
jSONObject.put("parse", "0");
|
||||
jSONObject.put("palyUrl", "");
|
||||
}
|
||||
}
|
||||
return jSONObject.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
public String searchContent(String str, boolean z) {
|
||||
if (z) {
|
||||
return "";
|
||||
}
|
||||
try {
|
||||
String str2 = "https://www.bttwoo.com/xssearch?q=" + URLEncoder.encode(str) + "&f=_all&p=1";
|
||||
Document ue = Jsoup.parse(OkHttpUtil.string(str2, header(str2)));
|
||||
JSONObject jSONObject = new JSONObject();
|
||||
JSONArray jSONArray = new JSONArray();
|
||||
Elements B1 = ue.select("div.mi_ne_kd > ul > li");
|
||||
for (int i = 0; i < B1.size(); i++) {
|
||||
Element hq = B1.get(i);
|
||||
String trim = hq.selectFirst("img").attr("alt").trim();
|
||||
String Pd = hq.selectFirst("img ").attr("data-original");
|
||||
Element O = hq.selectFirst("div.jidi > span");
|
||||
String pE = O != null ? O.text() : "";
|
||||
Matcher matcher = this.n.matcher(hq.selectFirst("a").attr("href"));
|
||||
if (matcher.find()) {
|
||||
String group = matcher.group(1);
|
||||
JSONObject jSONObject2 = new JSONObject();
|
||||
jSONObject2.put("vod_id", group);
|
||||
jSONObject2.put("vod_name", trim);
|
||||
jSONObject2.put("vod_pic", Pd);
|
||||
jSONObject2.put("vod_remarks", pE);
|
||||
jSONArray.put(jSONObject2);
|
||||
}
|
||||
}
|
||||
jSONObject.put("list", jSONArray);
|
||||
return jSONObject.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,479 @@
|
||||
package com.github.catvod.spider;
|
||||
|
||||
import android.content.Context;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Base64;
|
||||
|
||||
import com.github.catvod.crawler.Spider;
|
||||
import com.github.catvod.crawler.SpiderDebug;
|
||||
import com.github.catvod.utils.AES;
|
||||
import com.github.catvod.utils.okhttp.OkHttpUtil;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.jsoup.Jsoup;
|
||||
import org.jsoup.nodes.Document;
|
||||
import org.jsoup.nodes.Element;
|
||||
import org.jsoup.select.Elements;
|
||||
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import static com.github.catvod.utils.AES.AES_CBC_PKCS7Padding;
|
||||
import static com.github.catvod.utils.AES.decryptToString;
|
||||
|
||||
/**
|
||||
* 双十电影
|
||||
* <p>
|
||||
* Author: 忍一忍我很大
|
||||
*/
|
||||
public class Dy1010 extends Spider {
|
||||
private static final String siteUrl = "http://www.1010dy1.com";
|
||||
private static final String siteHost = "www.1010dy1.com";
|
||||
/**
|
||||
* 播放源配置
|
||||
*/
|
||||
private JSONObject playerConfig;
|
||||
/**
|
||||
* 筛选配置
|
||||
*/
|
||||
private JSONObject filterConfig;
|
||||
|
||||
private Pattern regexCategory = Pattern.compile("/type/(\\w+)/");
|
||||
private Pattern regexVid = Pattern.compile("/detail/(\\w+)/");
|
||||
private Pattern regexPlay = Pattern.compile("/play/(\\w+)-(\\d+)-(\\d+)/");
|
||||
private Pattern regexPage = Pattern.compile("/show/\\d+/page/(\\d+)/");
|
||||
|
||||
@Override
|
||||
public void init(Context context) {
|
||||
super.init(context);
|
||||
try {
|
||||
playerConfig = new JSONObject("{\"xg_app_player\":{\"show\":\"app全局解析\",\"or\":999,\"ps\":\"1\",\"parse\":\"\"},\"duoduozy\":{\"show\":\"多多云\",\"or\":999,\"ps\":\"0\",\"parse\":\"\"},\"renrenmi\":{\"show\":\"快速云\",\"or\":999,\"ps\":\"0\",\"parse\":\"\"},\"xigua\":{\"show\":\"西瓜云\",\"or\":999,\"ps\":\"0\",\"parse\":\"\"},\"mgtv\":{\"show\":\"芒果云\",\"or\":999,\"ps\":\"0\",\"parse\":\"\"},\"qq\":{\"show\":\"腾讯云\",\"or\":999,\"ps\":\"0\",\"parse\":\"\"},\"youku\":{\"show\":\"优酷云\",\"or\":999,\"ps\":\"0\",\"parse\":\"\"},\"qiyi\":{\"show\":\"爱奇艺\",\"or\":999,\"ps\":\"0\",\"parse\":\"\"},\"pptv\":{\"show\":\"PPTV\",\"or\":999,\"ps\":\"0\",\"parse\":\"\"},\"letv\":{\"show\":\"乐视云\",\"or\":999,\"ps\":\"0\",\"parse\":\"\"},\"sohu\":{\"show\":\"搜狐云\",\"or\":999,\"ps\":\"0\",\"parse\":\"\"},\"bilibili\":{\"show\":\"哔哩云\",\"or\":999,\"ps\":\"0\",\"parse\":\"\"},\"dbm3u8\":{\"show\":\"百度云\",\"des\":\"在线播放\",\"ps\":\"0\",\"parse\":\"\"},\"tkm3u8\":{\"show\":\"天空云\",\"des\":\"天空播放器\",\"ps\":\"0\",\"parse\":\"\"},\"dplayer\":{\"show\":\"DPlayer-H5播放器\",\"des\":\"dplayer.js.org\",\"ps\":\"0\",\"parse\":\"\"},\"videojs\":{\"show\":\"videojs-H5播放器\",\"des\":\"videojs.com\",\"ps\":\"0\",\"parse\":\"\"},\"iva\":{\"show\":\"iva-H5播放器\",\"des\":\"videojj.com\",\"ps\":\"0\",\"parse\":\"\"},\"iframe\":{\"show\":\"iframe外链数据\",\"des\":\"iframe外链数据\",\"ps\":\"0\",\"parse\":\"\"},\"link\":{\"show\":\"外链数据\",\"des\":\"外部网站播放链接\",\"ps\":\"0\",\"parse\":\"\"},\"swf\":{\"show\":\"Flash文件\",\"des\":\"swf\",\"ps\":\"0\",\"parse\":\"\"},\"flv\":{\"show\":\"Flv文件\",\"des\":\"flv\",\"ps\":\"0\",\"parse\":\"\"},\"bdxm3u8\":{\"show\":\"北斗云\",\"des\":\"在线播放\",\"ps\":\"0\",\"parse\":\"\"},\"lym3u8\":{\"show\":\"老鸭资源\",\"des\":\"在线播放\",\"ps\":\"0\",\"parse\":\"\"},\"aliplayer\":{\"show\":\"阿里云播放器\",\"or\":999,\"ps\":\"0\",\"parse\":\"\"},\"hnm3u8\":{\"show\":\"红牛云\",\"or\":999,\"ps\":\"0\",\"parse\":\"\"},\"kbm3u8\":{\"show\":\"快播云\",\"or\":999,\"ps\":\"0\",\"parse\":\"\"},\"wjm3u8\":{\"show\":\"无尽备用\",\"or\":999,\"ps\":\"0\",\"parse\":\"\"}}");
|
||||
filterConfig = new JSONObject("{\"1\":[{\"key\":\"class\",\"name\":\"类型\",\"value\":[{\"n\":\"全部\",\"v\":\"\"},{\"n\":\"喜剧\",\"v\":\"喜剧\"},{\"n\":\"爱情\",\"v\":\"爱情\"},{\"n\":\"恐怖\",\"v\":\"恐怖\"},{\"n\":\"动作\",\"v\":\"动作\"},{\"n\":\"科幻\",\"v\":\"科幻\"},{\"n\":\"剧情\",\"v\":\"剧情\"},{\"n\":\"战争\",\"v\":\"战争\"},{\"n\":\"犯罪\",\"v\":\"犯罪\"},{\"n\":\"灾难\",\"v\":\"灾难\"},{\"n\":\"奇幻\",\"v\":\"奇幻\"},{\"n\":\"悬疑\",\"v\":\"悬疑\"},{\"n\":\"惊悚\",\"v\":\"惊悚\"},{\"n\":\"冒险\",\"v\":\"冒险\"}]},{\"key\":\"area\",\"name\":\"地区\",\"value\":[{\"n\":\"全部\",\"v\":\"\"},{\"n\":\"大陆\",\"v\":\"大陆\"},{\"n\":\"韩国\",\"v\":\"韩国\"},{\"n\":\"香港\",\"v\":\"香港\"},{\"n\":\"台湾\",\"v\":\"台湾\"},{\"n\":\"英国\",\"v\":\"英国\"},{\"n\":\"日本\",\"v\":\"日本\"},{\"n\":\"美国\",\"v\":\"美国\"},{\"n\":\"泰国\",\"v\":\"泰国\"},{\"n\":\"法国\",\"v\":\"法国\"},{\"n\":\"德国\",\"v\":\"德国\"},{\"n\":\"印度\",\"v\":\"印度\"},{\"n\":\"其他\",\"v\":\"其他\"}]},{\"key\":\"year\",\"name\":\"年份\",\"value\":[{\"n\":\"全部\",\"v\":\"\"},{\"n\":\"2022\",\"v\":\"2022\"},{\"n\":\"2021\",\"v\":\"2021\"},{\"n\":\"2020\",\"v\":\"2020\"},{\"n\":\"2019\",\"v\":\"2019\"},{\"n\":\"2018\",\"v\":\"2018\"},{\"n\":\"2017\",\"v\":\"2017\"},{\"n\":\"2016\",\"v\":\"2016\"},{\"n\":\"2015\",\"v\":\"2015\"},{\"n\":\"2014\",\"v\":\"2014\"},{\"n\":\"2013\",\"v\":\"2013\"},{\"n\":\"2012\",\"v\":\"2012\"},{\"n\":\"2011\",\"v\":\"2011\"},{\"n\":\"2010\",\"v\":\"2010\"},{\"n\":\"2009\",\"v\":\"2009\"},{\"n\":\"2008\",\"v\":\"2008\"},{\"n\":\"2007\",\"v\":\"2007\"},{\"n\":\"2006\",\"v\":\"2006\"},{\"n\":\"2000\",\"v\":\"2000\"},{\"n\":\"1997\",\"v\":\"1997\"}]},{\"key\":\"by\",\"name\":\"排序\",\"value\":[{\"n\":\"全部\",\"v\":\"\"},{\"n\":\"时间\",\"v\":\"time\"},{\"n\":\"人气\",\"v\":\"hits\"},{\"n\":\"评分\",\"v\":\"score\"}]}],\"2\":[{\"key\":\"class\",\"name\":\"类型\",\"value\":[{\"n\":\"全部\",\"v\":\"\"},{\"n\":\"国产\",\"v\":\"国产\"},{\"n\":\"港台\",\"v\":\"港台\"},{\"n\":\"日韩\",\"v\":\"日韩\"},{\"n\":\"欧美\",\"v\":\"欧美\"},{\"n\":\"海外\",\"v\":\"海外\"},{\"n\":\"古装\",\"v\":\"古装\"},{\"n\":\"战争\",\"v\":\"战争\"},{\"n\":\"偶像\",\"v\":\"偶像\"},{\"n\":\"犯罪\",\"v\":\"犯罪\"},{\"n\":\"奇幻\",\"v\":\"奇幻\"},{\"n\":\"剧情\",\"v\":\"剧情\"},{\"n\":\"历史\",\"v\":\"历史\"},{\"n\":\"网剧\",\"v\":\"网剧\"}]},{\"key\":\"area\",\"name\":\"地区\",\"value\":[{\"n\":\"全部\",\"v\":\"\"},{\"n\":\"大陆\",\"v\":\"大陆\"},{\"n\":\"韩国\",\"v\":\"韩国\"},{\"n\":\"香港\",\"v\":\"香港\"},{\"n\":\"台湾\",\"v\":\"台湾\"},{\"n\":\"英国\",\"v\":\"英国\"},{\"n\":\"日本\",\"v\":\"日本\"},{\"n\":\"美国\",\"v\":\"美国\"},{\"n\":\"泰国\",\"v\":\"泰国\"},{\"n\":\"新加坡\",\"v\":\"新加坡\"},{\"n\":\"其他\",\"v\":\"其他\"}]},{\"key\":\"year\",\"name\":\"年份\",\"value\":[{\"n\":\"全部\",\"v\":\"\"},{\"n\":\"2022\",\"v\":\"2022\"},{\"n\":\"2021\",\"v\":\"2021\"},{\"n\":\"2020\",\"v\":\"2020\"},{\"n\":\"2019\",\"v\":\"2019\"},{\"n\":\"2018\",\"v\":\"2018\"},{\"n\":\"2017\",\"v\":\"2017\"},{\"n\":\"2016\",\"v\":\"2016\"},{\"n\":\"2015\",\"v\":\"2015\"},{\"n\":\"2014\",\"v\":\"2014\"},{\"n\":\"2013\",\"v\":\"2013\"},{\"n\":\"2012\",\"v\":\"2012\"},{\"n\":\"2011\",\"v\":\"2011\"},{\"n\":\"2010\",\"v\":\"2010\"},{\"n\":\"2009\",\"v\":\"2009\"},{\"n\":\"2008\",\"v\":\"2008\"},{\"n\":\"2007\",\"v\":\"2007\"},{\"n\":\"2006\",\"v\":\"2006\"},{\"n\":\"1997\",\"v\":\"1997\"},{\"n\":\"1980\",\"v\":\"1980\"}]},{\"key\":\"by\",\"name\":\"排序\",\"value\":[{\"n\":\"全部\",\"v\":\"\"},{\"n\":\"时间\",\"v\":\"time\"},{\"n\":\"人气\",\"v\":\"hits\"},{\"n\":\"评分\",\"v\":\"score\"}]}]}");
|
||||
} catch (JSONException e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 爬虫headers
|
||||
*
|
||||
* @param url
|
||||
* @return
|
||||
*/
|
||||
protected HashMap<String, String> getHeaders(String url) {
|
||||
HashMap<String, String> headers = new HashMap<>();
|
||||
headers.put("Referer", "http://www.1010dy1.com/");
|
||||
headers.put("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Core/1.94.169.400 QQBrowser/11.0.5130.400");
|
||||
return headers;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取分类数据 + 首页最近更新视频列表数据
|
||||
*
|
||||
* @param filter 是否开启筛选 关联的是 软件设置中 首页数据源里的筛选开关
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String homeContent(boolean filter) {
|
||||
try {
|
||||
Document doc = Jsoup.parse(OkHttpUtil.string(siteUrl, getHeaders(siteUrl)));
|
||||
// 分类节点
|
||||
Elements elements = doc.select("ul.stui-header__menu > li > a");
|
||||
JSONArray classes = new JSONArray();
|
||||
for (Element ele : elements) {
|
||||
String name = ele.text();
|
||||
Matcher mather = regexCategory.matcher(ele.attr("href"));
|
||||
if (!mather.find())
|
||||
continue;
|
||||
String id = mather.group(1).trim();
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("type_id", id);
|
||||
jsonObject.put("type_name", name);
|
||||
classes.put(jsonObject);
|
||||
}
|
||||
JSONObject result = new JSONObject();
|
||||
if (filter) {
|
||||
result.put("filters", filterConfig);
|
||||
}
|
||||
result.put("class", classes);
|
||||
try {
|
||||
// 取首页推荐视频列表
|
||||
Elements list = doc.select("div.stui-pannel_bd:nth-child(1) ul.stui-vodlist li div.stui-vodlist__box");
|
||||
JSONArray videos = new JSONArray();
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
Element vod = list.get(i);
|
||||
Matcher matcher = regexVid.matcher(vod.selectFirst(".stui-vodlist__thumb").attr("href"));
|
||||
if (!matcher.find())
|
||||
continue;
|
||||
String title = vod.selectFirst(".stui-vodlist__thumb").attr("title");
|
||||
String cover = vod.selectFirst(".stui-vodlist__thumb").attr("data-original");
|
||||
String remark = vod.selectFirst("span.pic-text").text();
|
||||
String id = matcher.group(1);
|
||||
JSONObject v = new JSONObject();
|
||||
v.put("vod_id", id);
|
||||
v.put("vod_name", title);
|
||||
v.put("vod_pic", cover);
|
||||
v.put("vod_remarks", remark);
|
||||
videos.put(v);
|
||||
}
|
||||
result.put("list", videos);
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取分类信息数据
|
||||
*
|
||||
* @param tid 分类id
|
||||
* @param pg 页数
|
||||
* @param filter 同homeContent方法中的filter
|
||||
* @param extend 筛选参数{k:v, k1:v1}
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String categoryContent(String tid, String pg, boolean filter, HashMap<String, String> extend) {
|
||||
try {
|
||||
String url = siteUrl + "/show/";
|
||||
if (extend != null && extend.size() > 0 && extend.containsKey("tid") && extend.get("tid").length() > 0) {
|
||||
url += extend.get("tid");
|
||||
} else {
|
||||
url += tid;
|
||||
}
|
||||
if (extend != null && extend.size() > 0) {
|
||||
for (Iterator<String> it = extend.keySet().iterator(); it.hasNext(); ) {
|
||||
String key = it.next();
|
||||
String value = extend.get(key);
|
||||
if (value.length() > 0) {
|
||||
url += "/" + key + "/" + URLEncoder.encode(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
url += "/page/" + pg + "/";
|
||||
// 获取分类数据的url
|
||||
//String url = siteUrl + "/show/" + tid + "/page/" + pg + "/";
|
||||
String html = OkHttpUtil.string(url, getHeaders(url));
|
||||
Document doc = Jsoup.parse(html);
|
||||
JSONObject result = new JSONObject();
|
||||
int pageCount = 0;
|
||||
int page = -1;
|
||||
// 取页码相关信息
|
||||
Elements pageInfo = doc.select(".stui-page li");
|
||||
if (pageInfo.size() == 0) {
|
||||
page = Integer.parseInt(pg);
|
||||
pageCount = page;
|
||||
} else {
|
||||
for (int i = 0; i < pageInfo.size(); i++) {
|
||||
Element li = pageInfo.get(i);
|
||||
Element a = li.selectFirst("a");
|
||||
if (a == null)
|
||||
continue;
|
||||
String name = a.text();
|
||||
if (page == -1 && li.hasClass("active")) {
|
||||
Matcher matcher = regexPage.matcher(a.attr("href"));
|
||||
if (matcher.find()) {
|
||||
page = Integer.parseInt(matcher.group(1));
|
||||
} else {
|
||||
page = 0;
|
||||
}
|
||||
}
|
||||
if (name.equals("尾页")) {
|
||||
Matcher matcher = regexPage.matcher(a.attr("href"));
|
||||
if (matcher.find()) {
|
||||
pageCount = Integer.parseInt(matcher.group(1));
|
||||
} else {
|
||||
pageCount = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
JSONArray videos = new JSONArray();
|
||||
if (!html.contains("没有找到您想要的结果哦")) {
|
||||
Elements list = doc.select("ul.stui-vodlist li div.stui-vodlist__box");
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
Element vod = list.get(i);
|
||||
String title = vod.selectFirst(".title").text();
|
||||
String cover = vod.selectFirst(".stui-vodlist__thumb").attr("data-original");
|
||||
String remark = vod.selectFirst("span.pic-text").text();
|
||||
Matcher matcher = regexVid.matcher(vod.selectFirst(".stui-vodlist__thumb").attr("href"));
|
||||
if (!matcher.find())
|
||||
continue;
|
||||
String id = matcher.group(1);
|
||||
JSONObject v = new JSONObject();
|
||||
v.put("vod_id", id);
|
||||
v.put("vod_name", title);
|
||||
v.put("vod_pic", cover);
|
||||
v.put("vod_remarks", remark);
|
||||
videos.put(v);
|
||||
}
|
||||
}
|
||||
result.put("page", page);
|
||||
result.put("pagecount", pageCount);
|
||||
result.put("limit", 30);
|
||||
result.put("total", pageCount <= 1 ? videos.length() : pageCount * 30);
|
||||
|
||||
result.put("list", videos);
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* 视频详情信息
|
||||
*
|
||||
* @param ids 视频id
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String detailContent(List<String> ids) {
|
||||
try {
|
||||
// 视频详情url
|
||||
String url = siteUrl + "/detail/" + ids.get(0) + "/";
|
||||
Document doc = Jsoup.parse(OkHttpUtil.string(url, getHeaders(url)));
|
||||
JSONObject result = new JSONObject();
|
||||
JSONObject vodList = new JSONObject();
|
||||
|
||||
// 取基本数据
|
||||
String cover = doc.selectFirst("a.stui-vodlist__thumb img").attr("data-original");
|
||||
String title = doc.selectFirst("a.stui-vodlist__thumb").attr("title");
|
||||
String desc = Jsoup.parse(doc.selectFirst("meta[name=description]").attr("content")).text();
|
||||
String category = "", area = "", year = "", remark = "", director = "", actor = "";
|
||||
Elements span_text_muted = doc.select("div.stui-content__detail span.text-muted");
|
||||
for (int i = 0; i < span_text_muted.size(); i++) {
|
||||
Element text = span_text_muted.get(i);
|
||||
String info = text.text();
|
||||
if (info.equals("类型:")) {
|
||||
category = text.nextElementSibling().text();
|
||||
} else if (info.equals("年份:")) {
|
||||
year = text.nextElementSibling().text();
|
||||
} else if (info.equals("地区:")) {
|
||||
area = text.nextElementSibling().text();
|
||||
} else if (info.equals("更新:")) {
|
||||
remark = text.nextSibling().outerHtml().trim();
|
||||
} else if (info.equals("导演:")) {
|
||||
List<String> directors = new ArrayList<>();
|
||||
Elements aa = text.parent().select("a");
|
||||
for (int j = 0; j < aa.size(); j++) {
|
||||
directors.add(aa.get(j).text());
|
||||
}
|
||||
director = TextUtils.join(",", directors);
|
||||
} else if (info.equals("主演:")) {
|
||||
List<String> actors = new ArrayList<>();
|
||||
Elements aa = text.parent().select("a");
|
||||
for (int j = 0; j < aa.size(); j++) {
|
||||
actors.add(aa.get(j).text());
|
||||
}
|
||||
actor = TextUtils.join(",", actors);
|
||||
}
|
||||
}
|
||||
|
||||
vodList.put("vod_id", ids.get(0));
|
||||
vodList.put("vod_name", title);
|
||||
vodList.put("vod_pic", cover);
|
||||
vodList.put("type_name", category);
|
||||
vodList.put("vod_year", year);
|
||||
vodList.put("vod_area", area);
|
||||
vodList.put("vod_remarks", remark);
|
||||
vodList.put("vod_actor", actor);
|
||||
vodList.put("vod_director", director);
|
||||
vodList.put("vod_content", desc);
|
||||
|
||||
Map<String, String> vod_play = new TreeMap<>(new Comparator<String>() {
|
||||
@Override
|
||||
public int compare(String o1, String o2) {
|
||||
try {
|
||||
int sort1 = playerConfig.getJSONObject(o1).getInt("or");
|
||||
int sort2 = playerConfig.getJSONObject(o2).getInt("or");
|
||||
|
||||
if (sort1 == sort2) {
|
||||
return 1;
|
||||
}
|
||||
return sort1 - sort2 > 0 ? 1 : -1;
|
||||
} catch (JSONException e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
});
|
||||
|
||||
Elements sources = doc.select("div.playlist");
|
||||
|
||||
for (int i = 0; i < sources.size(); i++) {
|
||||
Element source = sources.get(i);
|
||||
String sourceName = source.selectFirst("h3.title").text().trim();
|
||||
String tabHref = source.attr("href");
|
||||
boolean found = false;
|
||||
for (Iterator<String> it = playerConfig.keys(); it.hasNext(); ) {
|
||||
String flag = it.next();
|
||||
if (playerConfig.getJSONObject(flag).getString("show").equals(sourceName)) {
|
||||
sourceName = playerConfig.getJSONObject(flag).getString("show");
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found)
|
||||
continue;
|
||||
String playList = "";
|
||||
Elements playListA = source.select("ul.stui-content__playlist > li > a");
|
||||
List<String> vodItems = new ArrayList<>();
|
||||
|
||||
for (int j = 0; j < playListA.size(); j++) {
|
||||
Element vod = playListA.get(j);
|
||||
Matcher matcher = regexPlay.matcher(vod.attr("href"));
|
||||
if (!matcher.find())
|
||||
continue;
|
||||
String playURL = matcher.group(1) + "-" + matcher.group(2) + "-" + matcher.group(3);
|
||||
vodItems.add(vod.text() + "$" + playURL);
|
||||
}
|
||||
if (vodItems.size() > 0)
|
||||
playList = TextUtils.join("#", vodItems);
|
||||
|
||||
if (playList.length() == 0)
|
||||
continue;
|
||||
|
||||
vod_play.put(sourceName, playList);
|
||||
}
|
||||
|
||||
if (vod_play.size() > 0) {
|
||||
String vod_play_from = TextUtils.join("$$$", vod_play.keySet());
|
||||
String vod_play_url = TextUtils.join("$$$", vod_play.values());
|
||||
vodList.put("vod_play_from", vod_play_from);
|
||||
vodList.put("vod_play_url", vod_play_url);
|
||||
}
|
||||
JSONArray list = new JSONArray();
|
||||
list.put(vodList);
|
||||
result.put("list", list);
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
private final Pattern regexUrl = Pattern.compile("(?<=urls = \").+?(?=\";)");
|
||||
/**
|
||||
* 获取视频播放信息
|
||||
*
|
||||
* @param flag 播放源
|
||||
* @param id 视频id
|
||||
* @param vipFlags 所有可能需要vip解析的源
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String playerContent(String flag, String id, List<String> vipFlags) {
|
||||
try {
|
||||
JSONObject headers = new JSONObject();
|
||||
headers.put("Origin", " https://dp.1010dy.cc");
|
||||
//headers.put("Referer", " http://www.1010dy1.com/");
|
||||
//headers.put("Icy-MetaData", "1");
|
||||
//headers.put("scheme", " https");
|
||||
headers.put("User-Agent", " Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36");
|
||||
headers.put("Accept", " */*");
|
||||
//headers.put("Accept-Language", " zh-CN,zh;q=0.9,en-GB;q=0.8,en-US;q=0.7,en;q=0.6");
|
||||
//headers.put("Accept-Encoding", " gzip, deflate");
|
||||
headers.put("Connection", " close");
|
||||
// 播放页 url
|
||||
String url = siteUrl + "/play/" + id + "/";
|
||||
Document doc = Jsoup.parse(OkHttpUtil.string(url, getHeaders(url)));
|
||||
Elements allScript = doc.select("script");
|
||||
JSONObject result = new JSONObject();
|
||||
for (int i = 0; i < allScript.size(); i++) {
|
||||
String scContent = allScript.get(i).html().trim();
|
||||
if (scContent.startsWith("var player_")) {
|
||||
int start = scContent.indexOf('{');
|
||||
int end = scContent.lastIndexOf('}') + 1;
|
||||
String json = scContent.substring(start, end);
|
||||
JSONObject player = new JSONObject(json);
|
||||
if (playerConfig.has(player.getString("from"))) {
|
||||
HashMap<String, String> hashMap = new HashMap<>();
|
||||
hashMap.put("User-Agent", " Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36");
|
||||
hashMap.put("Referer", url);
|
||||
String jxurl = "https://dp.1010dy.cc/?url=" + player.getString("url")+"&next="+player.getString("link_next")+"&id="+player.getString("id")+"&nid="+player.getString("nid")+"&from="+player.getString("from");
|
||||
String doc1 = OkHttpUtil.string(jxurl, hashMap);
|
||||
Matcher matcher = regexUrl.matcher(doc1);
|
||||
if (!matcher.find()) {
|
||||
return "";
|
||||
}
|
||||
String data = matcher.group(0);
|
||||
byte[] decode = Base64.decode(data, Base64.DEFAULT);
|
||||
String iv = "c487ebl2e38a0faO";
|
||||
String key = "Of84ff0clf252cba";
|
||||
String directUrl = decryptToString(decode, key.getBytes(), iv.getBytes(),AES_CBC_PKCS7Padding);
|
||||
if (player.getString("from").equals("duoduozy")) {
|
||||
result.put("parse", 0);
|
||||
result.put("playUrl", "");
|
||||
result.put("url", directUrl);
|
||||
result.put("header", headers.toString());
|
||||
} else {
|
||||
result.put("parse", 0);
|
||||
result.put("playUrl", "");
|
||||
result.put("url", directUrl);
|
||||
result.put("header", "");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索
|
||||
*
|
||||
* @param key
|
||||
* @param quick 是否播放页的快捷搜索
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String searchContent(String key, boolean quick) {
|
||||
try {
|
||||
long currentTime = System.currentTimeMillis();
|
||||
String url = siteUrl + "/index.php/ajax/suggest?mid=1&wd=" + URLEncoder.encode(key) + "&limit=10×tamp=" + currentTime;
|
||||
JSONObject searchResult = new JSONObject(OkHttpUtil.string(url, getHeaders(url)));
|
||||
JSONObject result = new JSONObject();
|
||||
JSONArray videos = new JSONArray();
|
||||
if (searchResult.getInt("total") > 0) {
|
||||
JSONArray lists = new JSONArray(searchResult.getString("list"));
|
||||
for (int i = 0; i < lists.length(); i++) {
|
||||
JSONObject vod = lists.getJSONObject(i);
|
||||
String id = vod.getString("id");
|
||||
String title = vod.getString("name");
|
||||
String cover = vod.getString("pic");
|
||||
JSONObject v = new JSONObject();
|
||||
v.put("vod_id", id);
|
||||
v.put("vod_name", title);
|
||||
v.put("vod_pic", cover);
|
||||
v.put("vod_remarks", "");
|
||||
videos.put(v);
|
||||
}
|
||||
}
|
||||
result.put("list", videos);
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,296 @@
|
||||
package com.github.catvod.spider;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.content.Context;
|
||||
import com.github.catvod.crawler.Spider;
|
||||
import com.github.catvod.crawler.SpiderDebug;
|
||||
import com.github.catvod.utils.CBC;
|
||||
import com.github.catvod.utils.okhttp.OKCallBack;
|
||||
import com.github.catvod.utils.okhttp.OkHttpUtil;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import okhttp3.Call;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.jsoup.Jsoup;
|
||||
import org.jsoup.nodes.Document;
|
||||
import org.jsoup.select.Elements;
|
||||
|
||||
|
||||
public class Jianying extends Spider {
|
||||
public static String token;
|
||||
|
||||
|
||||
public void init(Context context, String str) {
|
||||
super.init(context, str);
|
||||
token = str;
|
||||
}
|
||||
|
||||
private HashMap<String, String> getHeaders(String url) {
|
||||
HashMap<String, String> headers = new HashMap<>();
|
||||
headers.put("accept", "application/json, text/plain, */*");
|
||||
headers.put("accept-encoding", "gzip, deflate, br");
|
||||
headers.put("connection", "keep-alive");
|
||||
headers.put("Authorization", token);
|
||||
headers.put("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36");
|
||||
return headers;
|
||||
}
|
||||
|
||||
public String homeContent(boolean filter) {
|
||||
try {
|
||||
String url = "https://admin.syrme.top/v1/api/video/index";
|
||||
JSONObject jSONObject = new JSONObject();
|
||||
JSONArray classes = new JSONArray();
|
||||
OkHttpUtil.postJson(OkHttpUtil.defaultClient(), url, jSONObject.toString(), getHeaders(url), new OKCallBack.OKCallBackString() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Call call, Exception exc) {
|
||||
}
|
||||
|
||||
public void onResponse(String str) {
|
||||
try {
|
||||
JSONArray list = new JSONObject(str).getJSONArray("data");
|
||||
for (int i = 0; i < list.length(); i++) {
|
||||
JSONObject vObj = list.getJSONObject(i);
|
||||
String name = vObj.getString("title");
|
||||
if (!name.equals("轮播")) {
|
||||
String id = vObj.getString("title");
|
||||
JSONObject newCls = new JSONObject();
|
||||
newCls.put("type_id", id);
|
||||
newCls.put("type_name", name);
|
||||
classes.put(newCls);
|
||||
}
|
||||
}
|
||||
} catch (JSONException unused) {
|
||||
}
|
||||
}
|
||||
});
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("class", classes);
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public String homeVideoContent() {
|
||||
try {
|
||||
JSONArray videos = new JSONArray();
|
||||
JSONObject jSONObject = new JSONObject();
|
||||
String url = "https://admin.syrme.top/v1/api/video/index";
|
||||
OkHttpUtil.postJson(OkHttpUtil.defaultClient(), url, jSONObject.toString(), getHeaders(url), new OKCallBack.OKCallBackString() {
|
||||
@Override
|
||||
public void onFailure(Call call, Exception exc) {
|
||||
}
|
||||
|
||||
public void onResponse(String str) {
|
||||
try {
|
||||
JSONArray jsonArray = new JSONObject(str).getJSONArray("data");
|
||||
JSONArray list = jsonArray.getJSONObject(1).getJSONArray("video_list");
|
||||
for (int i = 0; i < jsonArray.length(); i++) {
|
||||
JSONObject vObj = list.getJSONObject(i);
|
||||
String id = vObj.getString("ID");
|
||||
String title = vObj.getString("title");
|
||||
String cover = vObj.getString("image");
|
||||
String mark = vObj.getString("score");
|
||||
JSONObject v = new JSONObject();
|
||||
v.put("vod_id", id);
|
||||
v.put("vod_name", title);
|
||||
v.put("vod_pic", cover);
|
||||
v.put("vod_remarks", mark);
|
||||
videos.put(v);
|
||||
}
|
||||
} catch (JSONException unused) {
|
||||
}
|
||||
}
|
||||
});
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("list", videos);
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public String categoryContent(String tid, String pg, boolean filter, HashMap<String, String> extend) {
|
||||
try {
|
||||
int parseInt = Integer.parseInt(pg);
|
||||
if (parseInt == 0) {
|
||||
parseInt = 1;
|
||||
}
|
||||
String url = "https://admin.syrme.top/v1/api/video/search?q=" + tid + "&page=" + pg + "&size=" + 24;
|
||||
JSONObject jSONObject = new JSONObject();
|
||||
JSONArray list = new JSONArray();
|
||||
OkHttpUtil.postJson(OkHttpUtil.defaultClient(), url, jSONObject.toString(), getHeaders(url), new OKCallBack.OKCallBackString() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Call call, Exception exc) {
|
||||
}
|
||||
|
||||
public void onResponse(String str4) {
|
||||
try {
|
||||
JSONArray data = new JSONObject(str4).getJSONArray("data");
|
||||
for (int i = 0; i < data.length(); i++) {
|
||||
JSONObject vObj = data.getJSONObject(i);
|
||||
JSONObject vodAtom = new JSONObject();
|
||||
vodAtom.put("vod_id", vObj.getString("ID"));
|
||||
vodAtom.put("vod_name", vObj.getString("title"));
|
||||
vodAtom.put("vod_pic", vObj.optString("image"));
|
||||
String mark = vObj.optString("score");
|
||||
if (mark.equals("null")) {
|
||||
mark = "";
|
||||
}
|
||||
vodAtom.put("vod_remarks", mark);
|
||||
list.put(vodAtom);
|
||||
}
|
||||
} catch (JSONException unused) {
|
||||
}
|
||||
}
|
||||
});
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("page", parseInt);
|
||||
if (list.length() == 24) {
|
||||
parseInt++;
|
||||
}
|
||||
result.put("pagecount", parseInt);
|
||||
result.put("limit", 24);
|
||||
result.put("total", Integer.MAX_VALUE);
|
||||
result.put("list", list);
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public String detailContent(List<String> ids) {
|
||||
try {
|
||||
String url = "https://admin.syrme.top/v1/api/video/id?id=" + ids.get(0);
|
||||
JSONObject jSONObject = new JSONObject();
|
||||
JSONObject vodAtom = new JSONObject();
|
||||
OkHttpUtil.postJson(OkHttpUtil.defaultClient(), url, jSONObject.toString(), getHeaders(url), new OKCallBack.OKCallBackString() {
|
||||
@Override
|
||||
public void onFailure(Call call, Exception exc) {
|
||||
}
|
||||
|
||||
public void onResponse(String str) {
|
||||
try {
|
||||
JSONObject vObj = new JSONObject(str).getJSONObject("data");
|
||||
vodAtom.put("vod_id", vObj.getString("ID"));
|
||||
vodAtom.put("vod_name", vObj.getString("title"));
|
||||
vodAtom.put("vod_pic", vObj.getString("image"));
|
||||
vodAtom.put("type_name", vObj.getString("video_type"));
|
||||
vodAtom.put("vod_year", vObj.getString("year"));
|
||||
vodAtom.put("vod_area", vObj.getString("video_tags"));
|
||||
String optString = vObj.optString("score");
|
||||
String des = "";
|
||||
if (optString.equals("null")) {
|
||||
optString = des;
|
||||
}
|
||||
vodAtom.put("vod_remarks", optString);
|
||||
vodAtom.put("vod_actor", vObj.getString("authors"));
|
||||
vodAtom.put("vod_director", vObj.getString("director"));
|
||||
String optString2 = vObj.optString("content");
|
||||
if (!optString2.equals("null")) {
|
||||
des = optString2;
|
||||
}
|
||||
vodAtom.put("vod_content", des);
|
||||
vodAtom.put("vod_play_from", "简影");
|
||||
vodAtom.put("vod_play_url", vObj.optString("url_content").replace("\n", "#"));
|
||||
} catch (JSONException unused) {
|
||||
}
|
||||
}
|
||||
});
|
||||
JSONObject result = new JSONObject();
|
||||
JSONArray list = new JSONArray();
|
||||
list.put(vodAtom);
|
||||
result.put("list", list);
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
@TargetApi(26)
|
||||
public String playerContent(String flag, String id, List<String> vipFlags) {
|
||||
try {
|
||||
JSONObject result = new JSONObject();
|
||||
String time = LocalDateTime.now(ZoneId.of("Asia/Shanghai")).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")).replace("-", "丨");
|
||||
String key = "ba0-1024-11eb-ad";
|
||||
String enData = CBC.hexs(time, key, key);
|
||||
String basic = "";
|
||||
int i = 0;
|
||||
while (i < enData.length()) {
|
||||
int i2 = i + 8;
|
||||
basic = basic + enData.substring(i, i2) + "-";
|
||||
i = i2;
|
||||
}
|
||||
String sid = basic.substring(0, basic.length() - 1);
|
||||
JSONObject headers = new JSONObject();
|
||||
headers.put("User-Agent", " Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36");
|
||||
headers.put("Accept", " */*");
|
||||
headers.put("Accept-Language", " zh-CN,zh;q=0.9,en-US;q=0.3,en;q=0.7");
|
||||
headers.put("Accept-Encoding", " gzip, deflate");
|
||||
|
||||
result.put("parse", 0);
|
||||
result.put("url", id + "?sid=" + sid);
|
||||
result.put("playUrl", "");
|
||||
result.put("header", headers.toString());
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public String searchContent(String str, boolean quick) {
|
||||
if (quick) {
|
||||
return "";
|
||||
}
|
||||
try {
|
||||
JSONArray videos = new JSONArray();
|
||||
try {
|
||||
String url = "https://admin.syrme.top/v1/api/video/search?q=" + str + "&page=1&size=24";
|
||||
OkHttpUtil.postJson(OkHttpUtil.defaultClient(), url, new JSONObject().toString(), getHeaders(url), new OKCallBack.OKCallBackString() {
|
||||
@Override
|
||||
public void onFailure(Call call, Exception exc) {
|
||||
}
|
||||
|
||||
public void onResponse(String str3) {
|
||||
try {
|
||||
JSONArray jsonArray = new JSONObject(str3).getJSONArray("data");
|
||||
for (int i = 0; i < jsonArray.length(); i++) {
|
||||
JSONObject vObj = jsonArray.getJSONObject(i);
|
||||
JSONObject v = new JSONObject();
|
||||
v.put("vod_id", vObj.getString("ID"));
|
||||
v.put("vod_name", vObj.getString("title"));
|
||||
v.put("vod_pic", vObj.optString("image"));
|
||||
String mark = vObj.optString("score");
|
||||
if (mark.equals("null")) {
|
||||
mark = "";
|
||||
}
|
||||
v.put("vod_remarks", mark);
|
||||
videos.put(v);
|
||||
}
|
||||
} catch (JSONException unused) {
|
||||
}
|
||||
}
|
||||
});
|
||||
} catch (Exception unused) {
|
||||
}
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("list", videos);
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,326 @@
|
||||
package com.github.catvod.spider;
|
||||
|
||||
import android.content.Context;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Base64;
|
||||
|
||||
import com.github.catvod.utils.okhttp.OkHttpUtil;
|
||||
import com.github.catvod.crawler.Spider;
|
||||
import com.github.catvod.crawler.SpiderDebug;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
public class Nianying extends Spider {
|
||||
|
||||
private static String host = "http://cms111.nbhut.com/api.php/Chengcheng/vod";
|
||||
|
||||
public HashMap<String, String> headers() {
|
||||
HashMap<String, String> hashMap = new HashMap<>();
|
||||
hashMap.put("User-Agent", "Dalvik/2.1.0 (Linux; U; Android 11; M2105K81AC Build/RKQ1.200826.002)");
|
||||
return hashMap;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void init(Context context) {
|
||||
super.init(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(Context context, String extend) {
|
||||
super.init(context, extend);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String homeContent(boolean filter) {
|
||||
try {
|
||||
JSONObject result = new JSONObject();
|
||||
JSONArray classes = new JSONArray();
|
||||
LinkedHashMap<String, String> linkedHashMap = new LinkedHashMap<>();
|
||||
linkedHashMap.put("movie", "电影");
|
||||
linkedHashMap.put("tvplay", "剧集");
|
||||
linkedHashMap.put("comic", "动漫");
|
||||
linkedHashMap.put("tvshow", "综艺");
|
||||
for (String str : linkedHashMap.keySet()) {
|
||||
JSONObject item = new JSONObject();
|
||||
item.put("type_id", str);
|
||||
item.put("type_name", linkedHashMap.get(str));
|
||||
classes.put(item);
|
||||
}
|
||||
result.put("class", classes);
|
||||
|
||||
if (filter) {
|
||||
JSONObject filterBox = new JSONObject();
|
||||
result.put("filters", filterBox);
|
||||
String json = OkHttpUtil.string(host + "/?ac=flitter", headers());
|
||||
JSONObject sourceData = new JSONObject(decrypt(json));
|
||||
for (String tid : linkedHashMap.keySet()) {
|
||||
JSONArray filterArr = new JSONArray();
|
||||
filterBox.put(tid, filterArr);
|
||||
JSONArray typeJSON = sourceData.optJSONArray(tid);
|
||||
for (int j = 0; j < typeJSON.length(); j++) {
|
||||
JSONObject item = typeJSON.optJSONObject(j);
|
||||
String itemName = item.optString("name");
|
||||
String itemField = item.optString("field");
|
||||
JSONArray itemValues = item.optJSONArray("values");
|
||||
JSONObject jOne = new JSONObject();
|
||||
jOne.put("key", itemField);
|
||||
jOne.put("name", itemName);
|
||||
filterArr.put(jOne);
|
||||
JSONArray values = new JSONArray();
|
||||
jOne.put("value", values);
|
||||
|
||||
JSONObject all = new JSONObject();
|
||||
all.put("n", "全部");
|
||||
all.put("v", "");
|
||||
values.put(all);
|
||||
for (int k = 0; k < itemValues.length(); k++) {
|
||||
String k1 = itemValues.optString(k);
|
||||
JSONObject kvo = new JSONObject();
|
||||
kvo.put("n", k1);
|
||||
kvo.put("v", k1);
|
||||
values.put(kvo);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
private String decrypt(String data) {
|
||||
return data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String homeVideoContent() {
|
||||
JSONObject result = new JSONObject();
|
||||
try {
|
||||
String url = host + "/?ac=list&class=tvplay&page=1";
|
||||
String encodeData = OkHttpUtil.string(url, headers());
|
||||
JSONObject json = new JSONObject(decrypt(encodeData));
|
||||
JSONArray data = json.optJSONArray("data");
|
||||
JSONArray list = new JSONArray();
|
||||
for (int i = 0; i < data.length(); i++) {
|
||||
JSONObject item = data.getJSONObject(i);
|
||||
JSONObject vod = new JSONObject();
|
||||
String nextlink = item.getString("nextlink");
|
||||
String vod_id = nextlink.substring(nextlink.indexOf("ids=") + 4);
|
||||
vod.put("vod_id", vod_id);
|
||||
vod.put("vod_name", item.getString("title"));
|
||||
vod.put("vod_pic", item.getString("pic"));
|
||||
vod.put("vod_remarks", item.getString("state"));
|
||||
list.put(vod);
|
||||
}
|
||||
result.put("list", list);
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String categoryContent(String tid, String pg, boolean filter, HashMap<String, String> extend) {
|
||||
JSONObject result = new JSONObject();
|
||||
try {
|
||||
String url = host + "/";
|
||||
Map<String, String> params = new HashMap<>();
|
||||
if (extend != null) {
|
||||
params.putAll(extend);
|
||||
}
|
||||
params.put("class", tid);
|
||||
params.put("page", pg);
|
||||
params.put("ac", "list");
|
||||
|
||||
List<String> ps = new LinkedList<>();
|
||||
for (Map.Entry<String, String> entry : params.entrySet()) {
|
||||
ps.add(entry.getKey() + "=" + entry.getValue());
|
||||
}
|
||||
url = url + "?" + TextUtils.join("&", ps);
|
||||
String encodeData = OkHttpUtil.string(url, headers());
|
||||
JSONObject json = new JSONObject(decrypt(encodeData));
|
||||
JSONArray list = json.optJSONArray("data");
|
||||
JSONArray vods = new JSONArray();
|
||||
for (int i = 0; i < list.length(); i++) {
|
||||
JSONObject item = list.getJSONObject(i);
|
||||
JSONObject vod = new JSONObject();
|
||||
String nextlink = item.getString("nextlink");
|
||||
String vod_id = nextlink.substring(nextlink.indexOf("ids=") + 4);
|
||||
vod.put("vod_id", vod_id);
|
||||
vod.put("vod_name", item.getString("title"));
|
||||
vod.put("vod_pic", item.getString("pic"));
|
||||
vod.put("vod_remarks", item.getString("state"));
|
||||
vods.put(vod);
|
||||
}
|
||||
int parseInt = Integer.parseInt(pg);
|
||||
result.put("page", parseInt);
|
||||
if (vods.length() == 20) {
|
||||
parseInt++;
|
||||
}
|
||||
result.put("pagecount", parseInt);
|
||||
result.put("limit", 20);
|
||||
result.put("total", Integer.MAX_VALUE);
|
||||
result.put("list", vods);
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String detailContent(List<String> ids) {
|
||||
JSONObject result = new JSONObject();
|
||||
try {
|
||||
String url = host + "/?ac=detail&ids=" + ids.get(0);
|
||||
String encodeData = OkHttpUtil.string(url, headers());
|
||||
JSONObject vodInfo = new JSONObject(decrypt(encodeData));
|
||||
JSONObject vod = new JSONObject();
|
||||
vod.put("vod_id", vodInfo.getString("id"));
|
||||
vod.put("vod_name", vodInfo.getString("title"));
|
||||
vod.put("vod_pic", vodInfo.getString("img_url"));
|
||||
vod.put("vod_year", vodInfo.optString("pubtime"));
|
||||
vod.put("vod_remarks", vodInfo.optString("season_num"));
|
||||
vod.put("vod_content", vodInfo.optString("intro").trim());
|
||||
|
||||
JSONArray type = vodInfo.optJSONArray("type");
|
||||
if (type != null && type.length() > 0) {
|
||||
vod.put("type_name", type.toString().replace("[\"", "").replace("\"]", ""));
|
||||
}
|
||||
JSONArray area = vodInfo.optJSONArray("area");
|
||||
if (area != null && area.length() > 0) {
|
||||
vod.put("vod_area", area.toString().replace("[\"", "").replace("\"]", ""));
|
||||
}
|
||||
|
||||
JSONArray actor = vodInfo.optJSONArray("actor");
|
||||
if (actor != null && actor.length() > 0) {
|
||||
vod.put("vod_actor", actor.toString().replace("[\"", "").replace("\"]", ""));
|
||||
}
|
||||
|
||||
JSONArray director = vodInfo.optJSONArray("director");
|
||||
if (director != null && director.length() > 0) {
|
||||
vod.put("vod_director", director.toString().replace("[\"", "").replace("\"]", ""));
|
||||
}
|
||||
|
||||
JSONObject videolist = vodInfo.getJSONObject("videolist");
|
||||
Iterator<String> keys = videolist.keys();
|
||||
Map<String, String> map = new TreeMap<>((o1, o2) -> {
|
||||
if (o1.contains("m3u8")) {
|
||||
if (o2.contains("lzm3u8")) {
|
||||
return 1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
if (o1.contains("ddzy")) {
|
||||
return -1;
|
||||
}
|
||||
return 1;
|
||||
});
|
||||
while (keys.hasNext()) {
|
||||
String source = keys.next();
|
||||
JSONArray urls = videolist.optJSONArray(source);
|
||||
List<String> sourceValues = new ArrayList<>();
|
||||
for (int i = 0; i < urls.length(); i++) {
|
||||
JSONObject item = urls.getJSONObject(i);
|
||||
String title = item.optString("title");
|
||||
String urlv = item.optString("url");
|
||||
if (urlv.contains("url=")) {
|
||||
urlv = urlv.replace("http://ry.nbhut.com/4.7.php?url=", "");
|
||||
}
|
||||
sourceValues.add(title + "$" + urlv);
|
||||
}
|
||||
|
||||
map.put(source, TextUtils.join("#", sourceValues));
|
||||
}
|
||||
|
||||
String join = TextUtils.join("$$$", map.keySet());
|
||||
String join2 = TextUtils.join("$$$", map.values());
|
||||
vod.put("vod_play_from", join);
|
||||
vod.put("vod_play_url", join2);
|
||||
JSONArray vods = new JSONArray();
|
||||
vods.put(vod);
|
||||
result.put("list", vods);
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param flag
|
||||
* @param id
|
||||
* @param vipFlags
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String playerContent(String flag, String id, List<String> vipFlags) {
|
||||
JSONObject result = new JSONObject();
|
||||
try {
|
||||
result.put("parse", "0");
|
||||
if (Misc.isVideoFormat(id)) {
|
||||
result.put("url", id);
|
||||
} else if (Misc.isVip(id)) {
|
||||
result.put("url", id);
|
||||
result.put("parse", "1");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String searchContent(String key, boolean quick) {
|
||||
JSONObject result = new JSONObject();
|
||||
try {
|
||||
String url = host + "/?ac=list&wd=" + key + "&page=1";
|
||||
String encodeData = OkHttpUtil.string(url, headers());
|
||||
JSONObject json = new JSONObject(decrypt(encodeData));
|
||||
JSONArray list = json.optJSONArray("data");
|
||||
JSONArray vods = new JSONArray();
|
||||
for (int i = 0; i < list.length(); i++) {
|
||||
JSONObject item = list.getJSONObject(i);
|
||||
JSONObject vod = new JSONObject();
|
||||
String nextlink = item.getString("nextlink");
|
||||
String vod_id = nextlink.substring(nextlink.indexOf("ids=") + 4);
|
||||
vod.put("vod_id", vod_id);
|
||||
vod.put("vod_name", item.getString("title"));
|
||||
vod.put("vod_pic", item.getString("pic"));
|
||||
vod.put("vod_remarks", item.getString("state"));
|
||||
vods.put(vod);
|
||||
}
|
||||
result.put("list", vods);
|
||||
} catch (Exception e) {
|
||||
|
||||
}
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVideoFormat(String url) {
|
||||
return super.isVideoFormat(url);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean manualVideoCheck() {
|
||||
return super.manualVideoCheck();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,410 @@
|
||||
package com.github.catvod.spider;
|
||||
|
||||
|
||||
|
||||
import android.content.Context;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Base64;
|
||||
|
||||
import com.github.catvod.utils.Misc;
|
||||
import com.github.catvod.utils.okhttp.OKCallBack;
|
||||
import com.github.catvod.utils.okhttp.OkHttpUtil;
|
||||
import com.github.catvod.crawler.Spider;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.jsoup.Jsoup;
|
||||
import org.jsoup.nodes.Document;
|
||||
import org.jsoup.nodes.Element;
|
||||
import org.jsoup.select.Elements;
|
||||
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import okhttp3.Call;
|
||||
|
||||
|
||||
public class Tkys extends Spider {
|
||||
|
||||
private static final String siteUrl = new String("https://www.tkys.tv");
|
||||
private static final String siteHost = new String("www.tkys.tv");
|
||||
|
||||
protected JSONObject playerConfig;
|
||||
protected JSONObject filterConfig;
|
||||
|
||||
protected Pattern regexCategory = Pattern.compile("/vodtype/(\\d+).html");
|
||||
protected Pattern regexVoddetail = Pattern.compile("/voddetail/(\\d+).html");
|
||||
protected Pattern regexPlay = Pattern.compile("/vodplay/(\\S+).html");
|
||||
protected Pattern regexPage = Pattern.compile("/vodshow/\\d+--------(\\d+)---.html");
|
||||
protected Pattern regexBtToken = Pattern.compile("token = \"(.*?)\"");
|
||||
protected Pattern regexEnurl = Pattern.compile("getVideoInfo\\(\"(.*?)\"");
|
||||
|
||||
|
||||
private final String filterString = "";
|
||||
private final String playerString = "{\"mgtv\":{\"show\":\"芒果-官方\",\"des\":\"\",\"ps\":\"1\",\"parse\":\"https://play.tkys.tv/?url=\"},\"qiyi\":{\"show\":\"奇艺-官方\",\"des\":\"\",\"ps\":\"1\",\"parse\":\"https://jx.tiankongyingshi.tv/m3u8222222.php?url=\"},\"qq\":{\"show\":\"QQ-官方\",\"des\":\"\",\"ps\":\"1\",\"parse\":\"https://jx.tiankongyingshi.tv/m3u8222222.php?url=\"},\"sohu\":{\"show\":\"搜狐-官方\",\"des\":\"\",\"ps\":\"1\",\"parse\":\"https://play.tkys.tv/?url=\"},\"xx\":{\"show\":\"蓝光C\",\"des\":\"\",\"ps\":\"1\",\"parse\":\"https://jx.tiankongyingshi.tv/m3u8222222.php?url=\"},\"youku\":{\"show\":\"优酷-官方\",\"des\":\"\",\"ps\":\"1\",\"parse\":\"https://jx.tiankongyingshi.tv/m3u8222222.php?url=\"},\"bilibili\":{\"show\":\"BL-官方\",\"des\":\"\",\"ps\":\"1\",\"parse\":\"https://jx.tiankongyingshi.tv/m3u8222222.php?url=\"},\"dbm3u8\":{\"show\":\"备用1(请勿相信片中广告!!)\",\"des\":\"\",\"ps\":\"1\",\"parse\":\"https://jx.tiankongyingshi.tv/m3u8222222.php?url=\"},\"wjm3u8\":{\"show\":\"备用2(请勿相信片中广告!!)\",\"des\":\"\",\"ps\":\"1\",\"parse\":\"https://jx.tiankongyingshi.tv/m3u8222222.php?url=\"},\"kbm3u8\":{\"show\":\"备用3(有广告,误信)\",\"des\":\"\",\"ps\":\"1\",\"parse\":\"https://jx.tiankongyingshi.tv/m3u8222222.php?url=\"},\"tkqp\":{\"show\":\"app专用\",\"des\":\"天空自切\",\"ps\":\"1\",\"parse\":\"https://jxqd.tkys.tv/dnmdsb2.php?url=\"},\"wuduzy\":{\"show\":\"蓝光B(维护中)\",\"des\":\"五毒\",\"ps\":\"1\",\"parse\":\"https://jx.yyy4080.com/351755?url=\"},\"miaoparty\":{\"show\":\"蓝光MZ\",\"des\":\"\",\"ps\":\"1\",\"parse\":\"https://jxqd.tkys.tv/dnmdsb2.php?url=\"},\"wuduby\":{\"show\":\"蓝光备用\",\"des\":\"五毒备用\",\"ps\":\"0\",\"parse\":\"https://jx.tiankongyingshi.tv/m3u8.php?url=\"},\"iframe\":{\"show\":\"iframe外链数据\",\"des\":\"iframe外链数据\",\"ps\":\"0\",\"parse\":\"\"},\"link\":{\"show\":\"外链数据\",\"des\":\"外部网站播放链接\",\"ps\":\"0\",\"parse\":\"\"}}";
|
||||
|
||||
@Override
|
||||
public void init(Context context) {
|
||||
super.init(context);
|
||||
try {
|
||||
playerConfig = new JSONObject(playerString);
|
||||
filterConfig = new JSONObject(filterString);
|
||||
} catch (JSONException e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 爬虫headers
|
||||
*
|
||||
* @param refererUrl
|
||||
* @return
|
||||
*/
|
||||
protected HashMap<String, String> getHeaders(String refererUrl) {
|
||||
HashMap<String, String> headers = new HashMap<>();
|
||||
headers.put("method", "GET");
|
||||
if (!TextUtils.isEmpty(refererUrl)) {
|
||||
headers.put("Referer", refererUrl);
|
||||
}
|
||||
headers.put("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36");
|
||||
headers.put("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
|
||||
return headers;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取分类数据 + 首页最近更新视频列表数据
|
||||
*
|
||||
* @param filter 是否开启筛选 关联的是 软件设置中 首页数据源里的筛选开关
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String homeContent(boolean filter) {
|
||||
try {
|
||||
String url = siteUrl + '/';
|
||||
Document doc = Jsoup.parse(OkHttpUtil.string(url, getHeaders(siteUrl)));
|
||||
Elements elements = doc.select("ul.nav-menu>li>a[href*='vodtype']");
|
||||
JSONArray classes = new JSONArray();
|
||||
for (Element ele : elements) {
|
||||
String name = ele.text();
|
||||
String href = ele.attr("href");
|
||||
Matcher mather = regexCategory.matcher(href);
|
||||
if (!mather.find())
|
||||
continue;
|
||||
// 把分类的id和名称取出来加到列表里
|
||||
String id = mather.group(1).trim();
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("type_id", id);
|
||||
jsonObject.put("type_name", name);
|
||||
classes.put(jsonObject);
|
||||
}
|
||||
|
||||
JSONObject result = new JSONObject();
|
||||
if (filter) {
|
||||
result.put("filters", filterConfig);
|
||||
}
|
||||
result.put("class", classes);
|
||||
try {
|
||||
// 取首页推荐视频列表
|
||||
Elements list = doc.select("ul.myui-vodlist > li > div.myui-vodlist__box > a");
|
||||
JSONArray videos = new JSONArray();
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
Element vod = list.get(i);
|
||||
String title = vod.attr("title");
|
||||
String cover = vod.attr("data-original");
|
||||
String remark = "";
|
||||
Element remarkEle = vod.selectFirst("span.pic-text");
|
||||
if (remarkEle != null) {
|
||||
remark = remarkEle.text();
|
||||
}
|
||||
Matcher matcher = regexVoddetail.matcher(vod.attr("href"));
|
||||
if (!matcher.find())
|
||||
continue;
|
||||
String id = matcher.group(1);
|
||||
JSONObject v = new JSONObject();
|
||||
v.put("vod_id", id);
|
||||
v.put("vod_name", title);
|
||||
v.put("vod_pic", cover);
|
||||
v.put("vod_remarks", remark);
|
||||
videos.put(v);
|
||||
}
|
||||
result.put("list", videos);
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取分类信息数据
|
||||
*
|
||||
* @param tid 分类id
|
||||
* @param pg 页数
|
||||
* @param filter 同homeContent方法中的filter
|
||||
* @param extend 筛选参数{k:v, k1:v1}
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String categoryContent(String tid, String pg, boolean filter, HashMap<String, String> extend) {
|
||||
try {
|
||||
int page = 1;
|
||||
TreeMap<String, String> ext = new TreeMap<>();
|
||||
if (!TextUtils.isEmpty(pg) && Integer.parseInt(pg.trim()) > 1) {
|
||||
page = Integer.parseInt(pg.trim());
|
||||
ext.put("page", page + "");
|
||||
}
|
||||
if (extend != null && extend.size() > 0) {
|
||||
ext.putAll(extend);
|
||||
}
|
||||
ext.put("id", tid);
|
||||
List<String> kv = new ArrayList<>();
|
||||
for (Map.Entry<String, String> entry : ext.entrySet()) {
|
||||
if ("".equals(entry.getValue())) {
|
||||
continue;
|
||||
}
|
||||
kv.add(entry.getKey() + "/" + entry.getValue());
|
||||
}
|
||||
String params = TextUtils.join("/", kv);
|
||||
|
||||
String url = siteUrl + "/vodshow/" + params + ".html";
|
||||
|
||||
String html = OkHttpUtil.string(url, getHeaders(siteUrl));
|
||||
Document doc = Jsoup.parse(html);
|
||||
JSONObject result = new JSONObject();
|
||||
int pageCount = 1;
|
||||
|
||||
// 取页码相关信息
|
||||
Elements pageInfo = doc.select("ul.myui-page li.visible-xs > a");
|
||||
if (pageInfo.size() > 0) {
|
||||
String text = pageInfo.text();
|
||||
pageCount = Integer.parseInt(text.split("/")[1]);
|
||||
}
|
||||
|
||||
JSONArray videos = new JSONArray();
|
||||
// 取当前分类页的视频列表
|
||||
Elements list = doc.select("ul.myui-vodlist > li > div > a");
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
Element vod = list.get(i);
|
||||
String title = vod.attr("title");
|
||||
String cover = vod.attr("data-original");
|
||||
String remark = "";
|
||||
Element remarkEle = vod.selectFirst("span.pic-text");
|
||||
if (remarkEle != null) {
|
||||
remark = remarkEle.text();
|
||||
}
|
||||
|
||||
Matcher matcher = regexVoddetail.matcher(vod.attr("href"));
|
||||
if (matcher.find()) {
|
||||
String vodId = matcher.group(1);
|
||||
JSONObject v = new JSONObject();
|
||||
v.put("vod_id", vodId);
|
||||
v.put("vod_name", title);
|
||||
v.put("vod_pic", cover);
|
||||
v.put("vod_remarks", remark);
|
||||
videos.put(v);
|
||||
}
|
||||
}
|
||||
result.put("page", page);
|
||||
result.put("pagecount", pageCount);
|
||||
result.put("limit", 48);
|
||||
result.put("total", pageCount <= 1 ? videos.length() : pageCount * 48);
|
||||
|
||||
result.put("list", videos);
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* 视频详情信息
|
||||
*
|
||||
* @param ids 视频id
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String detailContent(List<String> ids) {
|
||||
try {
|
||||
// 视频详情url
|
||||
String url = siteUrl + "/voddetail/" + ids.get(0) + ".html";
|
||||
Document doc = Jsoup.parse(OkHttpUtil.string(url, getHeaders(siteUrl)));
|
||||
JSONObject result = new JSONObject();
|
||||
JSONObject vodList = new JSONObject();
|
||||
|
||||
// 取基本数据
|
||||
String cover = doc.selectFirst("div.myui-content__thumb > a > img").attr("data-original");
|
||||
String title = doc.selectFirst("div.myui-content__detail > h1").text();
|
||||
String desc = doc.selectFirst("#desc span.data").text();
|
||||
|
||||
vodList.put("vod_id", ids.get(0));
|
||||
vodList.put("vod_name", title);
|
||||
vodList.put("vod_pic", cover);
|
||||
vodList.put("vod_content", desc);
|
||||
|
||||
Map<String, String> vod_play = new LinkedHashMap<>();
|
||||
|
||||
// 取播放列表数据
|
||||
Elements sources = doc.select("a[href*='playlist']");
|
||||
Elements sourceList = doc.select("div[id*='playlist']");
|
||||
|
||||
for (int i = 0; i < sources.size(); i++) {
|
||||
Element source = sources.get(i);
|
||||
String sourceName = source.text();
|
||||
boolean found = false;
|
||||
for (Iterator<String> it = playerConfig.keys(); it.hasNext(); ) {
|
||||
String flag = it.next();
|
||||
if (playerConfig.getJSONObject(flag).getString("show").equals(sourceName)) {
|
||||
// sourceName = flag;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (found) {
|
||||
String playList = "";
|
||||
Elements playListA = sourceList.get(i).select("a");
|
||||
List<String> vodItems = new ArrayList<>();
|
||||
|
||||
for (int j = 0; j < playListA.size(); j++) {
|
||||
Element vod = playListA.get(j);
|
||||
Matcher matcher = regexPlay.matcher(vod.attr("href"));
|
||||
if (matcher.find()) {
|
||||
String playURL = matcher.group(1);
|
||||
String playUrlName = vod.text();
|
||||
vodItems.add(playUrlName + "$" + playURL);
|
||||
}
|
||||
}
|
||||
if (vodItems.size() > 0) {
|
||||
playList = TextUtils.join("#", vodItems);
|
||||
vod_play.put(sourceName, playList);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (vod_play.size() > 0) {
|
||||
String vod_play_from = TextUtils.join("$$$", vod_play.keySet());
|
||||
String vod_play_url = TextUtils.join("$$$", vod_play.values());
|
||||
vodList.put("vod_play_from", vod_play_from);
|
||||
vodList.put("vod_play_url", vod_play_url);
|
||||
}
|
||||
JSONArray list = new JSONArray();
|
||||
list.put(vodList);
|
||||
result.put("list", list);
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取视频播放信息
|
||||
*
|
||||
* @param flag 播放源
|
||||
* @param id 视频id
|
||||
* @param vipFlags 所有可能需要vip解析的源
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String playerContent(String flag, String id, List<String> vipFlags) {
|
||||
try {
|
||||
// 播放页 url
|
||||
String url = siteUrl + "/vodplay/" + id + ".html";
|
||||
Document doc = Jsoup.parse(OkHttpUtil.string(url, getHeaders(siteUrl)));
|
||||
Elements allScript = doc.select("script");
|
||||
JSONObject result = new JSONObject();
|
||||
Map<String, String> playHeader = new HashMap<>();
|
||||
playHeader.put("User-Agent", " Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36");
|
||||
result.put("header", new JSONObject(playHeader).toString());
|
||||
result.put("parse", "0");
|
||||
result.put("playUrl", "");
|
||||
for (int i = 0; i < allScript.size(); i++) {
|
||||
String scContent = allScript.get(i).html().trim();
|
||||
if (scContent.startsWith("var player_")) { // 取直链
|
||||
int start = scContent.indexOf('{');
|
||||
int end = scContent.lastIndexOf('}') + 1;
|
||||
String json = scContent.substring(start, end);
|
||||
JSONObject player = new JSONObject(json);
|
||||
String videoUrl = player.optString("url");
|
||||
String from = player.optString("from");
|
||||
if (from.equals("")) {
|
||||
from = "tkqp";
|
||||
}
|
||||
if (Misc.isVideoFormat(videoUrl)) {
|
||||
result.put("url", videoUrl);
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
JSONObject playJxConfig = playerConfig.optJSONObject(from);
|
||||
String parseUrl = playJxConfig.optString("parse");
|
||||
|
||||
Map<String, String> paramsMap = new HashMap<>();
|
||||
paramsMap.put("url", videoUrl);
|
||||
String parseHtml = OkHttpUtil.string(parseUrl + videoUrl, getHeaders(siteUrl));
|
||||
|
||||
Matcher tokenMatcher = regexBtToken.matcher(parseHtml);
|
||||
Matcher enurlMatcher = regexEnurl.matcher(parseHtml);
|
||||
|
||||
if (tokenMatcher.find() && enurlMatcher.find()) {
|
||||
String token = tokenMatcher.group(1);
|
||||
String enurl = enurlMatcher.group(1);
|
||||
byte[] decode = Base64.decode(enurl, Base64.DEFAULT);
|
||||
String realurl = AES.decryptOfAesCbcPkcs7(decode, "7692AA70EEF92B42".getBytes(), token.getBytes());
|
||||
result.put("url", realurl);
|
||||
return result.toString();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String searchContent(String key, boolean quick) {
|
||||
try {
|
||||
long currentTime = System.currentTimeMillis();
|
||||
String url = siteUrl + "/index.php/ajax/suggest?mid=1&wd=" + URLEncoder.encode(key) + "&limit=10×tamp=" + currentTime;
|
||||
JSONObject searchResult = new JSONObject(OkHttpUtil.string(url, getHeaders(siteUrl)));
|
||||
JSONObject result = new JSONObject();
|
||||
JSONArray videos = new JSONArray();
|
||||
if (searchResult.getInt("total") > 0) {
|
||||
JSONArray lists = new JSONArray(searchResult.getString("list"));
|
||||
for (int i = 0; i < lists.length(); i++) {
|
||||
JSONObject vod = lists.getJSONObject(i);
|
||||
String id = vod.getString("id");
|
||||
String title = vod.getString("name");
|
||||
String cover = vod.getString("pic");
|
||||
JSONObject v = new JSONObject();
|
||||
v.put("vod_id", id);
|
||||
v.put("vod_name", title);
|
||||
v.put("vod_pic", cover);
|
||||
v.put("vod_remarks", "");
|
||||
videos.put(v);
|
||||
}
|
||||
}
|
||||
result.put("list", videos);
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
package com.github.catvod.spider;
|
||||
|
||||
import android.content.Context;
|
||||
import com.github.catvod.crawler.Spider;
|
||||
import com.github.catvod.crawler.SpiderDebug;
|
||||
import com.github.catvod.utils.okhttp.OkHttpUtil;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
import org.jsoup.Jsoup;
|
||||
import org.jsoup.nodes.Document;
|
||||
import org.jsoup.nodes.Element;
|
||||
import org.jsoup.select.Elements;
|
||||
|
||||
import java.net.URLEncoder;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
|
||||
public class Yisou extends Spider {
|
||||
private static final Pattern aliyun = Pattern.compile("(https://www.aliyundrive.com/s/[^\"]+)");
|
||||
private PushAgent yisou;
|
||||
|
||||
|
||||
public String detailContent(List<String> list) {
|
||||
try {
|
||||
return yisou.detailContent(list);
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
public void init(Context context, String str) {
|
||||
super.init(context, str);
|
||||
yisou = new PushAgent();
|
||||
yisou.init(context,str);
|
||||
}
|
||||
|
||||
|
||||
public String playerContent(String str, String str2, List<String> list) {
|
||||
return yisou.playerContent(str, str2, list);
|
||||
}
|
||||
|
||||
private Pattern regexVid = Pattern.compile("(\\S+)");
|
||||
public String searchContent(String key, boolean quick) {
|
||||
try {
|
||||
if (quick)
|
||||
return "";
|
||||
String url = "https://yiso.fun/info?searchKey=" + URLEncoder.encode(key)+"&from=ali";
|
||||
Document doc = Jsoup.parse(OkHttpUtil.string(url, null));
|
||||
JSONObject result = new JSONObject();
|
||||
|
||||
JSONArray videos = new JSONArray();
|
||||
// Elements list = doc.select("ul.newsList>li>div.li_con");
|
||||
Elements list = doc.select("div.col-md-8>div.row-cards");
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
Element vod = list.get(i);
|
||||
String title = "";
|
||||
Elements titlelist = vod.select("h3.card-title>a>span");
|
||||
for(int k = 0; k < titlelist.size(); k++){
|
||||
title+=titlelist.get(k).text()
|
||||
}
|
||||
String cover = "";
|
||||
String remark = vod.selectFirst("div.align-items-center>p.text-muted").text();
|
||||
Matcher matcher = regexVid.matcher(vod.select("h3.card-title>a").attr("href"));
|
||||
if (!matcher.find())
|
||||
continue;
|
||||
String id = matcher.group(1);
|
||||
JSONObject v = new JSONObject();
|
||||
//v.put("vod_id", vod.select("h3.card-title>a").attr("href"));
|
||||
v.put("vod_id", id);
|
||||
v.put("vod_name", title);
|
||||
v.put("vod_pic", "https://inews.gtimg.com/newsapp_bt/0/13263837859/1000");
|
||||
v.put("vod_remarks", remark);
|
||||
videos.put(v);
|
||||
}
|
||||
|
||||
result.put("list", videos);
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,227 @@
|
||||
package com.github.catvod.spider;
|
||||
|
||||
import android.content.Context;
|
||||
import com.github.catvod.crawler.Spider;
|
||||
import com.github.catvod.spider.merge.Ms;
|
||||
import com.github.catvod.spider.merge.W;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class KanSJ extends Spider {
|
||||
private static short[] $ = {648, 660, 660, 656, 730, 719, 719, 651, 641, 654, 660, 662, 718, 666, 659, 665, 666, 643, 665, 718, 643, 654, 2987, 2991, 2977, 2944, 2987, 2983, 3030, 2977, 2981, 2997, 2967, 2977, 2997, 2991, 2948, 3029, 2978, 2999, 2979, 2980, 2983, 2999, 2995, 2983, 2983, 3026, 2977, 2984, 2983, 2978, 2981, 2980, 2959, 2999, 2989, 2980, 2945, 2999, 2978, 2967, 2948, 2999, 3028, 2983, 2985, 3031, 2979, 2958, 2975, 2951, 2966, 3024, 2976, 2955, 2986, 2964, 2957, 2967, 2956, 2958, 2965, 2967, 2966, 2975, 2967, 2985, 2986, 3017, 2987, 3039, 2996, 2962, 2975, 2962, 2996, 2961, 2967, 2996, 2967, 2960, 3017, 3007, 2972, 2947, 2967, 3028, 3031, 2955, 2994, 2953, 2976, 2963, 2988, 3029, 2975, 2979, 3039, 2997, 2991, 2951, 2984, 3031, 2958, 3007, 2958, 2967, 3025, 3004, 2997, 3007, 2952, 2993, 2958, 2958, 2960, 2956, 2961, 2980, 3006, 3006, 2992, 2990, 2953, 3025, 2945, 2997, 2996, 3017, 2983, 2980, 2987, 2981, 2957, 2996, 2997, 2996, 2987, 2986, 2979, 2984, 2984, 2946, 2965, 3027, 2972, 3007, 2983, 3038, 2966, 2992, 2974, 2974, 2998, 2987, 2986, 2993, 2995, 3006, 2965, 2946, 2975, 2953, 2957, 3004, 2954, 2965, 2991, 2996, 2976, 3028, 3006, 2985, 2974, 2972, 3038, 2985, 2954, 3024, 2972, 2961, 2967, 2995, 2996, 2957, 2966, 3039, 2994, 2958, 2988, 2980, 2978, 2963, 3026, 2975, 2955, 3039, 3031, 3004, 3006, 2958, 3026, 2976, 2945, 2954, 2967, 2999, 2997, 3028, 2981, 2961, 2991, 2978, 2983, 2999, 2983, 2980, 2388, 2384, 2384, 2394, 2429, 2430, 2384, 2395, 2392, 2397, 2392, 2391, 2395, 2430, 2418, 2408, 2417, 2418, 2416, 2398, 2336, 2414, 2345, 2395, 2392, 2376, 2396, 2399, 2392, 2392, 2378, 2394, 2392, 2420, 2392, 2414, 2430, 2430, 2387, 2426, 2392, 2430, 2396, 2392, 2392, 2422, 2398, 2395, 2392, 2390, 2409, 2413, 2397, 2368, 2392, 2350, 2380, 2378, 2385, 2387, 2408, 2423, 2422, 2382, 2368, 2412, 2412, 2378, 2408, 2390, 2398, 2400, 2408, 2423, 2386, 2422, 2349, 2415, 2337, 2403, 2344, 2398, 2346, 2386, 2344, 2385, 2394, 2409, 2398, 2408, 2358, 2336, 2419, 2391, 2351, 2411, 2427, 2382, 2371, 2390, 2430, 2382, 2349, 2423, 2431, 2384, 2381, 2344, 2384, 2417, 2422, 2346, 2382, 2399, 2416, 2398, 2411, 2413, 2421, 2387, 2416, 2429, 2424, 2398, 2398, 2354, 2377, 2392, 2399, 2429, 2429, 2380, 2428, 2419, 2412, 2395, 2387, 2385, 2337, 2392, 2396, 2414, 2386, 2379, 2399, 2387, 2396, 2414, 2410, 2376, 2345, 2344, 2347, 2403, 2423, 2391, 2430, 2397, 2400, 2421, 2369, 2385, 2396, 2337, 2414, 2413, 2371, 2379, 2428, 2401, 2346, 2386, 2416, 2379, 2420, 2382, 2414, 2417, 2396, 2369, 2371, 2426, 2350, 2385, 2377, 2414, 2351, 2369, 2411, 2377, 2394, 2409, 2379, 2398, 2378, 2423, 2344, 2390, 2396, 2418, 2396, 2390, 2350, 2419, 2386, 2427, 2346, 2383, 2421, 2428, 2385, 2430, 2382, 2394, 2382, 2409, 2395, 2389, 2368, 2389, 2392, 2430, 2388, 2395, 2392, 2392, 2396, 2394, 2430, 2368, 2395, 2383, 2412, 2412, 2385, 2422, 2399, 2418, 2418, 2351, 2368, 2376, 2381, 2390, 2391, 2400, 2428, 2431, 2346, 2377, 2428, 2381, 2351, 2422, 2385, 2348, 2392, 2409, 2417, 2371, 2398, 2431, 2401, 2394, 2344, 2409, 2344, 2376, 2376, 2417, 2429, 2346, 2424, 2415, 2388, 2337, 2427, 2344, 2427, 2385, 2401, 2418, 2430, 2395, 2385, 2337, 2398, 2416, 2349, 2431, 2350, 2395, 2413, 2424, 2385, 2394, 2371, 2416, 2427, 2399, 2368, 2428, 2371, 2429, 2409, 2387, 2431, 2384, 2429, 2346, 2377, 2399, 2383, 2408, 2416, 2384, 2389, 2379, 2347, 2411, 2428, 2427, 2387, 2348, 2409, 2411, 2387, 2409, 2399, 2400, 2431, 2385, 2421, 2346, 2379, 2383, 2408, 2380, 2371, 2336, 2392, 2403, 2377, 2412, 2420, 2385, 2379, 2379, 2397, 2348, 2387, 2384, 2394, 2351, 2368, 2392, 2350, 2415, 2395, 2394, 2430, 2348, 2350, 2347, 2349, 2381, 2337, 2383, 2428, 2430, 2336, 2394, 2401, 2381, 2429, 2385, 2403, 2400, 2427, 2368, 2389, 2394, 2414, 2369, 2424, 2397, 2368, 2399, 2381, 2421, 2382, 2345, 2358, 2351, 2423, 2423, 2417, 2344, 2430, 2377, 2422, 2376, 2387, 2395, 2392, 2377, 2408, 2427, 2408, 2348, 2430, 2418, 2369, 2394, 2417, 2354, 2422, 2358, 2397, 2411, 2409, 2381, 2350, 2418, 2408, 2416, 2424, 2347, 2426, 2381, 2412, 2423, 2349, 2348, 2369, 2388, 2394, 2420, 2368, 2381, 2416, 2386, 2378, 2417, 2419, 2420, 2388, 2412, 2419, 2384, 2383, 2377, 2394, 2354, 2358, 2390, 2349, 2346, 2424, 2396, 2411, 2379, 2409, 2412, 2389, 2427, 2428, 2416, 2415, 2401, 2384, 2351, 2395, 2336, 2369, 2408, 2392, 2337, 2349, 2344, 2420, 2378, 2377, 2427, 2337, 2412, 2381, 2380, 2409, 2427, 2410, 2394, 2376, 2376, 2397, 2415, 2428, 2396, 2394, 2401, 2421, 2386, 2431, 2409, 2408, 2345, 2344, 2408, 2358, 2358, 2401, 2392, 2369, 2427, 2346, 2421, 2389, 2354, 2428, 2354, 2377, 2350, 2397, 2369, 2344, 2337, 2382, 2337, 2428, 2418, 2354, 2421, 2389, 2413, 2369, 2422, 2380, 2397, 2417, 2400, 2386, 2396, 2395, 2347, 2426, 2351, 2403, 2385, 2390, 2336, 2430, 2351, 2392, 2358, 2351, 2431, 2385, 2430, 2401, 2347, 2397, 2387, 2385, 2344, 2354, 2415, 2423, 2368, 2420, 2419, 2385, 2416, 2416, 2385, 2347, 2376, 2410, 2422, 2377, 2401, 2392, 2418, 2396, 2392, 2420, 2391, 2424, 2379, 2400, 2345, 2389, 2348, 2421, 2371, 2381, 2390, 2409, 2378, 2388, 2395, 2350, 2348, 2351, 2397, 2416, 2414, 2386, 2431, 2430, 2421, 2391, 2336, 2392, 2394, 2398, 2421, 2430, 2428, 2382, 2391, 2349, 2347, 2385, 2384, 2391, 2430, 2389, 2414, 2423, 2420, 2416, 2337, 2397, 2428, 2358, 2412, 2383, 2348, 2403, 2384, 2354, 2424, 2386, 2378, 2427, 2381, 2421, 2411, 2388, 2399, 2398, 2399, 2350, 2336, 2426, 2336, 2409, 2390, 2416, 2371, 2380, 2431, 2348, 2383, 2369, 2347, 2412, 2345, 2354, 2414, 2387, 2392, 2395, 2418, 2351, 2398, 2429, 2424, 2427, 2378, 2423, 2380, 2427, 2381, 2411, 2378, 2390, 2337, 2414, 2415, 2345, 2344, 2394, 2379, 2422, 2415, 2349, 2418, 2381, 2377, 2387, 2368, 2392, 2427, 2379, 2401, 2399, 2348, 2418, 2349, 2384, 2428, 2379, 2395, 2368, 2384, 2401, 2422, 2419, 2418, 2347, 2427, 2423, 2398, 2389, 2378, 2396, 2368, 2382, 2411, 2350, 2388, 2389, 2354, 2416, 2426, 2411, 2347, 2426, 2348, 2382, 2391, 2337, 2371, 2376, 2382, 2418, 2428, 2388, 2403, 2426, 2417, 2395, 2346, 2378, 2388, 2384, 2376, 2387, 2392, 2397, 2398,
|
||||
2403, 2383, 2351, 2379, 2385, 2415, 2401, 2358, 2351, 2397, 2394, 2403, 2389, 2415, 2378, 2411, 2413, 2385, 2380, 2423, 2400, 2431, 2386, 2400, 2394, 2417, 2344, 2336, 2413, 2394, 2348, 2417, 2401, 2400, 2383, 2400, 2412, 2369, 2388, 2392, 2421, 2386, 2429, 2376, 2384, 2403, 2379, 2378, 2416, 2381, 2384, 2390, 2416, 2379, 2368, 2358, 2348, 2385, 2414, 2415, 2383, 2416, 2337, 2371, 2394, 2383, 2415, 2368, 2420, 2385, 2376, 2350, 2423, 2345, 2369, 2398, 2368, 2399, 2429, 2387, 2346, 2410, 2350, 2376, 2340, 2340, 2346, 2350, 2336, 2305, 2346, 2342, 2391, 2336, 2340, 2356, 2326, 2336, 2356, 2350, 2309, 2388, 2339, 2358, 2338, 2341, 2342, 2358, 2354, 2342, 2342, 2387, 2336, 2345, 2342, 2339, 2340, 2341, 2318, 2358, 2348, 2341, 2304, 2358, 2340, 2325, 2318, 2315, 2323, 2342, 2312, 2348, 2390, 2345, 2319, 2305, 2348, 2385, 2355, 2327, 2317, 2318, 2327, 2388, 2322, 2358, 2304, 2399, 2384, 2341, 2399, 2336, 2313, 2305, 2380, 2314, 2376, 2348, 2305, 2384, 2352, 2333, 2380, 2312, 2359, 2324, 2305, 2355, 2305, 2316, 2327, 2340, 2327, 2327, 2325, 2306, 2358, 2385, 2317, 2390, 2319, 2339, 2307, 2359, 2309, 2342, 2309, 2319, 2399, 2384, 2380, 2318, 2322, 2324, 2333, 2340, 2307, 2304, 2356, 2326, 2309, 2314, 2376, 2335, 2325, 2399, 2387, 2359, 2337, 2350, 2308, 2352, 2323, 2337, 2386, 2313, 2313, 2307, 2356, 2388, 2325, 2335, 2347, 2326, 2312, 2398, 2338, 2346, 2304, 2339, 2325, 2340, 2380, 2334, 2355, 2307, 2306, 2353, 2336, 2340, 2385, 2317, 2316, 2322, 2399, 2315, 2325, 2398, 2337, 2304, 2355, 2359, 2357, 2305, 2380, 2347, 2305, 2346, 2357, 2385, 2386, 2347, 2306, 2324, 2367, 2315, 2317, 2389, 2307, 2319, 2314, 2350, 2398, 2359, 2339, 2376, 2335, 2337, 2312, 2323, 2358, 2338, 2376, 2366, 2327, 2324, 2340, 2346, 2306, 2312, 2321, 2353, 2390, 2333, 2333, 2320, 2350, 2339, 2342, 2358, 2342, 2341, 7332, 7328, 7328, 7338, 7309, 7326, 7328, 7339, 7336, 7341, 7336, 7335, 7339, 7310, 7298, 7320, 7297, 7298, 7296, 7342, 7376, 7326, 7385, 7339, 7336, 7352, 7340, 7343, 7336, 7336, 7354, 7338, 7336, 7300, 7340, 7326, 7310, 7310, 7331, 7309, 7336, 7310, 7340, 7336, 7336, 7302, 7342, 7339, 7336, 7330, 7324, 7330, 7358, 7385, 7338, 7310, 7323, 7356, 7387, 7343, 7377, 7323, 7321, 7334, 7300, 7334, 7330, 7303, 7308, 7388, 7338, 7341, 7315, 7322, 7329, 7326, 7304, 7309, 7366, 7391, 7307, 7377, 7321, 7366, 7325, 7307, 7353, 7391, 7310, 7362, 7313, 7376, 7335, 7362, 7354, 7298, 7330, 7300, 7300, 7325, 7388, 7341, 7320, 7353, 7358, 7340, 7335, 7385, 7376, 7322, 7339, 7324, 7329, 7315, 7327, 7391, 7330, 7391, 7315, 7332, 7331, 7387, 7339, 7330, 7321, 7324, 7307, 7366, 7342, 7327, 7315, 7310, 7377, 7356, 7297, 7313, 7304, 7385, 7345, 7300, 7308, 7309, 7384, 7333, 7308, 7327, 7340, 7324, 7320, 7299, 7385, 7352, 7312, 7336, 7334, 7322, 7333, 7390, 7331, 7335, 7384, 7388, 7356, 7344, 7333, 7320, 7334, 7354, 7390, 7312, 7358, 7327, 7385, 7358, 7339, 7332, 7376, 7343, 7366, 7389, 7325, 7377, 7313, 7329, 7323, 7298, 7325, 7391, 7313, 7308, 7358, 7353, 7347, 7387, 7342, 7344, 7299, 7385, 7377, 7353, 7366, 7340, 7358, 7296, 7384, 7336, 7357, 7376, 7296, 7300, 7326, 7328, 7313, 7391, 7296, 7376, 7345, 7345, 7353, 7353, 7336, 7310, 7332, 7339, 7336, 7336, 7340, 7338, 7310, 7344, 7339, 7389, 7343, 7322, 7327, 7390, 7358, 7302, 7341, 7389, 7303, 7330, 7359, 7302, 7324, 7340, 7384, 7311, 7303, 7384, 7339, 7321, 7326, 7384, 7312, 7299, 7308, 7334, 7332, 7301, 7389, 7311, 7356, 7355, 7343, 7302, 7307, 7300, 7340, 7330, 7333, 7391, 7301, 7340, 7390, 7298, 7312, 7308, 7299, 7329, 7352, 7324, 7384, 7307, 7377, 7304, 7389, 7310, 7312, 7387, 7301, 7357, 7329, 7306, 7357, 7352, 7336, 7341, 7325, 7341, 7331, 7356, 7298, 7333, 7320, 7341, 7309, 7311, 7315, 7389, 7311, 7309, 7332, 7333, 7312, 7389, 7299, 7332, 7301, 7366, 7338, 7327, 7387, 7343, 7331, 7385, 7330, 7386, 7315, 7330, 7345, 7352, 7330, 7359, 7297, 7332, 7321, 7357, 7306, 7303, 7309, 7333, 7333, 7299, 7298, 7309, 7355, 7327, 7344, 7312, 7323, 7309, 7300, 7312, 7335, 7355, 7307, 7358, 7386, 7347, 7310, 7297, 7332, 7326, 7306, 7326, 7335, 7323, 7300, 7298, 7344, 7326, 7352, 7335, 7356, 7315, 7390, 7312, 7386, 7338, 7327, 7311, 7385, 7362, 7321, 7335, 7329, 7297, 7340, 7306, 7298, 7390, 7353, 7347, 7339, 7306, 7386, 7301, 7377, 7324, 7326, 7352, 7331, 7339, 7336, 7335, 7302, 7352, 7386, 7296, 7321, 7376, 7327, 7304, 7377, 7302, 7353, 7298, 7313, 7342, 7391, 7377, 7296, 7354, 7303, 7359, 7315, 7341, 7336, 7354, 7303, 7320, 7334, 7342, 7341, 7309, 7310, 7341, 7341, 7376, 7307, 7328, 7312, 7327, 7304, 7385, 7354, 7390, 7333, 7385, 7326, 7296, 7313, 7385, 7306, 7297, 7306, 7312, 7385, 7385, 7338, 7298, 7300, 7302, 7355, 7390, 7322, 7323, 7296, 7327, 7353, 7355, 7313, 7297, 7332, 7377, 7313, 7339, 7320, 7391, 7296, 7353, 7308, 7358, 7332, 7300, 7302, 7345, 7353, 7313, 7356, 7338, 7352, 7352, 7341, 7331, 7344, 7347, 7328, 7354, 7331, 7376, 7389, 7390, 7385, 7334, 7359, 7323, 7343, 7359, 7302, 7387, 7389, 7324, 7325, 7299, 7362, 7385, 7299, 7324, 7390, 7307, 7311, 7336, 7307, 7343, 7341, 7320, 7307, 7387, 7324, 7343, 7313, 7312, 7332, 7391, 7311, 7345, 7330, 7300, 7358, 7308, 7308, 7335, 7341, 7333, 7331, 7328, 7327, 7354, 7352, 7386, 7308, 7311, 7301, 7391, 7354, 7331, 7328, 7344, 7331, 7310, 7387, 7297, 7362, 7321, 7345, 7353, 7386, 7387, 7354, 7309, 7330, 7331, 7341, 7335, 7297, 7336, 7339, 7357, 7336, 7298, 7339, 7309, 7339, 7311, 7306, 7352, 7329, 7385, 7358, 7322, 7298, 7390, 7301, 7329, 7321, 7323, 7359, 7322, 7310, 7344, 7307, 7347, 7299, 7342, 7331, 7355, 7325, 7339, 7345, 7330, 7384, 7331, 7330, 7307, 7385, 7387, 7366, 7307, 7390, 7366, 7356, 7335, 7310, 7362, 7339, 7310, 7359, 7357, 7342, 7386, 7358, 7356, 7338, 7309, 7384, 7324, 7347, 7352, 7301, 7388, 7345, 7331, 7376, 7344, 7336, 7389, 7343, 7331, 7334, 7327, 7303, 7312, 7325, 7385, 7315, 7389, 7336, 7310, 7355, 7297, 7359, 7331, 7297, 7321, 7332, 7301, 7336, 7298, 7340, 7336, 7303, 7298, 7315, 7388, 7302, 7313, 7345, 7376, 7388, 7324, 7384, 7309, 7362, 7300, 7339, 7335, 7296, 7385, 7300, 7315, 7300, 7308, 7334, 7343, 7352, 7329,
|
||||
7355, 7357, 7309, 7302, 7321, 7324, 7315, 7334, 7320, 7333, 7341, 7297, 7385, 7322, 7366, 7312, 7355, 7327, 7313, 7329, 7388, 7384, 7324, 7386, 7345, 7344, 7296, 7390, 7376, 7330, 7326, 7308, 7356, 7390, 7341, 7341, 7302, 7355, 7313, 7307, 7353, 7306, 7340, 7347, 7343, 7342, 7313, 7330, 7328, 7321, 7300, 7341, 7354, 7385, 7331, 7312, 7301, 7384, 7296, 7326, 7331, 7339, 7336, 7328, 7334, 7341, 7296, 7391, 7354, 7387, 7353, 7359, 7296, 7302, 7302, 7358, 7304, 7312, 7326, 7376, 7362, 7301, 7353, 7376, 7321, 7327, 7320, 7334, 7333, 7336, 7340, 7326, 7328, 7366, 7315, 7334, 7386, 7388, 7296, 7356, 7312, 7330, 7320, 7334, 7377, 7323, 7296, 7315, 7311, 7386, 7343, 7343, 7329, 7321, 7376, 7344, 7321, 7315, 7335, 7315, 7324, 7310, 7313, 7345, 7312, 7301, 7306, 7333, 7386, 7385, 7310, 7388, 7354, 7315, 7377, 7308, 7359, 7356, 7328, 7320, 7311, 7299, 7304, 7355, 7320, 7306, 7354, 7338, 7310, 7380, 7912, 2474, 2444, 2458, 2445, 2514, 2494, 2456, 2458, 2449, 2443, 1998, 2027, 2022, 2044, 2019, 2017, 1957, 1976, 1956, 1979, 1956, 1978, 1962, 1954, 1990, 2019, 2020, 2047, 2034, 1969, 1962, 2015, 1969, 1962, 1995, 2020, 2030, 2040, 2021, 2019, 2030, 1962, 1979, 1978, 1969, 1962, 2010, 1992, 1999, 1991, 1978, 1978, 1962, 1992, 2047, 2019, 2022, 2030, 1957, 2011, 1985, 2011, 1979, 1956, 1979, 1971, 1978, 1971, 1979, 1970, 1956, 1978, 1978, 1979, 1955, 7368, 7377, 7386, 7393, 7372, 7387, 7379, 7391, 7372, 7381, 7373, 3653, 3676, 3671, 3692, 3651, 3674, 3664, 426, 431, 427, 431, 434, 2808, 2785, 2794, 2769, 2784, 2799, 2787, 2795, 1500, 1485, 1483, 1481, 1461, 1452, 1447, 1436, 1450, 1447, 4758, 4743, 4737, 4739, 4741, 4745, 4755, 4744, 4754, 110, 117, 110, 123, 118, 1261, 1256, 1266, 1269, 5796, 5803, 5798, 5812, 5812, 13384, 13396, 13392, 13379, 13679, 13666, 13675, 13694, 7533, 7550, 7529, 7533, 14304, 14334, 14335, 14327, 14335, 14251, 14250, 14267, 14254, 14246, 14243, 14305, 14271, 14247, 14271, 14304, 14254, 14271, 14271, 14304, 14265, 14246, 14251, 14250, 14240, 14320, 14313, 14267, 14246, 14251, 14322, 3727, 3786, 3781, 3784, 3802, 3802, 3732, 13109, 13170, 13153, 13174, 13170, 13102, 1531, 1444, 1464, 1468, 1455, 1504, 921, 975, 984, 898, -1690, -1665, -1676, -1713, -1696, -1668, -1679, -1687, -1713, -1691, -1694, -1668, -4962, -4985, -4980, -4937, -4968, -4988, -4983, -4975, -4937, -4978, -4966, -4985, -4987, -16281, -16258, -16267, -16306, -16270, -16258, -16257, -16283, -16268, -16257, -16283, -4343, -4336, -4325, -4320, -4325, -4330, -4339, -4326, -4324, -4341, -4336, -4339, -15761, -15754, -15747, -15802, -15752, -15750, -15763, -15754, -15765, -3997, -3974, -3983, -4022, -3993, -3984, -3976, -3980, -3993, -3970, -3994, -2459, -2436, -2441, -2484, -2446, -2463, -2442, -2446, -3375, -3384, -3389, -3336, -3362, -3390, -3386, -3371, -7980, -7987, -7994, -7939, -7982, -7989, -7999, -6424, -6415, -6406, -6463, -6416, -6401, -6413, -6405, -5794, -5817, -5812, -5769, -5823, -5812, -7819, -7824, -7830, -7827, -5561, -5543, -5544, -5552, -5544, -5604, -5602, -5562, -5608, -5632, -5608, -5561, -5608, -5606, -5625, -5602, -5631, -5620, -5619, -5561, -5602, -5625, -5620, -5561, -5545, -5623, -5621, -5547, -5620, -5619, -5604, -5623, -5631, -5628, -5554, -5631, -5620, -5605, -5547, -6431, -6420, -6427, -6416, -6454, -6405, -6412, -6408, -6416, -14907, -14884, -14889, -14868, -14896, -14881, -14894, -14912, -14912, -6217, -6204, -6498, 32013, 32045, 32116, 32034, 32047, 32038, 32051, 32009, 32063, 32050, 32116, 32108, 32116, 32103, 32116, 32122, 32116, 32034, 32047, 32038, 32051, 32009, 32056, 32055, 32059, 32051, 32116, 32108, 32116, 2147, 8743, 32116, 32043, 32122, 32045, 32116, 32034, 32047, 32038, 32051, 32009, 32063, 32050, 32116, 32108, 32116, 32100, 32116, 32122, 32116, 32034, 32047, 32038, 32051, 32009, 32056, 32055, 32059, 32051, 32116, 32108, 32116, 2147, -2928, 12081, 32116, 32043, 32122, 32045, 32116, 32034, 32047, 32038, 32051, 32009, 32063, 32050, 32116, 32108, 32116, 32101, 32102, 32116, 32122, 32116, 32034, 32047, 32038, 32051, 32009, 32056, 32055, 32059, 32051, 32116, 32108, 32116, 6323, -5441, 12081, 32116, 32043, 32122, 32045, 32116, 32034, 32047, 32038, 32051, 32009, 32063, 32050, 32116, 32108, 32116, 32100, 32111, 32116, 32122, 32116, 32034, 32047, 32038, 32051, 32009, 32056, 32055, 32059, 32051, 32116, 32108, 32116, 5745, 728, 12081, 32116, 32043, 32122, 32045, 32116, 32034, 32047, 32038, 32051, 32009, 32063, 32050, 32116, 32108, 32116, 32101, 32101, 32116, 32122, 32116, 32034, 32047, 32038, 32051, 32009, 32056, 32055, 32059, 32051, 32116, 32108, 32116, 4985, 11942, 12081, 32116, 32043, 32122, 32045, 32116, 32034, 32047, 32038, 32051, 32009, 32063, 32050, 32116, 32108, 32116, 32101, 32116, 32122, 32116, 32034, 32047, 32038, 32051, 32009, 32056, 32055, 32059, 32051, 32116, 32108, 32116, 938, -212, 32116, 32043, 32122, 32045, 32116, 32034, 32047, 32038, 32051, 32009, 32063, 32050, 32116, 32108, 32116, 32098, 32116, 32122, 32116, 32034, 32047, 32038, 32051, 32009, 32056, 32055, 32059, 32051, 32116, 32108, 32116, 12286, 4733, 32116, 32043, 32011, 29529, 29526, 29531, 29513, 29513, 26445, 26388, 26375, 26388, 26380, 26477, 26445, 26388, 26461, 26451, 26447, 26388, 26380, 26388, 26434, 26447, 26438, 26451, 26388, 26394, 26388, 26456, 26455, 26459, 26451, 26388, 26380, 26388, 6989, 12477, 26388, 26394, 26388, 26432, 26455, 26458, 26435, 26451, 26388, 26380, 26477, 26445, 26388, 26456, 26388, 26380, 26388, 13918, -2082, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 12970, 13649, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 12970, 13649, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 5383, 2035, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 5383, 2035, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 1894, 1824, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 1894, 1824, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 13726, 10346, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13726, 10346, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 7911, 14669, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 7911, 14669, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 13649, 2035, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13649, 2035, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 1326, 10687, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 1326, 10687, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, -5040, 13340, 26388, 26394, 26388, 26432, 26388, 26380, 26388, -5040, 13340, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 5529, 6236, 26388, 26394, 26388, 26432,
|
||||
26388, 26380, 26388, 5529, 6236, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 13726, 4621, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13726, 4621, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 15985, 14669, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 15985, 14669, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 3152, 10390, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 3152, 10390, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 13988, -3745, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13988, -3745, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 156, 1326, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 156, 1326, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 1894, 1824, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 1894, 1824, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 1946, 4775, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 1946, 4775, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 2044, 1964, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 2044, 1964, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 6649, 13902, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 6649, 13902, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, -3996, 275, 26388, 26394, 26388, 26432, 26388, 26380, 26388, -3996, 275, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 689, -6836, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 689, -6836, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 14488, 4611, 14407, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 14488, 4611, 14407, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 13522, -4109, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13522, -4109, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 13488, 13508, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13488, 13508, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, -5914, 13726, 26388, 26394, 26388, 26432, 26388, 26380, 26388, -5914, 13726, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 13994, 103, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13994, 103, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 13833, 7635, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13833, 7635, 26388, 26443, 26475, 26443, 26394, 26445, 26388, 26461, 26451, 26447, 26388, 26380, 26388, 26455, 26436, 26451, 26455, 26388, 26394, 26388, 26456, 26455, 26459, 26451, 26388, 26380, 26388, 12294, 13324, 26388, 26394, 26388, 26432, 26455, 26458, 26435, 26451, 26388, 26380, 26477, 26445, 26388, 26456, 26388, 26380, 26388, 13918, -2082, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 14003, 12294, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 14003, 12294, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 10523, 12747, 15889, -3728, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 15889, -3728, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 10523, 12747, -337, 2329, 26388, 26394, 26388, 26432, 26388, 26380, 26388, -337, 2329, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 10523, 12747, 13510, 2376, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13510, 2376, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 6328, 12747, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 6328, 12747, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 3043, 12747, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 3043, 12747, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, -6713, 12747, 26388, 26394, 26388, 26432, 26388, 26380, 26388, -6713, 12747, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 723, 26, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 723, 26, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, -3873, 12747, 26388, 26394, 26388, 26432, 26388, 26380, 26388, -3873, 12747, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 14465, 12747, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 14465, 12747, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 3014, 12747, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 3014, 12747, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 13382, 14736, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13382, 14736, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 1593, 15889, 13599, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 1593, 15889, 13599, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, -4535, 5339, 5487, 26388, 26394, 26388, 26432, 26388, 26380, 26388, -4535, 5339, 5487, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 13718, 1481, 15889, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13718, 1481, 15889, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 13888, 10720, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13888, 10720, 26388, 26443, 26475, 26443, 26394, 26445, 26388, 26461, 26451, 26447, 26388, 26380, 26388, 26447, 26451, 26455, 26436, 26388, 26394, 26388, 26456, 26455, 26459, 26451, 26388, 26380, 26388, 14658, 10699, 26388, 26394, 26388, 26432, 26455, 26458, 26435, 26451, 26388, 26380, 26477, 26445, 26388, 26456, 26388, 26380, 26388, 13918, -2082, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26372, 26372, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26372, 26372, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26372, 26375, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26372, 26375, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26372, 26374, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26372, 26374, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26383, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26383, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26382, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26382, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26369, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26369, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26368, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26368, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26371, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26371, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26370, 26388, 26394, 26388, 26432, 26388, 26380,
|
||||
26388, 26372, 26374, 26375, 26370, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26373, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26373, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26372, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26372, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26375, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26375, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26374, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26374, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26383, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26383, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26382, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26382, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26369, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26369, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26368, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26368, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26371, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26371, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26370, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26370, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26373, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26373, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26372, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26372, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26375, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26375, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26374, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26374, 26388, 26443, 26475, 26443, 26475, 26394, 26388, 26372, 26388, 26380, 26477, 26445, 26388, 26461, 26451, 26447, 26388, 26380, 26388, 26434, 26447, 26438, 26451, 26388, 26394, 26388, 26456, 26455, 26459, 26451, 26388, 26380, 26388, 6989, 12477, 26388, 26394, 26388, 26432, 26455, 26458, 26435, 26451, 26388, 26380, 26477, 26445, 26388, 26456, 26388, 26380, 26388, 13918, -2082, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 13522, -4109, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13522, -4109, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 1326, 10687, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 1326, 10687, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, -3996, 275, 14144, 14329, 26388, 26394, 26388, 26432, 26388, 26380, 26388, -3996, 275, 14144, 14329, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 12970, 13649, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 12970, 13649, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 15488, 14747, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 15488, 14747, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 5529, 6236, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 5529, 6236, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 13726, 10346, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13726, 10346, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 15985, 14669, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 15985, 14669, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 13649, 2035, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13649, 2035, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 13488, 13508, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13488, 13508, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 6649, 13902, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 6649, 13902, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 10583, 103, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 10583, 103, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 2035, 345, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 2035, 345, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 12912, 1326, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 12912, 1326, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 6247, 13649, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 6247, 13649, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 13888, 10720, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13888, 10720, 26388, 26443, 26475, 26443, 26394, 26445, 26388, 26461, 26451, 26447, 26388, 26380, 26388, 26455, 26436, 26451, 26455, 26388, 26394, 26388, 26456, 26455, 26459, 26451, 26388, 26380, 26388, 12294, 13324, 26388, 26394, 26388, 26432, 26455, 26458, 26435, 26451, 26388, 26380, 26477, 26445, 26388, 26456, 26388, 26380, 26388, 13918, -2082, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 14003, 12294, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 14003, 12294, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 10523, 12747, 15889, -3728, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 15889, -3728, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 10523, 12747, 13510, 2376, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 10523, 12747, 13510, 2376, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 10523, 12747, -337, 2329, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 10523, 12747, -337, 2329, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, -3873, 12747, 26388, 26394, 26388, 26432, 26388, 26380, 26388, -3873, 12747, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 723, 26, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 723, 26, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 6328, 12747, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 6328, 12747, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 3014, 12747, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 3014, 12747, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, -6713, 12747, 26388, 26394, 26388, 26432, 26388, 26380, 26388, -6713, 12747, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 646, 13718, 12375, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 646, 13718, 12375, 26388, 26443, 26394, 26445, 26388, 26456, 26388,
|
||||
26380, 26388, 13888, 10720, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13888, 10720, 26388, 26443, 26475, 26443, 26394, 26445, 26388, 26461, 26451, 26447, 26388, 26380, 26388, 26447, 26451, 26455, 26436, 26388, 26394, 26388, 26456, 26455, 26459, 26451, 26388, 26380, 26388, 14658, 10699, 26388, 26394, 26388, 26432, 26455, 26458, 26435, 26451, 26388, 26380, 26477, 26445, 26388, 26456, 26388, 26380, 26388, 13918, -2082, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26372, 26372, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26372, 26372, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26372, 26375, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26372, 26375, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26372, 26374, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26372, 26374, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26383, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26383, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26382, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26382, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26369, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26369, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26368, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26368, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26371, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26371, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26370, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26370, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26373, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26373, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26372, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26372, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26375, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26375, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26374, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26374, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26383, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26383, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26382, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26382, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26369, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26369, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26368, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26368, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26371, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26371, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26370, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26370, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26373, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26373, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26372, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26372, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26375, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26375, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26374, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26374, 26388, 26443, 26475, 26443, 26475, 26394, 26388, 26370, 26388, 26380, 26477, 26445, 26388, 26461, 26451, 26447, 26388, 26380, 26388, 26434, 26447, 26438, 26451, 26388, 26394, 26388, 26456, 26455, 26459, 26451, 26388, 26380, 26388, 6989, 12477, 26388, 26394, 26388, 26432, 26455, 26458, 26435, 26451, 26388, 26380, 26477, 26445, 26388, 26456, 26388, 26380, 26388, 13918, -2082, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 2035, 1577, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 2035, 1577, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 7911, 14669, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 7911, 14669, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 6107, -4234, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 6107, -4234, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 1182, 4912, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 1182, 4912, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 808, 7207, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 808, 7207, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 13988, -3745, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13988, -3745, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, -7381, -6977, 26388, 26394, 26388, 26432, 26388, 26380, 26388, -7381, -6977, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 3863, 12763, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 3863, 12763, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 13726, 10346, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13726, 10346, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 12, 1326, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 12, 1326, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, -5914, 13726, 26388, 26394, 26388, 26432, 26388, 26380, 26388, -5914, 13726, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 1326, 10687, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 1326, 10687, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 15143, 14658, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 15143, 14658, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 15143, 15941, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 15143, 15941, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 7688, 10284, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 7688, 10284, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 13481, 13613, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13481,
|
||||
13613, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 10628, 15462, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 10628, 15462, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 4604, 332, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 4604, 332, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 13703, 14561, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13703, 14561, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 13888, 10720, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13888, 10720, 26388, 26443, 26475, 26443, 26394, 26445, 26388, 26461, 26451, 26447, 26388, 26380, 26388, 26455, 26436, 26451, 26455, 26388, 26394, 26388, 26456, 26455, 26459, 26451, 26388, 26380, 26388, 12294, 13324, 26388, 26394, 26388, 26432, 26455, 26458, 26435, 26451, 26388, 26380, 26477, 26445, 26388, 26456, 26388, 26380, 26388, 13918, -2082, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 10523, 12747, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 14003, 12294, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 723, 26, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 723, 26, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 3089, 6328, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 3089, 6328, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 13888, 10720, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 13888, 10720, 26388, 26443, 26475, 26443, 26394, 26445, 26388, 26461, 26451, 26447, 26388, 26380, 26388, 26447, 26451, 26455, 26436, 26388, 26394, 26388, 26456, 26455, 26459, 26451, 26388, 26380, 26388, 14658, 10699, 26388, 26394, 26388, 26432, 26455, 26458, 26435, 26451, 26388, 26380, 26477, 26445, 26388, 26456, 26388, 26380, 26388, 13918, -2082, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26372, 26372, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26372, 26372, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26372, 26375, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26372, 26375, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26372, 26374, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26372, 26374, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26383, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26383, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26382, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26382, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26369, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26369, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26368, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26368, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26371, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26371, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26370, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26370, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26373, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26373, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26372, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26372, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26375, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26375, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26374, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26374, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26383, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26383, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26382, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26382, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26369, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26369, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26368, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26368, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26371, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26371, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26370, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26370, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26373, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26373, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26372, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26372, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26375, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26375, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26374, 26374, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26374, 26374, 26388, 26443, 26475, 26394, 26388, 26373, 26388, 26380, 26477, 26445, 26388, 26461, 26451, 26447, 26388, 26380, 26388, 26434, 26447, 26438, 26451, 26388, 26394, 26388, 26456, 26455, 26459, 26451, 26388, 26380, 26388, 6989, 12477, 26388, 26394, 26388, 26432, 26455, 26458, 26435, 26451, 26388, 26380, 26477, 26445, 26388, 26456, 26388, 26380, 26388, 13918, -2082, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, -2241, 7926, 26388, 26394, 26388, 26432, 26388, 26380, 26388, -2241, 7926, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 2035, 1577, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 2035, 1577, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, -4983, -5314, 26388, 26394, 26388, 26432, 26388, 26380, 26388, -4983, -5314, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 923, 1427, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 923, 1427, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 755, 2318, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 755, 2318, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, -3899, 10598, 26388, 26394, 26388, 26432, 26388, 26380, 26388,
|
||||
-3899, 10598, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 6328, -23, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 6328, -23, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 6556, 15528, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 6556, 15528, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 452, -6836, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 452, -6836, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 4649, 2573, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 4649, 2573, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 2318, 1337, 10660, 13726, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 2318, 1337, 10660, 13726, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, -5612, 6649, 26388, 26394, 26388, 26432, 26388, 26380, 26388, -5612, 6649, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 2932, -6278, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 2932, -6278, 26388, 26443, 26475, 26443, 26394, 26445, 26388, 26461, 26451, 26447, 26388, 26380, 26388, 26455, 26436, 26451, 26455, 26388, 26394, 26388, 26456, 26455, 26459, 26451, 26388, 26380, 26388, 12294, 13324, 26388, 26394, 26388, 26432, 26455, 26458, 26435, 26451, 26388, 26380, 26477, 26445, 26388, 26456, 26388, 26380, 26388, 13918, -2082, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 14003, 12294, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 14003, 12294, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 2329, 13510, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 2329, 13510, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 723, -3873, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 723, -3873, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 3089, 6328, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 3089, 6328, 26388, 26443, 26475, 26443, 26394, 26445, 26388, 26461, 26451, 26447, 26388, 26380, 26388, 26447, 26451, 26455, 26436, 26388, 26394, 26388, 26456, 26455, 26459, 26451, 26388, 26380, 26388, 14658, 10699, 26388, 26394, 26388, 26432, 26455, 26458, 26435, 26451, 26388, 26380, 26477, 26445, 26388, 26456, 26388, 26380, 26388, 13918, -2082, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26372, 26372, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26372, 26372, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26372, 26375, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26372, 26375, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26372, 26374, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26372, 26374, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26383, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26383, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26382, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26382, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26369, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26369, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26368, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26368, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26371, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26371, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26370, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26370, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26373, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26373, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26372, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26372, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26375, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26375, 26388, 26443, 26394, 26445, 26388, 26456, 26388, 26380, 26388, 26372, 26374, 26375, 26374, 26388, 26394, 26388, 26432, 26388, 26380, 26388, 26372, 26374, 26375, 26374, 26388, 26443, 26475, 26443, 26475, 26443, 26475, 26443, 32682, 32677, 32672, 32696, 32681, 32702, 32703, -20332, -20339, -20346, -20291, -20336, -20345, -20337, -20349, -20336, -20343, -20335, -18297, -18274, -18283, -18258, -18303, -18280, -18286, -17123, -17148, -17137, -17100, -17147, -17142, -17146, -17138, -17081, -17058, -17067, -17042, -17064, -17067, -23479, -23476, -23466, -23471, -21468, -21446, -21445, -21453, -21445, -21377, -21379, -21467, -21381, -21405, -21381, -21468, -21381, -21383, -21404, -21379, -21406, -21393, -21394, -21468, -21379, -21404, -21393, -21468, -21452, -21398, -21400, -21450, -21395, -21406, -21401, -21377, -21394, -21383, 17424, 17420, 17420, 17416, 17419, 17474, 17495, 17495, 17439, 17425, 17420, 17437, 17433, 17494, 17435, 17431, 17429, 17495, 17417, 17425, 17433, 17431, 17426, 17425, 17495, 17426, 17433, 17418, 17495, 17418, 17433, 17423, 17495, 17434, 17418, 17433, 17430, 17435, 17424, 17495, 17429, 17433, 17425, 17430, 17495, 17427, 17419, 17426, 17494, 17420, 17408, 17420, 28358, 28356, 28376, 28362, 29761, 29776, 29763, 29762, 29780, 24884, 24883, 24877, 7291, 7266, 7273, 7250, 7295, 7272, 7264, 7276, 7295, 7270, 7294, 8669, 8644, 8655, 8692, 8667, 8642, 8648, 9490, 9483, 9472, 9531, 9482, 9477, 9481, 9473, 14750, 14727, 14732, 14775, 14721, 14732, 6377, 6380, 6390, 6385, 12849, 12847, 12846, 12838, 12846, 12906, 12904, 12848, 12910, 12918, 12910, 12849, 12910, 12908, 12913, 12904, 12919, 12922, 12923, 12849, 12904, 12913, 12922, 12849, 12833, 12927, 12925, 12835, 12922, 12923, 12906, 12927, 12919, 12914, 12856, 12905, 12922, 12835, 9754, 9804, 9819, 9729, 9741};
|
||||
private String T9 = "http://kantv.zsyzcy.cn";
|
||||
private String I = "";
|
||||
private String PL = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDqbQ2AO1Ehyap6FmLrkqjhsqpyqOL/M9RtytRwqRqv/Yzeq21mToFuJ3yE9SIaN1hYhq7ZSYnWhhvjwBXXVHo7gSR/ABMCkRSRMLENNds5zYA8pVxxPMLWUXsdyokZlsIRF2XOxz8Ol6zwqURkp9ThJBDu4ym91ZXh4FglqQS2CwIDAQAB";
|
||||
private String sO = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAOptDYA7USHJqnoWYuuSqOGyqnKo4v8z1G3K1HCpGq/9jN6rbWZOgW4nfIT1Iho3WFiGrtlJidaGG+PAFddUejuBJH8AEwKRFJEwsQ012znNgDylXHE8wtZRex3KiRmWwhEXZc7HPw6XrPCpRGSn1OEkEO7jKb3VleHgWCWpBLYLAgMBAAECgYBVuuHoFkk6YQTONyef3PeT6oH5AphZGfxC1p1QQhd3avM8b1bHxkgBH8Gi4f7BtaHCZibFYeZdpJfId3PFVqiILR2rebJ5prJpFyfHl3RVqUZ9AzPumHRRD5JIC6YA7vBCg5724T8Veg9CxTdHzybYLCwXaDYFTlW0/6nnh1gPoQJBAPqbq5gkXCh+o/DrpT7kqia2cTun45XMCmYTiKShjmMujIVPC+/O43aErRpuLbeivxI6B9XqA841mSPb8uTUpbsCQQDveECxlKfpq01q//xAXb3lL+e+P7DX18W8ek+lLtXoUDhyKEB2c6zHO9g6A/6fHgx2DJH1+vnYmjHiiH2QsoPxAkEAmNaRy0L5lZTOpSMB756DiwKfglN9ACGlgeWN42HINgLwnmi8De/uV5zI+aKSbTlrMFGF79c9pOiZUf5VX2u0+wJABk6GdabSnUbTrSO8wv01CRov4kTPJYAbRxF5k4IeRBYIxojk2bnGLSEYWr7ML+icr2c5WN8ZQWkeMzchB3SMIQJADGzV6RHvx/6DCzLvSrtHUnyfKyCh19tC5hxyVyuXMAlKdQIzRSiTIOiRY/5HwvVi8ZCVvYmHQ7n0XGYFdJ3s7Q==";
|
||||
private String x = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCriltAoK1NhfK6Tpjip3uQg87B8Gnf+m/Kf7Wz+oPsfTfkpCppreQ6j1hDdPbAbh87+iuszCdgSqbm/xr84PFIcWtF5nndS3rxLqo9EMgDrC+yTdeVGC6jku8lr9FgTPRf+LfMR65LesXlj2dhmI9PD/xFotQE/YpsCMeovV1zzwIDAQAB";
|
||||
private String L = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAKuKW0CgrU2F8rpOmOKne5CDzsHwad/6b8p/tbP6g+x9N+SkKmmt5DqPWEN09sBuHzv6K6zMJ2BKpub/Gvzg8Uhxa0Xmed1LevEuqj0QyAOsL7JN15UYLqOS7yWv0WBM9F/4t8xHrkt6xeWPZ2GYj08P/EWi1AT9imwIx6i9XXPPAgMBAAECgYB4Fsv7WoD4nKVouE1fn1Bpw1yjeOMl4fURFobmEKL6lE7kyejHQu1b8a4gy2lTHcTQADtDJUkLqDdfz4fdMLy4jMl/Cv2FJ0K3zKXQKVhMpTcndLLjkdRvYyrdmyNRbW3ZghMwcwNrmkYwQNUz7y3Cvf0+pNHhEck7PZBc3l8uwQJBANoQ3ip9va8oPkxG68iSnVzDASnqOGDdgDD9bIyva0S7L0wix0chcy00CkmoR7srivPRxhM8xBq6iPeWMmoXPxUCQQDJYZISJ9470OVrFVo24utj+0ju7bfAbFDqb2uFxyM6fXKmWeeNDLJIvSQ3efl6SJIYJg2h+pXP32SdKJDNhABTAkBdBfcQH0Wsk7lHprVsgYbZjGJRtBXK1JKb02/b7/UNg+BgVTG3WUCd1uZQl5XJ9YA4FJOvnyt0z4AgRhVJhpMlAkEAnkz5oxX95u1d+mBNi0mzmeOFQHRTdopuzOqLDh0s/yRvxH51u3XYi79KweU7DDoRxbPcEZFGxKIpmDS0Jyl1iwJBAIODi6S2PViooWayw9+lP9pvqOLAEwI/zO35iUyKqO8rizf3FFHp9YpzNzugxXylcL30g5Sz8eVUIqfjaRqcSCg=";
|
||||
private String VX = "1";
|
||||
private String o2 = null;
|
||||
|
||||
private static String $(int i, int i2, int i3) {
|
||||
char[] cArr = new char[i2 - i];
|
||||
for (int i4 = 0; i4 < i2 - i; i4++) {
|
||||
cArr[i4] = (char) ($[i + i4] ^ i3);
|
||||
}
|
||||
return new String(cArr);
|
||||
}
|
||||
|
||||
private HashMap<String, String> T9(String str) {
|
||||
HashMap<String, String> hashMap = new HashMap<>();
|
||||
hashMap.put("User-Agent", "Dalvik/2.1.0 (Linux; U; Android 10; PBEM00 Build/QKQ1.190918.001)");
|
||||
return hashMap;
|
||||
}
|
||||
|
||||
public String categoryContent(String str, String str2, boolean z, HashMap<String, String> hashMap) {
|
||||
String $2 = "vod_remarks";
|
||||
String $3 = "vod_pic";
|
||||
String $4 = "limit";
|
||||
String $5 = "vod_name";
|
||||
String $6 = "page";
|
||||
String $7 = "vod_id";
|
||||
String $8 = "pagecount";
|
||||
String $9 = "total";
|
||||
String $10 = "list";
|
||||
String $11 = "class";
|
||||
String $12 = "year";
|
||||
String $13 = "type";
|
||||
String $14 = "area";
|
||||
try {
|
||||
JSONObject jSONObject = new JSONObject();
|
||||
String str3 = this.T9 + "/1080detail.php/app/video?&tid=" + str;
|
||||
HashMap<String, String> hashMap2 = hashMap == null ? new HashMap<>() : hashMap;
|
||||
if (!hashMap2.containsKey($14)) {
|
||||
hashMap2.put($14, "");
|
||||
}
|
||||
if (!hashMap2.containsKey($13)) {
|
||||
hashMap2.put($13, "");
|
||||
}
|
||||
if (!hashMap2.containsKey($12)) {
|
||||
hashMap2.put($12, "");
|
||||
}
|
||||
if (!hashMap2.containsKey($11)) {
|
||||
hashMap2.put($11, "");
|
||||
}
|
||||
String str4 = (((str3 + "&class=" + hashMap2.get($13)) + "&area=" + hashMap2.get($14)) + "&year=" + hashMap2.get($12)) + "&pg=" + str2;
|
||||
JSONObject jSONObject2 = new JSONObject(W.AJ(str4, T9(str4)));
|
||||
JSONArray jSONArray = jSONObject2.getJSONArray($10);
|
||||
JSONArray jSONArray2 = new JSONArray();
|
||||
for (int i = 0; i < jSONArray.length(); i++) {
|
||||
JSONObject jSONObject3 = jSONArray.getJSONObject(i);
|
||||
JSONObject jSONObject4 = new JSONObject();
|
||||
jSONObject4.put($7, jSONObject3.getString($7));
|
||||
jSONObject4.put($5, jSONObject3.getString($5));
|
||||
jSONObject4.put($3, jSONObject3.getString($3));
|
||||
jSONObject4.put($2, jSONObject3.getString($2));
|
||||
jSONArray2.put(jSONObject4);
|
||||
}
|
||||
int i2 = jSONObject2.getInt($9);
|
||||
int i3 = jSONObject2.getInt($8);
|
||||
jSONObject.put($6, jSONObject2.getInt($6));
|
||||
jSONObject.put($8, i3);
|
||||
jSONObject.put($4, jSONObject2.getInt($4));
|
||||
jSONObject.put($9, i2);
|
||||
jSONObject.put($10, jSONArray2);
|
||||
return jSONObject.toString();
|
||||
} catch (Throwable unused) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
public String detailContent(List<String> list) {
|
||||
String $2 = "vod_play_url";
|
||||
String $3 = "vod_play_from";
|
||||
String $4 = "vod_content";
|
||||
String $5 = "vod_director";
|
||||
String $6 = "vod_actor";
|
||||
String $7 = "vod_remarks";
|
||||
String $8 = "vod_area";
|
||||
String $9 = "vod_year";
|
||||
String $10 = "vod_pic";
|
||||
String $11 = "vod_name";
|
||||
String $12 = "vod_id";
|
||||
String $13 = "list";
|
||||
try {
|
||||
JSONObject jSONObject = new JSONObject();
|
||||
JSONObject jSONObject2 = new JSONObject();
|
||||
String str = this.T9 + "/1080tv.php/provide/vod/?ac=detail&ids=" + list.get(0);
|
||||
JSONObject jSONObject3 = new JSONObject(W.AJ(str, T9(str))).getJSONArray($13).getJSONObject(0);
|
||||
jSONObject.put($12, jSONObject3.getString($12));
|
||||
jSONObject.put($11, jSONObject3.getString($11));
|
||||
jSONObject.put($10, jSONObject3.getString($10));
|
||||
jSONObject.put("type_name", jSONObject3.getString("vod_class"));
|
||||
jSONObject.put($9, jSONObject3.getString($9));
|
||||
jSONObject.put($8, jSONObject3.getString($8));
|
||||
jSONObject.put($7, jSONObject3.getString($7));
|
||||
jSONObject.put($6, jSONObject3.getString($6));
|
||||
jSONObject.put($5, jSONObject3.getString($5));
|
||||
jSONObject.put($4, jSONObject3.getString($4));
|
||||
jSONObject.put($3, jSONObject3.getString($3));
|
||||
jSONObject.put($2, Ms.T9(jSONObject3.getString($2).replace("\/", "/"), this.L));
|
||||
JSONArray jSONArray = new JSONArray();
|
||||
jSONArray.put(jSONObject);
|
||||
jSONObject2.put($13, jSONArray);
|
||||
return jSONObject2.toString();
|
||||
} catch (Throwable unused) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
public String homeContent(boolean z) {
|
||||
try {
|
||||
JSONObject jSONObject = new JSONObject();
|
||||
jSONObject.put("class", new JSONArray("[{"type_id":"1","type_name":"电影"},{"type_id":"2","type_name":"电视剧"},{"type_id":"30","type_name":"日韩剧"},{"type_id":"29","type_name":"欧美剧"},{"type_id":"33","type_name":"港台剧"},{"type_id":"3","type_name":"综艺"},{"type_id":"4","type_name":"动漫"}]"));
|
||||
if (z) {
|
||||
jSONObject.put("filters", new JSONObject("{"1":[{"key":"type","name":"类型","value":[{"n":"全部","v":""},{"n":"喜剧","v":"喜剧"},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"动作","v":"动作"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"战争","v":"战争"},{"n":"警匪","v":"警匪"},{"n":"犯罪","v":"犯罪"},{"n":"动画","v":"动画"},{"n":"奇幻","v":"奇幻"},{"n":"武侠","v":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"经典","v":"经典"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"微电影","v":"微电影"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"},{"n":"儿童","v":"儿童"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"内地"},{"n":"中国大陆","v":"大陆"},{"n":"中国香港","v":"香港"},{"n":"中国台湾","v":"台湾"},{"n":"美国","v":"美国"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"意大利","v":"意大利"},{"n":"西班牙","v":"西班牙"},{"n":"加拿大","v":"加拿大"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]}],"2":[{"key":"type","name":"类型","value":[{"n":"全部","v":""},{"n":"古装","v":"古装"},{"n":"战争","v":"战争"},{"n":"青春偶像","v":"青春偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"动作","v":"动作"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"历史","v":"历史"},{"n":"经典","v":"经典"},{"n":"乡村","v":"乡村"},{"n":"情景","v":"情景"},{"n":"商战","v":"商战"},{"n":"网剧","v":"网剧"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"内地"},{"n":"中国大陆","v":"大陆"},{"n":"中国台湾","v":"中国台湾"},{"n":"中国香港","v":"中国香港"},{"n":"韩国","v":"韩国"},{"n":"日本","v":"日本"},{"n":"美国","v":"美国"},{"n":"泰国","v":"泰国"},{"n":"英国","v":"英国"},{"n":"新加坡","v":"新加坡"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}]}],"4":[{"key":"type","name":"类型","value":[{"n":"全部","v":""},{"n":"情感","v":"情感"},{"n":"科幻","v":"科幻"},{"n":"热血","v":"热血"},{"n":"推理","v":"推理"},{"n":"搞笑","v":"搞笑"},{"n":"冒险","v":"冒险"},{"n":"萝莉","v":"萝莉"},{"n":"校园","v":"校园"},{"n":"动作","v":"动作"},{"n":"机战","v":"机战"},{"n":"运动","v":"运动"},{"n":"战争","v":"战争"},{"n":"少年","v":"少年"},{"n":"少女","v":"少女"},{"n":"社会","v":"社会"},{"n":"原创","v":"原创"},{"n":"亲子","v":"亲子"},{"n":"益智","v":"益智"},{"n":"励志","v":"励志"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"中国","v":"内地"},{"n":"日本","v":"日本"},{"n":"欧美","v":"欧美"},{"n":"其他","v":"其他"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"},{"n":"2003","v":"2003"},{"n":"2002","v":"2002"},{"n":"2001","v":"2001"},{"n":"2000","v":"2000"}],"3":[{"key":"type","name":"类型","value":[{"n":"全部","v":""},{"n":"选秀","v":"选秀"},{"n":"情感","v":"情感"},{"n":"访谈","v":"访谈"},{"n":"播报","v":"播报"},{"n":"旅游","v":"旅游"},{"n":"音乐","v":"音乐"},{"n":"美食","v":"美食"},{"n":"纪实","v":"纪实"},{"n":"曲艺","v":"曲艺"},{"n":"生活","v":"生活"},{"n":"游戏互动","v":"游戏互动"},{"n":"财经","v":"财经"},{"n":"求职","v":"求职"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"内地"},{"n":"港台","v":"港台"},{"n":"日韩","v":"日韩"},{"n":"欧美","v":"欧美"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]}]}]}"));
|
||||
}
|
||||
return jSONObject.toString();
|
||||
} catch (Throwable unused) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
public String homeVideoContent() {
|
||||
String $2 = "vod_remarks";
|
||||
String $3 = "vod_pic";
|
||||
String $4 = "vod_name";
|
||||
String $5 = "vod_id";
|
||||
String $6 = "list";
|
||||
try {
|
||||
String str = this.T9 + "/1080tv.php/provide/vod/?ac=filter";
|
||||
JSONObject jSONObject = new JSONObject(W.AJ(str, T9(str)));
|
||||
JSONArray jSONArray = new JSONArray();
|
||||
JSONArray jSONArray2 = jSONObject.getJSONArray($6);
|
||||
JSONObject jSONObject2 = new JSONObject();
|
||||
for (int i = 0; i < jSONArray2.length(); i++) {
|
||||
JSONObject jSONObject3 = jSONArray2.getJSONObject(i);
|
||||
jSONObject2.put($5, jSONObject3.getString($5));
|
||||
jSONObject2.put($4, jSONObject3.getString($4));
|
||||
jSONObject2.put($3, jSONObject3.getString($3));
|
||||
jSONObject2.put($2, jSONObject3.getString($2));
|
||||
jSONArray.put(jSONObject2);
|
||||
}
|
||||
JSONObject jSONObject4 = new JSONObject();
|
||||
jSONObject4.put($6, jSONArray);
|
||||
return jSONObject4.toString();
|
||||
} catch (Throwable unused) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
public void init(Context context) {
|
||||
KanSJ.super.init(context);
|
||||
}
|
||||
|
||||
public String playerContent(String str, String str2, List<String> list) {
|
||||
try {
|
||||
JSONObject jSONObject = new JSONObject(W.AJ("https://gitea.com/qiaoji/jar/raw/branch/main/ksj.txt", null));
|
||||
JSONObject jSONObject2 = new JSONObject();
|
||||
String str3 = jSONObject.getString("tvjx") + str2;
|
||||
String T9 = Ms.T9(W.AJ(str3, T9(str3)), this.sO);
|
||||
jSONObject2.put("parse", 0);
|
||||
jSONObject2.put("url", T9);
|
||||
return jSONObject2.toString();
|
||||
} catch (Throwable unused) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
public String searchContent(String str, boolean z) {
|
||||
String $2 = "vod_remarks";
|
||||
String $3 = "vod_pic";
|
||||
String $4 = "vod_name";
|
||||
String $5 = "vod_id";
|
||||
String $6 = "list";
|
||||
try {
|
||||
JSONObject jSONObject = new JSONObject();
|
||||
String str2 = this.T9 + "/1080tv.php/provide/vod/?ac=detail&wd=" + URLEncoder.encode(str) + "&pg=1";
|
||||
String AJ = W.AJ(str2, T9(str2));
|
||||
JSONArray jSONArray = new JSONArray();
|
||||
JSONArray jSONArray2 = new JSONObject(AJ).getJSONArray($6);
|
||||
for (int i = 0; i < jSONArray2.length(); i++) {
|
||||
JSONObject jSONObject2 = jSONArray2.getJSONObject(i);
|
||||
JSONObject jSONObject3 = new JSONObject();
|
||||
jSONObject3.put($5, jSONObject2.getString($5));
|
||||
jSONObject3.put($4, jSONObject2.getString($4));
|
||||
jSONObject3.put($3, jSONObject2.getString($3));
|
||||
jSONObject3.put($2, jSONObject2.getString($2));
|
||||
jSONArray.put(jSONObject3);
|
||||
}
|
||||
jSONObject.put($6, jSONArray);
|
||||
return jSONObject.toString();
|
||||
} catch (Throwable unused) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
java文件加入后报错,但Java文件应该没问题。很大可能是Java文件里的调用的问题。很可能是调用的文件没有或者没有添加相关的代码。
|
||||
Reference in New Issue
Block a user