Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1fdd0e8c19 | ||
|
|
b4e00e9306 | ||
|
|
327d55cff5 |
+5
-1
@@ -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 user’s home directory has been replaced by a `.godeez/` directory.
|
- The `.godeez` file in the user’s 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`.
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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":
|
||||||
|
|||||||
Reference in New Issue
Block a user