Files
gonic/lastfm/model.go
2023-11-07 23:43:11 +00:00

192 lines
4.9 KiB
Go

package lastfm
import "encoding/xml"
type (
LastFM struct {
XMLName xml.Name `xml:"lfm"`
Status string `xml:"status,attr"`
Session Session `xml:"session"`
Error Error `xml:"error"`
Artist Artist `xml:"artist"`
Album Album `xml:"album"`
TopTracks TopTracks `xml:"toptracks"`
SimilarTracks SimilarTracks `xml:"similartracks"`
SimilarArtists SimilarArtists `xml:"similarartists"`
LovedTracks LovedTracks `xml:"lovedtracks"`
User User `xml:"user"`
}
Session struct {
Name string `xml:"name"`
Key string `xml:"key"`
Subscriber uint `xml:"subscriber"`
}
Error struct {
Code uint `xml:"code,attr"`
Value string `xml:",chardata"`
}
SimilarArtist struct {
XMLName xml.Name `xml:"artist"`
Name string `xml:"name"`
MBID string `xml:"mbid"`
URL string `xml:"url"`
Image []Image `xml:"image"`
Streamable string `xml:"streamable"`
}
Image struct {
Text string `xml:",chardata"`
Size string `xml:"size,attr"`
}
Artist struct {
XMLName xml.Name `xml:"artist"`
Name string `xml:"name"`
MBID string `xml:"mbid"`
URL string `xml:"url"`
Image []Image `xml:"image"`
Streamable string `xml:"streamable"`
Stats struct {
Listeners string `xml:"listeners"`
Playcount string `xml:"playcount"`
} `xml:"stats"`
Similar struct {
Artists []Artist `xml:"artist"`
} `xml:"similar"`
Tags struct {
Tag []ArtistTag `xml:"tag"`
} `xml:"tags"`
Bio ArtistBio `xml:"bio"`
}
Album struct {
XMLName xml.Name `xml:"album"`
Name string `xml:"name"`
Artist string `xml:"artist"`
MBID string `xml:"mbid"`
URL string `xml:"url"`
Image []struct {
Text string `xml:",chardata"`
Size string `xml:"size,attr"`
} `xml:"image"`
Listeners string `xml:"listeners"`
Playcount string `xml:"playcount"`
Tracks struct {
Text string `xml:",chardata"`
Track []struct {
Text string `xml:",chardata"`
Rank string `xml:"rank,attr"`
Name string `xml:"name"`
URL string `xml:"url"`
Duration string `xml:"duration"`
Streamable struct {
Text string `xml:",chardata"`
Fulltrack string `xml:"fulltrack,attr"`
} `xml:"streamable"`
Artist struct {
Text string `xml:",chardata"`
Name string `xml:"name"`
Mbid string `xml:"mbid"`
URL string `xml:"url"`
} `xml:"artist"`
} `xml:"track"`
} `xml:"tracks"`
Tags struct {
Text string `xml:",chardata"`
Tag []struct {
Text string `xml:",chardata"`
Name string `xml:"name"`
URL string `xml:"url"`
} `xml:"tag"`
} `xml:"tags"`
Wiki struct {
Text string `xml:",chardata"`
Published string `xml:"published"`
Summary string `xml:"summary"`
Content string `xml:"content"`
} `xml:"wiki"`
}
ArtistTag struct {
Name string `xml:"name"`
URL string `xml:"url"`
}
ArtistBio struct {
Published string `xml:"published"`
Summary string `xml:"summary"`
Content string `xml:"content"`
}
TopTracks struct {
XMLName xml.Name `xml:"toptracks"`
Artist string `xml:"artist,attr"`
Tracks []Track `xml:"track"`
}
SimilarTracks struct {
XMLName xml.Name `xml:"similartracks"`
Artist string `xml:"artist,attr"`
Track string `xml:"track,attr"`
Tracks []Track `xml:"track"`
}
SimilarArtists struct {
XMLName xml.Name `xml:"similarartists"`
Artist string `xml:"artist,attr"`
Artists []Artist `xml:"artist"`
}
Track struct {
Rank int `xml:"rank,attr"`
Tracks []Track `xml:"track"`
Name string `xml:"name"`
MBID string `xml:"mbid"`
PlayCount int `xml:"playcount"`
Listeners int `xml:"listeners"`
URL string `xml:"url"`
Image []Image `xml:"image"`
}
LovedTracks struct {
XMLName xml.Name `xml:"lovedtracks"`
Tracks []struct {
Track
Date struct {
Text string `xml:",chardata"`
UTS string `xml:"uts,attr"`
} `xml:"date"`
Artist Artist `xml:"artist"`
} `xml:"track"`
}
User struct {
Text string `xml:",chardata"`
Name string `xml:"name"`
Realname string `xml:"realname"`
Image []struct {
Text string `xml:",chardata"`
Size string `xml:"size,attr"`
} `xml:"image"`
URL string `xml:"url"`
Country string `xml:"country"`
Age string `xml:"age"`
Gender string `xml:"gender"`
Subscriber string `xml:"subscriber"`
Playcount string `xml:"playcount"`
Playlists string `xml:"playlists"`
Bootstrap string `xml:"bootstrap"`
Registered struct {
Text string `xml:",chardata"`
Unixtime string `xml:"unixtime,attr"`
} `xml:"registered"`
Type string `xml:"type"`
ArtistCount string `xml:"artist_count"`
AlbumCount string `xml:"album_count"`
TrackCount string `xml:"track_count"`
}
)