tujidelv 2 vuotta sitten
vanhempi
commit
08822b54f3

+ 4 - 0
src/main/java/top/lvzhiqiang/config/InitRunner.java

@@ -10,6 +10,7 @@ import top.lvzhiqiang.entity.DicCode;
 import top.lvzhiqiang.mapper.CoinMapper;
 import top.lvzhiqiang.mapper.DicCodeMapper;
 import top.lvzhiqiang.service.CoinService;
+import top.lvzhiqiang.service.Crawler4JavdbService;
 
 import javax.annotation.Resource;
 import java.net.InetSocketAddress;
@@ -38,6 +39,8 @@ public class InitRunner implements ApplicationRunner {
 
     @Resource
     private CoinService coinService;
+    @Resource
+    private Crawler4JavdbService crawler4JavdbService;
 
     @Value("${spring.profiles.active}")
     private String env;
@@ -60,6 +63,7 @@ public class InitRunner implements ApplicationRunner {
 
         if (!"dev".equals(env)) {
             coinService.monitorJob();
+            crawler4JavdbService.monitorActors();
         }
     }
 }

+ 0 - 10
src/main/java/top/lvzhiqiang/config/MyJobs.java

@@ -211,14 +211,4 @@ public class MyJobs {
 
         crawler4LoveFootService.jsoupLoveFoot4CrawingFail(4, 2, "javbus");
     }
-
-    /**
-     * 每隔一小时执行一次
-     */
-    @Scheduled(cron = "0 0 */2 * * ?", zone = SCHEDULED_ZONE)
-    public void monitorActors() {
-        log.warn("monitorActors开始==============================");
-
-        crawler4JavdbService.monitorActors();
-    }
 }

+ 57 - 52
src/main/java/top/lvzhiqiang/service/impl/Crawler4JavdbServiceImpl.java

@@ -11,13 +11,11 @@ import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
 import org.jsoup.select.Elements;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import top.lvzhiqiang.entity.VideoMonitorActors;
 import top.lvzhiqiang.mapper.VideoMonitorActorsMapper;
 import top.lvzhiqiang.service.Crawler4JavdbService;
 import top.lvzhiqiang.util.JsoupUtil;
-import top.lvzhiqiang.util.SpringUtils;
 
 import javax.annotation.Resource;
 import java.net.InetSocketAddress;
