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 5ae6414..6b661dc 100644 --- a/app/src/main/java/com/github/catvod/spider/Living.java +++ b/app/src/main/java/com/github/catvod/spider/Living.java @@ -9,10 +9,14 @@ 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; import org.json.JSONObject; @@ -23,6 +27,7 @@ import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; /** * @author leospring @@ -119,7 +124,8 @@ 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); @@ -134,7 +140,8 @@ 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)) url = url + "&cookie=" + URLDecoder.decode(cookie, "UTF-8"); + 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"); @@ -185,6 +192,45 @@ public class Living extends Spider { return Result.string(vod); } + @Override + public String searchContent(String key, boolean quick) throws Exception { + return searchContent(key, quick, "1"); + } + + @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)); + return Result.string(vodList); + } + + private String getSiteNameByEn(String en) { + return Objects.equals(en, "huya") ? "虎牙" + : Objects.equals(en, "douyu") ? "斗鱼" + : Objects.equals(en, "douyin") ? "抖音" + : Objects.equals(en, "bilibili") ? "哔哩哔哩" + : Objects.equals(en, "cc") ? "网易CC" : ""; + } + + private List searchWithSite(String site, String key, boolean quick, String pg) { + List vodList = new ArrayList<>(); + try { + 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)); + } + } catch (Exception e) { + //ing + } + return vodList; + } + @Override public String playerContent(String flag, String id, List vipFlags) throws Exception { String url = id; @@ -206,7 +252,9 @@ public class Living extends Spider { } private JSONObject request(String url) throws JSONException { - String str = OkHttp.string(url, Map.of("sec-fetch-site", "same-origin")); + HashMap map = new HashMap<>(); + map.put("sec-fetch-site", "same-origin"); + String str = OkHttp.string(url, map); String result = LZString.decompressFromBase64(str.replaceAll(" ", "")); return new JSONObject(result); }