|
|
|
|
@ -30,6 +30,7 @@ import java.util.LinkedHashMap; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.Objects; |
|
|
|
|
import java.util.concurrent.CountDownLatch; |
|
|
|
|
|
|
|
|
|
public class AList extends Spider { |
|
|
|
|
|
|
|
|
|
@ -140,17 +141,46 @@ public class AList extends Spider { |
|
|
|
|
return Result.string(vod); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private Item getDetail(String id) { |
|
|
|
|
try { |
|
|
|
|
String key = id.contains("/") ? id.substring(0, id.indexOf("/")) : id; |
|
|
|
|
String path = id.contains("/") ? id.substring(id.indexOf("/") + 1) : ""; |
|
|
|
|
String url = ext.get(key) + (v3(key) ? "/api/fs/get" : "/api/public/path"); |
|
|
|
|
JSONObject params = new JSONObject(); |
|
|
|
|
params.put("path", path); |
|
|
|
|
String response = OkHttpUtil.postJson(url, params.toString()); |
|
|
|
|
String json = v3(key) ? new JSONObject(response).getJSONObject("data").toString() : new JSONObject(response).getJSONObject("data").getJSONArray("files").getJSONObject(0).toString(); |
|
|
|
|
return Item.objectFrom(json); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
return new Item(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private List<Item> getList(String id, boolean filter) { |
|
|
|
|
try { |
|
|
|
|
String key = id.contains("/") ? id.substring(0, id.indexOf("/")) : id; |
|
|
|
|
String path = id.contains("/") ? id.substring(id.indexOf("/") + 1) : ""; |
|
|
|
|
String url = ext.get(key) + (v3(key) ? "/api/fs/list" : "/api/public/path"); |
|
|
|
|
JSONObject params = new JSONObject(); |
|
|
|
|
params.put("path", path); |
|
|
|
|
String response = OkHttpUtil.postJson(url, params.toString()); |
|
|
|
|
String json = new JSONObject(response).getJSONObject("data").getJSONArray(v3(key) ? "content" : "files").toString(); |
|
|
|
|
List<Item> items = Item.arrayFrom(json); |
|
|
|
|
Iterator<Item> iterator = items.iterator(); |
|
|
|
|
if (filter) while (iterator.hasNext()) if (iterator.next().ignore(v3(key))) iterator.remove(); |
|
|
|
|
return items; |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
return Collections.emptyList(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public String searchContent(String keyword, boolean quick) throws Exception { |
|
|
|
|
fetchRule(); |
|
|
|
|
List<Vod> list = new ArrayList<>(); |
|
|
|
|
JSONObject params = new JSONObject(); |
|
|
|
|
params.put("path", "/"); |
|
|
|
|
params.put("keyword", keyword); |
|
|
|
|
for (String key : ext.keySet()) { |
|
|
|
|
if (v3(key)) list.addAll(getV3List(keyword, key)); |
|
|
|
|
else list.addAll(getV2List(params.toString(), key)); |
|
|
|
|
} |
|
|
|
|
CountDownLatch cd = new CountDownLatch(ext.size()); |
|
|
|
|
for (String key : ext.keySet()) new Thread(() -> search(cd, list, key, keyword)).start(); |
|
|
|
|
cd.await(); |
|
|
|
|
return Result.string(list); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -160,10 +190,26 @@ public class AList extends Spider { |
|
|
|
|
return Result.get().url(ids[0]).sub(getSub(ids)).string(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private List<Vod> getV3List(String param, String key) { |
|
|
|
|
private String getParams(String keyword) { |
|
|
|
|
try { |
|
|
|
|
JSONObject params = new JSONObject(); |
|
|
|
|
params.put("path", "/"); |
|
|
|
|
params.put("keyword", keyword); |
|
|
|
|
return params.toString(); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
return ""; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void search(CountDownLatch cd, List<Vod> list, String key, String keyword) { |
|
|
|
|
if (v3(key)) searchV3(list, key, keyword); |
|
|
|
|
else searchV2(list, key, getParams(keyword)); |
|
|
|
|
cd.countDown(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void searchV3(List<Vod> list, String key, String param) { |
|
|
|
|
String url = ext.get(key) + "/search?box=" + param + "&url="; |
|
|
|
|
Document doc = Jsoup.parse(OkHttpUtil.string(url)); |
|
|
|
|
List<Vod> items = new ArrayList<>(); |
|
|
|
|
for (Element a : doc.select("ul > a")) { |
|
|
|
|
String text = a.text(); |
|
|
|
|
String[] splits = text.split("\\."); |
|
|
|
|
@ -174,56 +220,19 @@ public class AList extends Spider { |
|
|
|
|
item.setPath("/" + text.substring(0, index)); |
|
|
|
|
item.setName(text.substring(index + 1)); |
|
|
|
|
item.setType(file ? 0 : 1); |
|
|
|
|
items.add(item.getVod(key)); |
|
|
|
|
list.add(item.getVod(key)); |
|
|
|
|
} |
|
|
|
|
return items; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private List<Vod> getV2List(String param, String key) { |
|
|
|
|
private void searchV2(List<Vod> list, String key, String param) { |
|
|
|
|
try { |
|
|
|
|
if (v3(key)) return Collections.emptyList(); |
|
|
|
|
List<Vod> list = new ArrayList<>(); |
|
|
|
|
String url = ext.get(key) + "/api/public/search"; |
|
|
|
|
String response = OkHttpUtil.postJson(url, param); |
|
|
|
|
String json = new JSONObject(response).getJSONArray("data").toString(); |
|
|
|
|
List<Item> items = Item.arrayFrom(json); |
|
|
|
|
for (Item item : items) if (!item.ignore(false)) list.add(item.getVod(key)); |
|
|
|
|
return list; |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
return Collections.emptyList(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private List<Item> getList(String id, boolean filter) { |
|
|
|
|
try { |
|
|
|
|
String key = id.contains("/") ? id.substring(0, id.indexOf("/")) : id; |
|
|
|
|
String path = id.contains("/") ? id.substring(id.indexOf("/") + 1) : ""; |
|
|
|
|
String url = ext.get(key) + (v3(key) ? "/api/fs/list" : "/api/public/path"); |
|
|
|
|
JSONObject params = new JSONObject(); |
|
|
|
|
params.put("path", path); |
|
|
|
|
String response = OkHttpUtil.postJson(url, params.toString()); |
|
|
|
|
String json = new JSONObject(response).getJSONObject("data").getJSONArray(v3(key) ? "content" : "files").toString(); |
|
|
|
|
List<Item> items = Item.arrayFrom(json); |
|
|
|
|
Iterator<Item> iterator = items.iterator(); |
|
|
|
|
if (filter) while (iterator.hasNext()) if (iterator.next().ignore(v3(key))) iterator.remove(); |
|
|
|
|
return items; |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
return Collections.emptyList(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private Item getDetail(String id) { |
|
|
|
|
try { |
|
|
|
|
String key = id.contains("/") ? id.substring(0, id.indexOf("/")) : id; |
|
|
|
|
String path = id.contains("/") ? id.substring(id.indexOf("/") + 1) : ""; |
|
|
|
|
String url = ext.get(key) + (v3(key) ? "/api/fs/get" : "/api/public/path"); |
|
|
|
|
JSONObject params = new JSONObject(); |
|
|
|
|
params.put("path", path); |
|
|
|
|
String response = OkHttpUtil.postJson(url, params.toString()); |
|
|
|
|
String json = v3(key) ? new JSONObject(response).getJSONObject("data").toString() : new JSONObject(response).getJSONObject("data").getJSONArray("files").getJSONObject(0).toString(); |
|
|
|
|
return Item.objectFrom(json); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
return new Item(); |
|
|
|
|
e.printStackTrace(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|