72 lines
1.3 KiB
Go
72 lines
1.3 KiB
Go
package app
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
|
|
"codeberg.org/danjones000/strip-beats/input/list"
|
|
"codeberg.org/danjones000/strip-beats/media"
|
|
"codeberg.org/danjones000/strip-beats/media/brainz"
|
|
"codeberg.org/danjones000/strip-beats/utils"
|
|
)
|
|
|
|
type recOpt struct {
|
|
rec brainz.Recording
|
|
num int
|
|
}
|
|
|
|
func (o recOpt) Title() string {
|
|
return o.rec.Title
|
|
}
|
|
|
|
func (o recOpt) Text() string {
|
|
return fmt.Sprintf(
|
|
"By %s - First Released %s - %s %s",
|
|
o.rec.FirstArtist().Name,
|
|
o.rec.FirstReleaseDate,
|
|
o.rec.FirstGenre().Name,
|
|
utils.Tern(o.rec.Video, "(Video)", ""))
|
|
}
|
|
|
|
func (o recOpt) Rune() rune {
|
|
s := strconv.Itoa(o.num)
|
|
for _, c := range s {
|
|
return c
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (o recOpt) Selected() func() {
|
|
return nil
|
|
}
|
|
|
|
func print() {
|
|
if file == nil {
|
|
PickFileWithConf()
|
|
}
|
|
fp, err := media.Fingerprint(file.Format.Path)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
ids, err := media.LookupFingerprint(fp)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
var recs []list.Option
|
|
var rec brainz.Recording
|
|
i := 1
|
|
for _, res := range ids.Results {
|
|
for _, rec = range res.Recordings {
|
|
err = brainz.FillRecording(&rec)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
recs = append(recs, recOpt{rec, i})
|
|
i = (i + 1) % 10
|
|
}
|
|
}
|
|
|
|
rec = list.List("Which recording is the correct one?", recs, nil).(recOpt).rec
|
|
|
|
fmt.Printf("%+v\n", rec.Title)
|
|
}
|