mirror of
https://github.com/crunchy-labs/crunchy-cli.git
synced 2026-01-21 12:12:00 -06:00
Deprecate archive -l flag
This commit is contained in:
parent
273db9fe6a
commit
f584c8028f
2 changed files with 25 additions and 13 deletions
|
|
@ -15,7 +15,7 @@ use anyhow::Result;
|
|||
use chrono::Duration;
|
||||
use crunchyroll_rs::media::{Resolution, Subtitle};
|
||||
use crunchyroll_rs::Locale;
|
||||
use log::debug;
|
||||
use log::{debug, warn};
|
||||
use std::collections::HashMap;
|
||||
use std::path::PathBuf;
|
||||
|
||||
|
|
@ -29,7 +29,10 @@ pub struct Archive {
|
|||
#[arg(long_help = format!("Audio languages. Can be used multiple times. \
|
||||
Available languages are:\n{}", Locale::all().into_iter().map(|l| format!("{:<6} → {}", l.to_string(), l.to_human_readable())).collect::<Vec<String>>().join("\n ")))]
|
||||
#[arg(short, long, default_values_t = vec![Locale::ja_JP, crate::utils::locale::system_locale()])]
|
||||
pub(crate) locale: Vec<Locale>,
|
||||
pub(crate) audio: Vec<Locale>,
|
||||
#[arg(help = "Deprecated. Use '-a' / '--audio' instead")]
|
||||
#[arg(short, long, default_values_t = vec![Locale::ja_JP, crate::utils::locale::system_locale()])]
|
||||
locale: Vec<Locale>,
|
||||
#[arg(help = format!("Subtitle languages. Can be used multiple times. \
|
||||
Available languages are: {}", Locale::all().into_iter().map(|l| l.to_string()).collect::<Vec<String>>().join(", ")))]
|
||||
#[arg(long_help = format!("Subtitle languages. Can be used multiple times. \
|
||||
|
|
@ -116,7 +119,16 @@ impl Execute for Archive {
|
|||
bail!("File extension is not '.mkv'. Currently only matroska / '.mkv' files are supported")
|
||||
}
|
||||
|
||||
self.locale = all_locale_in_locales(self.locale.clone());
|
||||
if !self.locale.is_empty() {
|
||||
warn!("The '-l' / '--locale' flag is deprecated, use '-a' / '--audio' instead");
|
||||
for locale in &self.locale {
|
||||
if !self.audio.contains(locale) {
|
||||
self.audio.push(locale.clone())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
self.audio = all_locale_in_locales(self.audio.clone());
|
||||
self.subtitle = all_locale_in_locales(self.subtitle.clone());
|
||||
|
||||
Ok(())
|
||||
|
|
@ -154,7 +166,7 @@ impl Execute for Archive {
|
|||
.default_subtitle(self.default_subtitle.clone())
|
||||
.ffmpeg_preset(self.ffmpeg_preset.clone().unwrap_or_default())
|
||||
.output_format(Some("matroska".to_string()))
|
||||
.audio_sort(Some(self.locale.clone()))
|
||||
.audio_sort(Some(self.audio.clone()))
|
||||
.subtitle_sort(Some(self.subtitle.clone()));
|
||||
|
||||
for single_formats in single_format_collection.into_iter() {
|
||||
|
|
@ -177,10 +189,10 @@ impl Execute for Archive {
|
|||
}
|
||||
|
||||
format.locales.sort_by(|(a, _), (b, _)| {
|
||||
self.locale
|
||||
self.audio
|
||||
.iter()
|
||||
.position(|l| l == a)
|
||||
.cmp(&self.locale.iter().position(|l| l == b))
|
||||
.cmp(&self.audio.iter().position(|l| l == b))
|
||||
});
|
||||
for (_, subtitles) in format.locales.iter_mut() {
|
||||
subtitles.sort_by(|a, b| {
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ impl Filter for ArchiveFilter {
|
|||
// `series.audio_locales` isn't always populated b/c of crunchyrolls api. so check if the
|
||||
// audio is matching only if the field is populated
|
||||
if !series.audio_locales.is_empty() {
|
||||
let missing_audio = missing_locales(&series.audio_locales, &self.archive.locale);
|
||||
let missing_audio = missing_locales(&series.audio_locales, &self.archive.audio);
|
||||
if !missing_audio.is_empty() {
|
||||
warn!(
|
||||
"Series {} is not available with {} audio",
|
||||
|
|
@ -77,10 +77,10 @@ impl Filter for ArchiveFilter {
|
|||
return Ok(vec![]);
|
||||
}
|
||||
|
||||
let mut seasons = season.version(self.archive.locale.clone()).await?;
|
||||
let mut seasons = season.version(self.archive.audio.clone()).await?;
|
||||
if self
|
||||
.archive
|
||||
.locale
|
||||
.audio
|
||||
.iter()
|
||||
.any(|l| season.audio_locales.contains(l))
|
||||
{
|
||||
|
|
@ -94,7 +94,7 @@ impl Filter for ArchiveFilter {
|
|||
.flatten()
|
||||
.collect();
|
||||
real_dedup_vec(&mut audio_locales);
|
||||
let missing_audio = missing_locales(&audio_locales, &self.archive.locale);
|
||||
let missing_audio = missing_locales(&audio_locales, &self.archive.audio);
|
||||
if !missing_audio.is_empty() {
|
||||
warn!(
|
||||
"Season {} is not available with {} audio",
|
||||
|
|
@ -154,12 +154,12 @@ impl Filter for ArchiveFilter {
|
|||
|
||||
let mut episodes = vec![];
|
||||
if !matches!(self.visited, Visited::Series) && !matches!(self.visited, Visited::Season) {
|
||||
if self.archive.locale.contains(&episode.audio_locale) {
|
||||
if self.archive.audio.contains(&episode.audio_locale) {
|
||||
episodes.push((episode.clone(), episode.subtitle_locales.clone()))
|
||||
}
|
||||
episodes.extend(
|
||||
episode
|
||||
.version(self.archive.locale.clone())
|
||||
.version(self.archive.audio.clone())
|
||||
.await?
|
||||
.into_iter()
|
||||
.map(|e| (e.clone(), e.subtitle_locales.clone())),
|
||||
|
|
@ -168,7 +168,7 @@ impl Filter for ArchiveFilter {
|
|||
.iter()
|
||||
.map(|(e, _)| e.audio_locale.clone())
|
||||
.collect();
|
||||
let missing_audio = missing_locales(&audio_locales, &self.archive.locale);
|
||||
let missing_audio = missing_locales(&audio_locales, &self.archive.audio);
|
||||
if !missing_audio.is_empty() {
|
||||
warn!(
|
||||
"Episode {} is not available with {} audio",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue