strip-beats/app/print.go

73 lines
1.3 KiB
Go
Raw Normal View History

2023-09-23 21:57:56 -05:00
package app
import (
"fmt"
2023-09-24 22:34:30 -05:00
"strconv"
2023-09-23 21:57:56 -05:00
2023-09-24 22:34:30 -05:00
"codeberg.org/danjones000/strip-beats/input/list"
2023-09-23 21:57:56 -05:00
"codeberg.org/danjones000/strip-beats/media"
2023-09-24 16:40:24 -05:00
"codeberg.org/danjones000/strip-beats/media/brainz"
2023-09-24 22:34:30 -05:00
"codeberg.org/danjones000/strip-beats/utils"
2023-09-23 21:57:56 -05:00
)
2023-09-24 22:34:30 -05:00
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
}
2023-09-23 21:57:56 -05:00
func print() {
if file == nil {
PickFileWithConf()
}
2023-09-24 22:34:30 -05:00
fp, err := media.Fingerprint(file.Format.Path)
2023-09-23 21:57:56 -05:00
if err != nil {
panic(err)
}
ids, err := media.LookupFingerprint(fp)
if err != nil {
panic(err)
}
2023-09-24 22:34:30 -05:00
var recs []list.Option
var rec brainz.Recording
i := 1
2023-09-23 21:57:56 -05:00
for _, res := range ids.Results {
2023-09-24 22:34:30 -05:00
for _, rec = range res.Recordings {
2023-09-24 16:40:24 -05:00
err = brainz.FillRecording(&rec)
2023-09-23 21:57:56 -05:00
if err != nil {
panic(err)
}
2023-09-24 22:34:30 -05:00
recs = append(recs, recOpt{rec, i})
i = (i + 1) % 10
2023-09-23 21:57:56 -05:00
}
}
2023-09-24 22:34:30 -05:00
rec = list.List("Which recording is the correct one?", recs, nil).(recOpt).rec
fmt.Printf("%+v\n", rec.Title)
2023-09-23 21:57:56 -05:00
}