mirror of
https://github.com/crunchy-labs/crunchy-cli.git
synced 2026-01-21 12:12:00 -06:00
Added function to get specific format by resolution and subtitle
This commit is contained in:
parent
0cbcad2c40
commit
92fe5782d1
1 changed files with 38 additions and 0 deletions
38
episode.go
38
episode.go
|
|
@ -117,6 +117,44 @@ func (e *Episode) AudioLocale() (LOCALE, error) {
|
|||
return streams[0].AudioLocale, nil
|
||||
}
|
||||
|
||||
func (e *Episode) GetFormat(resolution string, subtitle LOCALE, hardsub bool) (*Format, error) {
|
||||
streams, err := e.Streams()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var foundStream *Stream
|
||||
for _, stream := range streams {
|
||||
if hardsub && stream.HardsubLocale == subtitle || stream.HardsubLocale == "" && subtitle == "" {
|
||||
foundStream = stream
|
||||
break
|
||||
} else if !hardsub {
|
||||
for _, subtitle := range stream.Subtitles {
|
||||
if subtitle.Locale == subtitle.Locale {
|
||||
foundStream = stream
|
||||
break
|
||||
}
|
||||
}
|
||||
if foundStream != nil {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if foundStream == nil {
|
||||
return nil, fmt.Errorf("no matching stream found")
|
||||
}
|
||||
formats, err := foundStream.Formats()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, format := range formats {
|
||||
if format.Video.Resolution == resolution {
|
||||
return format, nil
|
||||
}
|
||||
}
|
||||
return nil, fmt.Errorf("no matching resolution found")
|
||||
}
|
||||
|
||||
// Streams returns all streams which are available for the episode
|
||||
func (e *Episode) Streams() ([]*Stream, error) {
|
||||
if e.children != nil {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue