custom formatting for api

This commit is contained in:
cool.gitter.choco
2025-02-06 14:21:15 -06:00
parent 0f882da09b
commit c26478dd08
2 changed files with 44 additions and 15 deletions

View File

@@ -4,7 +4,17 @@ import traceback
from deezspot.spotloader import SpoLogin
from deezspot.deezloader import DeeLogin
def download_track(service, url, main, fallback=None, quality=None, fall_quality=None, real_time=False):
def download_track(
service,
url,
main,
fallback=None,
quality=None,
fall_quality=None,
real_time=False,
custom_dir_format="%ar_album%/%album%/%copyright%",
custom_track_format="%tracknum%. %music% - %artist%"
):
try:
if service == 'spotify':
if fallback:
@@ -19,7 +29,7 @@ def download_track(service, url, main, fallback=None, quality=None, fall_quality
with open(deezer_creds_path, 'r') as f:
deezer_creds = json.load(f)
dl = DeeLogin(
arl=deezer_creds.get('arl', ''),
arl=deezer_creds.get('arl', '')
)
dl.download_trackspo(
link_track=url,
@@ -28,9 +38,12 @@ def download_track(service, url, main, fallback=None, quality=None, fall_quality
recursive_quality=False,
recursive_download=False,
not_interface=False,
method_save=1
method_save=1,
custom_dir_format=custom_dir_format,
custom_track_format=custom_track_format
)
except Exception as e:
# If the first attempt fails, use the fallback Spotify credentials
spo_creds_dir = os.path.join('./creds/spotify', fallback)
spo_creds_path = os.path.abspath(os.path.join(spo_creds_dir, 'credentials.json'))
spo = SpoLogin(credentials_path=spo_creds_path)
@@ -42,7 +55,9 @@ def download_track(service, url, main, fallback=None, quality=None, fall_quality
recursive_download=False,
not_interface=False,
method_save=1,
real_time_dl=real_time
real_time_dl=real_time,
custom_dir_format=custom_dir_format,
custom_track_format=custom_track_format
)
else:
# Directly use Spotify main account
@@ -59,18 +74,20 @@ def download_track(service, url, main, fallback=None, quality=None, fall_quality
recursive_download=False,
not_interface=False,
method_save=1,
real_time_dl=real_time
real_time_dl=real_time,
custom_dir_format=custom_dir_format,
custom_track_format=custom_track_format
)
elif service == 'deezer':
if quality is None:
quality = 'FLAC'
# Deezer download logic remains unchanged, with real_time_dl passed accordingly
# Deezer download logic remains unchanged, with the custom formatting parameters passed along.
creds_dir = os.path.join('./creds/deezer', main)
creds_path = os.path.abspath(os.path.join(creds_dir, 'credentials.json'))
with open(creds_path, 'r') as f:
creds = json.load(f)
dl = DeeLogin(
arl=creds.get('arl', ''),
arl=creds.get('arl', '')
)
dl.download_trackdee(
link_track=url,
@@ -78,7 +95,9 @@ def download_track(service, url, main, fallback=None, quality=None, fall_quality
quality_download=quality,
recursive_quality=False,
recursive_download=False,
method_save=1
method_save=1,
custom_dir_format=custom_dir_format,
custom_track_format=custom_track_format
)
else:
raise ValueError(f"Unsupported service: {service}")