🚧 More of fingerprinting
This commit is contained in:
parent
4c5c46a5f2
commit
c87dc5e04f
3 changed files with 89 additions and 6 deletions
49
app/print.go
49
app/print.go
|
|
@ -2,16 +2,49 @@ package app
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
|
"codeberg.org/danjones000/strip-beats/input/list"
|
||||||
"codeberg.org/danjones000/strip-beats/media"
|
"codeberg.org/danjones000/strip-beats/media"
|
||||||
"codeberg.org/danjones000/strip-beats/media/brainz"
|
"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() {
|
func print() {
|
||||||
if file == nil {
|
if file == nil {
|
||||||
PickFileWithConf()
|
PickFileWithConf()
|
||||||
}
|
}
|
||||||
fp, err := media.Fingerprint("/home/drj/MyFiles/Videos/WebShows/YouTube/Dolly_Parton_-_Topic/Just_Because_I_m_a_Woman.Dolly_Parton_-_Topic.Fmv-XQerVkM.webm")
|
fp, err := media.Fingerprint(file.Format.Path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
@ -19,17 +52,21 @@ func print() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
var recs []brainz.Recording
|
var recs []list.Option
|
||||||
|
var rec brainz.Recording
|
||||||
|
i := 1
|
||||||
for _, res := range ids.Results {
|
for _, res := range ids.Results {
|
||||||
for _, rec := range res.Recordings {
|
for _, rec = range res.Recordings {
|
||||||
err = brainz.FillRecording(&rec)
|
err = brainz.FillRecording(&rec)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
recs = append(recs, rec)
|
recs = append(recs, recOpt{rec, i})
|
||||||
|
i = (i + 1) % 10
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf("%+v\n", recs)
|
rec = list.List("Which recording is the correct one?", recs, nil).(recOpt).rec
|
||||||
|
|
||||||
|
fmt.Printf("%+v\n", rec.Title)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,45 @@ type Recording struct {
|
||||||
Video bool
|
Video bool
|
||||||
Releases []Release
|
Releases []Release
|
||||||
Genres []Genre
|
Genres []Genre
|
||||||
|
ArtistCredit []ArtistCredit `json:"artist-credit"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r Recording) FirstArtist() Artist {
|
||||||
|
var a Artist
|
||||||
|
for _, ac := range r.ArtistCredit {
|
||||||
|
if ac.Artist.Name != "" {
|
||||||
|
return ac.Artist
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, rel := range r.Releases {
|
||||||
|
for _, ac := range rel.ArtistCredit {
|
||||||
|
if ac.Artist.Name != "" {
|
||||||
|
return ac.Artist
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if a.Name == "" {
|
||||||
|
a.Name = "Unknown Artist"
|
||||||
|
}
|
||||||
|
return a
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r Recording) FirstGenre() Genre {
|
||||||
|
var g Genre
|
||||||
|
for _, g = range r.Genres {
|
||||||
|
if g.Name != "" {
|
||||||
|
return g
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, rel := range r.Releases {
|
||||||
|
for _, g = range rel.Genres {
|
||||||
|
if g.Name != "" {
|
||||||
|
return g
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return g
|
||||||
}
|
}
|
||||||
|
|
||||||
type Genre struct {
|
type Genre struct {
|
||||||
|
|
|
||||||
|
|
@ -29,3 +29,10 @@ func HourMinSecToSeconds(time string) (float64, error) {
|
||||||
dur, _ := t.ParseDuration(f)
|
dur, _ := t.ParseDuration(f)
|
||||||
return dur.Seconds(), nil
|
return dur.Seconds(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Tern[V any](choice bool, one, two V) V {
|
||||||
|
if choice {
|
||||||
|
return one
|
||||||
|
}
|
||||||
|
return two
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue