|
|
|
|
@ -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<Vod> 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<Vod> 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<Vod> searchWithSite(String site, String key, boolean quick, String pg) { |
|
|
|
|
List<Vod> 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<String> 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<String, String> 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); |
|
|
|
|
} |
|
|
|
|
|