From 327d55cff5af65761d70d1138e927a4a0e2643d3 Mon Sep 17 00:00:00 2001 From: Mathis Maquenne <124215603+mathismqn@users.noreply.github.com> Date: Mon, 16 Jun 2025 16:36:14 -0400 Subject: [PATCH] fix: allow downloads without premium account --- internal/deezer/session.go | 7 ++++--- internal/downloader/client.go | 4 ++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/internal/deezer/session.go b/internal/deezer/session.go index 28e05b4..b224869 100644 --- a/internal/deezer/session.go +++ b/internal/deezer/session.go @@ -29,6 +29,7 @@ type Session struct { APIToken string LicenseToken string HttpClient *http.Client + Premium bool } 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 { 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{ ArlCookie: arlCookie, APIToken: res.Results.APIToken, LicenseToken: res.Results.User.Options.LicenseToken, HttpClient: client, + Premium: isPremium, }, nil } diff --git a/internal/downloader/client.go b/internal/downloader/client.go index cedef63..7043a4a 100644 --- a/internal/downloader/client.go +++ b/internal/downloader/client.go @@ -47,6 +47,10 @@ func (c *Client) Run(ctx context.Context, opts Options, id string) error { 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 switch c.resourceType { case "album":