mirror of
https://github.com/crunchy-labs/crunchy-cli.git
synced 2026-01-21 04:02:00 -06:00
Better audio filtering
This commit is contained in:
parent
b4ba50d5a4
commit
ceec69ef65
1 changed files with 41 additions and 12 deletions
53
utils/url.go
53
utils/url.go
|
|
@ -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 {
|
||||||
for _, episode := range episodes {
|
if audio == nil {
|
||||||
if audio == "" {
|
return episodes, nil
|
||||||
eps = append(eps, episode)
|
|
||||||
} else if audioLocale, err := episode.AudioLocale(); err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else if audioLocale == audio {
|
|
||||||
eps = append(eps, episode)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, episode := range episodes {
|
||||||
|
locale, err := episode.AudioLocale()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if audio != nil {
|
||||||
|
var found bool
|
||||||
|
for _, l := range audio {
|
||||||
|
if locale == l {
|
||||||
|
found = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !found {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
eps = append(eps, episode)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(eps) == 0 {
|
||||||
|
return nil, fmt.Errorf("could not find any matching episode")
|
||||||
}
|
}
|
||||||
|
|
||||||
return eps, nil
|
return eps, nil
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue