Skip to content
Snippets Groups Projects
Commit 5323f481 authored by EorlBruder's avatar EorlBruder
Browse files

Fix error related to extension and ignore none-existing file

- format now gets set on a per track basis, if no format was provided
  with the command
- the playlist-method now uses a get_track_data-method which doesn't
  return an unnecessary download-url
- if a file doesn't exist, the playlist still writes the filename of
  it into the file. Will definitely create broken output, if no format
  was provided, so we need to check if this breaks programs
parent 803237eb
No related branches found
No related tags found
No related merge requests found
...@@ -92,12 +92,12 @@ async def track_download( ...@@ -92,12 +92,12 @@ async def track_download(
async with ctx.obj["remote"]: async with ctx.obj["remote"]:
progressbar = tqdm.tqdm(id, unit="Files") progressbar = tqdm.tqdm(id, unit="Files")
for i in progressbar: for i in progressbar:
download_url, format, track_data = await get_track_download_url( download_url, extension, track_data = await get_track_download_url(
i, ctx.obj["remote"], format=format i, ctx.obj["remote"], format=format
) )
logs.logger.info("Downloading from {}".format(download_url)) logs.logger.info("Downloading from {}".format(download_url))
filename_params = extract_filename_params(track_data, format) filename_params = extract_filename_params(track_data, extension)
if directory: if directory:
filename = template.format(**filename_params) filename = template.format(**filename_params)
...@@ -151,6 +151,17 @@ async def track_download( ...@@ -151,6 +151,17 @@ async def track_download(
logs.logger.info("Download complete") logs.logger.info("Download complete")
async def get_track_data(id, remote, format=None):
result = await remote.request("get", "api/v1/tracks/{}/".format(id))
result.raise_for_status()
payload = await result.json()
if not format and payload["uploads"]:
format = payload["uploads"][0]["extension"]
return format, payload
@tracks.command("export-playlist") @tracks.command("export-playlist")
@click.argument("id", nargs=-1, required=True) @click.argument("id", nargs=-1, required=True)
@click.option("--format", "-f") @click.option("--format", "-f")
...@@ -171,11 +182,11 @@ async def track_export_playlist( ...@@ -171,11 +182,11 @@ async def track_export_playlist(
async with ctx.obj["remote"]: async with ctx.obj["remote"]:
playlist = [] playlist = []
for i in id: for i in id:
_, format, track_data = await get_track_download_url( extension, track_data = await get_track_data(
i, ctx.obj["remote"], format=format i, ctx.obj["remote"], format=format
) )
filename_params = extract_filename_params(track_data, format) filename_params = extract_filename_params(track_data, extension)
filename = base_path + template.format(**filename_params) filename = base_path + template.format(**filename_params)
playlist.append(filename) playlist.append(filename)
if directory: if directory:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment