# ouchn **Repository Path**: liuyun073/ouchn ## Basic Information - **Project Name**: ouchn - **Description**: No description available - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-26 - **Last Updated**: 2026-01-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 开放大学课程自动学习系统 ## 项目简介 开放大学课程自动学习系统是一个基于 Selenium WebDriver 开发的自动化学习工具,用于自动播放开放大学的直播课程和普通课程,支持并发播放、2 倍速播放、防电脑睡眠、自动处理登录弹窗等功能。 ## 功能特性 ### 核心功能 - **直播课程自动播放**:自动导航到直播课程页面,切换到本学期课表,播放已录制的直播课程 - **普通课程自动学习**:自动学习普通课程的章节和活动项 - **并发播放支持**:使用多线程技术,支持在多个浏览器标签页中同时播放课程 - **2 倍速播放**:自动将视频播放速度调整为 2 倍速,提高学习效率 - **防电脑睡眠**:使用 Java AWT Robot 模拟键盘操作,防止电脑在学习过程中进入睡眠状态 - **自动处理登录弹窗**:检测并自动关闭登录弹窗,确保学习过程不中断 - **视频进度监控**:监控视频播放进度,确保每个视频观看总时长的 98%才算完成 - **浏览器标签管理**:自动创建、切换和关闭浏览器标签页,优化资源使用 ### 技术特性 - **Selenium WebDriver**:用于浏览器自动化操作 - **Java 并发**:使用 ExecutorService、CountDownLatch、ReentrantLock 等实现并发控制 - **Page Object Model**:采用页面对象模式,提高代码的可维护性和可扩展性 - **SLF4J 日志**:使用 SLF4J 进行日志记录,方便调试和监控 - **Lombok**:使用 Lombok 简化 Java 代码,减少样板代码 - **ChromeOptions**:配置 Chrome 浏览器选项,优化浏览器性能和用户体验 ## 项目结构 ``` ├── src/ │ └── main/ │ └── java/ │ └── com/ │ └── liqw/ │ ├── core/ │ │ ├── AntiSleepManager.java # 防睡眠管理器 │ │ ├── CourseConcurrentManager.java # 普通课程并发管理器 │ │ ├── CourseManager.java # 课程管理器 │ │ ├── DriverManager.java # WebDriver管理器 │ │ ├── ItemConcurrentManager.java # 课程项并发管理器 │ │ ├── LiveCourseConcurrentManager.java # 直播课程并发管理器 │ │ ├── LiveCourseManager.java # 直播课程管理器 │ │ ├── SelectorConstants.java # 选择器常量 │ │ ├── VideoPlayerManager.java # 视频播放器管理器 │ │ └── WebDriverUtils.java # WebDriver工具类 │ └── OuchnApp.java # 应用主类 ├── pom.xml # Maven配置文件 └── README.md # 项目说明文档 ``` ## 安装与运行 ### 环境要求 - Java 21+ - Maven 3.6+ - Chrome 浏览器 142+ - ChromeDriver 142+ ### 安装步骤 1. 克隆项目到本地 2. 进入项目目录 3. 执行 Maven 构建命令: ``` mvn clean package ``` ### 运行方式 ``` java -jar target/ouchn-1.0-SNAPSHOT.jar ``` ## 配置说明 ### ChromeOptions 配置 在`DriverManager.java`中配置了 Chrome 浏览器选项,包括: - 禁用设备连接提示 - 禁用自动化控制提示 - 启用自动下载 - 配置下载路径 ### 并发参数配置 在`OuchnApp.java`中配置了并发相关参数: - 并发线程数 - 等待时间 - 重试次数 ## 核心类说明 ### LiveCourseConcurrentManager 负责并发播放直播课程,管理多个直播课程的播放线程,实现 2 倍速播放、防睡眠、弹窗处理等功能。 ### LiveCourseManager 负责直播课程的导航、课程列表获取、章节切换等功能。 ### CourseManager 负责普通课程的学习,包括课程列表获取、章节学习、活动项学习等功能。 ### CourseConcurrentManager 负责普通课程的并发学习,管理多个课程的学习线程。 ### ItemConcurrentManager 负责普通课程中活动项的并发学习,管理多个活动项的学习线程。 ### AntiSleepManager 防睡眠管理器,使用 Java AWT Robot 模拟键盘操作,防止电脑进入睡眠状态。 ### WebDriverUtils WebDriver 工具类,提供元素等待、窗口切换、元素点击等常用功能。 ## 开发指南 ### 代码风格 - 遵循 Java 编码规范 - 使用 Lombok 简化代码 - 使用 SLF4J 进行日志记录 - 采用 Page Object Model 设计模式 ### 测试方法 - 使用 Maven 执行测试:`mvn test` - 直接运行`OuchnApp.java`主类进行测试 ### 常见问题 1. **NoSuchElementException**:检查元素选择器是否正确,确保使用相对路径 2. **StaleElementReferenceException**:重新定位元素,避免使用过期的元素引用 3. **ElementNotInteractableException**:将元素滚动到可视区域,或使用 JavaScript 点击 4. **NoSuchSessionException**:检查 WebDriver 会话是否有效,添加会话失效处理逻辑 ## 许可证 本项目采用 MIT 许可证,详见 LICENSE 文件。 ## 联系方式 如有问题或建议,欢迎联系项目负责人。志 - 集中管理 CSS 选择器 ### 测试 ```bash mvn test ``` ### 调试 - 查看日志文件 - 使用 IDE 调试 - 检查浏览器控制台 ## 注意事项 1. 请遵守开放大学的学习规定 2. 请勿滥用本工具 3. 定期更新 ChromeDriver 4. 注意浏览器版本与 ChromeDriver 版本匹配 ## 许可证 MIT License ## 贡献 欢迎提交 Issue 和 Pull Request! ## 联系方式 如有问题,请联系项目维护者。志 - 集中管理 CSS 选择器 ### 测试 ```bash mvn test ``` ### 调试 - 查看日志文件 - 使用 IDE 调试 - 检查浏览器控制台 ## 注意事项 1. 请遵守开放大学的学习规定 2. 请勿滥用本工具 3. 定期更新 ChromeDriver 4. 注意浏览器版本与 ChromeDriver 版本匹配 ## 许可证 MIT License ## 贡献 欢迎提交 Issue 和 Pull Request! ## 联系方式 如有问题,请联系项目维护者。