diff --git a/app/src/main/java/com/github/catvod/spider/JavDb.java b/app/src/main/java/com/github/catvod/spider/JavDb.java new file mode 100644 index 00000000..2ef318d4 --- /dev/null +++ b/app/src/main/java/com/github/catvod/spider/JavDb.java @@ -0,0 +1,136 @@ +package com.github.catvod.spider; + +import android.content.Context; +import android.net.Uri; +import android.text.TextUtils; + +import com.github.catvod.bean.Class; +import com.github.catvod.bean.Result; +import com.github.catvod.bean.Vod; +import com.github.catvod.crawler.Spider; +import com.github.catvod.net.OkHttp; +import com.github.catvod.utils.Util; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author Qile + */ + +public class JavDb extends Spider { + + private static String siteUrl = "https://javdb523.com"; + @Override + public void init(Context context, String extend) throws Exception { + if(!extend.isEmpty()) + siteUrl = extend; + } + + private Map getHeader() { + Map header = new HashMap<>(); + header.put("User-Agent", Util.CHROME); + header.put("Referer", siteUrl+"/"); + return header; + } + + @Override + public String homeContent(boolean filter) throws Exception { + List classes = new ArrayList<>(); + List typeIds = Arrays.asList("", "censored", "uncensored", "western"); + List typeNames = Arrays.asList("全部", "有码", "无码", "欧美"); + for (int i = 0; i < typeIds.size(); i++) + classes.add(new Class(typeIds.get(i), typeNames.get(i))); + Document doc = Jsoup.parse(OkHttp.string(siteUrl, getHeader())); + List list = new ArrayList<>(); + for (Element li : doc.select(".item")) { + String vid = siteUrl + li.select("a").attr("href"); + String name = li.select("a").attr("title"); + String pic = li.select("img").attr("src"); + list.add(new Vod(vid, name, pic)); + } + return Result.string(classes, list); + } + + @Override + public String categoryContent(String tid, String pg, boolean filter, HashMap extend) + throws Exception { + String cateUrl = siteUrl + String.format("/%s?page=%s", tid, pg); + Document doc = Jsoup.parse(OkHttp.string(cateUrl, getHeader())); + List list = new ArrayList<>(); + for (Element li : doc.select(".item")) { + String vid = siteUrl + li.select("a").attr("href"); + String name = li.select("a").attr("title"); + String pic = li.select("img").attr("src"); + list.add(new Vod(vid, name, pic)); + } + return Result.string(list); + } + + @Override + public String detailContent(List ids) throws Exception { + Document doc = Jsoup.parse(OkHttp.string(ids.get(0), getHeader())); + if(doc.text().contains("歡迎登入")) return Result.error("该资源需要登入");; + List vodItems = new ArrayList<>(); + Elements sourceList = doc.select(".item.columns"); + for (Element a : sourceList) { + String episodeUrl = a.select("div a").attr("href"); + String episodeName = a.select("div a").text(); + vodItems.add(episodeName + "$" + episodeUrl); + } + Elements elements = doc.select(".panel-block"); + String classifyName = ""; + String year = ""; + String area = ""; + String remark = ""; + for (Element element : elements) { + String text = element.text(); + if (text.startsWith("類別:")) { + classifyName = element.select("span a").text(); + } else if (text.startsWith("片商:")) { + area = element.select("span a").text(); + } else if (text.startsWith("日期:")) { + year = element.select("span").text(); + } else if (text.startsWith("時長:")) { + remark = element.select("span").text(); + } + } + Vod vod = new Vod(); + vod.setVodId(ids.get(0)); + vod.setVodYear(year); + vod.setVodArea(area); + vod.setVodRemarks(remark); + vod.setTypeName(classifyName); + vod.setVodContent(ids.get(0)); + vod.setVodPlayFrom("Qile"); + vod.setVodPlayUrl(TextUtils.join("#", vodItems)); + return Result.string(vod); + } + + @Override + public String searchContent(String key, boolean quick) throws Exception { + String searchUrl = siteUrl + "/search?q=" + Uri.encode(key) + "&f=all"; + Document doc = Jsoup.parse(OkHttp.string(searchUrl, getHeader())); + List list = new ArrayList<>(); + for (Element li : doc.select(".item")) { + String vid = siteUrl + li.select("a").attr("href"); + String name = li.select("a").attr("title"); + String pic = li.select("img").attr("src"); + list.add(new Vod(vid, name, pic)); + } + return Result.string(list); + } + + @Override + public String playerContent(String flag, String id, List vipFlags) throws Exception { + return Result.get().url(id).header(getHeader()).string(); + } +} diff --git a/jar/custom_spider.jar b/jar/custom_spider.jar index 1970f091..a2791b56 100644 Binary files a/jar/custom_spider.jar and b/jar/custom_spider.jar differ diff --git a/jar/custom_spider.jar.md5 b/jar/custom_spider.jar.md5 index eb955720..c60565dc 100644 --- a/jar/custom_spider.jar.md5 +++ b/jar/custom_spider.jar.md5 @@ -1 +1 @@ -60be8553ec8072f56c9f73452fd83d71 +b3 12 0d 7a 56 20 43 aa 14 d9 2f bf 5a d1 79 ee