@@ -26,6 +24,9 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
 
 /**
  * Crawler Javdb ServiceImpl
@@ -46,6 +47,8 @@ public class Crawler4JavdbServiceImpl implements Crawler4JavdbService {
 
     //private final ForkJoinPool forkJoinPool = new ForkJoinPool(16);
 
+    private final static ScheduledExecutorService scheduler = new ScheduledThreadPoolExecutor(10);
+
     private static final WxCpServiceImpl wxCpService;
     static {
         WxCpDefaultConfigImpl wxCpDefaultConfig = new WxCpDefaultConfigImpl();
@@ -68,62 +71,64 @@ public class Crawler4JavdbServiceImpl implements Crawler4JavdbService {
 
     @Override
     public void monitorActors() {
-        beforeJavbus();
-
-        String website = "javdb";
-        List<VideoMonitorActors> videoMonitorActorsList = videoMonitorActorsMapper.findAllListByWebsite(website);
-
-        /*forkJoinPool.submit(() -> videoMonitorActorsList.parallelStream().forEach(e -> {
-        })).join();*/
-
-        Document document;
-        Elements itembSelects;
-        for (VideoMonitorActors videoMonitorActors : videoMonitorActorsList) {
-            try {
-                List<String> insertCodeList = new ArrayList<>();
-                List<String> codeList = videoMonitorActorsMapper.findAllLogListBySymbol(videoMonitorActors.getSymbol());
-
-                Map<String, String> headerMap = new HashMap<>();
-                headerMap.put("referer", videoMonitorActors.getHttpUrl());
-                document = JsoupUtil.requestDocument(videoMonitorActors.getHttpUrl(), JsoupUtil.HTTP_GET, proxy, null, headerMap, null);
-                itembSelects = document.select("div.movie-list").select("div.item");
-
-                for (Element itembSelect : itembSelects) {
-                    String code = itembSelect.select("a.box").get(0).select("div.video-title").select("strong").text().trim().toUpperCase();
-                    if (codeList.contains(code)) {
-                        continue;
+        scheduler.scheduleAtFixedRate(() -> {
+            log.warn("monitorActors开始==============================");
+            beforeJavbus();
+
+            String website = "javdb";
+            List<VideoMonitorActors> videoMonitorActorsList = videoMonitorActorsMapper.findAllListByWebsite(website);
+
+            Document document;
+            Elements itembSelects;
+            for (VideoMonitorActors videoMonitorActors : videoMonitorActorsList) {
+                try {
+                    List<String> insertCodeList = new ArrayList<>();
+                    List<String> codeList = videoMonitorActorsMapper.findAllLogListBySymbol(videoMonitorActors.getSymbol());
+
+                    Map<String, String> headerMap = new HashMap<>();
+                    headerMap.put("referer", videoMonitorActors.getHttpUrl());
+                    document = JsoupUtil.requestDocument(videoMonitorActors.getHttpUrl(), JsoupUtil.HTTP_GET, proxy, null, headerMap, null);
+                    itembSelects = document.select("div.movie-list").select("div.item");
+
+                    for (Element itembSelect : itembSelects) {
+                        String code = itembSelect.select("a.box").get(0).select("div.video-title").select("strong").text().trim().toUpperCase();
+                        if (codeList.contains(code)) {
+                            continue;
+                        }
+                        insertCodeList.add(code);
+
+                        String url = itembSelect.select("a.box").get(0).attr("abs:href");
+                        String title = itembSelect.select("a.box").get(0).attr("title");
+                        String score = itembSelect.select("a.box").get(0).select("div.score").text().replace("&nbsp;", "").trim();
+                        String date = itembSelect.select("a.box").get(0).select("div.meta").text().trim();
+                        String tags = itembSelect.select("a.box").get(0).select("div.tags").text().trim();
+
+                        String content = "<div class=\"highlight\">演员:" + videoMonitorActors.getActorsRemark() + "</div>" +
+                                "<div>识别码:" + code + "</div>" +
+                                "<div>标题:" + title + "</div>" +
+                                "<div>发行日期:" + date + "</div>" +
+                                "<div class=\"gray\">评价:" + score + "</div>" +
+                                "<div class=\"gray\">标签:" + tags + "</div>";
+
+                        JSONObject params = new JSONObject();
+                        params.put("title", "JAVDB演员监控报警");
+                        params.put("logUrl", url);
+                        params.put("btnTxt", "影片详情");
+                        monitorAlarm4APP_TEXT_CARD(content, params);
+
+                        Thread.sleep(1000);
                     }
-                    insertCodeList.add(code);
-
-                    String url = itembSelect.select("a.box").get(0).attr("abs:href");
-                    String title = itembSelect.select("a.box").get(0).attr("title");
-                    String score = itembSelect.select("a.box").get(0).select("div.score").text().replace("&nbsp;", "").trim();
-                    String date = itembSelect.select("a.box").get(0).select("div.meta").text().trim();
-                    String tags = itembSelect.select("a.box").get(0).select("div.tags").text().trim();
-
-                    String content = "<div class=\"highlight\">演员:" + videoMonitorActors.getActorsRemark() + "</div>" +
-                            "<div>识别码:" + code + "</div>" +
-                            "<div>标题:" + title + "</div>" +
-                            "<div>发行日期:" + date + "</div>" +
-                            "<div class=\"gray\">评价:" + score + "</div>" +
-                            "<div class=\"gray\">标签:" + tags + "</div>";
-
-                    JSONObject params = new JSONObject();
-                    params.put("title", "JAVDB演员监控报警");
-                    params.put("logUrl", url);
-                    params.put("btnTxt", "影片详情");
-                    SpringUtils.getBean(Crawler4JavdbServiceImpl.class).monitorAlarm4APP_TEXT_CARD(content, params);
-                }
 
-                videoMonitorActorsMapper.insertLogList(insertCodeList, videoMonitorActors.getSymbol());
-            } catch (Exception e) {
-                e.printStackTrace();
+                    videoMonitorActorsMapper.insertLogList(insertCodeList, videoMonitorActors.getSymbol());
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
             }
-        }
+            log.warn("monitorActors结束==============================");
+        }, 0, 2, TimeUnit.HOURS);
     }
 
     @Override
-    @Async
     public void monitorAlarm4APP_TEXT_CARD(String content, JSONObject params) {
         // 文本卡片模式发消息
         String title = "监控告警明细";