Allow folder formats to specify a subfolder (#581)

* Fix Tidal master quality (#571)

* Allow folder formats to specify a subfolder

---------

Co-authored-by: Jordan Pinnick <46541297+Geometryse@users.noreply.github.com>
This commit is contained in:
Aria Stewart 2024-01-22 19:13:02 -05:00 committed by GitHub
parent 669ceee48a
commit 2175231bc1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 13 additions and 6 deletions

View File

@ -200,7 +200,7 @@ class TidalDownloadable(Downloadable):
):
self.session = session
codec = codec.lower()
if codec == "flac":
if codec in ("flac", "mqa"):
self.extension = "flac"
else:
self.extension = "m4a"

View File

@ -11,3 +11,10 @@ def clean_filename(fn: str, restrict: bool = False) -> str:
path = "".join(c for c in path if c in ALLOWED_CHARS)
return path
def clean_filepath(fn: str, restrict: bool = False) -> str:
path = str(sanitize_filepath(fn))
if restrict:
path = "".join(c for c in path if c in ALLOWED_CHARS)
return path

View File

@ -7,7 +7,7 @@ from .. import progress
from ..client import Client
from ..config import Config
from ..db import Database
from ..filepath_utils import clean_filename
from ..filepath_utils import clean_filepath
from ..metadata import AlbumMetadata
from ..metadata.util import get_album_track_ids
from .artwork import download_artwork
@ -89,7 +89,7 @@ class PendingAlbum(Pending):
if config.downloads.source_subdirectories:
parent = os.path.join(parent, self.client.source.capitalize())
formatter = config.filepaths.folder_format
folder = clean_filename(
folder = clean_filepath(
meta.format_folder_path(formatter), config.filepaths.restrict_characters
)

View File

@ -16,7 +16,7 @@ from ..config import Config
from ..console import console
from ..db import Database
from ..exceptions import NonStreamableError
from ..filepath_utils import clean_filename
from ..filepath_utils import clean_filepath
from ..metadata import (
AlbumMetadata,
Covers,
@ -151,7 +151,7 @@ class PendingPlaylist(Pending):
meta = PlaylistMetadata.from_resp(resp, self.client.source)
name = meta.name
parent = self.config.session.downloads.folder
folder = os.path.join(parent, clean_filename(name))
folder = os.path.join(parent, clean_filepath(name))
tracks = [
PendingPlaylistTrack(
id,
@ -223,7 +223,7 @@ class PendingLastfmPlaylist(Pending):
results: list[tuple[str | None, bool]] = await asyncio.gather(*requests)
parent = self.config.session.downloads.folder
folder = os.path.join(parent, clean_filename(playlist_title))
folder = os.path.join(parent, clean_filepath(playlist_title))
pending_tracks = []
for pos, (id, from_fallback) in enumerate(results, start=1):