Fix relative episode number exceeding actual episode count (#238)

This commit is contained in:
bytedream 2023-08-17 11:54:00 +02:00
parent 70b41b4dd5
commit 596fcc2342

View file

@ -18,7 +18,7 @@ pub(crate) struct ArchiveFilter {
url_filter: UrlFilter, url_filter: UrlFilter,
archive: Archive, archive: Archive,
interactive_input: bool, interactive_input: bool,
season_episode_count: HashMap<u32, Vec<String>>, season_episode_count: HashMap<String, Vec<String>>,
season_subtitles_missing: Vec<u32>, season_subtitles_missing: Vec<u32>,
season_sorting: Vec<String>, season_sorting: Vec<String>,
visited: Visited, visited: Visited,
@ -229,7 +229,7 @@ impl Filter for ArchiveFilter {
if Format::has_relative_episodes_fmt(&self.archive.output) { if Format::has_relative_episodes_fmt(&self.archive.output) {
for episode in episodes.iter() { for episode in episodes.iter() {
self.season_episode_count self.season_episode_count
.entry(episode.season_number) .entry(episode.season_id.clone())
.or_insert(vec![]) .or_insert(vec![])
.push(episode.id.clone()) .push(episode.id.clone())
} }
@ -300,20 +300,16 @@ impl Filter for ArchiveFilter {
} }
let relative_episode_number = if Format::has_relative_episodes_fmt(&self.archive.output) { let relative_episode_number = if Format::has_relative_episodes_fmt(&self.archive.output) {
if self if self.season_episode_count.get(&episode.season_id).is_none() {
.season_episode_count
.get(&episode.season_number)
.is_none()
{
let season_episodes = episode.season().await?.episodes().await?; let season_episodes = episode.season().await?.episodes().await?;
self.season_episode_count.insert( self.season_episode_count.insert(
episode.season_number, episode.season_id.clone(),
season_episodes.into_iter().map(|e| e.id).collect(), season_episodes.into_iter().map(|e| e.id).collect(),
); );
} }
let relative_episode_number = self let relative_episode_number = self
.season_episode_count .season_episode_count
.get(&episode.season_number) .get(&episode.season_id)
.unwrap() .unwrap()
.iter() .iter()
.position(|id| id == &episode.id) .position(|id| id == &episode.id)