package top.lvzhiqiang.service; import java.io.File; import org.jsoup.nodes.Document; import org.springframework.boot.system.ApplicationHome; /** * 通用接口,以后你要加 JavBus、JavLibrary,直接扩展这个接口即可 * * @author: lvzhiqiang * @date: 2026/2/11 13:54 */ public interface ScraperService { /** * 获取支持的类型,如 javdb * * @return: java.lang.String * @author: lvzhiqiang * @date: 2026/2/11 15:45 */ String getServiceType(); /** * 【核心方法】获取页面源码 (带 Session 检查机制) * 所有的业务抓取都要调用这个方法,不要直接用 page.navigate * * @return: org.jsoup.nodes.Document * @author: lvzhiqiang * @date: 2026/2/11 15:45 */ Document getPageDocumentSecurely(String targetUrl); /** * 获取项目根目录的通用方法 * * @return: java.io.File * @author: lvzhiqiang * @date: 2026/2/12 11:21 */ default File getAppRootPath() { ApplicationHome home = new ApplicationHome(getClass()); File source = home.getSource(); // 如果 source 不为空,说明是在 Jar 包里运行,返回 Jar 包同级目录 if (source != null) { return source.getParentFile(); } // 如果 source 为空,说明是在 IDE 或 测试环境运行 // 此时返回项目的根目录 (也就是 System.getProperty("user.dir")) return new File(System.getProperty("user.dir")); } }