diff --git a/app/build.gradle b/app/build.gradle index 061985c9..066910f4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,7 +11,6 @@ android { minSdk 17 targetSdk 28 buildConfigField("String", "CLIENT_ID", "\"${clientId}\"") - multiDexEnabled true } buildTypes { @@ -31,11 +30,17 @@ android { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } + + configurations.configureEach { + resolutionStrategy { + force 'com.squareup.okhttp3:okhttp:3.12.13' + } + } } dependencies { - implementation('com.github.thegrizzlylabs:sardine-android:0.8') { exclude group: 'com.squareup.okhttp3', module: 'okhttp' } implementation 'com.googlecode.juniversalchardet:juniversalchardet:1.0.3' + implementation 'com.github.thegrizzlylabs:sardine-android:0.8' implementation 'wang.harlon.quickjs:wrapper-android:0.21.1' implementation 'com.squareup.okhttp3:okhttp:3.12.13' implementation 'com.google.code.gson:gson:2.8.6' diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 00a3288d..4c7831de 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -32,6 +32,9 @@ -keep class okio.** { *; } -keep class okhttp3.** { *; } +# QuickJS +-keep class com.whl.quickjs.** { *; } + # Sardine -keep class com.thegrizzlylabs.sardineandroid.** { *; } diff --git a/app/src/main/java/com/github/catvod/spider/Duanju.java b/app/src/main/java/com/github/catvod/spider/Duanju.java index 6127c63a..90ce8d5a 100644 --- a/app/src/main/java/com/github/catvod/spider/Duanju.java +++ b/app/src/main/java/com/github/catvod/spider/Duanju.java @@ -39,10 +39,7 @@ public class Duanju extends Spider { @Override public void init(Context context, String extend) throws Exception { - super.init(context, extend); - if (!extend.isEmpty()) { - siteUrl = extend; - } + if (!extend.isEmpty()) siteUrl = extend; } @Override @@ -85,7 +82,7 @@ public class Duanju extends Spider { public String detailContent(List ids) throws Exception { Document doc = Jsoup.parse(OkHttp.string(ids.get(0), getHeader())); Elements circuits = doc.select(".module-tab-item.tab-item"); - Elements sources = doc.select("[class=scroll-content]"); + Elements sources = doc.select("[class=scroll-content]"); StringBuilder vod_play_url = new StringBuilder(); StringBuilder vod_play_from = new StringBuilder(); for (int i = 0; i < sources.size(); i++) { diff --git a/app/src/main/java/com/github/catvod/spider/Kanqiu.java b/app/src/main/java/com/github/catvod/spider/Kanqiu.java index e881e499..6dce4754 100644 --- a/app/src/main/java/com/github/catvod/spider/Kanqiu.java +++ b/app/src/main/java/com/github/catvod/spider/Kanqiu.java @@ -37,10 +37,7 @@ public class Kanqiu extends Spider { @Override public void init(Context context, String extend) throws Exception { - super.init(context, extend); - if (!extend.isEmpty()) { - siteUrl = extend; - } + if (!extend.isEmpty()) siteUrl = extend; } @Override diff --git a/app/src/main/java/com/github/catvod/spider/Wogg.java b/app/src/main/java/com/github/catvod/spider/Wogg.java index ef830b26..cabeeb16 100644 --- a/app/src/main/java/com/github/catvod/spider/Wogg.java +++ b/app/src/main/java/com/github/catvod/spider/Wogg.java @@ -32,7 +32,7 @@ public class Wogg extends Ali { private final Pattern regexCategory = Pattern.compile("/vodtype/(\\w+).html"); private final Pattern regexPageTotal = Pattern.compile("\\$\\(\"\\.mac_total\"\\)\\.text\\('(\\d+)'\\);"); - private JsonObject extend; + private JsonObject ext; private Map getHeader() { Map header = new HashMap<>(); @@ -42,14 +42,14 @@ public class Wogg extends Ali { @Override public void init(Context context, String extend) { - this.extend = JsonParser.parseString(extend).getAsJsonObject(); - super.init(context, this.extend.get("token").getAsString()); + ext = JsonParser.parseString(extend).getAsJsonObject(); + super.init(context, ext.has("token") ? ext.get("token").getAsString() : ""); } @Override public String homeContent(boolean filter) { List classes = new ArrayList<>(); - String url = extend.has("filter") ? extend.get("filter").getAsString() : ""; + String url = ext.has("filter") ? ext.get("filter").getAsString() : ""; Document doc = Jsoup.parse(OkHttp.string(client(), siteUrl, getHeader())); Elements elements = doc.select(".nav-link"); for (Element e : elements) { @@ -105,8 +105,8 @@ public class Wogg extends Ali { List shareLinks = doc.select(".module-row-text").eachAttr("data-clipboard-text"); for (int i = 0; i < shareLinks.size(); i++) shareLinks.set(i, shareLinks.get(i).trim()); - item.setVodPlayFrom(super.detailContentVodPlayFrom(shareLinks)); - item.setVodPlayUrl(super.detailContentVodPlayUrl(shareLinks)); + item.setVodPlayFrom(detailContentVodPlayFrom(shareLinks)); + item.setVodPlayUrl(detailContentVodPlayUrl(shareLinks)); Elements elements = doc.select(".video-info-item"); for (Element e : elements) { diff --git a/app/src/main/java/com/github/catvod/spider/Yingshiche.java b/app/src/main/java/com/github/catvod/spider/Yingshiche.java index fb4d5e2f..8a7ed5ee 100644 --- a/app/src/main/java/com/github/catvod/spider/Yingshiche.java +++ b/app/src/main/java/com/github/catvod/spider/Yingshiche.java @@ -30,15 +30,9 @@ import com.google.gson.JsonParser; /** * @author Qile */ -public class Yingshiche extends Spider { +public class Yingshiche extends Ali { - private static String siteUrl = "https://www.weixine.net"; - private JsonObject extend; - private final Ali ali; - - public Yingshiche() { - ali = new Ali(); - } + private final String siteUrl = "https://www.weixine.net"; private Map getHeader() { Map header = new HashMap<>(); @@ -46,19 +40,12 @@ public class Yingshiche extends Spider { return header; } - @Override - public void init(Context context, String extend) throws Exception { - this.extend = JsonParser.parseString(extend).getAsJsonObject(); - ali.init(context, this.extend.get("token").getAsString()); - } - @Override public String homeContent(boolean filter) throws Exception { List classes = new ArrayList<>(); List typeIds = Arrays.asList("2", "1", "4", "3", "5", "6"); List typeNames = Arrays.asList("电视剧", "电影", "综艺", "动漫", "短剧", "音乐"); - for (int i = 0; i < typeIds.size(); i++) - classes.add(new Class(typeIds.get(i), typeNames.get(i))); + for (int i = 0; i < typeIds.size(); i++) classes.add(new Class(typeIds.get(i), typeNames.get(i))); String f = "{\"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\": \"冒险\"}, {\"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\": \"其他\"}]}, {\"key\": \"year\", \"name\": \"年份\", \"value\": [{\"n\": \"全部\", \"v\": \"\"}, {\"n\": \"2023\", \"v\": \"2023\"}, {\"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\"}]}, {\"key\": \"by\", \"name\": \"排序\", \"value\": [{\"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\": \"冒险\"}, {\"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\": \"其他\"}]}, {\"key\": \"year\", \"name\": \"年份\", \"value\": [{\"n\": \"全部\", \"v\": \"\"}, {\"n\": \"2023\", \"v\": \"2023\"}, {\"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\"}]}, {\"key\": \"by\", \"name\": \"排序\", \"value\": [{\"n\": \"时间\", \"v\": \"time\"}, {\"n\": \"人气\", \"v\": \"hits\"}, {\"n\": \"评分\", \"v\": \"score\"}]}],\"3\": [{\"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\": \"少年\"}, {\"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\": \"2023\", \"v\": \"2023\"}, {\"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\"}]}, {\"key\": \"by\", \"name\": \"排序\", \"value\": [{\"n\": \"时间\", \"v\": \"time\"}, {\"n\": \"人气\", \"v\": \"hits\"}, {\"n\": \"评分\", \"v\": \"score\"}]}], \"4\": [{\"key\": \"area\", \"name\": \"地区\", \"value\": [{\"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\": \"2023\", \"v\": \"2023\"}, {\"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\"}]}, {\"key\": \"by\", \"name\": \"排序\", \"value\": [{\"n\": \"时间\", \"v\": \"time\"}, {\"n\": \"人气\", \"v\": \"hits\"}, {\"n\": \"评分\", \"v\": \"score\"}]}], \"6\": [{\"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\": \"情景\"}, {\"n\": \"商战\", \"v\": \"商战\"}, {\"n\": \"网剧\", \"v\": \"网剧\"}, {\"n\": \"其他\", \"v\": \"其他\"}]}, {\"key\": \"area\", \"name\": \"地区\", \"value\": [{\"n\": \"全部\", \"v\": \"\"}, {\"n\": \"内地\", \"v\": \"内地\"}]}, {\"key\": \"year\", \"name\": \"年份\", \"value\": [{\"n\": \"全部\", \"v\": \"\"}, {\"n\": \"2023\", \"v\": \"2023\"}, {\"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\"}]}, {\"key\": \"by\", \"name\": \"排序\", \"value\": [{\"n\": \"时间\", \"v\": \"time\"}, {\"n\": \"人气\", \"v\": \"hits\"}, {\"n\": \"评分\", \"v\": \"score\"}]}]}"; JSONObject filterConfig = new JSONObject(f); Document doc = Jsoup.parse(OkHttp.string(siteUrl, getHeader())); @@ -80,8 +67,7 @@ public class Yingshiche extends Spider { String year = extend.get("year") == null ? "" : extend.get("year"); String by = extend.get("by") == null ? "" : extend.get("by"); String classType = extend.get("class") == null ? "" : extend.get("class"); - String cateUrl = siteUrl - + String.format("/vodshow/%s-%s-%s-%s-----%s---%s.html", cateId, area, by, classType, pg, year); + String cateUrl = String.format(siteUrl + "/vodshow/%s-%s-%s-%s-----%s---%s.html", cateId, area, by, classType, pg, year); Document doc = Jsoup.parse(OkHttp.string(cateUrl, getHeader())); List list = new ArrayList<>(); for (Element li : doc.select(".module-items .module-item")) { @@ -102,7 +88,7 @@ public class Yingshiche extends Spider { for (int i = 0; i < shareLinks.size(); i++) shareLinks.set(i, shareLinks.get(i).trim()); for (String link : shareLinks) { if (link.contains("alipan.com") || link.contains("aliyundrive.com")) { - vod_play.put(ali.detailContentVodPlayFrom(Arrays.asList(link)), ali.detailContentVodPlayUrl(Arrays.asList(link))); + vod_play.put(detailContentVodPlayFrom(Arrays.asList(link)), detailContentVodPlayUrl(Arrays.asList(link))); } } String title = doc.selectFirst(".video-info-header > .page-title").text(); @@ -166,9 +152,4 @@ public class Yingshiche extends Spider { } return Result.string(list); } - - @Override - public String playerContent(String flag, String id, List vipFlags) throws Exception { - return ali.playerContent(flag, id, vipFlags); - } } diff --git a/jar/custom_spider.jar b/jar/custom_spider.jar index 245f2a44..f7d41e18 100644 Binary files a/jar/custom_spider.jar and b/jar/custom_spider.jar differ diff --git a/jar/custom_spider.jar.md5 b/jar/custom_spider.jar.md5 index 83727786..5ee7718a 100644 --- a/jar/custom_spider.jar.md5 +++ b/jar/custom_spider.jar.md5 @@ -1 +1 @@ -a1 64 e2 fb 55 14 55 1f 7a bb f2 0e 0f 02 f4 92 +104fe5b844fc2bf63f2082c5a9b8b4aa