mirror of
https://github.com/crunchy-labs/crunchy-cli.git
synced 2026-01-21 04:02: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 chrono::Duration;
|
||||||
use crunchyroll_rs::media::{Resolution, Subtitle};
|
use crunchyroll_rs::media::{Resolution, Subtitle};
|
||||||
use crunchyroll_rs::Locale;
|
use crunchyroll_rs::Locale;
|
||||||
use log::debug;
|
use log::{debug, warn};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
|
@ -29,7 +29,10 @@ pub struct Archive {
|
||||||
#[arg(long_help = format!("Audio languages. Can be used multiple times. \
|
#[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 ")))]
|
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()])]
|
#[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. \
|
#[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(", ")))]
|
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. \
|
#[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")
|
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());
|
self.subtitle = all_locale_in_locales(self.subtitle.clone());
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
@ -154,7 +166,7 @@ impl Execute for Archive {
|
||||||
.default_subtitle(self.default_subtitle.clone())
|
.default_subtitle(self.default_subtitle.clone())
|
||||||
.ffmpeg_preset(self.ffmpeg_preset.clone().unwrap_or_default())
|
.ffmpeg_preset(self.ffmpeg_preset.clone().unwrap_or_default())
|
||||||
.output_format(Some("matroska".to_string()))
|
.output_format(Some("matroska".to_string()))
|
||||||
.audio_sort(Some(self.locale.clone()))
|
.audio_sort(Some(self.audio.clone()))
|
||||||
.subtitle_sort(Some(self.subtitle.clone()));
|
.subtitle_sort(Some(self.subtitle.clone()));
|
||||||
|
|
||||||
for single_formats in single_format_collection.into_iter() {
|
for single_formats in single_format_collection.into_iter() {
|
||||||
|
|
@ -177,10 +189,10 @@ impl Execute for Archive {
|
||||||
}
|
}
|
||||||
|
|
||||||
format.locales.sort_by(|(a, _), (b, _)| {
|
format.locales.sort_by(|(a, _), (b, _)| {
|
||||||
self.locale
|
self.audio
|
||||||
.iter()
|
.iter()
|
||||||
.position(|l| l == a)
|
.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() {
|
for (_, subtitles) in format.locales.iter_mut() {
|
||||||
subtitles.sort_by(|a, b| {
|
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
|
// `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
|
// audio is matching only if the field is populated
|
||||||
if !series.audio_locales.is_empty() {
|
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() {
|
if !missing_audio.is_empty() {
|
||||||
warn!(
|
warn!(
|
||||||
"Series {} is not available with {} audio",
|
"Series {} is not available with {} audio",
|
||||||
|
|
@ -77,10 +77,10 @@ impl Filter for ArchiveFilter {
|
||||||
return Ok(vec![]);
|
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
|
if self
|
||||||
.archive
|
.archive
|
||||||
.locale
|
.audio
|
||||||
.iter()
|
.iter()
|
||||||
.any(|l| season.audio_locales.contains(l))
|
.any(|l| season.audio_locales.contains(l))
|
||||||
{
|
{
|
||||||
|
|
@ -94,7 +94,7 @@ impl Filter for ArchiveFilter {
|
||||||
.flatten()
|
.flatten()
|
||||||
.collect();
|
.collect();
|
||||||
real_dedup_vec(&mut audio_locales);
|
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() {
|
if !missing_audio.is_empty() {
|
||||||
warn!(
|
warn!(
|
||||||
"Season {} is not available with {} audio",
|
"Season {} is not available with {} audio",
|
||||||
|
|
@ -154,12 +154,12 @@ impl Filter for ArchiveFilter {
|
||||||
|
|
||||||
let mut episodes = vec![];
|
let mut episodes = vec![];
|
||||||
if !matches!(self.visited, Visited::Series) && !matches!(self.visited, Visited::Season) {
|
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.push((episode.clone(), episode.subtitle_locales.clone()))
|
||||||
}
|
}
|
||||||
episodes.extend(
|
episodes.extend(
|
||||||
episode
|
episode
|
||||||
.version(self.archive.locale.clone())
|
.version(self.archive.audio.clone())
|
||||||
.await?
|
.await?
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|e| (e.clone(), e.subtitle_locales.clone())),
|
.map(|e| (e.clone(), e.subtitle_locales.clone())),
|
||||||
|
|
@ -168,7 +168,7 @@ impl Filter for ArchiveFilter {
|
||||||
.iter()
|
.iter()
|
||||||
.map(|(e, _)| e.audio_locale.clone())
|
.map(|(e, _)| e.audio_locale.clone())
|
||||||
.collect();
|
.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() {
|
if !missing_audio.is_empty() {
|
||||||
warn!(
|
warn!(
|
||||||
"Episode {} is not available with {} audio",
|
"Episode {} is not available with {} audio",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue