3 Commits
4 changed files with 14 additions and 5 deletions
+5 -1
View File
@@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.1.1] - 2025-06-16
### Fixed
- Restored ability to download tracks **without a Deezer Premium account** (limited to **MP3 128kbps** for free accounts).
## [1.1.0] - 2025-05-19 ## [1.1.0] - 2025-05-19
### Added ### Added
@@ -13,7 +18,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- New local **database system** (`tracks.db`) to track downloaded files and avoid re-downloading, even if files are renamed or moved. - New local **database system** (`tracks.db`) to track downloaded files and avoid re-downloading, even if files are renamed or moved.
- Improved CLI **output formatting** for a cleaner and more informative user experience. - Improved CLI **output formatting** for a cleaner and more informative user experience.
### Changed ### Changed
- The `.godeez` file in the users home directory has been replaced by a `.godeez/` directory. - The `.godeez` file in the users home directory has been replaced by a `.godeez/` directory.
It now stores both `config.toml` and the internal `tracks.db`. It now stores both `config.toml` and the internal `tracks.db`.
+1 -1
View File
@@ -20,7 +20,7 @@ A simple Go tool for downloading music from [Deezer](https://www.deezer.com).
## Features ## Features
* Download playlists and albums from Deezer * Download playlists and albums from Deezer
* Select audio quality: MP3 128kbps, MP3 320kbps, or FLAC * Select audio quality: MP3 128kbps, MP3 320kbps, or FLAC (⚠️ non-premium accounts are limited to 128kbps)
* Automatically adds metadata tags to downloaded files * Automatically adds metadata tags to downloaded files
* Fetch and tag songs with BPM and musical key * Fetch and tag songs with BPM and musical key
* Smart skip system: avoids re-downloading already existing files using hashes and metadata * Smart skip system: avoids re-downloading already existing files using hashes and metadata
+4 -3
View File
@@ -29,6 +29,7 @@ type Session struct {
APIToken string APIToken string
LicenseToken string LicenseToken string
HttpClient *http.Client HttpClient *http.Client
Premium bool
} }
func Authenticate(ctx context.Context, arlCookie string) (*Session, error) { func Authenticate(ctx context.Context, arlCookie string) (*Session, error) {
@@ -75,14 +76,14 @@ func Authenticate(ctx context.Context, arlCookie string) (*Session, error) {
if res.Results.User.Id == 0 { if res.Results.User.Id == 0 {
return nil, fmt.Errorf("invalid arl cookie") return nil, fmt.Errorf("invalid arl cookie")
} }
if !res.Results.User.Options.MobileOffline && !res.Results.User.Options.WebOffline {
return nil, fmt.Errorf("premium account required") isPremium := res.Results.User.Options.MobileOffline || res.Results.User.Options.WebOffline
}
return &Session{ return &Session{
ArlCookie: arlCookie, ArlCookie: arlCookie,
APIToken: res.Results.APIToken, APIToken: res.Results.APIToken,
LicenseToken: res.Results.User.Options.LicenseToken, LicenseToken: res.Results.User.Options.LicenseToken,
HttpClient: client, HttpClient: client,
Premium: isPremium,
}, nil }, nil
} }
+4
View File
@@ -47,6 +47,10 @@ func (c *Client) Run(ctx context.Context, opts Options, id string) error {
return err return err
} }
if !c.deezerClient.Session.Premium && (opts.Quality == "mp3_320" || opts.Quality == "flac") {
return fmt.Errorf("premium account required for %s quality", opts.Quality)
}
var resource deezer.Resource var resource deezer.Resource
switch c.resourceType { switch c.resourceType {
case "album": case "album":