Commit Graph

242 Commits

Author SHA1 Message Date
x1ao4
d1ae3a26dd 在追剧日历页面增加了排序功能并优化了内容管理页面的卡片悬停信息
新增功能
- 在追剧日历页面右上角添加排序控制组件(样式与任务列表页面一致)
- 支持两种排序方式:节目名称、播出时间
- 支持升降序切换,默认按节目名称升序排列
- 排序选项支持持久化到 localStorage

排序逻辑实现
- 日历视图:集卡片支持按节目名称和播出时间排序
- 海报视图:集卡片支持按节目名称和播出时间排序
- 内容管理模式:节目卡片支持按节目名称和播出时间排序
  - 播出时间排序逻辑与任务列表一致(除日期提取方式)
  - 优先按下一个待播集的播出日期排序,其次按播出时间排序
  - 无播出日期但有播出时间的任务按播出时间排序
  - 既无日期也无时间的任务回退到名称排序

UI 优化
- 调整内容管理页面海报悬停信息顺序:
  - 下一个待播集的播出日期和时间显示为倒数第二行
  - 已转存/已播出/总集数显示为最后一行

技术实现
- 添加排序状态管理:calendar.sortBy 和 calendar.sortOrder
- 实现获取下一个待播集播出日期的函数:getTaskNextAirDateForSort
- 实现悬停信息显示函数:getTaskNextAirDateTimeDisplayForCalendar
- 添加排序选项变化监听器,确保视图实时更新
2025-12-20 01:08:23 +08:00
x1ao4
645ef231bc 在任务列表页面新增按播出时间排序功能
- 新增任务列表排序字段 airtime,支持升降序
- 基于 “已转存集数下一集” 的播出日期和本地播出时间作为排序键
- 优先按日期排序,其次按时间,无播出日期的任务统一排在末尾,完全无日期和时间时回退到任务名称排序
- 列表视图和海报视图共用同一排序逻辑,保持显示一致性
2025-12-18 16:00:16 +08:00
x1ao4
12346fe5ec 在追剧日历的集数悬停信息中增加节目级播出时间信息 2025-12-17 18:24:57 +08:00
x1ao4
d19f8f3383 增加已播出但未转存集的显示样式
功能改进:
- 日历视图:为已播出但未转存的集增加浅绿色背景(#e6f7ee)
  - 已转存:浅蓝色背景(#e6f1ff)
  - 已播出未转存:浅绿色背景(#e6f7ee)
  - 未播出未转存:浅灰色背景(#f7f7f9)
- 移动端表格:已播出未转存集显示绿色条(#28a745)
- 海报视图:
  - 已转存集:右上角显示 bi-check2-all 图标
  - 已播出未转存集:右上角显示 bi-check2 图标
  - 未播出未转存集:不显示标识

技术实现:
- 后端:在 /api/calendar/episodes_local 接口中为每集添加 is_aired 字段
  - 使用 is_episode_aired 函数精确计算(考虑播出时间)
  - 实现批量查询优化,将数据库查询从 1000+ 次降到 2-3 次
  - 添加完整的异常处理和回退机制
- 前端:新增 isEpisodeAiredForDisplay 方法判断已播出状态
  - 优先使用后端返回的 is_aired 字段,保证前后端一致
  - 兼容旧版本数据(无 is_aired 时回退到日期比较)
  - 在日历视图和海报视图中应用新的样式逻辑
2025-12-17 17:48:38 +08:00
x1ao4
b56aec6505 优化任务列表海报视图卡片悬停信息的下一集播出日期的获取逻辑 2025-12-16 17:24:53 +08:00
x1ao4
dcc3943187 在任务列表海报视图的卡片悬停信息中增加已转存集数的下一集的播出日期
任务列表海报视图的卡片悬停信息第四行之前只显示节目的本地播出时间,改为显示已转存集数的下一集的本地播出日期和本地播出时间,方便判断和了解下一集的播出情况
2025-12-16 16:45:30 +08:00
x1ao4
06adc79a17 新增剧集播出日期偏移功能
- 支持在编辑元数据模态框内为(本地)播出时间显示和编辑播出日期偏移参数,对于转换时区后的本地播出时间,若产生了日期偏移,将自动补全偏移参数,也支持修改、添加或删除日期偏移参数,删除日期偏移将使用剧集在发行地的原始播出日期作为播出日期进行判定或显示
- 日期偏移会影响剧集的本地播出日期,从而影响剧集已播出集数和任务进度的计算
2025-12-16 15:27:51 +08:00
x1ao4
03d9a0d0b7 修改 QASX Token 的显示样式并优化了部分提示信息 2025-12-14 15:10:52 +08:00
x1ao4
4a2acea19e 完善 Trakt 初次配置逻辑并优化了 API 配置模块
- 新增首次配置 Trakt Client ID 时全量同步播出时间并重算进度逻辑
- 优化系统配置页面:合并 API 配置模块并优化间距和交互体验
2025-12-12 21:29:08 +08:00
x1ao4
07abca763e 新增基于 Trakt 精确播出时间的本地时区已播出统计与显示及相关优化 2025-12-12 18:17:20 +08:00
x1ao4
8f0b079059 把运行日志显示范围的默认值改为 1 天 2025-12-02 21:00:56 +08:00
x1ao4
8c08b00db7 在运行日志页面增加 >>> 与任务名称快速筛选功能
- 为运行日志中的 >>> 增加点击快速内容筛选,重复点击可清除筛选
- 为 “任务名称: xxxx” 中的任务名增加点击快速任务筛选,复用原有任务块筛选逻辑
2025-12-01 20:32:49 +08:00
x1ao4
12cf1bb190 新增运行日志显示范围设置选项,支持按时间范围显示日志
- 将日志显示方式从按条数限制改为按时间范围限制(默认显示最近 3 天的日志)
- 在系统配置的性能设置中添加 '运行日志显示范围' 配置项,允许用户自定义天数
- 保持向后兼容:API 仍支持 limit 参数,旧配置自动使用默认值
2025-11-30 21:41:35 +08:00
x1ao4
1045fa1934 优化运行日志页面的加载体验:移除加载动画和提示,改为静默加载
- 移除首次加载和刷新时显示的 Spinner 动画和 '加载日志中...' 提示
- 优化 '暂无匹配的日志' 提示的显示逻辑:仅在加载完成且确实无匹配日志时显示
- 加载过程中保持静默,不显示任何提示信息
- 保持日志筛选、轮询、页面切换等所有功能正常工作
2025-11-30 20:45:01 +08:00
x1ao4
b8e278fadb 修复运行日志页面筛选器清空后滚动位置异常的问题
为级别筛选和内容筛选添加滚动位置保存和恢复功能,确保清空筛选后始终回到筛选前的位置,无论筛选是否有结果,与任务筛选保持一致的交互体验
2025-11-29 21:55:14 +08:00
x1ao4
e6e1f95a8c 在 WebUI 上增加了运行日志查看页面 2025-11-29 21:04:38 +08:00
x1ao4
a36c58986b 修复手动刷新元数据后任务列表集数信息未更新的问题
问题:
- 手动刷新节目的元数据后,追剧日历的集数显示更新了,但任务列表的集数没有更新
- 只有在追剧日历刷新的定时任务刷新后,任务列表的集数数据才正确刷新

原因:
- refreshSeasonMetadata 函数刷新成功后,虽然更新了 calendar.tasks,但缺少更新 progressByShowName
- 任务列表和管理视图的集数数据依赖于 progressByShowName,因此没有正确更新

修复:
- 在 refreshSeasonMetadata 函数中,刷新成功后添加了更新 progressByShowName 的步骤
- 确保任务列表和管理视图的集数数据(已转存集数/已播出集数/节目总集数)能立即正确更新
2025-11-28 10:33:09 +08:00
x1ao4
6c2e715bdf 修复任务列表顶部组件的间距问题 2025-11-25 15:07:50 +08:00
x1ao4
0c81dd48b7 为转存记录添加状态筛选功能 2025-11-25 15:01:27 +08:00
x1ao4
85da3ec023 为追剧日历添加状态筛选功能 2025-11-24 23:39:02 +08:00
x1ao4
b520378d26 新增任务状态筛选功能,修复窄屏下排序与分页的样式溢出问题
- 新增任务状态筛选下拉及逻辑,优化筛选布局与间距
- 修复排序、分页按钮在窄屏下文字溢出、间距异常等问题
2025-11-24 22:26:09 +08:00
x1ao4
710c91840f 在任务列表页面增加了任务数量指示器 2025-11-18 16:06:11 +08:00
x1ao4
e69ad46ddd 优化选择文件夹模态框的文件名排序逻辑
- 为 source/target/move 三个模态框调整文件名排序优先级
- 文件:日期 > 期数 > 上中下 > 拼音 > 修改日期
- 文件夹:日期 > 上中下 > 拼音 > 修改日期
- 拼音排序键提前到修改日期之前,便于按拼音排序
2025-11-16 11:23:41 +08:00
x1ao4
7a15bb1758 修复定时运行全部任务完成后已转存集数和当日更新标识的热更新问题
- 修复 recompute_task_metrics_and_notify 中 season_metrics 的 transferred_count 未更新的 bug
- 在定时任务执行完毕后发送 crontab_task_completed SSE 通知
- 前端添加对 crontab_task_completed 事件的处理,确保刷新今日更新数据
2025-11-15 20:21:19 +08:00
x1ao4
3e5ce67eab 为显示设置和性能设置添加 Wiki 链接 2025-11-14 20:30:38 +08:00
x1ao4
ba829ffacc 新增按任务进度执行的执行周期模式
新增功能:
- 支持两种执行周期判断模式:按自选周期执行(自选)和按任务进度执行(自动)
- 系统配置添加执行周期设置选项,支持批量应用到所有任务
- 任务配置支持单独设置执行周期模式,覆盖系统默认值
- 按任务进度执行时,根据任务进度是否 100% 智能判断是否跳过
- 优化日志输出,准确反映实际应用的执行周期设置

技术实现:
- 新增 CalendarDB.get_task_metrics() 方法获取任务进度
- 修改 is_time() 函数支持两种执行周期判断模式
- 系统配置默认值为 manual,保持向后兼容
- 手动运行任务不受执行周期设置影响

涉及文件:
- app/sdk/db.py: 新增 get_task_metrics 方法
- app/run.py: 添加 execution_mode 默认值初始化
- app/templates/index.html: UI 修改和批量选择功能
- quark_auto_save.py: 核心判断逻辑和日志输出优化
2025-11-14 15:47:53 +08:00
x1ao4
e7be8f5738 统一节目集数统计逻辑,改用后端 season_counts 提供数据
- 使用后端注入的 season_counts 展示已转存/已播出/总集数
- 移除前端基于 progressByTaskName/episodes 的本地推导分支
- 保留 episodes/progressByTaskName 用于非统计渲染与标识
- 提升渲染性能与前后端口径一致性
2025-11-10 17:28:54 +08:00
x1ao4
4240ff9066 新增已播出集数刷新时间限制与自定义配置
- 新增性能设置项 "播出集数刷新时间"(24 小时制,默认 00:00)
- 访问时强制刷新受限于用户设置的刷新时间
- 仅在刷新时间之后允许访问时强制刷新已播出集数
- 已转存集数和节目总集数保持实时热更新,不受限制
- 向后兼容:配置缺失或解析失败时默认允许刷新
2025-11-05 01:40:38 +08:00
x1ao4
7d5f297b70 落库缓存计数与进度,前后端同步热更新
- 新增 season_metrics/task_metrics 表,缓存已转存/已播出/总集数与 progress_pct
- 统一进度口径:已转存 ÷ min(已播出, 总集数),越界钳制
- 季数据刷新/改绑/改季时写回季级缓存并通知前端
- 转存记录新增/删除后重算任务与季级缓存并通知前端
- 聚合接口优先读缓存,缺失回退计算并回填
2025-11-05 00:52:24 +08:00
x1ao4
593ff1f728 资源聚合去重时保留多来源,展示为 “CloudSaver · PanSou”
来源徽标支持多来源显示,多来源统一使用 multi-source class
2025-10-15 19:45:19 +08:00
x1ao4
080c73fc07 引入全局 SSE 单例,统一 onopen/onerror,任务列表与日历共用连接,切页不丢事件
- 进入日历页即时 tick 与本地补拉,消除 60s 等待
- 校正可见性回退判断为 appSSE;清理重复 SSE 回调设置
- 保留原轮询兜底与可见性恢复逻辑,确保 SSE 异常时行为一致
2025-10-15 19:10:11 +08:00
x1ao4
3898c6d41c 修复追剧日历页面当日更新标识热更新延迟的问题
- 问题:追剧日历页面当日更新标识热更新有60秒延迟,任务列表页面能实时更新
- 原因:转存记录创建/更新时未触发SSE通知,前端只能依赖轮询检测变化
- 解决:
  * 后端:转存记录创建/更新时触发SSE通知 (transfer_record_created/updated)
  * 后端:批量重命名完成时触发SSE通知 (batch_rename_completed)
  * 前端:SSE处理中优先更新今日更新数据
  * 修复:添加安全的导入函数避免模块导入错误
- 效果:实现追剧日历页面当日更新标识实时热更新,与任务列表页面体验一致

涉及文件:
- quark_auto_save.py: 添加SSE通知触发和安全导入函数
- app/run.py: 批量重命名SSE通知
- app/templates/index.html: 前端SSE处理优化
2025-10-12 14:57:49 +08:00
x1ao4
e36a4e6f6c 优化编辑元数据模态框内的匹配结果的显示效果 2025-10-06 14:42:45 +08:00
x1ao4
d7589ef57d 在初始化字幕命名规则时自动带入默认值
- 当升级/新部署且缺少字段时,自动为 task_settings 填入:
  - subtitle_naming_rule: "zh"
  - subtitle_add_language_code: false
- 仅在字段为 undefined 时填充,不覆盖用户已有值(包括用户手动清空为 "" 的情况)
- 保证 WebUI 首次显示直观一致,同时保持用户配置可控、向后兼容
2025-09-29 15:43:31 +08:00
x1ao4
1f99f66ce5 新增字幕命名规则功能,支持在全局设置字幕文件的语言代码后缀
- 添加字幕文件语言代码后缀自动添加功能
- 支持 .srt/.ass/.ssa/.vtt/.sup 等常见字幕格式
- 在系统配置中提供语言代码设置和启用开关
- 覆盖所有重命名场景:预览界面、任务执行、文件整理
- 支持顺序命名、剧集命名、正则表达式命名模式
- 避免重复添加语言代码后缀
- 默认语言代码为 "zh",默认禁用状态

功能说明:
- 用户可在系统配置中设置字幕文件的语言代码(如 "zh")
- 启用后,所有字幕文件重命名时自动添加语言代码后缀
- 例如:`movie.srt` → `movie.zh.srt`
- 支持所有命名模式和预览功能
- 向后兼容,不影响现有功能
2025-09-29 15:19:11 +08:00
x1ao4
da051409df 为重置文件夹功能增加 SSE 推送,支持相关数据的实时更新 2025-09-23 14:10:27 +08:00
x1ao4
9bd7068f0e 修复模态框重命名列的排序问题,修复集编号识别规则未自动清空的问题 2025-09-23 10:56:44 +08:00
x1ao4
27ee3948b8 优化集编号识别规则与逻辑,修复文件整理页面命名预览模态框重命名列的排序问题 2025-09-23 09:14:04 +08:00
x1ao4
f7371b660b 将 TMDB 及网络重试日志的输出调整为 DEBUG 级别
- tmdb_service 中主/备地址失败与切换日志改为 debug
- run.py 设置 urllib3/requests 日志级别为 ERROR
- 为 urllib3.connectionpool 添加过滤器,自动将 “Retrying (...)” 告警降为 DEBUG
2025-09-22 23:37:34 +08:00
x1ao4
06b6ab04d4 为追剧日历的海报视图和日历视图增加拼音排序功能
- 在 getEpisodesByDate 中对当日节目结果进行拼音升序排序
- 合并集开启时先合并同节目多集,再按节目名拼音排序
- 与内容管理视图排序规则一致,提升一致性与可预期性
- 增加 try-catch 保护,异常时回退原顺序,保证稳定性
2025-09-22 23:17:06 +08:00
x1ao4
4b40560a80 修复分享资源状态异常后切换上/下一个资源时仍显示异常提示、无法继续浏览其他资源的问题
- 切换资源时清理 error/fileList/paths,重置到选择目录界面
- 链接基础部分变化时清空 stoken 强制刷新
- getShareDetail 调用前清空错误状态,避免残留覆盖新资源展示
2025-09-22 23:00:08 +08:00
x1ao4
79007ab775 统一模态框的 Spinner 样式,并在编辑元数据模态框中增加 Spinner 显示 2025-09-17 04:21:31 +08:00
x1ao4
181a55a830 优化任务列表海报视图的渲染逻辑和加载策略
- 任务列表海报视图改为 “海报先渲染”,操作区/徽标/悬浮信息按图片加载完成后再渲染
- 图片加载加入 `decoding=async`、`loading=lazy`、`fetchpriority`,首屏更快、非首屏延后
- 任务列表视图下停用全局 bust,保留节目级/名称级 bust,确保更换海报仍能热更新且避免本地缓存反复失效
2025-09-17 03:12:19 +08:00
x1ao4
efc7e17075 优化任务进度排序逻辑,加入节目状态、播出进度、节目总集数等多级比较
- 进度排序(by=progress)改为四层比较,且全部随升/降序方向变化:
  1) 任务进度百分比(已转存/已播出)
  2) 节目状态优先级:播出中/无 < 本季终 < 已取消 < 已完结
  3) 播出进度百分比(已播出/总集数),在相同进度下进一步排序
  3.1) 若百分比也相同,则按总集数比较(例如 12/12 < 22/22 < 36/36)
  4) 任务编号(#XX),用于完全相同时的最终稳定排序
- 状态取值沿用现有逻辑:仅显示并参与排序的状态为「本季终 / 已取消 / 已完结」,其余视为 “无状态”
- 保持与现有数据源兼容:进度、状态与播出统计基于 calendar.tasks/season_counts 及映射函数获取
- 所有层级比较通过统一 factor 输出,确保与用户选择的升/降序一致
2025-09-17 01:30:10 +08:00
x1ao4
240a069a08 为追剧日历的海报视图设置可用宽度上限,修复超列问题 2025-09-17 00:35:37 +08:00
x1ao4
e181211e53 在编辑任务模态框内新增保存并运行任务按钮 2025-09-16 19:10:46 +08:00
x1ao4
7b662f65bc 优化创建与编辑任务模态框的显示效果 2025-09-16 18:37:18 +08:00
x1ao4
1aa0f44041 修复影视发现页面的 “创建任务” 按钮错误触发编辑模式而非创建模式的问题
- 重置 `createTaskFromDiscovery` 为创建模式,初始化表单,修复标题与底部按钮显示为创建态
2025-09-16 18:09:29 +08:00
x1ao4
3fd496cf2e Revert "新增海报懒加载与异步解码,提升首次打开性能"
This reverts commit 2e2bf064d4.
2025-09-16 03:08:02 +08:00
x1ao4
2e2bf064d4 新增海报懒加载与异步解码,提升首次打开性能 2025-09-16 02:28:38 +08:00