Add missing Track, Album, Artist model types and client methods
Track: Added FileInfo, FileDownloadInfo, TrackFullInfo, SimilarTracks types
Album: Added AlbumSimilarEntities, AlbumTrailer, SimilarEntityItem types
Artist: Added ArtistSimilar, ArtistLinks, ArtistAbout, ArtistInfo, ArtistSkeleton,
ArtistTrailerStatus, ArtistLink, Stats, SkeletonBlock types
Client methods added:
- artists.go: GetArtistBriefInfo, GetArtistSimilar, GetArtistLinks, GetArtistAlsoAlbums,
GetArtistDiscographyAlbums, GetArtistSafeDirectAlbums, GetArtistTrackIds, GetArtistAbout,
GetArtistDonation, GetArtistInfo, GetArtistSkeleton, GetArtistTrailer
- albums.go: GetAlbumSimilarEntities, GetAlbumTrailer
- tracks.go: GetTracksFileInfo, GetTracksSimilar, GetTrackTrailer, GetTrackFullInfo
This commit is contained in:
1 parent
9d3bcc4a9b
commit
49920d8908
6 files changed
+783
No files matched your search
@@ -422,3 +422,107 @@ type AlbumActionButton struct {
|
||||
ViewBrowser bool `json:"view_browser"`
|
||||
}
|
||||
|
||||
// AlbumSimilarEntities represents similar entities for an album.
|
||||
type AlbumSimilarEntities struct {
|
||||
BaseModel
|
||||
Items []SimilarEntityItem `json:"items"`
|
||||
}
|
||||
|
||||
// DeJSON deserializes AlbumSimilarEntities from JSON data.
|
||||
func (ae *AlbumSimilarEntities) DeJSON(data []byte, c ClientInterface) (Model, error) {
|
||||
var raw map[string]json.RawMessage
|
||||
if err := json.Unmarshal(data, &raw); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
entities := &AlbumSimilarEntities{BaseModel: *NewBaseModel(c)}
|
||||
|
||||
if v, ok := raw["items"]; ok {
|
||||
var items []SimilarEntityItem
|
||||
json.Unmarshal(v, &items)
|
||||
entities.Items = items
|
||||
}
|
||||
|
||||
return entities, nil
|
||||
}
|
||||
|
||||
// DeList deserializes a list of AlbumSimilarEntities from JSON data.
|
||||
func (ae *AlbumSimilarEntities) DeList(data []byte, c ClientInterface) ([]Model, error) {
|
||||
var rawList []json.RawMessage
|
||||
if err := json.Unmarshal(data, &rawList); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
result := make([]Model, 0, len(rawList))
|
||||
for _, item := range rawList {
|
||||
entities := &AlbumSimilarEntities{BaseModel: *NewBaseModel(c)}
|
||||
if err := json.Unmarshal(item, entities); err != nil {
|
||||
continue
|
||||
}
|
||||
result = append(result, entities)
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// SimilarEntityItem represents a similar entity item.
|
||||
type SimilarEntityItem struct {
|
||||
BaseModel
|
||||
ID JSONID `json:"id"`
|
||||
Type string `json:"type"`
|
||||
Data json.RawMessage `json:"data"`
|
||||
}
|
||||
|
||||
// AlbumTrailer represents album trailer info.
|
||||
type AlbumTrailer struct {
|
||||
BaseModel
|
||||
Album *Album `json:"album"`
|
||||
Artists []Artist `json:"artists"`
|
||||
Trailer *TrailerInfo `json:"trailer"`
|
||||
}
|
||||
|
||||
// DeJSON deserializes AlbumTrailer from JSON data.
|
||||
func (at *AlbumTrailer) DeJSON(data []byte, c ClientInterface) (Model, error) {
|
||||
var raw map[string]json.RawMessage
|
||||
if err := json.Unmarshal(data, &raw); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
trailer := &AlbumTrailer{BaseModel: *NewBaseModel(c)}
|
||||
|
||||
if v, ok := raw["album"]; ok {
|
||||
var album Album
|
||||
json.Unmarshal(v, &album)
|
||||
trailer.Album = &album
|
||||
}
|
||||
if v, ok := raw["artists"]; ok {
|
||||
var artists []Artist
|
||||
json.Unmarshal(v, &artists)
|
||||
trailer.Artists = artists
|
||||
}
|
||||
if v, ok := raw["trailer"]; ok {
|
||||
var trailerInfo TrailerInfo
|
||||
json.Unmarshal(v, &trailerInfo)
|
||||
trailer.Trailer = &trailerInfo
|
||||
}
|
||||
|
||||
return trailer, nil
|
||||
}
|
||||
|
||||
// DeList deserializes a list of AlbumTrailer from JSON data.
|
||||
func (at *AlbumTrailer) DeList(data []byte, c ClientInterface) ([]Model, error) {
|
||||
var rawList []json.RawMessage
|
||||
if err := json.Unmarshal(data, &rawList); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
result := make([]Model, 0, len(rawList))
|
||||
for _, item := range rawList {
|
||||
trailer := &AlbumTrailer{BaseModel: *NewBaseModel(c)}
|
||||
if err := json.Unmarshal(item, trailer); err != nil {
|
||||
continue
|
||||
}
|
||||
result = append(result, trailer)
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user