error handling
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package plugin
|
package plugin
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
@@ -48,8 +49,9 @@ func (m Musify) RegexSong() *regexp.Regexp {
|
|||||||
return regexp.MustCompile(`(?i)https?://musify\.club/track/[a-z\-0-9]+`)
|
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{}
|
artist := data.Artist{}
|
||||||
|
var err error
|
||||||
|
|
||||||
anchor := contact.Find("a")
|
anchor := contact.Find("a")
|
||||||
if anchor.Length() > 0 {
|
if anchor.Length() > 0 {
|
||||||
@@ -65,6 +67,8 @@ func parseArtistContact(contact *goquery.Selection) data.Artist {
|
|||||||
if name, nameExists := anchor.Attr("title"); nameExists {
|
if name, nameExists := anchor.Attr("title"); nameExists {
|
||||||
artist.Name = name
|
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")
|
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{}
|
album := data.Album{}
|
||||||
|
var err error
|
||||||
|
|
||||||
/*
|
/*
|
||||||
<div class="contacts__item">
|
<div class="contacts__item">
|
||||||
@@ -118,6 +123,8 @@ func parseAlbumContact(contact *goquery.Selection) data.Album {
|
|||||||
splitAttr := strings.Split(strings.TrimSpace(titleDate), delimiter)
|
splitAttr := strings.Split(strings.TrimSpace(titleDate), delimiter)
|
||||||
album.Name = strings.Join(splitAttr[:len(splitAttr)-1], delimiter)
|
album.Name = strings.Join(splitAttr[:len(splitAttr)-1], delimiter)
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
err = errors.New("no anchor found")
|
||||||
}
|
}
|
||||||
|
|
||||||
contactInfo := contact.Find("div.contacts__info")
|
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 {
|
func parseContactContainer(contactContainer *goquery.Selection) []data.MusicObject {
|
||||||
@@ -171,9 +178,13 @@ func parseContactContainer(contactContainer *goquery.Selection) []data.MusicObje
|
|||||||
|
|
||||||
if exists {
|
if exists {
|
||||||
if strings.Contains(url, "artist") {
|
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") {
|
} else if strings.Contains(url, "release") {
|
||||||
res = append(res, parseAlbumContact(contact))
|
if album, err := parseAlbumContact(contact); err == nil {
|
||||||
|
res = append(res, album)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user