Clean code
This commit is contained in:
parent
c3faf59813
commit
5bc5c97bef
|
|
@ -2,8 +2,6 @@ package com.github.catvod.crawler;
|
|||
|
||||
import android.content.Context;
|
||||
|
||||
import com.github.catvod.net.OkHttp;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
|
@ -64,10 +62,10 @@ public abstract class Spider {
|
|||
}
|
||||
|
||||
public static Dns safeDns() {
|
||||
return Dns.SYSTEM;
|
||||
return null;
|
||||
}
|
||||
|
||||
public OkHttpClient client() {
|
||||
return OkHttp.client();
|
||||
public static OkHttpClient client() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ import android.widget.Button;
|
|||
|
||||
import com.github.catvod.R;
|
||||
import com.github.catvod.crawler.Spider;
|
||||
import com.github.catvod.spider.Eighteen;
|
||||
import com.github.catvod.spider.Init;
|
||||
import com.github.catvod.spider.Wogg;
|
||||
import com.orhanobut.logger.AndroidLogAdapter;
|
||||
import com.orhanobut.logger.Logger;
|
||||
|
||||
|
|
@ -46,7 +46,7 @@ public class MainActivity extends Activity {
|
|||
private void initSpider() {
|
||||
try {
|
||||
Init.init(getApplicationContext());
|
||||
spider = new Eighteen();
|
||||
spider = new Wogg();
|
||||
spider.init(this, "");
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import com.github.catvod.crawler.Spider;
|
|||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import okhttp3.Dns;
|
||||
|
|
@ -24,21 +25,12 @@ public class OkHttp {
|
|||
static volatile OkHttp INSTANCE = new OkHttp();
|
||||
}
|
||||
|
||||
public static OkHttp get() {
|
||||
private static OkHttp get() {
|
||||
return Loader.INSTANCE;
|
||||
}
|
||||
|
||||
public static Dns dns() {
|
||||
return Spider.safeDns();
|
||||
}
|
||||
|
||||
public static OkHttpClient client() {
|
||||
if (get().client != null) return get().client;
|
||||
return get().client = getBuilder().build();
|
||||
}
|
||||
|
||||
public static OkHttpClient noRedirect() {
|
||||
return client().newBuilder().followRedirects(false).followSslRedirects(false).build();
|
||||
public static Response newCall(Request request) throws IOException {
|
||||
return client().newCall(request).execute();
|
||||
}
|
||||
|
||||
public static Response newCall(String url) throws IOException {
|
||||
|
|
@ -54,27 +46,19 @@ public class OkHttp {
|
|||
}
|
||||
|
||||
public static String string(String url, Map<String, String> header) {
|
||||
return string(client(), url, null, header);
|
||||
return string(url, null, header);
|
||||
}
|
||||
|
||||
public static String string(OkHttpClient client, String url, Map<String, String> header) {
|
||||
return string(client, url, null, header);
|
||||
}
|
||||
|
||||
public static String string(OkHttpClient client, String url, Map<String, String> params, Map<String, String> header) {
|
||||
return url.startsWith("http") ? new OkRequest(GET, url, params, header).execute(client).getBody() : "";
|
||||
public static String string(String url, Map<String, String> params, Map<String, String> header) {
|
||||
return url.startsWith("http") ? new OkRequest(GET, url, params, header).execute(client()).getBody() : "";
|
||||
}
|
||||
|
||||
public static String post(String url, Map<String, String> params) {
|
||||
return post(client(), url, params, null).getBody();
|
||||
return post(url, params, null).getBody();
|
||||
}
|
||||
|
||||
public static OkResult post(String url, Map<String, String> params, Map<String, String> header) {
|
||||
return post(client(), url, params, header);
|
||||
}
|
||||
|
||||
public static OkResult post(OkHttpClient client, String url, Map<String, String> params, Map<String, String> header) {
|
||||
return new OkRequest(POST, url, params, header).execute(client);
|
||||
return new OkRequest(POST, url, params, header).execute(client());
|
||||
}
|
||||
|
||||
public static String post(String url, String json) {
|
||||
|
|
@ -82,15 +66,11 @@ public class OkHttp {
|
|||
}
|
||||
|
||||
public static OkResult post(String url, String json, Map<String, String> header) {
|
||||
return post(client(), url, json, header);
|
||||
}
|
||||
|
||||
public static OkResult post(OkHttpClient client, String url, String json, Map<String, String> header) {
|
||||
return new OkRequest(POST, url, json, header).execute(client);
|
||||
return new OkRequest(POST, url, json, header).execute(client());
|
||||
}
|
||||
|
||||
public static String getLocation(String url, Map<String, String> header) throws IOException {
|
||||
return getLocation(noRedirect().newCall(new Request.Builder().url(url).headers(Headers.of(header)).build()).execute().headers().toMultimap());
|
||||
return getLocation(client().newBuilder().followRedirects(false).followSslRedirects(false).build().newCall(new Request.Builder().url(url).headers(Headers.of(header)).build()).execute().headers().toMultimap());
|
||||
}
|
||||
|
||||
public static String getLocation(Map<String, List<String>> headers) {
|
||||
|
|
@ -100,7 +80,28 @@ public class OkHttp {
|
|||
return null;
|
||||
}
|
||||
|
||||
public static OkHttpClient.Builder getBuilder() {
|
||||
return new OkHttpClient.Builder().dns(dns()).connectTimeout(30, TimeUnit.SECONDS).readTimeout(30, TimeUnit.SECONDS).writeTimeout(30, TimeUnit.SECONDS).hostnameVerifier((hostname, session) -> true).sslSocketFactory(new SSLCompat(), SSLCompat.TM);
|
||||
private static OkHttpClient build() {
|
||||
if (get().client != null) return get().client;
|
||||
return get().client = getBuilder().build();
|
||||
}
|
||||
|
||||
private static OkHttpClient.Builder getBuilder() {
|
||||
return new OkHttpClient.Builder().dns(safeDns()).connectTimeout(30, TimeUnit.SECONDS).readTimeout(30, TimeUnit.SECONDS).writeTimeout(30, TimeUnit.SECONDS).hostnameVerifier((hostname, session) -> true).sslSocketFactory(new SSLCompat(), SSLCompat.TM);
|
||||
}
|
||||
|
||||
private static OkHttpClient client() {
|
||||
try {
|
||||
return Objects.requireNonNull(Spider.client());
|
||||
} catch (Throwable e) {
|
||||
return build();
|
||||
}
|
||||
}
|
||||
|
||||
private static Dns safeDns() {
|
||||
try {
|
||||
return Objects.requireNonNull(Spider.safeDns());
|
||||
} catch (Throwable e) {
|
||||
return Dns.SYSTEM;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,17 +22,16 @@ class OkRequest {
|
|||
private final String json;
|
||||
private Request request;
|
||||
private String url;
|
||||
private Object tag;
|
||||
|
||||
OkRequest(String method, String url, Map<String, String> params, Map<String, String> header) {
|
||||
this(method, url, null, params, header);
|
||||
this(method, url, params, null, header);
|
||||
}
|
||||
|
||||
OkRequest(String method, String url, String json, Map<String, String> header) {
|
||||
this(method, url, json, null, header);
|
||||
this(method, url, null, json, header);
|
||||
}
|
||||
|
||||
private OkRequest(String method, String url, String json, Map<String, String> params, Map<String, String> header) {
|
||||
private OkRequest(String method, String url, Map<String, String> params, String json, Map<String, String> header) {
|
||||
this.url = url;
|
||||
this.json = json;
|
||||
this.method = method;
|
||||
|
|
@ -41,17 +40,11 @@ class OkRequest {
|
|||
getInstance();
|
||||
}
|
||||
|
||||
public OkRequest tag(Object tag) {
|
||||
this.tag = tag;
|
||||
return this;
|
||||
}
|
||||
|
||||
private void getInstance() {
|
||||
Request.Builder builder = new Request.Builder();
|
||||
if (method.equals(OkHttp.GET) && params != null) setParams();
|
||||
if (method.equals(OkHttp.POST)) builder.post(getRequestBody());
|
||||
if (header != null) for (String key : header.keySet()) builder.addHeader(key, header.get(key));
|
||||
if (tag != null) builder.tag(tag);
|
||||
request = builder.url(url).build();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package com.github.catvod.spider;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.text.TextUtils;
|
||||
|
||||
|
|
@ -32,7 +31,6 @@ import java.util.LinkedHashMap;
|
|||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
|
||||
/**
|
||||
* @author ColaMint & FongMi & 唐三
|
||||
|
|
@ -43,8 +41,6 @@ public class Bili extends Spider {
|
|||
private static Map<String, String> audios;
|
||||
private static String cookie;
|
||||
|
||||
private ScheduledExecutorService service;
|
||||
private AlertDialog dialog;
|
||||
private JsonObject extend;
|
||||
private boolean login;
|
||||
private boolean isVip;
|
||||
|
|
@ -53,8 +49,8 @@ public class Bili extends Spider {
|
|||
private static Map<String, String> getHeader() {
|
||||
Map<String, String> headers = new HashMap<>();
|
||||
headers.put("User-Agent", Util.CHROME);
|
||||
if (cookie != null) headers.put("cookie", cookie);
|
||||
headers.put("Referer", "https://www.bilibili.com");
|
||||
if (cookie != null) headers.put("cookie", cookie);
|
||||
return headers;
|
||||
}
|
||||
|
||||
|
|
@ -280,88 +276,5 @@ public class Bili extends Spider {
|
|||
login = data.isLogin();
|
||||
isVip = data.isVip();
|
||||
wbi = data.getWbi();
|
||||
//getQRCode();
|
||||
}
|
||||
|
||||
/*
|
||||
private void getQRCode() {
|
||||
if (login) return;
|
||||
String json = OkHttp.string("https://passport.bilibili.com/x/passport-login/web/qrcode/generate?source=main-mini");
|
||||
Data data = Resp.objectFrom(json).getData();
|
||||
Init.run(() -> openApp(data));
|
||||
}
|
||||
|
||||
private Intent getIntent(String pkgName, Data data) {
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||
intent.setClassName(pkgName, "tv.danmaku.bili.ui.intent.IntentHandlerActivity");
|
||||
intent.setData(Uri.parse(data.getUrl()));
|
||||
return intent;
|
||||
}
|
||||
|
||||
private void openApp(Data data) {
|
||||
try {
|
||||
Init.getActivity().startActivity(getIntent("com.bilibili.app.in", data));
|
||||
} catch (Exception e) {
|
||||
showQRCode(data);
|
||||
} finally {
|
||||
Init.execute(() -> startService(data));
|
||||
}
|
||||
}
|
||||
|
||||
private void showQRCode(Data data) {
|
||||
try {
|
||||
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(Utils.dp2px(240), Utils.dp2px(240));
|
||||
ImageView image = new ImageView(Init.context());
|
||||
image.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
||||
image.setImageBitmap(QRCode.getBitmap(data.getUrl(), 240, 2));
|
||||
FrameLayout frame = new FrameLayout(Init.context());
|
||||
params.gravity = Gravity.CENTER;
|
||||
frame.addView(image, params);
|
||||
dialog = new AlertDialog.Builder(Init.getActivity()).setView(frame).setOnCancelListener(this::cancel).setOnDismissListener(this::dismiss).show();
|
||||
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||
Utils.notify("請使用 BiliBili App 掃描二維碼");
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
private void startService(Data data) {
|
||||
service = Executors.newScheduledThreadPool(1);
|
||||
service.scheduleAtFixedRate(() -> {
|
||||
String url = "https://passport.bilibili.com/x/passport-login/web/qrcode/poll?qrcode_key=" + data.getQrcodeKey() + "&source=main_mini";
|
||||
String json = OkHttp.string(url, getHeader());
|
||||
url = Resp.objectFrom(json).getData().getUrl();
|
||||
if (url.length() > 0) setCookie(url);
|
||||
}, 1, 1, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
private void stopService() {
|
||||
if (service != null) service.shutdownNow();
|
||||
Init.run(this::dismiss);
|
||||
}
|
||||
|
||||
private void setCookie(String url) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
String[] splits = Uri.parse(url).getQuery().split("&");
|
||||
for (String split : splits) sb.append(split).append(";");
|
||||
FileUtil.write(getUserCache(), cookie = sb.toString());
|
||||
Utils.notify("請重新進入播放頁");
|
||||
stopService();
|
||||
}
|
||||
|
||||
private void cancel(DialogInterface dialog) {
|
||||
FileUtil.write(getUserCache(), cookie = "");
|
||||
stopService();
|
||||
}
|
||||
|
||||
private void dismiss(DialogInterface dialog) {
|
||||
stopService();
|
||||
}
|
||||
|
||||
private void dismiss() {
|
||||
try {
|
||||
if (dialog != null) dialog.dismiss();
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,37 +15,21 @@ import org.jsoup.nodes.Element;
|
|||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class Eighteen extends Spider {
|
||||
|
||||
private final String url = "https://mjv002.com/zh/";
|
||||
private String cookie;
|
||||
|
||||
private void getCookie() {
|
||||
try {
|
||||
cookie = OkHttp.newCall("https://mjv002.com/zh/chinese_IamOverEighteenYearsOld/19/index.html").headers("set-cookie").get(0).split(";")[0];
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private Map<String, String> getHeader() {
|
||||
Map<String, String> header = new HashMap<>();
|
||||
header.put("Cookie", cookie);
|
||||
return header;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(Context context, String extend) throws Exception {
|
||||
getCookie();
|
||||
OkHttp.newCall("https://mjv002.com/zh/chinese_IamOverEighteenYearsOld/19/index.html").close();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String homeContent(boolean filter) throws Exception {
|
||||
List<Class> classes = new ArrayList<>();
|
||||
List<Vod> list = new ArrayList<>();
|
||||
Document doc = Jsoup.parse(OkHttp.string(url, getHeader()));
|
||||
Document doc = Jsoup.parse(OkHttp.string(url));
|
||||
for (Element a : doc.select("ul.animenu__nav > li > a")) {
|
||||
String typeName = a.text();
|
||||
String typeId = a.attr("href").replace(url, "");
|
||||
|
|
@ -68,7 +52,7 @@ public class Eighteen extends Spider {
|
|||
List<Vod> list = new ArrayList<>();
|
||||
tid = tid.replace("random", "list");
|
||||
tid = tid.replace("index", pg);
|
||||
Document doc = Jsoup.parse(OkHttp.string(url + tid, getHeader()));
|
||||
Document doc = Jsoup.parse(OkHttp.string(url + tid));
|
||||
for (Element div : doc.select("div.post")) {
|
||||
String id = div.select("a").attr("href").replace(url, "");
|
||||
String name = div.select("h3").text();
|
||||
|
|
@ -81,7 +65,7 @@ public class Eighteen extends Spider {
|
|||
|
||||
@Override
|
||||
public String detailContent(List<String> ids) throws Exception {
|
||||
Document doc = Jsoup.parse(OkHttp.string(url + ids.get(0), getHeader()));
|
||||
Document doc = Jsoup.parse(OkHttp.string(url + ids.get(0)));
|
||||
Element wrap = doc.select("div.video-wrap").get(0);
|
||||
String name = wrap.select("div.archive-title > h1").text();
|
||||
String pic = wrap.select("div.player-wrap > img").attr("src");
|
||||
|
|
@ -106,7 +90,7 @@ public class Eighteen extends Spider {
|
|||
|
||||
@Override
|
||||
public String playerContent(String flag, String id, List<String> vipFlags) throws Exception {
|
||||
return Result.get().parse().url(url + id).header(getHeader()).string();
|
||||
return Result.get().parse().url(url + id).string();
|
||||
}
|
||||
|
||||
private String searchContent(String key, String pg) {
|
||||
|
|
@ -114,7 +98,7 @@ public class Eighteen extends Spider {
|
|||
params.put("search_keyword", key);
|
||||
params.put("search_type", "fc");
|
||||
params.put("op", "search");
|
||||
String res = OkHttp.post(url + "searchform_search/all/" + pg + ".html", params, getHeader()).getBody();
|
||||
String res = OkHttp.post(url + "searchform_search/all/" + pg + ".html", params);
|
||||
List<Vod> list = new ArrayList<>();
|
||||
for (Element div : Jsoup.parse(res).select("div.post")) {
|
||||
String id = div.select("a").attr("href").replace(url, "");
|
||||
|
|
|
|||
|
|
@ -30,8 +30,6 @@ import javax.crypto.Cipher;
|
|||
import javax.crypto.SecretKeyFactory;
|
||||
import javax.crypto.spec.DESKeySpec;
|
||||
|
||||
import okhttp3.OkHttpClient;
|
||||
|
||||
public class NiNi extends Spider {
|
||||
|
||||
private static final String desktopUrl = "https://api.nivodz.com/index/desktop/WEB/3.4";
|
||||
|
|
@ -62,15 +60,6 @@ public class NiNi extends Spider {
|
|||
if (extend.get(key) == null || extend.get(key).equals("")) extend.put(key, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public OkHttpClient client() {
|
||||
try {
|
||||
return super.client();
|
||||
} catch (Throwable e) {
|
||||
return OkHttp.client();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(Context context, String extend) {
|
||||
adult = !TextUtils.isEmpty(extend);
|
||||
|
|
@ -290,11 +279,11 @@ public class NiNi extends Spider {
|
|||
}
|
||||
|
||||
private String get(String url) {
|
||||
return decode(OkHttp.string(client(), genUrl(url, new HashMap<>()), getHeaders()));
|
||||
return decode(OkHttp.string(genUrl(url, new HashMap<>()), getHeaders()));
|
||||
}
|
||||
|
||||
private String post(String url, Map<String, String> params) {
|
||||
return decode(OkHttp.post(client(), genUrl(url, params), params, getHeaders()).getBody());
|
||||
return decode(OkHttp.post(genUrl(url, params), params, getHeaders()).getBody());
|
||||
}
|
||||
|
||||
@SuppressLint("GetInstance")
|
||||
|
|
|
|||
|
|
@ -29,8 +29,6 @@ import java.util.LinkedHashMap;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import okhttp3.OkHttpClient;
|
||||
|
||||
public class Star extends Spider {
|
||||
|
||||
private static final String apiUrl = "https://aws.ulivetv.net/v3/web/api/filter";
|
||||
|
|
@ -43,25 +41,15 @@ public class Star extends Spider {
|
|||
private Map<String, String> getHeader() {
|
||||
Map<String, String> headers = new HashMap<>();
|
||||
headers.put("User-Agent", Util.CHROME);
|
||||
headers.put("Cookie", "userIP=64.252.112.99;");
|
||||
headers.put("Referer", siteUrl);
|
||||
return headers;
|
||||
}
|
||||
|
||||
private String getVer() {
|
||||
for (Element script : Jsoup.parse(OkHttp.string(client(), siteUrl, getHeader())).select("script")) if (script.attr("src").contains("buildManifest.js")) return script.attr("src").split("/")[3];
|
||||
for (Element script : Jsoup.parse(OkHttp.string(siteUrl, getHeader())).select("script")) if (script.attr("src").contains("buildManifest.js")) return script.attr("src").split("/")[3];
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public OkHttpClient client() {
|
||||
try {
|
||||
return super.client();
|
||||
} catch (Throwable e) {
|
||||
return OkHttp.client();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(Context context, String extend) {
|
||||
map = new LinkedHashMap<>();
|
||||
|
|
@ -78,7 +66,7 @@ public class Star extends Spider {
|
|||
LinkedHashMap<String, List<Filter>> filters = new LinkedHashMap<>();
|
||||
for (Map.Entry<String, String> entry : map.entrySet()) classes.add(new Class(entry.getKey(), entry.getValue()));
|
||||
for (Class type : classes) {
|
||||
Element script = Jsoup.parse(OkHttp.string(client(), siteUrl + type.getTypeId() + "/all/all/all", getHeader())).select("#__NEXT_DATA__").get(0);
|
||||
Element script = Jsoup.parse(OkHttp.string(siteUrl + type.getTypeId() + "/all/all/all", getHeader())).select("#__NEXT_DATA__").get(0);
|
||||
JSONObject obj = new JSONObject(script.data()).getJSONObject("props").getJSONObject("pageProps").getJSONObject("filterCondition");
|
||||
Condition item = Condition.objectFrom(obj.toString());
|
||||
filters.put(type.getTypeId(), item.getFilter());
|
||||
|
|
@ -89,7 +77,7 @@ public class Star extends Spider {
|
|||
@Override
|
||||
public String homeVideoContent() throws Exception {
|
||||
List<Vod> list = new ArrayList<>();
|
||||
Element script = Jsoup.parse(OkHttp.string(client(), siteUrl, getHeader())).select("#__NEXT_DATA__").get(0);
|
||||
Element script = Jsoup.parse(OkHttp.string(siteUrl, getHeader())).select("#__NEXT_DATA__").get(0);
|
||||
List<Card> cards = Card.arrayFrom(new JSONObject(script.data()).getJSONObject("props").getJSONObject("pageProps").getJSONArray("cards").toString());
|
||||
for (Card card : cards) if (!card.getName().equals("电视直播")) for (Card item : card.getCards()) list.add(item.vod());
|
||||
return Result.string(list);
|
||||
|
|
@ -117,7 +105,7 @@ public class Star extends Spider {
|
|||
|
||||
@Override
|
||||
public String detailContent(List<String> ids) throws Exception {
|
||||
Element script = Jsoup.parse(OkHttp.string(client(), detail.concat(ids.get(0)), getHeader())).select("#__NEXT_DATA__").get(0);
|
||||
Element script = Jsoup.parse(OkHttp.string(detail.concat(ids.get(0)), getHeader())).select("#__NEXT_DATA__").get(0);
|
||||
Info detail = Info.objectFrom(new JSONObject(script.data()).getJSONObject("props").getJSONObject("pageProps").getJSONObject("collectionInfo").toString());
|
||||
Vod vod = new Vod();
|
||||
vod.setVodId(ids.get(0));
|
||||
|
|
@ -145,7 +133,7 @@ public class Star extends Spider {
|
|||
@Override
|
||||
public String searchContent(String key, boolean quick) throws Exception {
|
||||
List<Vod> list = new ArrayList<>();
|
||||
String json = OkHttp.string(client(), siteUrl + data + ver + "/search.json?word=" + URLEncoder.encode(key), getHeader());
|
||||
String json = OkHttp.string(siteUrl + data + ver + "/search.json?word=" + URLEncoder.encode(key), getHeader());
|
||||
List<Card> items = Card.arrayFrom(new JSONObject(json).getJSONObject("pageProps").getJSONArray("initList").toString());
|
||||
for (Card item : items) list.add(item.vod());
|
||||
return Result.get().vod(list).page().string();
|
||||
|
|
|
|||
|
|
@ -28,12 +28,10 @@ import java.util.regex.Pattern;
|
|||
*/
|
||||
public class Wogg extends Ali {
|
||||
|
||||
private final String siteUrl = "http://tvfan.xxooo.cf";
|
||||
private final String siteUrl = "https://tvfan.xxooo.cf";
|
||||
private final Pattern regexCategory = Pattern.compile("/vodtype/(\\w+).html");
|
||||
private final Pattern regexPageTotal = Pattern.compile("\\$\\(\"\\.mac_total\"\\)\\.text\\('(\\d+)'\\);");
|
||||
|
||||
private JsonObject ext;
|
||||
|
||||
private Map<String, String> getHeader() {
|
||||
Map<String, String> header = new HashMap<>();
|
||||
header.put("User-Agent", Util.CHROME);
|
||||
|
|
@ -42,15 +40,14 @@ public class Wogg extends Ali {
|
|||
|
||||
@Override
|
||||
public void init(Context context, String extend) {
|
||||
ext = Json.safeObject(extend);
|
||||
JsonObject ext = Json.safeObject(extend);
|
||||
super.init(context, ext.has("token") ? ext.get("token").getAsString() : "");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String homeContent(boolean filter) {
|
||||
List<Class> classes = new ArrayList<>();
|
||||
String url = ext.has("filter") ? ext.get("filter").getAsString() : "";
|
||||
Document doc = Jsoup.parse(OkHttp.string(client(), siteUrl, getHeader()));
|
||||
Document doc = Jsoup.parse(OkHttp.string(siteUrl, getHeader()));
|
||||
Elements elements = doc.select(".nav-link");
|
||||
for (Element e : elements) {
|
||||
Matcher mather = regexCategory.matcher(e.attr("href"));
|
||||
|
|
@ -58,7 +55,7 @@ public class Wogg extends Ali {
|
|||
classes.add(new Class(mather.group(1), e.text().trim()));
|
||||
}
|
||||
}
|
||||
return Result.string(classes, parseVodListFromDoc(doc), url.isEmpty() ? null : Json.parse(OkHttp.string(url)));
|
||||
return Result.string(classes, parseVodListFromDoc(doc));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -69,7 +66,7 @@ public class Wogg extends Ali {
|
|||
urlParams[Integer.parseInt(key)] = extend.get(key);
|
||||
}
|
||||
}
|
||||
Document doc = Jsoup.parse(OkHttp.string(client(), String.format("%s/index.php/vodshow/%s.html", siteUrl, String.join("-", urlParams)), getHeader()));
|
||||
Document doc = Jsoup.parse(OkHttp.string(String.format("%s/index.php/vodshow/%s.html", siteUrl, String.join("-", urlParams)), getHeader()));
|
||||
int page = Integer.parseInt(pg), limit = 72, total = 0;
|
||||
Matcher matcher = regexPageTotal.matcher(doc.html());
|
||||
if (matcher.find()) total = Integer.parseInt(matcher.group(1));
|
||||
|
|
@ -93,7 +90,7 @@ public class Wogg extends Ali {
|
|||
@Override
|
||||
public String detailContent(List<String> ids) throws Exception {
|
||||
String vodId = ids.get(0);
|
||||
Document doc = Jsoup.parse(OkHttp.string(client(), siteUrl + vodId, getHeader()));
|
||||
Document doc = Jsoup.parse(OkHttp.string(siteUrl + vodId, getHeader()));
|
||||
|
||||
Vod item = new Vod();
|
||||
item.setVodId(vodId);
|
||||
|
|
@ -139,7 +136,7 @@ public class Wogg extends Ali {
|
|||
|
||||
private String searchContent(String key, String pg) {
|
||||
String searchURL = siteUrl + String.format("/index.php/vodsearch/%s----------%s---.html", URLEncoder.encode(key), pg);
|
||||
String html = OkHttp.string(client(), searchURL, getHeader());
|
||||
String html = OkHttp.string(searchURL, getHeader());
|
||||
Elements items = Jsoup.parse(html).select(".module-search-item");
|
||||
List<Vod> list = new ArrayList<>();
|
||||
for (Element item : items) {
|
||||
|
|
|
|||
|
|
@ -324,7 +324,7 @@ public class XPath extends Spider {
|
|||
if (rule == null) {
|
||||
if (ext != null) {
|
||||
if (ext.startsWith("http")) {
|
||||
String json = OkHttp.string(client(), ext, null);
|
||||
String json = OkHttp.string(ext, null);
|
||||
rule = Rule.fromJson(json);
|
||||
loadRuleExt(json);
|
||||
} else {
|
||||
|
|
@ -340,6 +340,6 @@ public class XPath extends Spider {
|
|||
|
||||
protected String fetch(String webUrl) {
|
||||
SpiderDebug.log(webUrl);
|
||||
return OkHttp.string(client(), webUrl, getHeaders());
|
||||
return OkHttp.string(webUrl, getHeaders());
|
||||
}
|
||||
}
|
||||
|
|
@ -225,7 +225,7 @@ public class Xb6v extends Spider {
|
|||
.addHeader("Referer", siteUrl + "/")
|
||||
.post(formBody)
|
||||
.build();
|
||||
Response response = OkHttp.client().newCall(request).execute();
|
||||
Response response = OkHttp.newCall(request);
|
||||
String[] split = String.valueOf(response.request().url()).split("\\?searchid=");
|
||||
nextSearchUrlPrefix = split[0] + "index.php?page=";
|
||||
nextSearchUrlSuffix = "&searchid=" + split[1];
|
||||
|
|
|
|||
|
|
@ -32,11 +32,10 @@ public class Zhaozy extends Ali {
|
|||
Map<String, String> headers = new HashMap<>();
|
||||
headers.put("User-Agent", Util.CHROME);
|
||||
headers.put("Referer", siteUrl);
|
||||
headers.put("Cookie", getCookie());
|
||||
return headers;
|
||||
}
|
||||
|
||||
private String getCookie() {
|
||||
private void getCookie() {
|
||||
Map<String, String> params = new HashMap<>();
|
||||
params.put("username", username);
|
||||
params.put("password", password);
|
||||
|
|
@ -44,10 +43,7 @@ public class Zhaozy extends Ali {
|
|||
headers.put("User-Agent", Util.CHROME);
|
||||
headers.put("Referer", siteUrl + "stop.html");
|
||||
headers.put("Origin", siteUrl);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
Map<String, List<String>> resp = OkHttp.post(siteUrl + "logiu.html", params, headers).getResp();
|
||||
for (String item : resp.get("set-cookie")) sb.append(item.split(";")[0]).append(";");
|
||||
return sb.toString();
|
||||
OkHttp.post(siteUrl + "logiu.html", params, headers);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -56,6 +52,7 @@ public class Zhaozy extends Ali {
|
|||
super.init(context, split[0]);
|
||||
username = split[1];
|
||||
password = split[2];
|
||||
getCookie();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ public class Util {
|
|||
|
||||
public static final Pattern RULE = Pattern.compile("http((?!http).){12,}?\\.(m3u8|mp4|mkv|flv|mp3|m4a|aac)\\?.*|http((?!http).){12,}\\.(m3u8|mp4|mkv|flv|mp3|m4a|aac)|http((?!http).)*?video/tos*");
|
||||
public static final Pattern THUNDER = Pattern.compile("(magnet|thunder|ed2k):.*");
|
||||
public static final String CHROME = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36";
|
||||
public static final String CHROME = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36";
|
||||
public static final String ACCEPT = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7";
|
||||
public static final List<String> MEDIA = Arrays.asList("mp4", "mkv", "wmv", "flv", "avi", "iso", "mpg", "ts", "mp3", "aac", "flac", "m4a", "ape", "ogg");
|
||||
public static final List<String> SUB = Arrays.asList("srt", "ass", "ssa", "vtt");
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -1 +1 @@
|
|||
034284ac61c7bc4f5e9acf7937889bb3
|
||||
1c0a77c56998f8ac7484678ddb6e91d2
|
||||
|
|
|
|||
Loading…
Reference in New Issue