style: rename accessors to idiomatic names

This commit is contained in:
Mathis Maquenne
2026-08-05 11:47:53 +02:00
parent 88319ebb3c
commit f8b301e24c
16 changed files with 46 additions and 46 deletions
+4 -4
View File
@@ -26,11 +26,11 @@ type Album struct {
} `json:"results"` } `json:"results"`
} }
func (a *Album) GetTitle() string { func (a *Album) Title() string {
return a.Results.Data.Title return a.Results.Data.Title
} }
func (a *Album) GetTracks() []*Track { func (a *Album) Tracks() []*Track {
return a.Results.Tracks.Data return a.Results.Tracks.Data
} }
@@ -38,12 +38,12 @@ func (a *Album) SetTracks(t []*Track) {
a.Results.Tracks.Data = t a.Results.Tracks.Data = t
} }
func (a *Album) GetOutputDir(outputDir string) string { func (a *Album) OutputDir(outputDir string) string {
base := fmt.Sprintf("%s - %s", a.Results.Data.Artist, a.Results.Data.Title) base := fmt.Sprintf("%s - %s", a.Results.Data.Artist, a.Results.Data.Title)
base, _ = filenamify.Filenamify(base, filenamify.Options{}) base, _ = filenamify.Filenamify(base, filenamify.Options{})
return path.Join(outputDir, base) return path.Join(outputDir, base)
} }
func (a *Album) Unmarshal(data []byte) error { func (a *Album) decode(data []byte) error {
return json.Unmarshal(data, a) return json.Unmarshal(data, a)
} }
+4 -4
View File
@@ -18,11 +18,11 @@ type Artist struct {
} `json:"results"` } `json:"results"`
} }
func (a *Artist) GetTitle() string { func (a *Artist) Title() string {
return a.Results.Data.Name return a.Results.Data.Name
} }
func (a *Artist) GetTracks() []*Track { func (a *Artist) Tracks() []*Track {
return a.Results.Tracks.Data return a.Results.Tracks.Data
} }
@@ -30,11 +30,11 @@ func (a *Artist) SetTracks(t []*Track) {
a.Results.Tracks.Data = t a.Results.Tracks.Data = t
} }
func (a *Artist) GetOutputDir(outputDir string) string { func (a *Artist) OutputDir(outputDir string) string {
base, _ := filenamify.Filenamify(a.Results.Data.Name, filenamify.Options{}) base, _ := filenamify.Filenamify(a.Results.Data.Name, filenamify.Options{})
return path.Join(outputDir, base) return path.Join(outputDir, base)
} }
func (a *Artist) Unmarshal(data []byte) error { func (a *Artist) decode(data []byte) error {
return json.Unmarshal(data, a) return json.Unmarshal(data, a)
} }
+7 -7
View File
@@ -83,7 +83,7 @@ func (c *Client) FetchResource(ctx context.Context, kind Kind, id string) (Resou
return nil, err return nil, err
} }
resp, err := c.Session.HttpClient.Do(req) resp, err := c.Session.HTTPClient.Do(req)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -117,7 +117,7 @@ func (c *Client) FetchResource(ctx context.Context, kind Kind, id string) (Resou
return nil, fmt.Errorf("unexpected response") return nil, fmt.Errorf("unexpected response")
} }
if err := resource.Unmarshal(body); err != nil { if err := resource.decode(body); err != nil {
return nil, err return nil, err
} }
@@ -137,7 +137,7 @@ func (c *Client) FetchMedia(ctx context.Context, track *Track, quality string) (
return nil, err return nil, err
} }
resp, err := c.Session.HttpClient.Do(req) resp, err := c.Session.HTTPClient.Do(req)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -185,7 +185,7 @@ func (c *Client) FetchCoverImage(ctx context.Context, track *Track) ([]byte, err
return nil, err return nil, err
} }
resp, err := c.Session.HttpClient.Do(req) resp, err := c.Session.HTTPClient.Do(req)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -198,13 +198,13 @@ func (c *Client) FetchCoverImage(ctx context.Context, track *Track) ([]byte, err
return io.ReadAll(resp.Body) return io.ReadAll(resp.Body)
} }
func (c *Client) GetMediaStream(ctx context.Context, media *Media) (io.ReadCloser, error) { func (c *Client) MediaStream(ctx context.Context, media *Media) (io.ReadCloser, error) {
req, err := http.NewRequestWithContext(ctx, "GET", media.GetURL(), nil) req, err := http.NewRequestWithContext(ctx, "GET", media.URL(), nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
streamingClient := *c.Session.HttpClient streamingClient := *c.Session.HTTPClient
streamingClient.Timeout = 0 streamingClient.Timeout = 0
resp, err := streamingClient.Do(req) resp, err := streamingClient.Do(req)
+2 -2
View File
@@ -18,10 +18,10 @@ type mediaError struct {
Message string `json:"message"` Message string `json:"message"`
} }
func (m *Media) GetURL() string { func (m *Media) URL() string {
return m.Data[0].Media[0].Sources[0].URL return m.Data[0].Media[0].Sources[0].URL
} }
func (m *Media) GetFormat() string { func (m *Media) Format() string {
return m.Data[0].Media[0].Format return m.Data[0].Media[0].Format
} }
+4 -4
View File
@@ -20,11 +20,11 @@ type Playlist struct {
} `json:"results"` } `json:"results"`
} }
func (p *Playlist) GetTitle() string { func (p *Playlist) Title() string {
return p.Results.Data.Title return p.Results.Data.Title
} }
func (p *Playlist) GetTracks() []*Track { func (p *Playlist) Tracks() []*Track {
return p.Results.Tracks.Data return p.Results.Tracks.Data
} }
@@ -32,11 +32,11 @@ func (p *Playlist) SetTracks(t []*Track) {
p.Results.Tracks.Data = t p.Results.Tracks.Data = t
} }
func (p *Playlist) GetOutputDir(outputDir string) string { func (p *Playlist) OutputDir(outputDir string) string {
base, _ := filenamify.Filenamify(p.Results.Data.Title, filenamify.Options{}) base, _ := filenamify.Filenamify(p.Results.Data.Title, filenamify.Options{})
return path.Join(outputDir, base) return path.Join(outputDir, base)
} }
func (p *Playlist) Unmarshal(data []byte) error { func (p *Playlist) decode(data []byte) error {
return json.Unmarshal(data, p) return json.Unmarshal(data, p)
} }
+4 -4
View File
@@ -1,9 +1,9 @@
package deezer package deezer
type Resource interface { type Resource interface {
GetTitle() string Title() string
GetTracks() []*Track Tracks() []*Track
SetTracks(tracks []*Track) SetTracks(tracks []*Track)
GetOutputDir(outputDir string) string OutputDir(outputDir string) string
Unmarshal(data []byte) error decode(data []byte) error
} }
+2 -2
View File
@@ -13,7 +13,7 @@ import (
type Session struct { type Session struct {
APIToken string APIToken string
LicenseToken string LicenseToken string
HttpClient *http.Client HTTPClient *http.Client
Premium bool Premium bool
} }
@@ -78,7 +78,7 @@ func authenticate(ctx context.Context, arlCookie string) (*Session, error) {
return &Session{ return &Session{
APIToken: res.Results.APIToken, APIToken: res.Results.APIToken,
LicenseToken: opts.LicenseToken, LicenseToken: opts.LicenseToken,
HttpClient: client, HTTPClient: client,
Premium: opts.MobileOffline || opts.WebOffline, Premium: opts.MobileOffline || opts.WebOffline,
}, nil }, nil
} }
+5 -5
View File
@@ -11,14 +11,14 @@ type Single struct {
} `json:"results"` } `json:"results"`
} }
func (s *Single) GetTitle() string { func (s *Single) Title() string {
if s.Results.Data == nil { if s.Results.Data == nil {
return "" return ""
} }
return s.Results.Data.GetTitle() return s.Results.Data.FullTitle()
} }
func (s *Single) GetTracks() []*Track { func (s *Single) Tracks() []*Track {
if s.Results.Data == nil { if s.Results.Data == nil {
return nil return nil
} }
@@ -27,10 +27,10 @@ func (s *Single) GetTracks() []*Track {
func (s *Single) SetTracks(tracks []*Track) {} func (s *Single) SetTracks(tracks []*Track) {}
func (s *Single) GetOutputDir(outputDir string) string { func (s *Single) OutputDir(outputDir string) string {
return path.Join(outputDir, "Singles") return path.Join(outputDir, "Singles")
} }
func (s *Single) Unmarshal(data []byte) error { func (s *Single) decode(data []byte) error {
return json.Unmarshal(data, s) return json.Unmarshal(data, s)
} }
+2 -2
View File
@@ -40,7 +40,7 @@ type Track struct {
TrackToken string `json:"TRACK_TOKEN"` TrackToken string `json:"TRACK_TOKEN"`
} }
func (t *Track) GetTitle() string { func (t *Track) FullTitle() string {
if t.Version != "" { if t.Version != "" {
return t.Title + " " + t.Version return t.Title + " " + t.Version
} }
@@ -62,7 +62,7 @@ func (t *Track) Filename(kind Kind, mediaFormat string) string {
} }
} }
fileName := fmt.Sprintf("%s%s - %s.%s", prefix, t.Artist, t.GetTitle(), ext) fileName := fmt.Sprintf("%s%s - %s.%s", prefix, t.Artist, t.FullTitle(), ext)
fileName, _ = filenamify.Filenamify(fileName, filenamify.Options{MaxLength: 255}) fileName, _ = filenamify.Filenamify(fileName, filenamify.Options{MaxLength: 255})
return fileName return fileName
} }
+3 -3
View File
@@ -65,7 +65,7 @@ func (d *Downloader) prepareResource(ctx context.Context, id string, opts Option
return nil, "", fmt.Errorf("failed to fetch resource: %w", err) return nil, "", fmt.Errorf("failed to fetch resource: %w", err)
} }
tracks := resource.GetTracks() tracks := resource.Tracks()
if len(tracks) == 0 { if len(tracks) == 0 {
if d.kind == deezer.KindTrack { if d.kind == deezer.KindTrack {
return nil, "", fmt.Errorf("track with ID %s not found", id) return nil, "", fmt.Errorf("track with ID %s not found", id)
@@ -77,7 +77,7 @@ func (d *Downloader) prepareResource(ctx context.Context, id string, opts Option
resource.SetTracks(tracks[:opts.Limit]) resource.SetTracks(tracks[:opts.Limit])
} }
outputDir := resource.GetOutputDir(d.appConfig.OutputDir) outputDir := resource.OutputDir(d.appConfig.OutputDir)
if err := fsutil.EnsureDir(outputDir); err != nil { if err := fsutil.EnsureDir(outputDir); err != nil {
return nil, "", fmt.Errorf("failed to create output directory: %w", err) return nil, "", fmt.Errorf("failed to create output directory: %w", err)
} }
@@ -86,7 +86,7 @@ func (d *Downloader) prepareResource(ctx context.Context, id string, opts Option
} }
func (d *Downloader) downloadAllTracks(ctx context.Context, resource deezer.Resource, opts Options, outputDir string) error { func (d *Downloader) downloadAllTracks(ctx context.Context, resource deezer.Resource, opts Options, outputDir string) error {
tracks := resource.GetTracks() tracks := resource.Tracks()
startTime := time.Now() startTime := time.Now()
if d.kind != deezer.KindTrack { if d.kind != deezer.KindTrack {
+2 -2
View File
@@ -81,7 +81,7 @@ func artistInfo(a *deezer.Artist) string {
fmt.Fprintf(&b, "Top %d most popular tracks:\n", limit) fmt.Fprintf(&b, "Top %d most popular tracks:\n", limit)
for i := 0; i < limit; i++ { for i := 0; i < limit; i++ {
t := tracks[i] t := tracks[i]
fmt.Fprintf(&b, " %2d. %s %s\n", i+1, t.Artist, t.GetTitle()) fmt.Fprintf(&b, " %2d. %s %s\n", i+1, t.Artist, t.FullTitle())
} }
fmt.Fprintf(&b, "===========================================\n") fmt.Fprintf(&b, "===========================================\n")
@@ -104,7 +104,7 @@ Title: %s
Artist: %s Artist: %s
Duration: %s Duration: %s
==================================================`, ==================================================`,
s.Results.Data.GetTitle(), s.Results.Data.FullTitle(),
s.Results.Data.Artist, s.Results.Data.Artist,
time.Duration(duration)*time.Second, time.Duration(duration)*time.Second,
) )
+1 -1
View File
@@ -46,7 +46,7 @@ func fetchMetadata(httpClient *http.Client, ctx context.Context, track *deezer.T
if opts.Genre { if opts.Genre {
go func() { go func() {
genre, err := fetchGenre(ctx, httpClient, track.Artist, track.GetTitle()) genre, err := fetchGenre(ctx, httpClient, track.Artist, track.FullTitle())
genreChan <- genreResult{value: genre, err: err} genreChan <- genreResult{value: genre, err: err}
}() }()
} }
+2 -2
View File
@@ -43,7 +43,7 @@ func (pt *progressTracker) startDownload(index int, track *deezer.Track) *spinne
sp := spinner.New(spinner.CharSets[14], 100*time.Millisecond) sp := spinner.New(spinner.CharSets[14], 100*time.Millisecond)
sp.Writer = os.Stdout sp.Writer = os.Stdout
sp.Prefix = trackProgress + " " sp.Prefix = trackProgress + " "
sp.Suffix = fmt.Sprintf(" Downloading: %s - %s", track.Artist, track.GetTitle()) sp.Suffix = fmt.Sprintf(" Downloading: %s - %s", track.Artist, track.FullTitle())
sp.Start() sp.Start()
return sp return sp
@@ -51,7 +51,7 @@ func (pt *progressTracker) startDownload(index int, track *deezer.Track) *spinne
func (pt *progressTracker) handleResult(index int, track *deezer.Track, result downloadResult) { func (pt *progressTracker) handleResult(index int, track *deezer.Track, result downloadResult) {
trackProgress := fmt.Sprintf("[%d/%d]", index+1, pt.totalTracks) trackProgress := fmt.Sprintf("[%d/%d]", index+1, pt.totalTracks)
trackTitle := track.GetTitle() trackTitle := track.FullTitle()
if result.skipped { if result.skipped {
pt.stats.skipped++ pt.stats.skipped++
+1 -1
View File
@@ -9,7 +9,7 @@ import (
func buildTagMetadata(resource deezer.Resource, track *deezer.Track, cover []byte, bpm bpmKey, genre string) tag.Metadata { func buildTagMetadata(resource deezer.Resource, track *deezer.Track, cover []byte, bpm bpmKey, genre string) tag.Metadata {
m := tag.Metadata{ m := tag.Metadata{
Title: track.GetTitle(), Title: track.FullTitle(),
Artists: strings.Join(track.Contributors.MainArtists, ", "), Artists: strings.Join(track.Contributors.MainArtists, ", "),
Composers: strings.Join(track.Contributors.Composers, ", "), Composers: strings.Join(track.Contributors.Composers, ", "),
Lyricists: strings.Join(track.Contributors.Authors, ", "), Lyricists: strings.Join(track.Contributors.Authors, ", "),
+3 -3
View File
@@ -20,7 +20,7 @@ func (d *Downloader) downloadTrack(ctx context.Context, resource deezer.Resource
return downloadResult{err: fmt.Errorf("failed to fetch media: %w", err)} return downloadResult{err: fmt.Errorf("failed to fetch media: %w", err)}
} }
mediaFormat := media.GetFormat() mediaFormat := media.Format()
if opts.Strict && strings.ToLower(mediaFormat) != opts.Quality { if opts.Strict && strings.ToLower(mediaFormat) != opts.Quality {
return downloadResult{err: fmt.Errorf("requested quality '%s' not available", opts.Quality)} return downloadResult{err: fmt.Errorf("requested quality '%s' not available", opts.Quality)}
} }
@@ -31,10 +31,10 @@ func (d *Downloader) downloadTrack(ctx context.Context, resource deezer.Resource
metadataChan := make(chan metadataResult, 1) metadataChan := make(chan metadataResult, 1)
go func() { go func() {
metadataChan <- fetchMetadata(d.deezerClient.Session.HttpClient, ctx, track, opts) metadataChan <- fetchMetadata(d.deezerClient.Session.HTTPClient, ctx, track, opts)
}() }()
stream, err := d.deezerClient.GetMediaStream(ctx, media) stream, err := d.deezerClient.MediaStream(ctx, media)
if err != nil { if err != nil {
return downloadResult{err: fmt.Errorf("failed to get media stream: %w", err)} return downloadResult{err: fmt.Errorf("failed to get media stream: %w", err)}
} }