From e89a4460748774f6e4cb3b430a7c2fb5e3202b6e Mon Sep 17 00:00:00 2001 From: FongMi Date: Thu, 23 Jan 2025 17:30:44 +0800 Subject: [PATCH] Clean code --- .../java/com/github/catvod/spider/Living.java | 45 ++++++++---------- jar/custom_spider.jar | Bin 317354 -> 317627 bytes jar/custom_spider.jar.md5 | 2 +- 3 files changed, 21 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/com/github/catvod/spider/Living.java b/app/src/main/java/com/github/catvod/spider/Living.java index 6b661dc9..6badba6a 100644 --- a/app/src/main/java/com/github/catvod/spider/Living.java +++ b/app/src/main/java/com/github/catvod/spider/Living.java @@ -9,12 +9,9 @@ import com.github.catvod.bean.Filter; import com.github.catvod.bean.Result; import com.github.catvod.bean.Vod; import com.github.catvod.crawler.Spider; -import com.github.catvod.crawler.SpiderDebug; import com.github.catvod.net.OkHttp; import com.github.catvod.utils.LZString; -import com.github.catvod.utils.Strings; import com.github.catvod.utils.Util; -import com.google.gson.JsonElement; import org.json.JSONArray; import org.json.JSONException; @@ -23,10 +20,10 @@ import org.json.JSONObject; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; -import java.util.Map; import java.util.Objects; /** @@ -124,8 +121,7 @@ public class Living extends Spider { String url = host + "/api/" + tid + "/getCategories"; JSONObject json = request(url); String type = extend.get("type"); - if (TextUtils.isEmpty(type)) - type = json.optJSONArray("data").optJSONObject(0).optString("id"); + if (TextUtils.isEmpty(type)) type = json.optJSONArray("data").optJSONObject(0).optString("id"); List vodList = new ArrayList<>(); for (int i = 0; i < json.optJSONArray("data").length(); i++) { JSONObject data = json.optJSONArray("data").optJSONObject(i); @@ -140,8 +136,9 @@ public class Living extends Spider { } else { String[] split = tid.split("_"); String url = host + "/api/" + split[0] + "/getCategoryRooms?id=" + split[1] + "&pid=" + (split[0].equals("bilibili") ? "2" : "1") + "&page=" + pg; - if (!TextUtils.isEmpty(cookie)) + if (!TextUtils.isEmpty(cookie)) { url = url + "&cookie=" + URLDecoder.decode(cookie, "UTF-8"); + } JSONObject json = request(url); if (!TextUtils.isEmpty(json.optJSONObject("data").optString("cookie"))) { cookie = json.optJSONObject("data").optString("cookie"); @@ -192,6 +189,12 @@ public class Living extends Spider { return Result.string(vod); } + @Override + public String playerContent(String flag, String id, List vipFlags) throws Exception { + if (!id.startsWith("http")) id = "https:" + id; + return Result.get().url(id).toString(); + } + @Override public String searchContent(String key, boolean quick) throws Exception { return searchContent(key, quick, "1"); @@ -200,10 +203,10 @@ public class Living extends Spider { @Override public String searchContent(String key, boolean quick, String pg) throws Exception { List vodList = new ArrayList<>(); - vodList.addAll(searchWithSite("huya", key, quick, pg)); - vodList.addAll(searchWithSite("douyu", key, quick, pg)); - vodList.addAll(searchWithSite("douyin", key, quick, pg)); - vodList.addAll(searchWithSite("bilibili", key, quick, pg)); + vodList.addAll(searchWithSite("huya", key, pg)); + vodList.addAll(searchWithSite("douyu", key, pg)); + vodList.addAll(searchWithSite("douyin", key, pg)); + vodList.addAll(searchWithSite("bilibili", key, pg)); return Result.string(vodList); } @@ -215,27 +218,19 @@ public class Living extends Spider { : Objects.equals(en, "cc") ? "网易CC" : ""; } - private List searchWithSite(String site, String key, boolean quick, String pg) { - List vodList = new ArrayList<>(); + private List searchWithSite(String site, String key, String pg) { try { + List vodList = new ArrayList<>(); String url = host + "/api/" + site + "/searchRooms?page=" + pg + "&kw=" + key; JSONArray jsonArray = request(url).optJSONObject("data").optJSONArray("list"); for (int i = 0; i < jsonArray.length(); i++) { JSONObject item = jsonArray.getJSONObject(i); - vodList.add(new Vod(site + "_" + item.optString("roomId"), item.optString("nickname"), item.optString("cover") - , getSiteNameByEn(site) + "/" + item.optString("category") + "/" + item.optString("title"), false)); + vodList.add(new Vod(site + "_" + item.optString("roomId"), item.optString("nickname"), item.optString("cover"), getSiteNameByEn(site) + "/" + item.optString("category") + "/" + item.optString("title"), false)); } - } catch (Exception e) { - //ing + return vodList; + } catch (Exception ignored) { + return Collections.emptyList(); } - return vodList; - } - - @Override - public String playerContent(String flag, String id, List vipFlags) throws Exception { - String url = id; - if (!url.startsWith("http")) url = "https:" + url; - return Result.get().url(url).toString(); } private String getHuyaParam(String name, String code) throws UnsupportedEncodingException { diff --git a/jar/custom_spider.jar b/jar/custom_spider.jar index 510182695954324762656ca54da930f78884ef44..6995131bea9ae4042be1ac88dcac749f24a4b640 100644 GIT binary patch literal 317627 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