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