Commit Graph

6116 Commits

Author SHA1 Message Date
InfinityPacer
1197ece12b fix(agent): preserve episode lock on unchanged totals (#6271) 2026-08-11 23:17:21 +08:00
jxxghp
d7cf853bc8 fix(search): 支持单次搜索启用多个媒体数据源,合并显示所有源结果 (#6270)
- 新增 is_media_source_enabled/is_media_source_selected,请求级 source 支持逗号分隔多数据源,缺省回退全局 SEARCH_SOURCE 配置
- 四个媒体模块的搜索/人物/合集方法统一接入多源判断
- 补充多数据源搜索相关测试
2026-08-11 21:06:52 +08:00
jxxghp
9221f6e74a fix(agent): 工具回调消息回填原会话ID,避免群聊@机器人时按钮等交互消息发到私聊 (#6267) 2026-08-11 19:48:43 +08:00
jxxghp
7597c21872 feat(music): 自动整理时媒体类型判别 2026-08-11 19:08:05 +08:00
jxxghp
166d995f81 fix(locale): 补充音乐识别缓存接口的英文与繁体翻译 2026-08-11 13:36:19 +08:00
jxxghp
97a5197e63 feat(recognize): 影视与音乐统一插件辅助识别链路
- 音乐并入 select_recognize_source 统一选择流程,支持插件优先/原生优先,按 MusicNameRecognize 事件与远端身份谓词区分
- 新增 MediaRecognize 链式事件,与 MusicMediaRecognize 对称,统一为 _supplement_media_recognize 补充识别
- 插件回写统一要求 source 与远端身份,采信后统一上报共享识别
- 插件优先模式下辅助识别未取得身份时保留原生兜底结果
2026-08-11 13:23:37 +08:00
jxxghp
a11001cf8b fix(music): 艺术家-年份-专辑三明治结构拆分提取发行年份 2026-08-11 11:55:12 +08:00
jxxghp
d0edcfa7bb feat(music): 音乐订阅刷新与识别缓存 2026-08-11 11:39:08 +08:00
jxxghp
778d185c9d fix(music): 系列专辑弱匹配要求分卷一致避免跨卷误配
- 资源带卷号(Ibiza Lounge Moments, Vol. 1)时候选卷号为其他分卷
  直接排除,修复 Vol.1/Vol.2 被误配到 Vol.3 条目;
  候选无卷号(条目本体不含分卷标记)时仍允许弱匹配
- 补充分卷一致性测试案例
2026-08-11 11:22:57 +08:00
jxxghp
ae2b7810a6 fix(music): 拉丁艺术家-专辑无空格连字符命名拆分修复解析归因
- 首个连字符左侧为艺术家(Gene Clark-White Light、Sophie Zelmani 同名专辑);
  两侧均需含空格才采信,左侧保护 Jay-Z 类连字符艺术家名,
  右侧排除 -ProfessorP 类发布组标签误拆
- 补充拉丁连字符拆分测试案例
2026-08-11 11:09:41 +08:00
jxxghp
9ab326e056 fix(music): 原声带电影名本体检索与合辑前缀拆分修复零命中
- musicbrainz: 原声带描述词(Original Motion Picture Soundtrack)剔除后
  用电影名本体补充检索阶梯,候选比对支持本体与主标题弱匹配;
  后缀定界防止 Ghost 类词内 ost 误剥,本体过短时不作独立检索目标
- musicbrainz: 尾部年份反复剥离,修复场景命名重复携带年份
  (Live At Montreux 2011 2011)阻断精确匹配
- metamusic: Various Artists-Title 全拼合辑前缀拆分,未收录别名变体
  统一归一为 Various Artists
- 补充原声带/重复年份/合辑前缀测试案例
2026-08-11 11:05:36 +08:00
jxxghp
44487f4343 fix(music): 卷号后缀剥离下沉到候选比对修复系列专辑失配
- 检索侧已剥离的 Vol. N 卷号后缀在候选挑选侧同样剥离,
  「好歌茹芸, Vol. 3」本体名与条目「好歌, 茹芸」主标题弱匹配命中
- 检索词元切分补充 ASCII 逗号/分号,避免标点成为逐字检索词元
- 补充卷号弱匹配测试案例
2026-08-11 10:36:32 +08:00
jxxghp
ae393456bd fix(music): 缩写点号还原与包含/演出后缀弱匹配修复失配
- metamusic: 连续单字母空格序列还原为点号缩写(S H E -> S.H.E),
  在场景点分之后执行避免点号再被压平
- metamusic: 规格段残留判定收紧,发布组短词仅在格式词无空格连字符
  形态(FLAC-HHWEB)放行,修复自然语言曲名(Ashielf Alpen)被误剥
- musicbrainz: 专辑候选新增包含关系弱匹配(原声带条目带额外前缀)
  与演出后缀弱匹配(S.H.E十七音乐会 -> 条目「十七」)
- 补充 metamusic 缩写还原与 musicbrainz 弱匹配测试案例
2026-08-11 10:24:45 +08:00
jxxghp
19937b210b fix(music): 署名前缀剥离与候选首段弱匹配修复失配
- 曲名开头的艺术家署名前缀(许茹芸的爱情电影主题曲)是命名习惯,
  检索式与候选比对统一用剥离后的主体名,署名身份由艺术家要求保证
- 条目「主体名 补充说明」结构(愛情電影主題曲 雲且留住)首段一致视为弱匹配
- 采样率支持空格写法(44 1khz),合集/精选纳入发行形态标记剔除
- 规格剔除后仅剩悬空分隔符时仍拆出艺术家(周杰伦 - 合集 2000-2022)
- 修正合集修饰词正则中的杂空格
2026-08-11 09:55:22 +08:00
jxxghp
62019d3d23 fix(music): CJK 标题适配 Lucene 分词的逐字 OR 检索
- MusicBrainz 索引将连续 CJK 视为单一词元,短语检索对中文标题永远零命中,
  新增 _query_phrase 将 CJK 文本拆为逐字 OR 检索式(OR 组带括号避免 AND 优先级歧义),
  拉丁文本保持短语检索
- 逐字 OR 召回宽,候选挑选收紧:标题未命中的候选不能仅凭艺术家署名得分
- 汉字数字与阿拉伯数字写法差异归一比对(茹此精彩十三首/茹此精彩13首)
- 补充逐字 OR 检索式、数字归一、艺术家独占候选拒绝等测试案例
2026-08-11 09:28:40 +08:00
jxxghp
779e10c6ae fix(music): 尾部规格段剥离与书名号结构归因修复
- 新增 _strip_spec_segments 尾部纯规格段整段剥离,避免规格后缀把
  艺术家/曲名拆分点推到连字符上(许茹芸 - 等得到 ... ALAC-HHWEB)
- 段定位限定段内禁连字符,匹配落在最尾片段;发布组标签仅在
  紧跟格式词的无空格形态或段内含规格词时剥离,保护单词曲名
- APE+CUE 联合写法的加号纳入规格段判定与悬空分隔符修剪
- 含书名号的括号注释(电影《xxx》主题曲)在结构解析前提取并拼回曲名,
  单层括号消歧后缀(电影版)保留
- 书名号分支支持「曲名-歌手」艺术家段反向拆分与尾部碟号/年份提取
- MusicBrainz 候选弱匹配扩展冒号副标题与首段连字符,检索式剥离尾部年份
- 补充规格段/书名号/VA/场景点分等真实种子测试案例
2026-08-11 08:57:43 +08:00
jxxghp
f09f81df72 refactor(music): 音乐识别核心下沉 MetaMusic 并优化 MusicBrainz 检索
- 标题解析核心从 app/helper/music.py 迁移到 MetaMusic(apply_title),
  删除 music helper,metainfo/chain 调用点切换
- 解析增强:全角归一、场景点分命名、年份区间双模式、日期前缀、
  视频标记剔除、VA 合辑署名归一、尾部年份提取、CJK 连字符拆分
- MusicBrainz 性能:全局 Session keep-alive 复用(6.3s→0.35s/请求),
  无艺术家线索时跳过专辑回退检索
- 候选挑选支持冒号副标题弱匹配,检索式剥离尾部年份减少无效检索
- 测试:test_metamusic 32 案例、musicbrainz 弱匹配/检索式新用例
2026-08-11 08:18:27 +08:00
jxxghp
a15b8542ea feat(music): 识别接口支持 MusicBrainz 数据源
- 选择 musicbrainz 数据源时非音频标题按音乐元数据解析
- 支持 艺术家 - 曲名 格式拆分艺术家后检索 MusicBrainz
2026-08-10 23:30:57 +08:00
jxxghp
52820af6d8 feat(indexer): API 站点支持音乐搜索(馒头/杜比/海胆/Rousi Pro/SunnyPT)
- MTorrentSpider 新增音乐分类(406 Music(音樂)),音乐搜索不再误用电影分类
- HddolbySpider 新增音乐唱片分类(408),演唱会视频(406)不计入音乐
- HaiDanSpider 新增 HQ Audio 音乐分类(408),并修复解析时从响应顶层取 category 恒为空的既有问题
- RousiSpider 支持 music 分类参数与结果标记,分类 ID 映射补充 5->music
- SunnyPTSpider 分类映射与结果解析通用支持 music 媒体类型
- 新增对应站点 spider 音乐搜索单测
2026-08-10 22:33:18 +08:00
jxxghp
60dc01694f feat(search): 搜索流事件携带过滤前候选资源数 candidate_items
标题搜索流逐批过滤导致候选数丢失,媒体搜索流最终事件补充候选数,供前端在候选全部被过滤规则淘汰时给出友好提示。Closes jxxghp/MoviePilot-Frontend#646
2026-08-10 21:41:04 +08:00
jxxghp
a322c4c375 feat(media): 媒体信息补充 TVDB slug 字段,修复 TheTvDb 数字 ID 链接 404
TVDB 已弃用数字 ID 直达 URL,仅 slug 形式可访问。详情接口在电视剧有 TVDB ID 时通过轻量 get_series 接口获取 slug,并随 MediaInfo 合并下发。Closes jxxghp/MoviePilot-Frontend#643
2026-08-10 21:41:04 +08:00
jxxghp
4a14af706c feat(dashboard): 媒体统计新增音乐本月新增数量
- monthly_media_statistics 纳入音乐整理记录,按曲目计数并按媒体 ID 去重
- Statistic 新增 music_count_month 字段,仪表板统计接口一并返回
2026-08-10 20:33:25 +08:00
jxxghp
24a5102aa8 refactor(music): 重命名 helper/music_name.py 为 helper/music.py 2026-08-10 20:16:00 +08:00
jxxghp
07ea99442e feat(music): 增强无标签音频识别,支持文件名/目录解析与专辑级匹配
- 新增 MusicNameParser:剥离曲序/碟号前缀、拆分歌手与曲名、解析专辑目录名(歌手/专辑/年份/音质)和 CD1 等碟片目录
- MetaInfoPath 与 MusicChain.read_path_meta 接入路径上下文,WAV 及标签不全的 FLAC/MP3 可补齐识别线索
- MusicBrainz 新增 match_music_album:按专辑名/歌手/曲名搜索候选发行版本,用曲目数、总时长、逐曲时长和曲名重合度打分对位
- MusicChain 新增 recognize_album_directory 目录级批量识别(按目录缓存),单曲识别未命中时自动兜底
- transfer 整理链路接入专辑匹配,命中后回填曲目身份用于重命名与刮削
2026-08-10 20:11:23 +08:00
jxxghp
85a7f98a94 fix(feishu): 修复群聊@回复发私聊及无目标通知报错 (#6262)
- 回复类消息携带 original_chat_id 时优先发回原会话,避免群聊@机器人的回复错误发送到私聊窗口
- update_or_post_message 编辑失败回退发新消息时保留原消息/会话上下文
- 无显式目标且未配置默认目标时,回退向最近互动过的会话广播发送(与企业微信策略一致)
- 仍无可用目标时报出含配置指引的明确错误(FEISHU_OPEN_ID/FEISHU_CHAT_ID)

Closes #6262
2026-08-10 18:18:48 +08:00
Yang Feng
16840c6767 fix(subscribe): 修复 RSS 媒体 ID 误识别跳过 (#6266) 2026-08-10 17:55:46 +08:00
jxxghp
5acd8ab514 fix(notify): scope album title aggregation to notifications only 2026-08-10 14:34:58 +08:00
jxxghp
1d75826549 fix(notify): use album title in music batch notifications 2026-08-10 14:04:19 +08:00
jxxghp
d72ed5ed8e feat(v3): move notification templates into DB migration and support music notifications 2026-08-10 13:23:20 +08:00
jxxghp
75e56d8e9a feat(music): add audio quality workflow 2026-08-10 10:23:02 +08:00
jxxghp
b3b376f2b1 feat(agent): complete music workflow support 2026-08-10 08:11:54 +08:00
jxxghp
1fc255b8a7 fix(music): complete subscription lifecycle 2026-08-10 07:21:06 +08:00
jxxghp
5572b2dc64 fix(music): separate album and recording subscriptions 2026-08-09 23:30:31 +08:00
jxxghp
aa4023e0a5 feat(music): scrape lyrics during library import 2026-08-09 22:22:31 +08:00
jxxghp
d03307b687 fix(monitor): 优先按目录配置识别音乐 2026-08-09 21:19:43 +08:00
jxxghp
393a4ca4e2 feat(music): complete album subscription workflow 2026-08-09 20:43:33 +08:00
jxxghp
a94202a28d fix: restore unit test gate 2026-08-09 19:01:33 +08:00
jxxghp
53a169d955 fix: preserve all recognized resource types 2026-08-09 18:41:54 +08:00
jxxghp
36666313b7 feat: 按媒体类型筛选搜索站点 2026-08-09 18:12:29 +08:00
jxxghp
1f8d4adba0 fix: preserve Remux in UHD BluRay resource type 2026-08-09 18:05:02 +08:00
jxxghp
9d781d33c2 fix: 恢复本地音频标签识别 2026-08-09 17:05:36 +08:00
jxxghp
5c7e09d407 fix(monitor): 修正远程快照文件数量累计 2026-08-09 16:37:25 +08:00
jxxghp
15c73240ac fix(download): apply custom words to torrent episodes (#6234) 2026-08-09 16:32:12 +08:00
jxxghp
e6d7d57e6f fix(agent): 修正 OpenAI 兼容 API Key 提示 (#6243) 2026-08-09 16:15:14 +08:00
jxxghp
964e3c0b8e test: 补充 AListGo 与特典整理回归验证 2026-08-09 14:53:13 +08:00
naughtyGitCat
3eed518f83 fix(transhandler): suppress noisy error notification for TV special and extra sample files without episode numbers
BD-BOX releases for Anime and TV shows frequently contain extra non-episode video files (such as NCOP, NCED, Menu, PV, CM, SP, Event, Logo, etc.). When transferring these single files, the lack of an episode number previously logged a warning and triggered a noisy '整理失败:未识别到文件集数' notification to users.

This change identifies known special/extra file patterns when begin_episode is None, logs them at INFO level, and suppresses the error notification while returning success to avoid false-positive failure alerts.
2026-08-09 14:48:18 +08:00
okatu-loli
2bf2d89c52 fix(storages): 令牌缓存失效范围限定为当前存储凭据 2026-08-09 14:48:18 +08:00
okatu-loli
7650ec5cef feat(storages): 新增 AList 存储类型 2026-08-09 14:48:18 +08:00
jxxghp
c312c5c0e6 Fix 修复音乐整理 2026-08-09 14:32:25 +08:00
jxxghp
29f1eb4313 feat: 统一音乐识别与影视共享上报,优化相关参数处理 2026-08-09 13:23:26 +08:00