Fix file name sanitizing

This commit is contained in:
bytedream 2022-12-19 15:22:45 +01:00
parent 67bbc00d87
commit 8bb2c9c750
4 changed files with 23 additions and 19 deletions

View file

@ -63,15 +63,24 @@ impl Format {
}
}
pub fn format_string(s: String, format: &Format) -> String {
s.replace("{title}", &format.title)
.replace("{series_name}", &format.series_name)
.replace("{season_name}", &format.season_title)
.replace("{audio}", &format.audio.to_string())
.replace("{resolution}", &format.stream.resolution.to_string())
.replace("{season_number}", &format.season_number.to_string())
.replace("{episode_number}", &format.number.to_string())
.replace("{series_id}", &format.series_id)
.replace("{season_id}", &format.season_id)
.replace("{episode_id}", &format.id)
/// Formats the given string if it has specific pattern in it. It's possible to sanitize it which
/// removes characters which can cause failures if the output string is used as a file name.
pub fn format_string(s: String, format: &Format, sanitize: bool) -> String {
let sanitize_func = if sanitize {
|s: &str| sanitize_filename::sanitize(s)
} else {
// converting this to a string is actually unnecessary
|s: &str| s.to_string()
};
s.replace("{title}", &sanitize_func(&format.title))
.replace("{series_name}", &sanitize_func(&format.series_name))
.replace("{season_name}", &sanitize_func(&format.season_title))
.replace("{audio}", &sanitize_func(&format.audio.to_string()))
.replace("{resolution}", &sanitize_func(&format.stream.resolution.to_string()))
.replace("{season_number}", &sanitize_func(&format.season_number.to_string()))
.replace("{episode_number}", &sanitize_func(&format.number.to_string()))
.replace("{series_id}", &sanitize_func(&format.series_id))
.replace("{season_id}", &sanitize_func(&format.season_id))
.replace("{episode_id}", &sanitize_func(&format.id))
}