Commit Graph

10799 Commits

Author SHA1 Message Date
jxxghp
8a8fa9d8fb Merge pull request #7376 from jxxghp/fix/piggo-resource-labels
feat(indexer): 支持猪猪资源标签与站点能力分发
2026-11-12 06:52:15 +08:00
jxxghp
a0e27c4424 feat(indexer): map Piggo resource labels
Resolve site labels from the Piggo catalog and dispatch connectivity, ticket parsing, and throttling through indexer capabilities.
2026-11-12 06:45:16 +08:00
jxxghp
2651d797d7 Merge pull request #7375 from Huyvux12/fix/issue-7367-caa-front500-fallback 2026-11-12 06:21:59 +08:00
Huyvux12
1fd1743667 fix(scraping): CAA front-500 404 时回退请求 /front 原图
front-500 缩略图派生文件缺失时 Cover Art Archive 返回 404,
旧逻辑直接把 (None, "image/jpeg") 写入缓存且无日志,重刮无法恢复。
改为 404 时回退请求 /front 原图并记录 info 日志;缓存 TTL 与
下载链路均不改动。

Fixes #7367
2026-11-11 15:43:48 +00:00
jxxghp
2830aff0e4 Merge pull request #7374 from jxxghp/docs/issue-7370-resource-version 2026-11-11 22:22:26 +08:00
jxxghp
f488023b63 Merge pull request #7366 from Huyvux12/fix/issue-7363-music-online-tags-overwrite 2026-11-11 22:20:24 +08:00
jxxghp
b5384dc7ab docs(site): align HDArea resources with version 3.0.32
Refs #7370
2026-11-11 22:14:19 +08:00
jxxghp
7af97c4429 Merge pull request #7373 from jxxghp/fix/issue-7370
feat(indexer): 高清视界切换 API Key 访问
2026-11-11 22:02:50 +08:00
jxxghp
18fe2ea387 feat(indexer): support HDArea REST API
Refs #7370
2026-11-11 21:53:16 +08:00
jxxghp
eaf833445f Merge pull request #7371 from jxxghp/fix/issue-7274
fix(indexer): support Piggo laboratory API (#7274)
2026-11-11 19:02:55 +08:00
jxxghp
123b201ba9 test(architecture): record Piggo dependency graph 2026-11-11 18:54:37 +08:00
jxxghp
8dc4b08114 fix(indexer): support Piggo laboratory API (#7274) 2026-11-11 18:32:59 +08:00
Huyvux12
2e0fc48646 fix(music): prefer online disc/track structure for manually selected release
When a MusicBrainz release is explicitly selected, the aligned track
already carries the release structure, but _merge_music_track_context
only filled missing local fields, so dirty local total_discs/disc_number
kept producing a spurious Disc layer (e.g. total_discs=2 on a 1-disc
release) and wrong track positions. Let online values win for
disc_number/track_number/total_tracks/total_discs on the selected-release
path only; auto-match keeps the fill-only behaviour.

Album scrape merge now prefers online total_discs as well, and forces
disc_number=1 for confirmed single-disc albums so a dirty local disc
number cannot pair with total_discs=1 as "2/1" in tags.

Fixes #7363
2026-11-11 07:15:29 +00:00
jxxghp
33cc86e225 Merge pull request #7364 from jxxghp/fix/issue-7360
fix(agent): 防止插件配置误覆盖与回执误判
2026-11-11 14:01:46 +08:00
jxxghp
ba034b20f0 test(agent): document regression test contracts 2026-11-11 13:55:27 +08:00
jxxghp
9323f00510 docs(agent): clarify config safeguards 2026-11-11 13:51:21 +08:00
jxxghp
6bc19a59cc fix(agent): protect plugin config and replay receipts (#7360) 2026-11-11 13:39:35 +08:00
ChantXu64
0200642746 fix(download): 完整覆盖整包只下载订阅范围内的剧集 (#7361) 2026-11-11 13:36:17 +08:00
jxxghp
1ec2bff817 Trae/agent s2h0 df (#7359) 2026-11-11 13:15:46 +08:00
Penguin Secret Agency
8be08ee773 feat(llm): 新增 UberLLM provider (#7302)
* feat(llm): 新增 UberLLM provider

* fix(llm): 调整 UberLLM 排序值

与 cheapaimodel 的排序修复协同:cheapaimodel 使用 60、GitHub Copilot 顺延为 61 后,UberLLM 顺延为 62,保持目录排序值唯一。

---------

Co-authored-by: sang nguyen <sangnguyen@sangs-MacBook-Pro-5.local>
Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-11-11 10:45:46 +08:00
Nicho Deng
192bd7d5b8 feat(llm): 新增 cheapaimodel provider (#7303)
* feat(llm): 新增 cheapaimodel provider

* fix(llm): 修正 cheapaimodel 排序冲突

cheapaimodel 与 Obscurify.ai 同为 59,合并后会留下重复排序值。将 cheapaimodel 调整为 60,GitHub Copilot 顺延为 61,保持新预设位于 Obscurify.ai 之后。

---------

Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-11-11 10:44:50 +08:00
gntv456
6166968f4c feat(indexer): 支持 FluxTorrent 兼容层站点搜索与用户数据 (#7355)
* feat(indexer): 支持 FluxTorrent 兼容层站点搜索与用户数据

好学(hxpt.org)已由 NexusPHP 迁移到 FluxTorrent,原有页面刮削全部失效。
FluxTorrent 提供 /api/v1/compat/nexusphp/* 只读 JSON 兼容层,本提交按该契约
新增索引器与用户数据解析器,并在分发层加入能力探测,使未在站点资源中登记
专站协议的站点也能被自动识别(站点清单是闭源发布资源,主仓无法新增条目)。

- 新增 FluxTorrentSpider:调用兼容层 torrents.json 搜索,按 category_newznab
  映射媒体类型,按 promotion 换算下载与上传量系数,下载地址携带开放 API 令牌
- 新增 FluxTorrentSiteUserInfo:解析兼容层 user.json 的用户资料与流量
- 新增同步与异步能力探测:站点未登记专站协议时,用站点令牌请求一次
  user.json,响应符合 {code, message, data, request_id} 信封即判定为 FluxTorrent
- 探测要求站点已配置令牌,并用命中 24 小时、未命中 30 分钟的双层 TTL 缓存
- 不下发分类与媒体类型筛选:兼容层的 category 只接受站内分类 ID,且客户端
  过滤会破坏分页续拉契约,分类筛选待站点资源发布链路补齐后再放开

* fix(indexer): 抽出用户数据模型解析,消除复杂度增长

CI 复杂度门禁报 IndexerModule.refresh_userdata 圈复杂度 15->16(上限 15)。
把 FluxTorrent 能力探测与模型选择抽成模块级函数 _resolve_userdata_schema,
refresh_userdata 的方法体不再因新增分支而增长。

* refactor(indexer): FluxTorrent 模块文件改为单词命名

命名门禁 test_new_host_production_modules_use_single_word_filenames 要求
app 下的模块文件名满足 [a-z][a-z0-9]*,flux_torrent.py 不合规 ⇒ 两个模块
改名为 fluxtorrent.py,同步更新导入与测试打桩路径。

* test(indexer): 修正发布时间断言并同步架构依赖基线

- 发布时间断言原先写死本机时区渲染结果,在 UTC 的 CI 上必然失败 ⇒ 改为对同一
  转换函数取期望值,只验证 Unix 时间戳经由 format_timestamp 输出
- dependency-baseline.json 新增 app.modules.indexer.spider.fluxtorrent 与
  app.modules.indexer.parser.fluxtorrent 的模块与导入边(edge_count 9973→9990、
  module_count 1151→1153),结构与既有 haidan 等专站模块一致,边界未越权

* docs(architecture): 同步架构快照的模块与导入边数量

架构依赖基线新增两个索引器模块后,docs/architecture-overview.md 的
快照表需同步:Python 模块 1151→1153、内部导入边 9,973→9,990。

* test(indexer): 补齐异步探测与失败路径用例,满足新文件覆盖率门槛

新增文件的覆盖率低水位要求 80%,补齐后 spider 90.81%、parser 92.21%:
- 异步能力探测命中与请求异常两条路径
- 站点无响应、响应不是 JSON 时的降级判定
- 异步搜索缺少令牌时的直接失败
- 用户接口空响应 / 非 JSON / 结构异常 / 业务错误码的错误信息
- 站点地址缺协议与空白地址的归一

* test(indexer): 覆盖协议解析的三条分支

存量文件覆盖率低水位要求未覆盖语句数不增长,补齐协议解析的已登记协议、
探测命中、未识别三种情况(同步与异步),以及用户数据模型名的两条分支。

* refactor(indexer): 按站点资源路由 FluxTorrent 协议

删除运行时能力探测与 TTL 缓存,搜索和用户数据直接使用站点资源声明的 parser/schema;保留 FluxTorrent spider 与用户数据解析器的注册,由站点构建配置决定路由。

---------

Co-authored-by: gntv456 <gntv456@users.noreply.github.com>
Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-11-11 10:27:52 +08:00
Huyvux12
dcdebe366a fix(module): report filter and subtitle modules as available without probing (#7357) 2026-11-11 07:00:01 +08:00
flippedyizheng
e930296935 fix(u115): avoid blocking worker threads for 3600s during rate-limit cooldown (#7356) 2026-11-11 06:58:26 +08:00
jxxghp
c1c505358d chore(test): preserve ruff debt baseline 2026-11-10 19:51:38 +08:00
jxxghp
d5f1745d8e test(formatting): cover configured lyric extensions 2026-11-10 19:47:51 +08:00
jxxghp
7e1ac758d7 fix(transfer): make lyric suffixes configurable 2026-11-10 19:38:27 +08:00
jxxghp
8d4c6eb7c1 fix(transfer): unify media sidecar handling 2026-11-10 18:43:31 +08:00
jxxghp
ab608d45b9 fix(browser): use pre-license CloakBrowser release 2026-11-10 18:26:57 +08:00
jxxghp
48b20d3dfb fix(transfer): keep music companions in manual batches (#7350) 2026-11-10 17:43:35 +08:00
jxxghp
d0fb0a21a8 fix(agent): make session_search sort Gemini compatible 2026-11-10 17:24:53 +08:00
jxxghp
af963b47b3 test(music): cover strm track parsing branches 2026-11-10 07:22:35 +08:00
jxxghp
a4ccd86d85 fix(torrent): support traditional first-download prompts 2026-11-10 07:05:07 +08:00
Jaylen.Mar
2ecedc25ce fix: 修复音乐 STRM 整理的曲序丢失与目标文件名重复扩展名 (#7316)
strm 未列入音频扩展名,音乐解析走不到文件分支,曲序与曲名均无法识别,
导致整理时大量失败并可能写出 xxx.strm.strm。本次补充 strm 后缀,并补齐
两种常见命名形态的曲序提取。

- 扩展名列表补 strm,使 STRM 曲库走与普通音轨一致的解析路径
- 新增四段式「艺人 - 专辑 - 序号 - 曲名」处理:从右切出曲名与序号,
  专辑名含分隔符时也能正确切分;前缀单独解析回填艺人与专辑
- 新增四位补零「0101 - 曲名」处理,按碟号曲号拆分;仅接受 0 开头,
  避免 1812、1999、2023 等作品名与年份被误判
- 真实文件名的扩展名不再带进曲名,消除 xxx.strm.strm;点分种子标题
  仍保留扩展名参与格式识别
2026-11-10 06:58:48 +08:00
Huyvux12
02856727dd fix(download): resume paused magnet to fetch metadata before episode selection (#7348) 2026-11-10 06:56:10 +08:00
jxxghp
6d9cf06085 fix(download): accept unique video for mapped single episode
## 问题
识别阶段把累计集号换算为季集后,单集种子的物理文件仍可能保留原始集号。qBittorrent 和 Transmission 只按文件名解析集号,导致唯一视频文件被判定为未找到目标集数,任务停留在暂停状态。

## 修复
- 当本次只请求一集且种子只有一个视频文件时,按唯一视频文件兜底选集;多视频文件和多集视频继续严格按解析集号匹配。
- 下载历史结算沿用相同边界,避免任务启动后原始累计集号再次被过滤为空明细。
- 覆盖 qBittorrent、Transmission,以及 durable/普通下载历史写入路径。

## 验证
- 相关下载与历史回归:244 passed, 12 skipped
- 完整测试:19427 passed, 21 skipped;22 个既有基线失败与本次改动无关,已在干净 v3 checkout 复跑确认
- Pylint(3 个生产文件):10.00/10
2026-11-09 22:52:37 +08:00
Huyvux12
55da2238df fix(jellyfin): 混合内容库使用 mixed 路由而非不存在的 library 路由 (#7344) 2026-11-09 22:12:20 +08:00
jxxghp
549f3f32d1 fix(subscribe): retry identity conversion during metadata checks 2026-11-09 19:56:13 +08:00
jxxghp
db0730f65f fix(music): accept multi-file album release names 2026-11-09 18:41:43 +08:00
jxxghp
252d05767f feat(browser): add queued CloakBrowser watchdog recovery 2026-11-09 17:24:32 +08:00
pyss56
b44af19e8d fix(agent): 空字符串联合参数归一为 null (#7339) 2026-11-09 15:06:15 +08:00
alexcastgonz
7baa3b6f94 fix(wechatclawbot): 仅有标题的图片通知也发送图片 (#7338) 2026-11-09 15:05:30 +08:00
ChantXu64
4620ceacda feat(mediaserver): 入库查询返回条目所属服务器 (#7332) 2026-11-08 11:56:02 +08:00
ChantXu64
7ff4244b3c feat(tmdb): 季集列表返回 TMDB 单集 ID (#7331) 2026-11-08 11:40:23 +08:00
jxxghp
a3c8280d14 fix(telegram): retry poster uploads before text fallback (#7330) 2026-11-08 10:37:03 +08:00
@huluohu
307da754b7 fix(plugin): 分身身份重定向按点号边界匹配包名,修复延迟相对导入 (#7327) 2026-11-08 07:09:08 +08:00
jxxghp
8e9e89c636 fix(image): request media thumbnails with identity-aware caching (#7326) 2026-11-07 20:51:05 +08:00
jxxghp
41516bbc29 fix(plugin): cache static resources and rating snapshots (#7324) 2026-11-07 19:44:33 +08:00
jxxghp
379ef94c9c fix(transfer): 修复硬链接覆盖整理误留暂存与备份 (#7322)
从已落账操作回执更新共享 inode 的状态时间,并保留外部改写与未知结果的副本保护。关联 #7321。
2026-11-07 18:33:23 +08:00
jxxghp
2b4a2ce8c1 chore(release): publish v3.2.5 with frontend v3.2.5 2026-11-07 06:19:42 +08:00