Files
gonic/lastfm/model.go
Senan Kelly f119659acf refactor scrobblers (#383)
- no need to explicitly pass api key
- move packages up a level
- catch more errors by extended scrobbler interface with IsUserAuthenticated
- move interface to server
- delete scrobbber package, clients implicitly satisfy Scrobble

this also helps with gonic-lastfm-sync
2023-09-27 00:13:00 +00:00

143 lines
3.5 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"`
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"`
}
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"`
}
)