diff --git a/internal/plugin/musify.go b/internal/plugin/musify.go index 4602615..ca91620 100644 --- a/internal/plugin/musify.go +++ b/internal/plugin/musify.go @@ -1,6 +1,7 @@ package plugin import ( + "errors" "regexp" "strings" @@ -48,8 +49,9 @@ func (m Musify) RegexSong() *regexp.Regexp { return regexp.MustCompile(`(?i)https?://musify\.club/track/[a-z\-0-9]+`) } -func parseArtistContact(contact *goquery.Selection) data.Artist { +func parseArtistContact(contact *goquery.Selection) (data.Artist, error) { artist := data.Artist{} + var err error anchor := contact.Find("a") if anchor.Length() > 0 { @@ -65,6 +67,8 @@ func parseArtistContact(contact *goquery.Selection) data.Artist { if name, nameExists := anchor.Attr("title"); nameExists { artist.Name = name } + } else { + err = errors.New("no anchor found") } /* @@ -78,11 +82,12 @@ func parseArtistContact(contact *goquery.Selection) data.Artist { artist_thumbnail = image_soup.get("src") */ - return artist + return artist, err } -func parseAlbumContact(contact *goquery.Selection) data.Album { +func parseAlbumContact(contact *goquery.Selection) (data.Album, error) { album := data.Album{} + var err error /*
@@ -118,6 +123,8 @@ func parseAlbumContact(contact *goquery.Selection) data.Album { splitAttr := strings.Split(strings.TrimSpace(titleDate), delimiter) album.Name = strings.Join(splitAttr[:len(splitAttr)-1], delimiter) } + } else { + err = errors.New("no anchor found") } contactInfo := contact.Find("div.contacts__info") @@ -157,7 +164,7 @@ func parseAlbumContact(contact *goquery.Selection) data.Album { } } - return album + return album, err } func parseContactContainer(contactContainer *goquery.Selection) []data.MusicObject { @@ -171,9 +178,13 @@ func parseContactContainer(contactContainer *goquery.Selection) []data.MusicObje if exists { if strings.Contains(url, "artist") { - res = append(res, parseArtistContact(contact)) + if artist, err := parseArtistContact(contact); err == nil { + res = append(res, artist) + } } else if strings.Contains(url, "release") { - res = append(res, parseAlbumContact(contact)) + if album, err := parseAlbumContact(contact); err == nil { + res = append(res, album) + } } } }