feat: add first metadata implementation

This commit is contained in:
2026-02-15 18:13:08 +01:00
parent 1ce9feb5e6
commit 5b557f1b1f
4 changed files with 1890 additions and 4 deletions

View File

@@ -30,7 +30,12 @@ func (app *App) Download(url string, outputFolder string, serviceString string)
serviceString = DEFAULT_DOWNLOAD_SERVICE
}
_ = GetUrlType(url)
_, err := app.GetMetadata(url)
if err != nil {
return err
}
_ = ParseUrlType(url)
return errors.New("Invalid URL.")
}

View File

@@ -1,6 +1,7 @@
package lib
import (
"encoding/json"
"errors"
)
@@ -25,9 +26,41 @@ type Metadata struct {
}
func (app *App) GetMetadata(url string) (Metadata, error) {
return Metadata{}, nil
urlType := ParseUrlType(url)
switch urlType {
case UrlTypeTrack:
app.GetTrackMetadata(url)
}
return Metadata{}, errors.New("Invalid URL.")
}
func (app *App) GetTrackMetadata(url string) error {
client := NewSpotifyClient()
err := client.Initialize()
if err != nil {
return errors.New("Unable to fetch Spotify metadata.")
}
trackId, err := ParseTrackId(url)
if err != nil {
return err
}
payload := BuildSpotifyReqPayloadTrack(trackId)
rawMetadata, err := client.Query(payload)
if err != nil {
return err
}
a, err := json.Marshal(rawMetadata)
println(string(a))
return nil
}
func (app *App) PrintMetadata(url string) error {
return errors.New("Invalid URL.")
return errors.New("Unimplemented.")
}

1837
lib/spotfetch.go Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,7 @@
package lib
import (
"errors"
"strings"
)
@@ -12,7 +13,7 @@ const (
UrlTypeInvalid
)
func GetUrlType(url string) UrlType {
func ParseUrlType(url string) UrlType {
if strings.Contains(url, "https://open.spotify.com/track") {
return UrlTypeTrack
}
@@ -23,3 +24,13 @@ func GetUrlType(url string) UrlType {
return UrlTypeInvalid
}
func ParseTrackId(url string) (string, error) {
tmp := strings.Split(url, "/")
if len(tmp) == 0 {
return "", errors.New("Invalid URL.")
}
return tmp[len(tmp)-1], nil
}