🚚 Move brainz to own package
This commit is contained in:
parent
2208b1de55
commit
4c5c46a5f2
6 changed files with 42 additions and 34 deletions
|
|
@ -4,7 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"codeberg.org/danjones000/strip-beats/media"
|
"codeberg.org/danjones000/strip-beats/media"
|
||||||
// "github.com/akrennmair/slice"
|
"codeberg.org/danjones000/strip-beats/media/brainz"
|
||||||
)
|
)
|
||||||
|
|
||||||
func print() {
|
func print() {
|
||||||
|
|
@ -19,10 +19,10 @@ func print() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
var recs []media.MbRecording
|
var recs []brainz.Recording
|
||||||
for _, res := range ids.Results {
|
for _, res := range ids.Results {
|
||||||
for _, rec := range res.Recordings {
|
for _, rec := range res.Recordings {
|
||||||
err = media.FillMbRecording(&rec)
|
err = brainz.FillRecording(&rec)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import (
|
||||||
|
|
||||||
"codeberg.org/danjones000/strip-beats/input/boolean"
|
"codeberg.org/danjones000/strip-beats/input/boolean"
|
||||||
"codeberg.org/danjones000/strip-beats/media"
|
"codeberg.org/danjones000/strip-beats/media"
|
||||||
|
"codeberg.org/danjones000/strip-beats/media/brainz"
|
||||||
)
|
)
|
||||||
|
|
||||||
type AppStep int
|
type AppStep int
|
||||||
|
|
@ -41,7 +42,7 @@ func testFp() {
|
||||||
|
|
||||||
func testMb() {
|
func testMb() {
|
||||||
id := "497f2f22-809b-4c9e-a692-72f7d8dcaaa2"
|
id := "497f2f22-809b-4c9e-a692-72f7d8dcaaa2"
|
||||||
mb, err := media.GetMbRecording(id)
|
mb, err := brainz.GetRecording(id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
@ -57,7 +58,6 @@ func testPrint() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func Run(step AppStep) {
|
func Run(step AppStep) {
|
||||||
// testMb()
|
|
||||||
testPrint()
|
testPrint()
|
||||||
for step < Quit {
|
for step < Quit {
|
||||||
switch step {
|
switch step {
|
||||||
|
|
|
||||||
1
go.mod
1
go.mod
|
|
@ -8,6 +8,7 @@ require (
|
||||||
github.com/adrg/xdg v0.4.0
|
github.com/adrg/xdg v0.4.0
|
||||||
github.com/akrennmair/slice v0.0.0-20220105203817-49445747ab81
|
github.com/akrennmair/slice v0.0.0-20220105203817-49445747ab81
|
||||||
github.com/creack/pty v1.1.18
|
github.com/creack/pty v1.1.18
|
||||||
|
github.com/google/uuid v1.1.1
|
||||||
github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f
|
github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f
|
||||||
github.com/rivo/tview v0.0.0-20230826224341-9754ab44dc1c
|
github.com/rivo/tview v0.0.0-20230826224341-9754ab44dc1c
|
||||||
github.com/rkoesters/xdg v0.0.1
|
github.com/rkoesters/xdg v0.0.1
|
||||||
|
|
|
||||||
1
go.sum
1
go.sum
|
|
@ -23,6 +23,7 @@ github.com/gdamore/tcell/v2 v2.6.0/go.mod h1:be9omFATkdr0D9qewWW3d+MEvl5dha+Etb5
|
||||||
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
|
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
|
||||||
github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
|
github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
|
||||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||||
|
github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
|
||||||
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
|
github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
|
||||||
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
|
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package media
|
package brainz
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
|
@ -7,75 +7,80 @@ import (
|
||||||
u "net/url"
|
u "net/url"
|
||||||
|
|
||||||
h "codeberg.org/danjones000/strip-beats/utils/http"
|
h "codeberg.org/danjones000/strip-beats/utils/http"
|
||||||
|
"github.com/google/uuid"
|
||||||
)
|
)
|
||||||
|
|
||||||
type MbRecording struct {
|
type Recording struct {
|
||||||
Id string
|
Id uuid.UUID
|
||||||
Isrcs []string
|
Isrcs []string
|
||||||
FirstReleaseDate string `json:"first-release-date"`
|
FirstReleaseDate string `json:"first-release-date"`
|
||||||
Length int
|
Length int
|
||||||
Title string
|
Title string
|
||||||
Video bool
|
Video bool
|
||||||
Releases []MbRelease
|
Releases []Release
|
||||||
Genres []MbGenre
|
Genres []Genre
|
||||||
}
|
}
|
||||||
|
|
||||||
type MbGenre struct {
|
type Genre struct {
|
||||||
Id string
|
Id uuid.UUID
|
||||||
Name string
|
Name string
|
||||||
}
|
}
|
||||||
|
|
||||||
type MbRelease struct {
|
type Release struct {
|
||||||
Id string
|
Id uuid.UUID
|
||||||
Country string
|
Country string
|
||||||
Date string
|
Date string
|
||||||
Media []MbMedia
|
Media []Media
|
||||||
Status string
|
Status string
|
||||||
StatusId string `json:"status-id"`
|
StatusId uuid.UUID `json:"status-id"`
|
||||||
ArtistCredit []MbArtistCredit `json:"artist-credit"`
|
ArtistCredit []ArtistCredit `json:"artist-credit"`
|
||||||
Title string
|
Title string
|
||||||
Genres []MbGenre
|
Genres []Genre
|
||||||
// ReleaseEvents []MbReleaseEvent `json:"release-events"`
|
// ReleaseEvents []ReleaseEvent `json:"release-events"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type MbArtistCredit struct {
|
type ArtistCredit struct {
|
||||||
Name string
|
Name string
|
||||||
Artist MbArtist
|
Artist Artist
|
||||||
}
|
}
|
||||||
|
|
||||||
type MbArtist struct {
|
type Artist struct {
|
||||||
Id string
|
Id uuid.UUID
|
||||||
Name string
|
Name string
|
||||||
TypeId string `json:"type-id"`
|
TypeId string `json:"type-id"`
|
||||||
Type string
|
Type string
|
||||||
SortName string `json:"sort-name"`
|
SortName string `json:"sort-name"`
|
||||||
Genres []MbGenre
|
Genres []Genre
|
||||||
}
|
}
|
||||||
|
|
||||||
type MbMedia struct {
|
type Media struct {
|
||||||
FormatId string `json:"format-id"`
|
FormatId uuid.UUID `json:"format-id"`
|
||||||
Position int
|
Position int
|
||||||
TrackOffset int `json:"track-offset"`
|
TrackOffset int `json:"track-offset"`
|
||||||
Format string
|
Format string
|
||||||
TrackCount int `json:"track-count"`
|
TrackCount int `json:"track-count"`
|
||||||
Tracks []MbTrack
|
Tracks []Track
|
||||||
}
|
}
|
||||||
|
|
||||||
type MbTrack struct {
|
type Track struct {
|
||||||
Id string
|
Id uuid.UUID
|
||||||
Number string
|
Number string
|
||||||
Title string
|
Title string
|
||||||
Position int
|
Position int
|
||||||
Length int
|
Length int
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetMbRecording(id string) (MbRecording, error) {
|
func GetRecording(id string) (Recording, error) {
|
||||||
rec := MbRecording{Id: id}
|
u, err := uuid.Parse(id)
|
||||||
err := FillMbRecording(&rec)
|
rec := Recording{Id: u}
|
||||||
|
if err != nil {
|
||||||
|
return rec, err
|
||||||
|
}
|
||||||
|
err = FillRecording(&rec)
|
||||||
return rec, err
|
return rec, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func FillMbRecording(rec *MbRecording) error {
|
func FillRecording(rec *Recording) error {
|
||||||
url := fmt.Sprintf("https://musicbrainz.org/ws/2/recording/%s", rec.Id)
|
url := fmt.Sprintf("https://musicbrainz.org/ws/2/recording/%s", rec.Id)
|
||||||
resp, err := h.GetWithQuery(url, u.Values{
|
resp, err := h.GetWithQuery(url, u.Values{
|
||||||
"fmt": []string{"json"},
|
"fmt": []string{"json"},
|
||||||
|
|
@ -10,6 +10,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"codeberg.org/danjones000/strip-beats/config"
|
"codeberg.org/danjones000/strip-beats/config"
|
||||||
|
"codeberg.org/danjones000/strip-beats/media/brainz"
|
||||||
h "codeberg.org/danjones000/strip-beats/utils/http"
|
h "codeberg.org/danjones000/strip-beats/utils/http"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -46,7 +47,7 @@ type IdResults struct {
|
||||||
type IdResult struct {
|
type IdResult struct {
|
||||||
Id string
|
Id string
|
||||||
Score float64
|
Score float64
|
||||||
Recordings []MbRecording
|
Recordings []brainz.Recording
|
||||||
}
|
}
|
||||||
|
|
||||||
type IdError struct {
|
type IdError struct {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue