Compare commits

..

5 Commits

Author SHA1 Message Date
FongMi ac3b7c8b00 Fix 11 months ago
FongMi 55ad1d5dc6 Clean code 11 months ago
FongMi e89a446074 Clean code 11 months ago
FongMi 13cd8b7a74
Merge pull request #92 from WoKee/main 11 months ago
WoKee e9b901fe62
Living 增加搜索 11 months ago
  1. 57
      app/src/main/java/com/github/catvod/spider/Living.java
  2. BIN
      jar/custom_spider.jar
  3. 2
      jar/custom_spider.jar.md5

@ -13,16 +13,18 @@ import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.LZString; import com.github.catvod.utils.LZString;
import com.github.catvod.utils.Util; import com.github.catvod.utils.Util;
import org.json.JSONArray;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.URLDecoder; import java.net.URLDecoder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Objects;
/** /**
* @author leospring * @author leospring
@ -31,7 +33,7 @@ import java.util.Map;
public class Living extends Spider { public class Living extends Spider {
private String host = "https://lemonlive.deno.dev"; private String host = "https://lemonlive.deno.dev";
private String cookie = ""; private String cookie;
@Override @Override
public void init(Context context, String extend) throws Exception { public void init(Context context, String extend) throws Exception {
@ -134,7 +136,9 @@ public class Living extends Spider {
} else { } else {
String[] split = tid.split("_"); String[] split = tid.split("_");
String url = host + "/api/" + split[0] + "/getCategoryRooms?id=" + split[1] + "&pid=" + (split[0].equals("bilibili") ? "2" : "1") + "&page=" + pg; 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); JSONObject json = request(url);
if (!TextUtils.isEmpty(json.optJSONObject("data").optString("cookie"))) { if (!TextUtils.isEmpty(json.optJSONObject("data").optString("cookie"))) {
cookie = json.optJSONObject("data").optString("cookie"); cookie = json.optJSONObject("data").optString("cookie");
@ -187,9 +191,46 @@ public class Living extends Spider {
@Override @Override
public String playerContent(String flag, String id, List<String> vipFlags) throws Exception { public String playerContent(String flag, String id, List<String> vipFlags) throws Exception {
String url = id; if (!id.startsWith("http")) id = "https:" + id;
if (!url.startsWith("http")) url = "https:" + url; return Result.get().url(id).toString();
return Result.get().url(url).toString(); }
@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<Vod> vodList = new ArrayList<>();
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);
}
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<Vod> searchWithSite(String site, String key, String pg) {
try {
List<Vod> 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));
}
return vodList;
} catch (Exception ignored) {
return Collections.emptyList();
}
} }
private String getHuyaParam(String name, String code) throws UnsupportedEncodingException { private String getHuyaParam(String name, String code) throws UnsupportedEncodingException {
@ -206,7 +247,9 @@ public class Living extends Spider {
} }
private JSONObject request(String url) throws JSONException { private JSONObject request(String url) throws JSONException {
String str = OkHttp.string(url, Map.of("sec-fetch-site", "same-origin")); HashMap<String, String> map = new HashMap<>();
map.put("sec-fetch-site", "same-origin");
String str = OkHttp.string(url, map);
String result = LZString.decompressFromBase64(str.replaceAll(" ", "")); String result = LZString.decompressFromBase64(str.replaceAll(" ", ""));
return new JSONObject(result); return new JSONObject(result);
} }

Binary file not shown.

@ -1 +1 @@
2553b85b2f281ce4a4cbbc8d105cc7fd d3032c67b4ae4bd21fa7c070544a111a

Loading…
Cancel
Save