Taohuazu.java 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. package com.github.catvod.spider;
  2. import android.content.Context;
  3. import android.text.TextUtils;
  4. import com.github.catvod.bean.Class;
  5. import com.github.catvod.bean.Result;
  6. import com.github.catvod.bean.Vod;
  7. import com.github.catvod.crawler.Spider;
  8. import com.github.catvod.net.OkHttp;
  9. import com.github.catvod.utils.Notify;
  10. import com.github.catvod.utils.Path;
  11. import com.github.catvod.utils.Util;
  12. import com.google.gson.JsonObject;
  13. import com.google.gson.JsonParser;
  14. import org.json.JSONObject;
  15. import org.jsoup.Jsoup;
  16. import org.jsoup.nodes.Document;
  17. import org.jsoup.nodes.Element;
  18. import org.jsoup.select.Elements;
  19. import java.io.File;
  20. import java.io.FileOutputStream;
  21. import java.io.InputStream;
  22. import java.net.URLDecoder;
  23. import java.net.URLEncoder;
  24. import java.util.ArrayList;
  25. import java.util.Arrays;
  26. import java.util.HashMap;
  27. import java.util.LinkedHashMap;
  28. import java.util.List;
  29. import java.util.Map;
  30. import java.util.regex.Matcher;
  31. import java.util.regex.Pattern;
  32. import okhttp3.ResponseBody;
  33. import com.github.catvod.bean.torrent.*;
  34. public class Taohuazu extends Spider {
  35. private String siteUrl = "http://thzr.cc/";//自己加什么也不知道
  36. private JsonObject extend;
  37. private HashMap<String, String> getHeaders() {
  38. HashMap<String, String> headers = new HashMap<>();
  39. headers.put("User-Agent", Util.CHROME);
  40. return headers;
  41. }
  42. private Map<String, String> getHeader() {
  43. Map<String, String> header = new HashMap<>();
  44. header.put("User-Agent", Util.CHROME);
  45. return header;
  46. }
  47. @Override
  48. public String homeContent(boolean filter) throws Exception {
  49. List<Class> classes = new ArrayList<>();
  50. List<String> typeIds = Arrays.asList("181", "220", "182", "69");
  51. List<String> typeNames = Arrays.asList("亚洲无", "亚洲有", "欧美无", "国内原创");
  52. for (int i = 0; i < typeIds.size(); i++) classes.add(new Class(typeIds.get(i), typeNames.get(i)));
  53. String f = "{}";//自己加什么也不知道
  54. JSONObject filterConfig = new JSONObject(f);
  55. return Result.string(classes, filterConfig);
  56. }
  57. @Override
  58. public String categoryContent(String tid, String pg, boolean filter, HashMap<String, String> extend) {
  59. String cateId = extend.get("cateId") == null ? tid : extend.get("cateId");
  60. String classType = extend.get("class") == null ? "" : extend.get("class");
  61. String cateUrl = siteUrl + String.format("/forum.php?mod=forumdisplay&fid=%s&filter=typeid&typeid=%s&page=%s",cateId , classType,pg);
  62. Document doc =Jsoup.parse(OkHttp.string(cateUrl, getHeader()));
  63. int page = Integer.parseInt(pg), limit = 60, total = 0;
  64. int count = 500000;
  65. return Result.get().vod(parseVodListFromDoc(doc)).page(page, count, limit, total).string();
  66. }
  67. private List<Vod> parseVodListFromDoc(Document doc) {
  68. List<Vod> list = new ArrayList<>();
  69. Elements elements = doc.select("tbody[id^=normalthread_]");
  70. for (Element e : elements) {
  71. String vodId = e.selectFirst("tr .icn a").attr("href");
  72. String vodPic = "";
  73. String vodName = e.selectFirst("tr th .s.xst").text();
  74. String vodRemarks = e.selectFirst("tr th em a").text();
  75. list.add(new Vod(vodId, vodName, vodPic, vodRemarks));
  76. }
  77. return list;
  78. }
  79. @Override
  80. public String detailContent(List<String> ids) throws Exception {
  81. String vodId = ids.get(0);
  82. Document doc = Jsoup.parse(OkHttp.string(siteUrl + vodId, getHeader()));
  83. Vod item = new Vod();
  84. item.setVodId(vodId);
  85. item.setVodName(doc.selectFirst("#thread_subject").text());
  86. Map<String, String> sites = new LinkedHashMap<>();
  87. String sourceName = "气氛搞起来";
  88. List<String> vodItems = new ArrayList<>();
  89. String tmpplay=doc.select(".attnm a").attr("href");
  90. String[] lines = tmpplay.split("aid=");
  91. String player = siteUrl+"/forum.php?mod=attachment&aid="+lines[1];
  92. ResponseBody responseBody=OkHttp.newCall(siteUrl+"/forum.php?mod=attachment&aid="+lines[1]).body();
  93. assert responseBody != null;
  94. InputStream rInputStream = responseBody.byteStream();
  95. // 创建读取字节流的byte数组
  96. byte[] buffer = new byte[5000];
  97. int areRead;
  98. // 创建文件输出流
  99. FileOutputStream outputStream = new FileOutputStream(getCache());
  100. // 使用输入流读取字节,在输出到文件
  101. while ((areRead = rInputStream.read(buffer)) != -1) {
  102. outputStream.write(buffer, 0, areRead);
  103. }
  104. rInputStream.close();
  105. outputStream.close();
  106. TorrentFile torrentFile = TorrentFileUtils.resolve(getCache().toString());
  107. vodItems.add("气氛搞起来" + "$" + torrentFile.getMagnetUri());
  108. sites.put(sourceName, TextUtils.join("#", vodItems));
  109. item.setVodPlayFrom(TextUtils.join("$$$", sites.keySet()));
  110. item.setVodPlayUrl(TextUtils.join("$$$", sites.values()));
  111. return Result.string(item);
  112. }
  113. @Override
  114. public String searchContent(String key, boolean quick) throws Exception {
  115. return searchContent(key, "1");
  116. }
  117. @Override
  118. public String searchContent(String key, boolean quick, String pg) throws Exception {
  119. return searchContent(key, pg);
  120. }
  121. private String searchContent(String key, String pg) {
  122. List<Vod> list = new ArrayList<>();
  123. return Result.string(list);
  124. }
  125. @Override
  126. public String playerContent(String flag, String id, List<String> vipFlags) throws Exception {
  127. return Result.get().url(id).header(getHeader()).string();
  128. }
  129. public File getCache() {
  130. return Path.tv("搞得贼爽.torrent");
  131. }
  132. }