Compare commits
6 Commits
Author | SHA1 | Date |
---|---|---|
|
c4f1163a94 | |
|
7b4bf1563c | |
|
7d34e678ac | |
|
b81c62af15 | |
|
74fdf1601a | |
|
294d179089 |
40
guessit.go
40
guessit.go
|
@ -15,6 +15,7 @@ type GuessitConfig struct {
|
|||
|
||||
type Guessit struct {
|
||||
GuessitConfig
|
||||
DefaultOptions []string
|
||||
}
|
||||
|
||||
type Match struct {
|
||||
|
@ -32,15 +33,47 @@ type Match struct {
|
|||
// Video
|
||||
ScreenSize string `json:"screen_size,omitempty"`
|
||||
Container string `json:"container,omitempty"`
|
||||
VideoCodec string `json:"video_codec,omitempty"`
|
||||
|
||||
// Audio
|
||||
AudioChannels string `json:"audio_channels,omitempty"`
|
||||
AudioCodec string `json:"audio_codec,omitempty"`
|
||||
AudioChannels string `json:"audio_channels,omitempty"`
|
||||
AudioCodec []string `json:"audio_codec,omitempty"`
|
||||
|
||||
// Other
|
||||
Other []string `json:"other,omitempty"`
|
||||
}
|
||||
|
||||
func (u *Match) UnmarshalJSON(data []byte) error {
|
||||
type Alias Match
|
||||
aux := &struct {
|
||||
AudioCodec interface{} `json:"audio_codec,omitempty"`
|
||||
Other interface{} `json:"other,omitempty"`
|
||||
*Alias
|
||||
}{
|
||||
Alias: (*Alias)(u),
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(data, &aux); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
switch ac := aux.AudioCodec.(type) {
|
||||
case string:
|
||||
u.AudioCodec = append(u.AudioCodec, ac)
|
||||
case []string:
|
||||
u.AudioCodec = ac
|
||||
}
|
||||
|
||||
switch oth := aux.Other.(type) {
|
||||
case string:
|
||||
u.Other = append(u.Other, oth)
|
||||
case []string:
|
||||
u.Other = oth
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (g GuessitConfig) PipInstall() (err error) {
|
||||
args := []string{"-m", "pip", "install", "guessit"}
|
||||
cmd := exec.Command(g.Python, args...)
|
||||
|
@ -73,11 +106,12 @@ func New(conf GuessitConfig) (Guessit, error) {
|
|||
}
|
||||
}
|
||||
|
||||
return Guessit{conf}, nil
|
||||
return Guessit{conf, []string{}}, nil
|
||||
}
|
||||
|
||||
func (g Guessit) Guessit(s string, options ...string) (out Match, err error) {
|
||||
args := []string{"-m", "guessit", s}
|
||||
args = append(args, g.DefaultOptions...)
|
||||
args = append(args, options...)
|
||||
args = append(args, "--json")
|
||||
|
||||
|
|
Loading…
Reference in New Issue