get rid of btreemap in archive

This commit is contained in:
bocchi 2023-02-07 11:04:41 -05:00
parent cba921f1a8
commit 03dd1c5264

View file

@ -16,7 +16,6 @@ use anyhow::{bail, Result};
use crunchyroll_rs::media::Resolution; use crunchyroll_rs::media::Resolution;
use crunchyroll_rs::{Locale, Media, MediaCollection, Series}; use crunchyroll_rs::{Locale, Media, MediaCollection, Series};
use log::{debug, error, info}; use log::{debug, error, info};
use std::collections::BTreeMap;
use std::path::PathBuf; use std::path::PathBuf;
use std::process::{Command, Stdio}; use std::process::{Command, Stdio};
use tempfile::TempPath; use tempfile::TempPath;
@ -383,7 +382,7 @@ async fn formats_from_series(
} }
#[allow(clippy::type_complexity)] #[allow(clippy::type_complexity)]
let mut result: BTreeMap<u32, BTreeMap<u32, (Vec<Format>, Vec<Subtitle>)>> = BTreeMap::new(); let mut result: Vec<(Vec<Format>, Vec<Subtitle>)> = Vec::new();
let mut primary_season = true; let mut primary_season = true;
for season in seasons { for season in seasons {
let episodes = season.episodes().await?; let episodes = season.episodes().await?;
@ -411,11 +410,8 @@ async fn formats_from_series(
) )
}; };
let (ref mut formats, subtitles) = result let mut formats: Vec<Format> = Vec::new();
.entry(season.metadata.season_number) let mut subtitles: Vec<Subtitle> = Vec::new();
.or_insert_with(BTreeMap::new)
.entry((episode.metadata.sequence_number * 100.0) as u32)
.or_insert_with(|| (vec![], vec![]));
subtitles.extend(archive.subtitle.iter().filter_map(|l| { subtitles.extend(archive.subtitle.iter().filter_map(|l| {
let stream_subtitle = streams.subtitles.get(l).cloned()?; let stream_subtitle = streams.subtitles.get(l).cloned()?;
let subtitle = Subtitle { let subtitle = Subtitle {
@ -428,12 +424,14 @@ async fn formats_from_series(
Some(subtitle) Some(subtitle)
})); }));
formats.push(Format::new_from_episode(episode, &episodes, stream, vec![])); formats.push(Format::new_from_episode(episode, &episodes, stream, vec![]));
result.push((formats, subtitles));
} }
primary_season = false; primary_season = false;
} }
Ok(result.into_values().flat_map(|v| v.into_values()).collect()) Ok(result)
} }
async fn download_video(ctx: &Context, format: &Format, only_audio: bool) -> Result<TempPath> { async fn download_video(ctx: &Context, format: &Format, only_audio: bool) -> Result<TempPath> {