mirror of
https://github.com/Cp0204/quark-auto-save.git
synced 2026-01-16 17:30:43 +08:00
新增电影命名规则配置功能
- 在系统配置中新增电影命名规则设置,包含匹配表达式和替换表达式两个输入框 - 默认匹配表达式:^(.*)\.([^.]+),替换表达式:片名 (年份).\2 - 影视发现页面的电影类榜单(热门电影、最新电影、豆瓣高分、冷门佳片)创建任务时自动应用电影命名规则 - 支持智能填充片名和年份变量,保持文件扩展名 - 向后兼容,老用户更新后自动获得默认配置
This commit is contained in:
parent
e3428e8eda
commit
86533d1f29
@ -656,6 +656,16 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="input-group">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text">电影命名规则</span>
|
||||||
|
</div>
|
||||||
|
<input type="text" class="form-control" v-model="formData.task_settings.movie_naming_pattern" placeholder="^(.*)\.([^.]+)" title="设置电影类型内容的默认文件命名规则的匹配表达式,在影视发现页面创建电影任务时自动填充">
|
||||||
|
<input type="text" class="form-control" v-model="formData.task_settings.movie_naming_replace" placeholder="片名 (年份).\2" title="设置电影类型内容的默认文件命名规则的替换表达式,在影视发现页面创建电影任务时自动填充。支持变量:片名、年份等">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-prepend">
|
||||||
@ -2068,6 +2078,8 @@
|
|||||||
anime_save_path: "动画目录前缀/剧名 (年份)/剧名 - S季数",
|
anime_save_path: "动画目录前缀/剧名 (年份)/剧名 - S季数",
|
||||||
variety_save_path: "综艺目录前缀/剧名 (年份)/剧名 - S季数",
|
variety_save_path: "综艺目录前缀/剧名 (年份)/剧名 - S季数",
|
||||||
documentary_save_path: "纪录片目录前缀/剧名 (年份)/剧名 - S季数",
|
documentary_save_path: "纪录片目录前缀/剧名 (年份)/剧名 - S季数",
|
||||||
|
movie_naming_pattern: "^(.*)\.([^.]+)",
|
||||||
|
movie_naming_replace: "片名 (年份).\\2",
|
||||||
tv_naming_rule: "剧名 - S季数E[]",
|
tv_naming_rule: "剧名 - S季数E[]",
|
||||||
tv_ignore_extension: true
|
tv_ignore_extension: true
|
||||||
},
|
},
|
||||||
@ -3163,11 +3175,20 @@
|
|||||||
anime_save_path: "动画目录前缀/剧名 (年份)/剧名 - S季数",
|
anime_save_path: "动画目录前缀/剧名 (年份)/剧名 - S季数",
|
||||||
variety_save_path: "综艺目录前缀/剧名 (年份)/剧名 - S季数",
|
variety_save_path: "综艺目录前缀/剧名 (年份)/剧名 - S季数",
|
||||||
documentary_save_path: "纪录片目录前缀/剧名 (年份)/剧名 - S季数",
|
documentary_save_path: "纪录片目录前缀/剧名 (年份)/剧名 - S季数",
|
||||||
|
movie_naming_pattern: "^(.*)\.([^.]+)",
|
||||||
|
movie_naming_replace: "片名 (年份).\\2",
|
||||||
tv_naming_rule: "剧名 - S季数E[]",
|
tv_naming_rule: "剧名 - S季数E[]",
|
||||||
tv_ignore_extension: true,
|
tv_ignore_extension: true,
|
||||||
auto_search_resources: "enabled"
|
auto_search_resources: "enabled"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
// 确保电影命名规则字段存在
|
||||||
|
if (!config_data.task_settings.movie_naming_pattern) {
|
||||||
|
config_data.task_settings.movie_naming_pattern = "^(.*)\.([^.]+)";
|
||||||
|
}
|
||||||
|
if (!config_data.task_settings.movie_naming_replace) {
|
||||||
|
config_data.task_settings.movie_naming_replace = "片名 (年份).\\2";
|
||||||
|
}
|
||||||
// 确保电视忽略后缀设置存在
|
// 确保电视忽略后缀设置存在
|
||||||
if (config_data.task_settings.tv_ignore_extension === undefined) {
|
if (config_data.task_settings.tv_ignore_extension === undefined) {
|
||||||
config_data.task_settings.tv_ignore_extension = true;
|
config_data.task_settings.tv_ignore_extension = true;
|
||||||
@ -7499,8 +7520,25 @@
|
|||||||
if (contentType === 'movie') {
|
if (contentType === 'movie') {
|
||||||
this.createTask.taskData.taskname = title;
|
this.createTask.taskData.taskname = title;
|
||||||
this.createTask.taskData.savepath = this.generateMovieSavePath(savePathTemplate, title, year);
|
this.createTask.taskData.savepath = this.generateMovieSavePath(savePathTemplate, title, year);
|
||||||
this.createTask.taskData.pattern = "";
|
|
||||||
this.createTask.taskData.replace = "";
|
// 应用电影命名规则
|
||||||
|
const movieNamingPattern = taskSettings.movie_naming_pattern && taskSettings.movie_naming_pattern.trim() !== ""
|
||||||
|
? taskSettings.movie_naming_pattern
|
||||||
|
: "";
|
||||||
|
const movieNamingReplace = taskSettings.movie_naming_replace && taskSettings.movie_naming_replace.trim() !== ""
|
||||||
|
? taskSettings.movie_naming_replace
|
||||||
|
: "";
|
||||||
|
|
||||||
|
if (movieNamingPattern && movieNamingReplace) {
|
||||||
|
// 生成智能填充的替换表达式
|
||||||
|
const generatedReplace = this.generateMovieNamingRule(movieNamingReplace, title, year);
|
||||||
|
this.createTask.taskData.pattern = movieNamingPattern;
|
||||||
|
this.createTask.taskData.replace = generatedReplace;
|
||||||
|
} else {
|
||||||
|
this.createTask.taskData.pattern = "";
|
||||||
|
this.createTask.taskData.replace = "";
|
||||||
|
}
|
||||||
|
|
||||||
this.createTask.taskData.use_sequence_naming = false;
|
this.createTask.taskData.use_sequence_naming = false;
|
||||||
this.createTask.taskData.use_episode_naming = false;
|
this.createTask.taskData.use_episode_naming = false;
|
||||||
this.createTask.taskData.sequence_naming = "";
|
this.createTask.taskData.sequence_naming = "";
|
||||||
@ -7698,6 +7736,26 @@
|
|||||||
|
|
||||||
return namingRule;
|
return namingRule;
|
||||||
},
|
},
|
||||||
|
generateMovieNamingRule(replaceTemplate, movieTitle, year) {
|
||||||
|
// 生成电影命名规则
|
||||||
|
let namingRule = replaceTemplate;
|
||||||
|
|
||||||
|
// 替换片名
|
||||||
|
namingRule = namingRule.replace(/片名/g, movieTitle);
|
||||||
|
|
||||||
|
// 替换年份
|
||||||
|
if (year) {
|
||||||
|
namingRule = namingRule.replace(/年份/g, year);
|
||||||
|
} else {
|
||||||
|
// 如果没有年份,移除包含年份的部分
|
||||||
|
namingRule = namingRule.replace(/\s*\(年份\)/g, '');
|
||||||
|
namingRule = namingRule.replace(/\s*(年份)/g, '');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 注意:正则表达式的反向引用(如\2)保持不变,将在实际重命名时由正则引擎处理
|
||||||
|
|
||||||
|
return namingRule;
|
||||||
|
},
|
||||||
generateCustomFolderPath(taskData) {
|
generateCustomFolderPath(taskData) {
|
||||||
// 根据任务设置生成自定义文件夹路径
|
// 根据任务设置生成自定义文件夹路径
|
||||||
const taskSettings = this.formData.task_settings || {};
|
const taskSettings = this.formData.task_settings || {};
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user