Add explicit tag for track names #192

This commit is contained in:
Nathan Thomas 2021-09-29 12:24:13 -07:00
parent d88f349b6d
commit 4d8118356a
5 changed files with 30 additions and 10 deletions

View file

@ -1,6 +1,6 @@
[tool.poetry] [tool.poetry]
name = "streamrip" name = "streamrip"
version = "1.6" version = "1.7"
description = "A fast, all-in-one music ripper for Qobuz, Deezer, Tidal, and SoundCloud" description = "A fast, all-in-one music ripper for Qobuz, Deezer, Tidal, and SoundCloud"
authors = ["nathom <nathanthomas707@gmail.com>"] authors = ["nathom <nathanthomas707@gmail.com>"]
license = "GPL-3.0-only" license = "GPL-3.0-only"

View file

@ -46,6 +46,8 @@ token_expiry = ""
[deezer] [deezer]
# 0, 1, or 2 # 0, 1, or 2
# This only applies to paid Deezer subscriptions. Those using deezloader
# are automatically limited to quality = 1
quality = 2 quality = 2
# An authentication cookie that allows streamrip to use your Deezer account # An authentication cookie that allows streamrip to use your Deezer account
# See https://github.com/nathom/streamrip/wiki/Finding-Your-Deezer-ARL-Cookie # See https://github.com/nathom/streamrip/wiki/Finding-Your-Deezer-ARL-Cookie
@ -167,4 +169,4 @@ progress_bar = "dainty"
[misc] [misc]
# Metadata to identify this config file. Do not change. # Metadata to identify this config file. Do not change.
version = "1.6" version = "1.7"

View file

@ -1,5 +1,5 @@
"""streamrip: the all in one music downloader.""" """streamrip: the all in one music downloader."""
__version__ = "1.6" __version__ = "1.7"
from . import clients, constants, converter, downloadtools, media from . import clients, constants, converter, downloadtools, media

View file

@ -755,14 +755,15 @@ class Track(Media):
:rtype: str :rtype: str
""" """
if hasattr(self, "meta"): try:
_title = self.meta.title _title = self.meta.title
if self.meta.explicit: except AttributeError:
_title = f"{_title} (Explicit)"
return _title
else:
raise Exception("Track must be loaded before accessing title") raise Exception("Track must be loaded before accessing title")
if self.meta.explicit:
_title = f"{_title} (Explicit)"
return _title
def get(self, *keys, default=None) -> Any: def get(self, *keys, default=None) -> Any:
"""Safe get method that allows for layered access. """Safe get method that allows for layered access.

View file

@ -23,7 +23,6 @@ from .utils import get_cover_urls, get_quality_id, safe_get
logger = logging.getLogger("streamrip") logger = logging.getLogger("streamrip")
# TODO: remove OrderedDict bc normal dicts are ordered now
class TrackMetadata: class TrackMetadata:
"""Contains all of the metadata needed to tag the file. """Contains all of the metadata needed to tag the file.
@ -50,7 +49,6 @@ class TrackMetadata:
* disctotal * disctotal
""" """
title: str
albumartist: str albumartist: str
composer: Optional[str] = None composer: Optional[str] = None
albumcomposer: Optional[str] = None albumcomposer: Optional[str] = None
@ -82,6 +80,7 @@ class TrackMetadata:
_artist: Optional[str] = None _artist: Optional[str] = None
_copyright: Optional[str] = None _copyright: Optional[str] = None
_genres: Optional[Iterable] = None _genres: Optional[Iterable] = None
_title: Optional[str]
def __init__( def __init__(
self, self,
@ -286,6 +285,24 @@ class TrackMetadata:
self.bit_depth = 24 if self.get("quality") == 3 else 16 self.bit_depth = 24 if self.get("quality") == 3 else 16
self.sampling_rate = 44100 self.sampling_rate = 44100
@property
def title(self) -> Optional[str]:
logger.debug("accessign title")
if not hasattr(self, "_title"):
logger.debug("no title")
return None
if self.explicit:
logger.debug("explicit title")
return f"{self._title} (Explicit)"
logger.debug("non explicit title")
return self._title
@title.setter
def title(self, new_title):
self._title = new_title
@property @property
def album(self) -> str: def album(self) -> str:
"""Return the album of the track. """Return the album of the track.