Better audio filtering

This commit is contained in:
bytedream 2022-02-24 22:09:55 +01:00
parent b4ba50d5a4
commit ceec69ef65

View file

@ -7,7 +7,7 @@ import (
// ExtractEpisodesFromUrl extracts all episodes from an url. // ExtractEpisodesFromUrl extracts all episodes from an url.
// If audio is not empty, the episodes gets filtered after the given locale // If audio is not empty, the episodes gets filtered after the given locale
func ExtractEpisodesFromUrl(crunchy *crunchyroll.Crunchyroll, url string, audio crunchyroll.LOCALE) ([]*crunchyroll.Episode, error) { func ExtractEpisodesFromUrl(crunchy *crunchyroll.Crunchyroll, url string, audio ...crunchyroll.LOCALE) ([]*crunchyroll.Episode, error) {
series, episodes, err := ParseUrl(crunchy, url) series, episodes, err := ParseUrl(crunchy, url)
if err != nil { if err != nil {
return nil, err return nil, err
@ -21,10 +21,20 @@ func ExtractEpisodesFromUrl(crunchy *crunchyroll.Crunchyroll, url string, audio
return nil, err return nil, err
} }
for _, season := range seasons { for _, season := range seasons {
if audio != "" { if audio != nil {
if audioLocale, err := season.AudioLocale(); err != nil { locale, err := season.AudioLocale()
if err != nil {
return nil, err return nil, err
} else if audioLocale != audio { }
var found bool
for _, l := range audio {
if locale == l {
found = true
break
}
}
if !found {
continue continue
} }
} }
@ -35,15 +45,34 @@ func ExtractEpisodesFromUrl(crunchy *crunchyroll.Crunchyroll, url string, audio
eps = append(eps, e...) eps = append(eps, e...)
} }
} else if episodes != nil { } else if episodes != nil {
if audio == nil {
return episodes, nil
}
for _, episode := range episodes { for _, episode := range episodes {
if audio == "" { locale, err := episode.AudioLocale()
eps = append(eps, episode) if err != nil {
} else if audioLocale, err := episode.AudioLocale(); err != nil {
return nil, err return nil, err
} else if audioLocale == audio { }
if audio != nil {
var found bool
for _, l := range audio {
if locale == l {
found = true
break
}
}
if !found {
continue
}
}
eps = append(eps, episode) eps = append(eps, episode)
} }
} }
if len(eps) == 0 {
return nil, fmt.Errorf("could not find any matching episode")
} }
return eps, nil return eps, nil