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) }