mirror of
https://github.com/crunchy-labs/crunchy-cli.git
synced 2026-01-21 12:12:00 -06:00
Re-order instructions
This commit is contained in:
parent
12be16417f
commit
29845ba6e5
4 changed files with 35 additions and 28 deletions
|
|
@ -208,7 +208,7 @@ impl Execute for Archive {
|
||||||
format.stream.resolution,
|
format.stream.resolution,
|
||||||
format.stream.fps,
|
format.stream.fps,
|
||||||
format.season_number,
|
format.season_number,
|
||||||
format.number,
|
format.episode_number,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -234,7 +234,7 @@ impl Execute for Archive {
|
||||||
format.stream.resolution,
|
format.stream.resolution,
|
||||||
format.stream.fps,
|
format.stream.fps,
|
||||||
format.season_number,
|
format.season_number,
|
||||||
format.number
|
format.episode_number
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -266,7 +266,7 @@ impl Execute for Archive {
|
||||||
tab_info!(
|
tab_info!(
|
||||||
"Episode: S{:02}E{:02}",
|
"Episode: S{:02}E{:02}",
|
||||||
primary.season_number,
|
primary.season_number,
|
||||||
primary.number
|
primary.episode_number
|
||||||
);
|
);
|
||||||
tab_info!(
|
tab_info!(
|
||||||
"Audio: {} (primary), {}",
|
"Audio: {} (primary), {}",
|
||||||
|
|
@ -318,7 +318,7 @@ impl Execute for Archive {
|
||||||
|
|
||||||
// Remove subtitles of deleted video
|
// Remove subtitles of deleted video
|
||||||
if only_audio {
|
if only_audio {
|
||||||
subtitles.retain(|s| s.episode_id != additional.id);
|
subtitles.retain(|s| s.episode_id != additional.episode_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -182,7 +182,7 @@ impl Execute for Download {
|
||||||
format.stream.resolution,
|
format.stream.resolution,
|
||||||
format.stream.fps,
|
format.stream.fps,
|
||||||
format.season_number,
|
format.season_number,
|
||||||
format.number,
|
format.episode_number,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -202,7 +202,7 @@ impl Execute for Download {
|
||||||
format.stream.resolution,
|
format.stream.resolution,
|
||||||
format.stream.fps,
|
format.stream.fps,
|
||||||
format.season_number,
|
format.season_number,
|
||||||
format.number
|
format.episode_number
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -229,7 +229,11 @@ impl Execute for Download {
|
||||||
path.file_name().unwrap().to_str().unwrap()
|
path.file_name().unwrap().to_str().unwrap()
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
tab_info!("Episode: S{:02}E{:02}", format.season_number, format.number);
|
tab_info!(
|
||||||
|
"Episode: S{:02}E{:02}",
|
||||||
|
format.season_number,
|
||||||
|
format.episode_number
|
||||||
|
);
|
||||||
tab_info!("Audio: {}", format.audio);
|
tab_info!("Audio: {}", format.audio);
|
||||||
tab_info!(
|
tab_info!(
|
||||||
"Subtitles: {}",
|
"Subtitles: {}",
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,9 @@ use std::time::Duration;
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct Format {
|
pub struct Format {
|
||||||
pub id: String,
|
|
||||||
pub title: String,
|
pub title: String,
|
||||||
pub description: String,
|
pub description: String,
|
||||||
pub number: u32,
|
|
||||||
pub audio: Locale,
|
pub audio: Locale,
|
||||||
|
|
||||||
pub duration: Duration,
|
pub duration: Duration,
|
||||||
|
|
@ -20,15 +19,17 @@ pub struct Format {
|
||||||
pub season_id: String,
|
pub season_id: String,
|
||||||
pub season_title: String,
|
pub season_title: String,
|
||||||
pub season_number: u32,
|
pub season_number: u32,
|
||||||
|
|
||||||
|
pub episode_id: String,
|
||||||
|
pub episode_number: f32,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Format {
|
impl Format {
|
||||||
pub fn new_from_episode(episode: Media<Episode>, stream: VariantData) -> Self {
|
pub fn new_from_episode(episode: Media<Episode>, stream: VariantData) -> Self {
|
||||||
Self {
|
Self {
|
||||||
id: episode.id,
|
|
||||||
title: episode.title,
|
title: episode.title,
|
||||||
description: episode.description,
|
description: episode.description,
|
||||||
number: episode.metadata.episode_number,
|
|
||||||
audio: episode.metadata.audio_locale,
|
audio: episode.metadata.audio_locale,
|
||||||
|
|
||||||
duration: episode.metadata.duration.to_std().unwrap(),
|
duration: episode.metadata.duration.to_std().unwrap(),
|
||||||
|
|
@ -40,15 +41,17 @@ impl Format {
|
||||||
season_id: episode.metadata.season_id,
|
season_id: episode.metadata.season_id,
|
||||||
season_title: episode.metadata.season_title,
|
season_title: episode.metadata.season_title,
|
||||||
season_number: episode.metadata.season_number,
|
season_number: episode.metadata.season_number,
|
||||||
|
|
||||||
|
episode_id: episode.id,
|
||||||
|
episode_number: episode.metadata.episode.parse().unwrap_or(episode.metadata.sequence_number),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new_from_movie(movie: Media<Movie>, stream: VariantData) -> Self {
|
pub fn new_from_movie(movie: Media<Movie>, stream: VariantData) -> Self {
|
||||||
Self {
|
Self {
|
||||||
id: movie.id,
|
|
||||||
title: movie.title,
|
title: movie.title,
|
||||||
description: movie.description,
|
description: movie.description,
|
||||||
number: 1,
|
|
||||||
audio: Locale::ja_JP,
|
audio: Locale::ja_JP,
|
||||||
|
|
||||||
duration: movie.metadata.duration.to_std().unwrap(),
|
duration: movie.metadata.duration.to_std().unwrap(),
|
||||||
|
|
@ -60,6 +63,9 @@ impl Format {
|
||||||
season_id: movie.metadata.movie_listing_id,
|
season_id: movie.metadata.movie_listing_id,
|
||||||
season_title: movie.metadata.movie_listing_title,
|
season_title: movie.metadata.movie_listing_title,
|
||||||
season_number: 1,
|
season_number: 1,
|
||||||
|
|
||||||
|
episode_id: movie.id,
|
||||||
|
episode_number: 1.0,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -79,31 +85,28 @@ pub fn format_path(path: PathBuf, format: &Format, sanitize: bool) -> PathBuf {
|
||||||
PathBuf::from(
|
PathBuf::from(
|
||||||
as_string
|
as_string
|
||||||
.replace("{title}", &sanitize_func(&format.title))
|
.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("{audio}", &sanitize_func(&format.audio.to_string()))
|
||||||
.replace(
|
.replace(
|
||||||
"{resolution}",
|
"{resolution}",
|
||||||
&sanitize_func(&format.stream.resolution.to_string()),
|
&sanitize_func(&format.stream.resolution.to_string()),
|
||||||
)
|
)
|
||||||
.replace(
|
.replace("{series_id}", &sanitize_func(&format.series_id))
|
||||||
"{padded_season_number}",
|
.replace("{series_name}", &sanitize_func(&format.series_name))
|
||||||
&sanitize_func(&format!("{:0>2}", format.season_number.to_string())),
|
.replace("{season_id}", &sanitize_func(&format.season_id))
|
||||||
)
|
.replace("{season_name}", &sanitize_func(&format.season_title))
|
||||||
.replace(
|
.replace(
|
||||||
"{season_number}",
|
"{season_number}",
|
||||||
&sanitize_func(&format.season_number.to_string()),
|
&sanitize_func(&format.season_number.to_string()),
|
||||||
)
|
)
|
||||||
.replace(
|
.replace(
|
||||||
"{padded_episode_number}",
|
"{padded_season_number}",
|
||||||
&sanitize_func(&format!("{:0>2}", format.number.to_string())),
|
&sanitize_func(&format!("{:0>2}", format.season_number.to_string())),
|
||||||
)
|
)
|
||||||
|
.replace("{episode_id}", &sanitize_func(&format.episode_id))
|
||||||
|
.replace("{episode_number}", &sanitize_func(&format.episode_number.to_string()))
|
||||||
.replace(
|
.replace(
|
||||||
"{episode_number}",
|
"{padded_episode_number}",
|
||||||
&sanitize_func(&format.number.to_string()),
|
&sanitize_func(&format!("{:0>2}", format.episode_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)),
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ pub fn sort_formats_after_seasons(formats: Vec<Format>) -> Vec<Vec<Format>> {
|
||||||
let mut sorted = as_map
|
let mut sorted = as_map
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|(_, mut values)| {
|
.map(|(_, mut values)| {
|
||||||
values.sort_by(|a, b| a.number.cmp(&b.number));
|
values.sort_by(|a, b| a.episode_number.total_cmp(&b.episode_number));
|
||||||
values
|
values
|
||||||
})
|
})
|
||||||
.collect::<Vec<Vec<Format>>>();
|
.collect::<Vec<Vec<Format>>>();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue