Files
godeez/internal/deezer/playlist.go
T

64 lines
1.2 KiB
Go

package deezer
import (
"encoding/json"
"fmt"
"path"
"time"
"github.com/flytam/filenamify"
)
type Playlist struct {
Results struct {
Data struct {
Title string `json:"TITLE"`
Creator string `json:"PARENT_USERNAME"`
Duration int `json:"DURATION"`
} `json:"DATA"`
Tracks struct {
Data []*Track `json:"data"`
} `json:"SONGS"`
} `json:"results"`
}
func (p *Playlist) String() string {
return fmt.Sprintf(
`=============== [ Playlist Info ] ===============
Title: %s
Creator: %s
Tracks: %d
Duration: %s
=================================================`,
p.Results.Data.Title,
p.Results.Data.Creator,
len(p.Results.Tracks.Data),
time.Duration(p.Results.Data.Duration)*time.Second,
)
}
func (p *Playlist) GetType() string {
return "Playlist"
}
func (p *Playlist) GetTitle() string {
return p.Results.Data.Title
}
func (p *Playlist) GetTracks() []*Track {
return p.Results.Tracks.Data
}
func (p *Playlist) SetTracks(t []*Track) {
p.Results.Tracks.Data = t
}
func (p *Playlist) GetOutputDir(outputDir string) string {
base, _ := filenamify.Filenamify(p.Results.Data.Title, filenamify.Options{})
return path.Join(outputDir, base)
}
func (p *Playlist) Unmarshal(data []byte) error {
return json.Unmarshal(data, p)
}