Peach 0.52.0 · 功能缺口报告:SMB/NAS 媒体库 + 外部刮削结果复用 #272
jackalgao-bot
started this conversation in
Ideas
Replies: 1 comment
|
新版本应该已经修复了;如果仍能复现可以开一个 issue 提供诊断日志,我来排错。 |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
0. 一句话
在「Windows 本机 + NAS 共享盘(Z: 映射,1785 个平铺文件)+ 另一个刮削器负责产出 NFO/封面」的组合下,Peach 目前 无法完成首次扫描 (20 秒硬超时),也 无法把媒体文件交给本机外部播放器并同时命中同目录字幕 (SMB 来源只给 URL),且 已登记的媒体根不能更换传输方式 (本地→SMB 必须删根重建)。
1. 环境与现状
0.52.0,commitc91779d7258301bcddba5cc6be6f9304df730748,便携版(Windows 11,10.0.26200,AMD64)E:\datel\Peach\peach-data(已迁出系统盘)外部设备-SATA2,Windows 映射为Z:,Peach 中登记为 本地磁盘Z:\media.javdex-root1(0 字节)k1188.srt)2. 需求(按优先级)
xxx-1 / -2 / -3应被识别为同一作品的多个分卷(一个作品卡、多资产)。Z:\media\k1188.wmv),让播放器按同目录同名规则自动命中k1188.srt。3. 阻塞项与证据
B1(阻塞级)映射盘上的首次扫描必然 20 秒超时
现象:扫描失败,
files=0;issue:[Errno 10060] 读取媒体目录或配套文件超时,已跳过,可重试: 'Z:\\media'状态文件:
state\library-processing.json→scan_checkpoints["local:z:\\media"] = {"files": 0, "seconds": 20.13, ...}源码:
src/peach/media_io.py:15``TIMEOUT_SECONDS = 20.0(硬编码、无配置);media_io.py:116-140的directory读取在 Windows 本地盘分支里对 每个条目entry.stat(),并且value == 'identity'时再os.stat(entry.path)补读一次实测(同一时刻、同一台机器、资源管理器/PowerShell 正常):
files=0是必然结果,不是偶发抖动说明:测试连接(
/api/configuration/smb/test)能通过,说明账户与共享本身没问题期望 :
a) 该超时可配置,或按条目数量分级(例如 ≥N 条目时放大到 120 s);至少允许单一 request 超过 20 s 时"部分成功"而不是整目录判失败;
b) 对网络映射盘(UNC/映射盘) 避免逐文件二次 stat :Windows 的
QueryDirectory已返回属性,可用一次查询;st_ino缺失时不要在读取请求里补,改为"身份缺失 → 记为未知"而不是失败;c) 可选:对映射盘提供"按网络路径处理"的标记,走与 SMB 传输相同的低往返路径。
B2(阻塞级)同一真实目录无法以两种传输并存,且既有根不能改传输方式
现象:已有
Z:\media根时,再加smb://192.168.18.86/外部设备-SATA2/media→ 输入框变红 + "无法保存配置";而"测试连接"显示"共享目录可读取"源码:
media_configuration.py:192-198(declared/path重复或互含即报"媒体目录与另一行重复或互相包含");media_identity.py:169("已有根目录的来源和账本路径不可更换;请添加另一目录")影响:想在两种传输之间试跑,必须先删根、重扫,且丢失根 ID
期望 :
a) 允许 修改既有根的
transport(filesystem ↔ smb)并保留root_id、账本前缀与资产 ID (明确的重定位语义,与 ADR-0115 一致);b) 或允许同一真实目录登记两条传输,但只允许其中一条启用扫描/读取。
B3(需求级)SMB 来源下"外部播放器"拿不到本地路径
smb://...字符串src/peach/local_playback.py:63(subprocess.Popen([chosen[1], str(path)]);SMB 资源__str__即 smb URL).srt/.ass不会自动配对 (URL 流无同目录概念),这正是本需求的核心目标期望 :为 SMB 根提供"本机路径映射"配置(例如把
smb://host/share/media映射为Z:\media或 UNC),local-playback时优先使用该映射路径打开;映射缺失时再退回网络地址。B4(需求级)平铺目录的 NFO/封面命名过于严格
源码:
src/peach/library_nfo.py:66-84<视频主名>.nfo→ 否则按番号唯一匹配 → 否则movie.nfo(仅单视频目录或同番号)<视频主名>-poster.jpg→<视频主名>.jpg→poster/folder/cover.*( 仅单视频目录 )影响:1785 个文件平铺时,
poster.jpg类目录级封面无效;多分卷需要 每文件一份封面 ,与"少复制"目标冲突期望 :
a) 封面增加"按番号匹配"回退(同 B 的 NFO 逻辑):
<番号>-poster.jpg/<番号>.jpg可被该番号所有分卷共用;b) 或允许目录级封面(
poster.jpg/folder.jpg)在多视频目录内按番号配对生效。4. 已确认工作正常的部分(不需要改)
catalog_rules.py的^(?:\d{3})?[A-Za-z]{2,8}[-_. ]?\d{2,5}$与^(?:n|k)(\d{3,5})分支),jup0019 / gedo0043 / kb1547这类前缀不需要白名单library_processing.py:2269、timeline_sheets.py、config.py:142)custom只勾 probe+preview 即可"永不联网刮削"smb_transport.scandir一次查询带属性)5. 复现步骤(最短路径)
Z:,指向 SMB 共享下 1785 个平铺文件[Errno 10060] 读取媒体目录或配套文件超时…,files=0Z:根的情况下再添加同一共享的smb://...路径 → 保存报"重复或互相包含",无法保存All reactions