spotifytobandcamp/struct.go

187 lines
5.6 KiB
Go

package main
import "time"
type TokenUser struct {
Token string `json:"access_token"`
TokenType string `json:"token_type"`
ExpiresIn string `json:"expires_in"`
}
func newTokenUser() TokenUser {
return TokenUser{Token: "", TokenType: "", ExpiresIn: ""}
}
type UrlBandcamp struct {
Artiste string `json:"artist"`
Album string `json:"album"`
SpotifyUrl string `json:"spotifyurl"`
BandcampUrl string `json:"bandcampurl"`
}
func newUrlBandcamp(auteur, album, spo, band string) UrlBandcamp {
return UrlBandcamp{Artiste: auteur, Album: album, SpotifyUrl: spo, BandcampUrl: band}
}
func newUrlWoBandcamp(auteur, album, spo string) UrlBandcamp {
return UrlBandcamp{Artiste: auteur, Album: album, SpotifyUrl: spo, BandcampUrl: ""}
}
type RespBandcamp struct {
Done int `json:"done"`
Todo int `json:"todo"`
Albums []UrlBandcamp `json:"albums"`
Artists []UrlBandcamp `json:"artists"`
Notfound []UrlBandcamp `json:"notfound"`
}
func (rp *RespBandcamp) ContainsAlbum(album, artist string) bool {
ret := false
for _, elem := range rp.Albums {
if elem.Album == album && elem.Artiste == artist {
ret = true
break
}
}
if !ret {
for _, elem := range rp.Artists {
if elem.Album == album && elem.Artiste == artist {
ret = true
break
}
}
}
if !ret {
for _, elem := range rp.Notfound {
if elem.Album == album && elem.Artiste == artist {
ret = true
break
}
}
}
return ret
}
func (rp *RespBandcamp) ContainsArtist(artist string) bool {
ret := false
for _, elem := range rp.Artists {
if elem.Artiste == artist {
ret = true
break
}
}
return ret
}
func (rp *RespBandcamp) AddAlbum(tmp UrlBandcamp) []UrlBandcamp {
rp.Albums = append(rp.Albums, tmp)
return rp.Albums
}
func (rp *RespBandcamp) AddArtist(tmp UrlBandcamp) []UrlBandcamp {
rp.Artists = append(rp.Artists, tmp)
return rp.Artists
}
func (rp *RespBandcamp) AddNotfound(tmp UrlBandcamp) []UrlBandcamp {
rp.Notfound = append(rp.Notfound, tmp)
return rp.Notfound
}
type SpotifyItem struct {
AddedAt time.Time `json:"added_at"`
AddedBy struct {
ExternalUrls struct {
Spotify string `json:"spotify"`
} `json:"external_urls"`
Href string `json:"href"`
ID string `json:"id"`
Type string `json:"type"`
URI string `json:"uri"`
} `json:"added_by"`
IsLocal bool `json:"is_local"`
PrimaryColor interface{} `json:"primary_color"`
Track struct {
Album struct {
AlbumType string `json:"album_type"`
Artists []struct {
ExternalUrls struct {
Spotify string `json:"spotify"`
} `json:"external_urls"`
Href string `json:"href"`
ID string `json:"id"`
Name string `json:"name"`
Type string `json:"type"`
URI string `json:"uri"`
} `json:"artists"`
AvailableMarkets []string `json:"available_markets"`
ExternalUrls struct {
Spotify string `json:"spotify"`
} `json:"external_urls"`
Href string `json:"href"`
ID string `json:"id"`
Images []struct {
Height int `json:"height"`
URL string `json:"url"`
Width int `json:"width"`
} `json:"images"`
Name string `json:"name"`
ReleaseDate string `json:"release_date"`
ReleaseDatePrecision string `json:"release_date_precision"`
TotalTracks int `json:"total_tracks"`
Type string `json:"type"`
URI string `json:"uri"`
} `json:"album"`
Artists []struct {
ExternalUrls struct {
Spotify string `json:"spotify"`
} `json:"external_urls"`
Href string `json:"href"`
ID string `json:"id"`
Name string `json:"name"`
Type string `json:"type"`
URI string `json:"uri"`
} `json:"artists"`
AvailableMarkets []string `json:"available_markets"`
DiscNumber int `json:"disc_number"`
DurationMs int `json:"duration_ms"`
Episode bool `json:"episode"`
Explicit bool `json:"explicit"`
ExternalIds struct {
Isrc string `json:"isrc"`
} `json:"external_ids"`
ExternalUrls struct {
Spotify string `json:"spotify"`
} `json:"external_urls"`
Href string `json:"href"`
ID string `json:"id"`
IsLocal bool `json:"is_local"`
Name string `json:"name"`
Popularity int `json:"popularity"`
PreviewURL string `json:"preview_url"`
Track bool `json:"track"`
TrackNumber int `json:"track_number"`
Type string `json:"type"`
URI string `json:"uri"`
} `json:"track"`
VideoThumbnail struct {
URL interface{} `json:"url"`
} `json:"video_thumbnail"`
}
type SpotifyPlaylist struct {
Href string `json:"href"`
Items []SpotifyItem `json:"items"`
Limit int `json:"limit"`
Next string `json:"next"`
Offset int `json:"offset"`
Previous interface{} `json:"previous"`
Total int `json:"total"`
}