-
Notifications
You must be signed in to change notification settings - Fork 304
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[RFC] 支持自定义保存路径 #762
Comments
支持该提案:
|
正则操作在这个提案中没有涉及,关于模板变量的处理只是简单的替换,我个人也没有想到有什么可能需要使用正则处理保存路径的场景,可以留待后续有缘人提类似场景再评估 :) |
你是没讲,但这个场景的根需求有使用正则的场景 |
你是指 #356 中提到的 正则的一个主要问题是需要多个入参,这会让配置的成本增加(理解成本、配置成本都会增加),我已经实现了这个提案所说的功能,也确实没有用到正则: |
嗯,使用正则与否只是一个技术实现上的问题,只是使用正则会提供正则带来的过滤、替换等能力,不过我比较怀疑是否有需要过滤保存路径中特殊符号或者关键词的场景。 就目前 AB 的两种使用方式来说:
|
背景 or 问题
当前 Auto_Bangumi 默认将下载文件保存为下列格式:
即,在 download_path 下是平铺式文件布局。
这样的文件布局在某些时候存在一些不便:
/${download_path}/${official_title}
最满足我的诉求。同时我还在使用 JimHans/bgm.res 来自动同步播放记录到 bgm.tv,当前 bgm.res 也是直接解析
${official_title}/S01E01.mkv
类似的文件结构,无法解析${official_title} (${year})/Season 1/S01E01.mkv
或${official_title}/Season 1/S01E01.mkv
格式的文件。目标 & 方案简述
支持模板变量方式的保存路径,以便灵活定义保存路径:
实际效果:
方案设计 & 实现步骤
在 _gen_save_path 时解析
Bangumi
或BangumiUpdate
类的所有类属性,并将这部分字段作为模板变量,替换入用户输入的模板字符串中:Auto_Bangumi/backend/src/module/downloader/path.py
Lines 56 to 61 in f47f77d
给定用户输入模板字符串:
/${download_path}/${official_title}
首先通过
data.__dict__.items()
获取所有类属性(同时过滤 _ 开头的内部属性)然后替换模板字符串中的
${field_name}
为field_value
如果
field_value
为空,则跳过该字段处理(例如给定模板字符串/${download_path}/${year}/${official_title}
,同时 data 中year
为空,则最终只会解析/${download_path}/${official_title}
)PS 1:
由于调用
_gen_save_path
方法时Bangumi
或BangumiUpdate
类的 save_path 仍未可用,因此需要在处理完成后增加下${download_path}
模板变量的支持PS 2:
本次改动后,自定义保存路径支持以下模板变量
基于
__dict__
的实现方式,本次也支持了Bangumi
或BangumiUpdate
类内部的其他字段,例如dpi
、source
、subtitle
等,但是考虑到这些字段基本都为可能空且可以预见的使用频率低,后续在文档中就不做体现了。同样因为是基于
__dict__
来实现的,后续扩展 Bangumi 类字段也将自动支持新字段作为模板变量来使用,例如新增月份、制作人等元信息。替代方案 & 对比
No response
The text was updated successfully, but these errors were encountered: