|
@@ -0,0 +1,114 @@
|
|
|
|
|
+package top.lvzhiqiang.config;
|
|
|
|
|
+
|
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
+import org.jsoup.Jsoup;
|
|
|
|
|
+import org.jsoup.nodes.Document;
|
|
|
|
|
+import org.jsoup.nodes.Element;
|
|
|
|
|
+import org.jsoup.select.Elements;
|
|
|
|
|
+import org.springframework.scheduling.annotation.Scheduled;
|
|
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
|
|
+import org.springframework.transaction.annotation.Propagation;
|
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
+import top.lvzhiqiang.entity.DicCode;
|
|
|
|
|
+import top.lvzhiqiang.entity.VideoSitePool;
|
|
|
|
|
+import top.lvzhiqiang.mapper.VideoSitePoolMapper;
|
|
|
|
|
+
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
|
+import java.util.HashSet;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+import java.util.Set;
|
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 定时任务
|
|
|
|
|
+ *
|
|
|
|
|
+ * @author lvzhiqiang
|
|
|
|
|
+ * 2022/4/28 15:49
|
|
|
|
|
+ */
|
|
|
|
|
+@Component
|
|
|
|
|
+@Slf4j
|
|
|
|
|
+public class MyJobs {
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private VideoSitePoolMapper videoSitePoolMapper;
|
|
|
|
|
+
|
|
|
|
|
+ private static final String SCHEDULED_ZONE = "Asia/Shanghai";
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 每天6点校验站点有效性
|
|
|
|
|
+ */
|
|
|
|
|
+ @Scheduled(cron = "0 0 6 * * ?", zone = SCHEDULED_ZONE)
|
|
|
|
|
+ //@Scheduled(cron = "0 10 19 * * ?",zone = SCHEDULED_ZONE)
|
|
|
|
|
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
|
|
|
+ public void checkVideoSite() {
|
|
|
|
|
+ log.info("checkVideoSite开始==============================");
|
|
|
|
|
+ // 获取javbus官方地址
|
|
|
|
|
+ DicCode dicCode = WebAppConfig.dicCodeList.stream().filter(x -> 2 == x.getType() && "javbus".equals(x.getCodeKey())).findFirst().get();
|
|
|
|
|
+ if (dicCode == null) {
|
|
|
|
|
+ log.warn("javbus官方站点为Null");
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 获取javbusNewUrlList
|
|
|
|
|
+ Set<String> javbusNewUrlList = new HashSet<>();
|
|
|
|
|
+ try {
|
|
|
|
|
+ Document document = Jsoup.connect(dicCode.getCodeValue()).timeout(50000).ignoreContentType(true).get();
|
|
|
|
|
+
|
|
|
|
|
+ Elements ahrefList = document.select("strong:contains(防屏蔽地址)").next("a");
|
|
|
|
|
+ for (Element element : ahrefList) {
|
|
|
|
|
+ String text = element.text();
|
|
|
|
|
+ log.info("javbus防屏蔽地址:{}", text);
|
|
|
|
|
+ javbusNewUrlList.add(text);
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error("Jsoup抓取javbus防屏蔽地址异常", e);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 获取javbusUrlList
|
|
|
|
|
+ List<String> javbusUrlList = videoSitePoolMapper.findUrlByType(1);
|
|
|
|
|
+
|
|
|
|
|
+ if (javbusNewUrlList.size() == 0) {
|
|
|
|
|
+ log.warn("javbusNewUrlList为空");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (javbusNewUrlList.size() == 0 && javbusUrlList.size() == 0) {
|
|
|
|
|
+ log.warn("javbusUrlList和javbusNewUrlList为空");
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 校验新地址
|
|
|
|
|
+ List<String> javbusNewUrlFinalList = javbusNewUrlList.stream().filter(e -> !javbusUrlList.contains(e)).collect(Collectors.toList());
|
|
|
|
|
+ List<VideoSitePool> videoSitePoolList = new ArrayList<>();
|
|
|
|
|
+ VideoSitePool videoSitePool;
|
|
|
|
|
+ for (String javbusNewUrlFinal : javbusNewUrlFinalList) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ Jsoup.connect(javbusNewUrlFinal).timeout(50000);
|
|
|
|
|
+
|
|
|
|
|
+ videoSitePool = new VideoSitePool();
|
|
|
|
|
+ videoSitePool.setUrl(javbusNewUrlFinal);
|
|
|
|
|
+ videoSitePool.setType(1);
|
|
|
|
|
+ videoSitePoolList.add(videoSitePool);
|
|
|
|
|
+ log.info("javbusNewUrlFinalList:javbus防屏蔽地址有效!javbusUrl={}", javbusNewUrlFinal);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error("javbusNewUrlFinalList:javbus防屏蔽地址失效!javbusUrl={}", javbusNewUrlFinal, e);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (videoSitePoolList.size() > 0) {
|
|
|
|
|
+ videoSitePoolMapper.insertList(videoSitePoolList);
|
|
|
|
|
+ }
|
|
|
|
|
+ // 校验存量地址
|
|
|
|
|
+ for (String javbusUrl : javbusUrlList) {
|
|
|
|
|
+ int deleteFlag = 1;
|
|
|
|
|
+ try {
|
|
|
|
|
+ Jsoup.connect(javbusUrl).timeout(50000);
|
|
|
|
|
+ log.info("javbusUrlList:javbus防屏蔽地址有效!javbusUrl={}", javbusUrl);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ deleteFlag = 2;
|
|
|
|
|
+ log.error("javbusUrlList:javbus防屏蔽地址失效!javbusUrl={}", javbusUrl, e);
|
|
|
|
|
+ }
|
|
|
|
|
+ videoSitePoolMapper.updateDeleteFlag(javbusUrl, deleteFlag);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ log.info("checkVideoSite结束==============================");
|
|
|
|
|
+ }
|
|
|
|
|
+}
|