|
|
@@ -389,6 +389,151 @@ public class CrawlerServiceImpl implements CrawlerService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * findIkoaMovieDownloadLog
|
|
|
+ *
|
|
|
+ * @author lvzhiqiang
|
|
|
+ * 2022/9/26 23:22
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public String findIkoaMovieDownloadLog(String page, String sort) throws Exception {
|
|
|
+ log.warn("findIkoaMovieDownloadLog 开始:page={}", page);
|
|
|
+ // 获取ikoa常量MAP
|
|
|
+ Map<String, String> ikoaConstantMap = dicCodeMapper.findAll().stream()
|
|
|
+ .filter(x -> "ikoa".equals(x.getCodeDesc()) && x.getEnv().contains(env))
|
|
|
+ .collect(Collectors.toMap(DicCode::getCodeKey, DicCode::getCodeValue, (key1, key2) -> key1));
|
|
|
+
|
|
|
+ // 代理及TOKEN设置
|
|
|
+ Proxy proxy;
|
|
|
+ if ("dev".equals(env)) {
|
|
|
+ proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("127.0.0.1", 1080));
|
|
|
+ } else {
|
|
|
+ proxy = Proxy.NO_PROXY;
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(ikoaToken)) {
|
|
|
+ generateIkoaToken(ikoaConstantMap, proxy);
|
|
|
+ }
|
|
|
+
|
|
|
+ Connection.Response response;
|
|
|
+ StringBuffer sb = new StringBuffer();
|
|
|
+ JSONObject result = null;
|
|
|
+
|
|
|
+ // 查全部
|
|
|
+ JSONArray ja = new JSONArray();
|
|
|
+ if (StringUtils.isEmpty(page)) {
|
|
|
+ // 查第一页
|
|
|
+ int totalPage = 0;
|
|
|
+ for (int i = 0; i < 3; i++) {
|
|
|
+ try {
|
|
|
+ response = Jsoup.connect(ikoaConstantMap.get("download_log_url"))
|
|
|
+ .header("Authorization", "Token " + ikoaToken)
|
|
|
+ .timeout(50000)
|
|
|
+ .proxy(proxy)
|
|
|
+ .data("page", "1")
|
|
|
+ .ignoreContentType(true)
|
|
|
+ .userAgent(getUserAgent())
|
|
|
+ .header("referer", ikoaConstantMap.get("referer"))
|
|
|
+ .method(Connection.Method.GET)
|
|
|
+ .execute();
|
|
|
+ result = JSONObject.parseObject(response.body());
|
|
|
+ ja.addAll(result.getJSONArray("data"));
|
|
|
+ totalPage = result.getInteger("total_page");
|
|
|
+ break;
|
|
|
+ } catch (HttpStatusException hse) {
|
|
|
+ generateIkoaToken(ikoaConstantMap, proxy);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("IKOA DownloadLog异常,ikoaConstantMap={},result={}", ikoaConstantMap, result.toString(), e);
|
|
|
+ if (i == 2) {
|
|
|
+ throw new Exception("IKOA DownloadLog异常!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (totalPage > 1) {
|
|
|
+ for (int j = 2; j <= totalPage; j++) {
|
|
|
+ for (int k = 0; k < 3; k++) {
|
|
|
+ try {
|
|
|
+ response = Jsoup.connect(ikoaConstantMap.get("download_log_url"))
|
|
|
+ .header("Authorization", "Token " + ikoaToken)
|
|
|
+ .timeout(50000)
|
|
|
+ .proxy(proxy)
|
|
|
+ .data("page", String.valueOf(j))
|
|
|
+ .ignoreContentType(true)
|
|
|
+ .userAgent(getUserAgent())
|
|
|
+ .header("referer", ikoaConstantMap.get("referer"))
|
|
|
+ .method(Connection.Method.GET)
|
|
|
+ .execute();
|
|
|
+ result = JSONObject.parseObject(response.body());
|
|
|
+ ja.addAll(result.getJSONArray("data"));
|
|
|
+ break;
|
|
|
+ } catch (HttpStatusException hse) {
|
|
|
+ generateIkoaToken(ikoaConstantMap, proxy);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("IKOA DownloadLog异常,ikoaConstantMap={},result={}", ikoaConstantMap, result.toString(), e);
|
|
|
+ if (k == 2) {
|
|
|
+ throw new Exception("IKOA DownloadLog异常!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 查某页
|
|
|
+ for (int i = 0; i < 3; i++) {
|
|
|
+ try {
|
|
|
+ response = Jsoup.connect(ikoaConstantMap.get("download_log_url"))
|
|
|
+ .header("Authorization", "Token " + ikoaToken)
|
|
|
+ .timeout(50000)
|
|
|
+ .proxy(proxy)
|
|
|
+ .data("page", page)
|
|
|
+ .ignoreContentType(true)
|
|
|
+ .userAgent(getUserAgent())
|
|
|
+ .header("referer", ikoaConstantMap.get("referer"))
|
|
|
+ .method(Connection.Method.GET)
|
|
|
+ .execute();
|
|
|
+ result = JSONObject.parseObject(response.body());
|
|
|
+ ja.addAll(result.getJSONArray("data"));
|
|
|
+ break;
|
|
|
+ } catch (HttpStatusException hse) {
|
|
|
+ generateIkoaToken(ikoaConstantMap, proxy);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("IKOA DownloadLog异常,ikoaConstantMap={},result={}", ikoaConstantMap, result.toString(), e);
|
|
|
+ if (i == 2) {
|
|
|
+ throw new Exception("IKOA DownloadLog异常!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ parseIkoaMovieDownloadLog(ja, sb, sort);
|
|
|
+
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void parseIkoaMovieDownloadLog(JSONArray result, StringBuffer sb, String sort) {
|
|
|
+ sb.append("total:".concat(String.valueOf(result.size())));
|
|
|
+ sb.append("<table border=\"1\" cellspacing=\"0\"><tr><th>序号</th><th>cid</th><th>封面</th><th>User-Agent</th><th>影片当前状态</th><th>下载记录创建时间</th><th>最后一次修改时间</th></tr>");
|
|
|
+
|
|
|
+ if ("desc".equals(sort)) {
|
|
|
+ Collections.reverse(result);
|
|
|
+ }
|
|
|
+ for (int i = 0; i < result.size(); i++) {
|
|
|
+ JSONObject jsonObject = result.getJSONObject(i);
|
|
|
+ sb.append("<tr>");
|
|
|
+
|
|
|
+ sb.append("<td>").append(i + 1).append("</td>");
|
|
|
+ sb.append("<td>").append(jsonObject.getString("product_id")).append("</td>");
|
|
|
+ sb.append("<td>").append("<img src=\"" + jsonObject.getString("package_image") + "\" alt=\"封面\" width=\"147\" height=\"auto\">").append("</td>");
|
|
|
+ sb.append("<td>").append(jsonObject.getString("ua")).append("</td>");
|
|
|
+ sb.append("<td>").append(jsonObject.getInteger("status")).append("</td>");
|
|
|
+ sb.append("<td>").append(jsonObject.getString("created")).append("</td>");
|
|
|
+ sb.append("<td>").append(jsonObject.getString("updated")).append("</td>");
|
|
|
+
|
|
|
+ sb.append("</tr>");
|
|
|
+ }
|
|
|
+ sb.append("</table>");
|
|
|
+ }
|
|
|
+
|
|
|
private void parseIkoaSearchResult(JSONArray result, StringBuffer sb) {
|
|
|
sb.append("<table border=\"1\" cellspacing=\"0\"><tr><th>序号</th><th>影片名称</th><th>cid</th><th>pid</th><th>影片类型</th><th>码率</th><th>总分段数量</th><th>价格</th><th>是否已购</th><th>购买后有效期</th><th>封面</th></tr>");
|
|
|
|