parsing artist url

This commit is contained in:
Hazel Noack
2025-10-09 14:05:10 +02:00
parent 4c0f19b257
commit 1ae859b9b9
2 changed files with 51 additions and 4 deletions

View File

@@ -1,6 +1,7 @@
package common
import (
"regexp"
"strconv"
"strings"
)
@@ -21,3 +22,9 @@ func ZeroPad(num int, length int) string {
}
return strings.Repeat("0", length-len(str)) + str
}
var numericRegex = regexp.MustCompile(`^[\d]+$`)
func IsNumeric(num string) bool {
return numericRegex.MatchString(num)
}

View File

@@ -2,6 +2,8 @@ package plugin
import (
"errors"
"fmt"
"net/url"
"regexp"
"strings"
@@ -616,8 +618,46 @@ func (m Musify) FetchAlbum(source data.Source) (data.Album, error) {
return album, nil
}
func (m Musify) FetchArtist(source data.Source) (data.Artist, error) {
return data.Artist{
Name: extractName(source.Url),
}, nil
type parsedArtistUrl struct {
id string
name string
}
func newParsedArtistUrl(rawUrl string) (parsedArtistUrl, error) {
res := parsedArtistUrl{}
parsed, err := url.Parse(rawUrl)
if err != nil {
return res, err
}
dirs := strings.Split(parsed.Path, "/")
correctPart := dirs[len(dirs)-1]
split := strings.Split(correctPart, "-")
if len(split) < 2 {
return res, errors.New("last part of path has to consist of at least one - " + correctPart)
}
res.id = split[len(split)-1]
res.name = strings.Join(split[:len(split)-1], "-")
if !common.IsNumeric(res.id) {
return res, errors.New("last elem (id) has to be numeric " + res.id)
}
return res, nil
}
func (m Musify) FetchArtist(source data.Source) (data.Artist, error) {
res := data.Artist{
Name: extractName(source.Url),
}
parsed, err := newParsedArtistUrl(source.Url)
if err != nil {
return res, err
}
fmt.Println(parsed)
return res, nil
}