summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Honz <exislow+github@gmail.com>2024-01-12 10:21:34 +0100
committerRobert Honz <exislow+github@gmail.com>2024-01-12 10:21:34 +0100
commit7af7fd6219a9fd47943400c93365ecc3f288fcd2 (patch)
tree2e85cb5318c01092cb49cda007cdaf4ee0157b56
parent69cf0b4707ea95789616309847698fb78a6a633d (diff)
downloadtidal-dl-ng-7af7fd6219a9fd47943400c93365ecc3f288fcd2.tar.gz
🛠️ Ruff refactoring.
-rw-r--r--pyproject.toml2
-rw-r--r--tidal_dl_ng/cli.py4
-rw-r--r--tidal_dl_ng/download.py17
-rw-r--r--tidal_dl_ng/gui.py29
-rw-r--r--tidal_dl_ng/helper/url.py4
-rw-r--r--tidal_dl_ng/metadata.py18
6 files changed, 39 insertions, 35 deletions
diff --git a/pyproject.toml b/pyproject.toml
index 58fc836..e478e49 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -123,6 +123,8 @@ ignore = [
"E501",
# DoNotAssignLambda
"E731",
+ # Do not use bare `except`
+ "E722"
]
[tool.ruff.per-file-ignores]
diff --git a/tidal_dl_ng/cli.py b/tidal_dl_ng/cli.py
index 69afb47..e85d080 100644
--- a/tidal_dl_ng/cli.py
+++ b/tidal_dl_ng/cli.py
@@ -167,7 +167,7 @@ def download(
media_type = MediaType.Video
dl.item(
- id=id_item,
+ id_media=id_item,
media_type=media_type,
path_base=settings.data.download_base_path,
file_template=file_template,
@@ -188,7 +188,7 @@ def download(
file_template = settings.data.format_mix
media_type = MediaType.Mix
- dl.list(
+ dl.items(
id_media=id_item,
media_type=media_type,
path_base=settings.data.download_base_path,
diff --git a/tidal_dl_ng/download.py b/tidal_dl_ng/download.py
index c9ffe41..44c5400 100644
--- a/tidal_dl_ng/download.py
+++ b/tidal_dl_ng/download.py
@@ -29,7 +29,10 @@ from tidal_dl_ng.model.gui_data import ProgressBars
# TODO: Set appropriate client string and use it for video download.
# https://github.com/globocom/m3u8#using-different-http-clients
class RequestsClient:
- def download(self, uri, timeout=None, headers={}, verify_ssl=True):
+ def download(self, uri: str, timeout: int = None, headers: dict | None = None, verify_ssl: bool = True):
+ if not headers:
+ headers = {}
+
o = requests.get(uri, timeout=timeout, headers=headers)
return o.text, o.url
@@ -64,7 +67,7 @@ class Download:
with open(path_file, "wb") as f:
for segment in m3u8_playlist.data["segments"]:
url = segment["uri"]
- r = requests.get(url)
+ r = requests.get(url, timeout=REQUESTS_TIMEOUT_SEC)
f.write(r.content)
@@ -76,7 +79,7 @@ class Download:
self,
path_base: str,
fn_logger: Logger | WrapperLogger,
- id: str = None,
+ id_media: str = None,
file_template: str = None,
media: Track | Video = None,
media_type: MediaType = None,
@@ -84,11 +87,11 @@ class Download:
progress_gui: ProgressBars = None,
progress: Progress = None,
) -> (bool, str):
- if id:
+ if id_media:
if media_type == MediaType.Track:
- media = Track(self.session, id)
+ media = Track(self.session, id_media)
elif media_type == MediaType.Video:
- media = Video(self.session, id)
+ media = Video(self.session, id_media)
# If video download is not allowed
if not video_download:
@@ -225,7 +228,7 @@ class Download:
return result
- def list(
+ def items(
self,
path_base: str,
fn_logger: Logger | WrapperLogger,
diff --git a/tidal_dl_ng/gui.py b/tidal_dl_ng/gui.py
index 4a22f91..43941c3 100644
--- a/tidal_dl_ng/gui.py
+++ b/tidal_dl_ng/gui.py
@@ -14,10 +14,11 @@ import coloredlogs.converter
from rich.progress import Progress
from tidalapi import Album, Mix, Playlist, Quality, Track, UserPlaylist, Video
from tidalapi.session import SearchTypes
+
from tidal_dl_ng.config import Settings, Tidal
from tidal_dl_ng.constants import QualityVideo
from tidal_dl_ng.download import Download
-from tidal_dl_ng.logger import XStream, logger_cli, logger_gui
+from tidal_dl_ng.logger import XStream, logger_gui
from tidal_dl_ng.model.gui_data import ProgressBars, ResultSearch
from tidal_dl_ng.ui.main import Ui_MainWindow
from tidal_dl_ng.ui.spinner import QtWaitingSpinner
@@ -46,7 +47,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
# self.setGeometry(50, 50, 500, 300)
self.setWindowTitle("TIDAL Downloader Next Gen!")
# TODO: Fix icons (make them visible).
- my_pixmap = QtGui.QPixmap("tidal_dl_ng/ui/icon.png")
+ # my_pixmap = QtGui.QPixmap("tidal_dl_ng/ui/icon.png")
my_icon = QtGui.QIcon("tidal_dl_ng/ui/icon.png")
self.setWindowIcon(my_icon)
tray = QtWidgets.QSystemTrayIcon()
@@ -124,7 +125,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def _populate_search_types(self, ui_target: QtWidgets.QComboBox, options: SearchTypes):
for item in options:
- if item and not item.__name__ == "Artist":
+ if item and item.__name__ != "Artist":
ui_target.addItem(item.__name__, item)
self.cb_search_type.setCurrentIndex(1)
@@ -213,7 +214,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
# We build the menu.
menu = QtWidgets.QMenu()
- action = menu.addAction("Dowloading Playlist", lambda: self.thread_download_list_media(point))
+ menu.addAction("Dowloading Playlist", lambda: self.thread_download_list_media(point))
menu.exec(self.tr_lists_user.mapToGlobal(point))
@@ -254,10 +255,10 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
self.tr_results.addTopLevelItem(child)
def search(self, query: str, types_media: SearchTypes) -> [ResultSearch]:
- result_search: [dict[str, *SearchTypes]] = self.tidal.session.search(query, models=types_media, limit=999)
+ result_search: [dict[str, SearchTypes]] = self.tidal.session.search(query, models=types_media, limit=999)
result: [ResultSearch] = []
- for media_type, l_media in result_search.items():
+ for _media_type, l_media in result_search.items():
if isinstance(l_media, list):
result = result + self.search_result_to_model(l_media)
@@ -383,7 +384,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def on_download_results(self):
self.b_download.setEnabled(False)
- self.b_download.setText(f"Downloading...")
+ self.b_download.setText("Downloading...")
items: [QtWidgets.QTreeWidgetItem] = self.tr_results.selectedItems()
@@ -393,9 +394,9 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
for item in items:
media: Track | Album | Playlist | Video = item.data(5, QtCore.Qt.ItemDataRole.UserRole)
- result_dl: bool = self.download_item(media, self.download)
+ self.download_item(media, self.download)
- self.b_download.setText(f"Download")
+ self.b_download.setText("Download")
self.b_download.setEnabled(True)
def download_item(self, media: Track | Album | Playlist | Video | Mix, dl: Download) -> bool:
@@ -408,7 +409,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
)
progress: Progress = Progress()
- if isinstance(media, Track) or isinstance(media, Video):
+ if isinstance(media, (Track, Video)):
if isinstance(media, Track):
file_template: str = self.settings.data.format_track
elif isinstance(media, Video):
@@ -427,7 +428,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
logger_gui.info(f"Download successful: {download_path_file}")
else:
logger_gui.info(f"Download skipped (file exists): {download_path_file}")
- elif isinstance(media, Album) or isinstance(media, Playlist) or isinstance(media, Mix):
+ elif isinstance(media, (Album, Playlist, Mix)):
file_template: str | bool = False
if isinstance(media, Album):
@@ -444,7 +445,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
self.progress_list_name(progress_name)
- dl.list(
+ dl.items(
path_base=self.settings.data.download_base_path,
file_template=file_template,
list_media=media,
@@ -461,10 +462,6 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
# TODO: Refactor to useful return value.
return True
- def progress_reset(self):
- self.pb_list.setValue(0)
- self.pb_item.setValue(0)
-
# TODO: Comment with Google Docstrings.
def gui_activate(tidal: Tidal | None = None):
diff --git a/tidal_dl_ng/helper/url.py b/tidal_dl_ng/helper/url.py
index cb52238..1e05474 100644
--- a/tidal_dl_ng/helper/url.py
+++ b/tidal_dl_ng/helper/url.py
@@ -1,8 +1,8 @@
def get_tidal_media_id(url_or_id_media: str) -> str:
id_dirty = url_or_id_media.rsplit("/", 1)[-1]
- id = id_dirty.rsplit("?", 1)[0]
+ id_media = id_dirty.rsplit("?", 1)[0]
- return id
+ return id_media
def get_tidal_media_type(url_media: str) -> str | bool:
diff --git a/tidal_dl_ng/metadata.py b/tidal_dl_ng/metadata.py
index cb88eeb..3f06432 100644
--- a/tidal_dl_ng/metadata.py
+++ b/tidal_dl_ng/metadata.py
@@ -34,13 +34,13 @@ class Metadata:
type_audio: str = "",
album: str = "",
title: str = "",
- artists: [str] = [""],
+ artists: [str] | None = None,
copy_right: str = "",
tracknumber: int = 0,
discnumber: int = 0,
totaltrack: int = 0,
totaldisc: int = 0,
- composer: [str] = [""],
+ composer: [str] | None = None,
isrc: str = "",
albumartist: str = "",
date: str = "",
@@ -114,14 +114,14 @@ class Metadata:
self.m.tags["title"] = self.title
self.m.tags["album"] = self.album
self.m.tags["albumartist"] = self.albumartist
- self.m.tags["artist"] = ", ".join(self.artists)
+ self.m.tags["artist"] = ", ".join(self.artists) if self.artists else ""
self.m.tags["copyright"] = self.copy_right
self.m.tags["tracknumber"] = str(self.tracknumber)
self.m.tags["tracktotal"] = str(self.totaltrack)
self.m.tags["discnumber"] = str(self.discnumber)
self.m.tags["disctotal"] = str(self.totaldisc)
self.m.tags["date"] = self.date
- self.m.tags["composer"] = ", ".join(self.composer)
+ self.m.tags["composer"] = ", ".join(self.composer) if self.composer else ""
self.m.tags["isrc"] = self.isrc
self.m.tags["lyrics"] = self.lyrics
@@ -132,12 +132,12 @@ class Metadata:
self.m.tags.add(TIT2(encoding=3, text=self.title))
self.m.tags.add(TALB(encoding=3, text=self.album))
self.m.tags.add(TOPE(encoding=3, text=self.albumartist))
- self.m.tags.add(TPE1(encoding=3, text=", ".join(self.artists)))
+ self.m.tags.add(TPE1(encoding=3, text=", ".join(self.artists) if self.artists else ""))
self.m.tags.add(TCOP(encoding=3, text=self.copy_right))
self.m.tags.add(TRCK(encoding=3, text=str(self.tracknumber)))
self.m.tags.add(TRCK(encoding=3, text=self.discnumber))
self.m.tags.add(TDRC(encoding=3, text=self.date))
- self.m.tags.add(TCOM(encoding=3, text=", ".join(self.composer)))
+ self.m.tags.add(TCOM(encoding=3, text=", ".join(self.composer) if self.composer else ""))
self.m.tags.add(TSRC(encoding=3, text=self.isrc))
self.m.tags.add(USLT(encoding=3, lang="eng", desc="desc", text=self.lyrics))
@@ -145,13 +145,13 @@ class Metadata:
self.m.tags["\xa9nam"] = self.title
self.m.tags["\xa9alb"] = self.album
self.m.tags["aART"] = self.albumartist
- self.m.tags["\xa9ART"] = ", ".join(self.artists)
+ self.m.tags["\xa9ART"] = ", ".join(self.artists) if self.artists else ""
self.m.tags["cprt"] = self.copy_right
self.m.tags["trkn"] = [[self.tracknumber, self.totaltrack]]
self.m.tags["disk"] = [[self.discnumber, self.totaldisc]]
# self.m.tags['\xa9gen'] = self.genre
self.m.tags["\xa9day"] = self.date
- self.m.tags["\xa9wrt"] = ", ".join(self.composer)
+ self.m.tags["\xa9wrt"] = ", ".join(self.composer) if self.composer else ""
self.m.tags["\xa9lyr"] = self.lyrics
def cover_data(self, url: str = None, path_file: str = None) -> str | bytes:
@@ -161,12 +161,14 @@ class Metadata:
try:
result = requests.get(url, timeout=REQUESTS_TIMEOUT_SEC).content
except:
+ # TODO: Implement logging.
pass
elif path_file:
try:
with open(path_file, "rb") as f:
result = f.read()
except OSError:
+ # TODO: Implement logging.
pass
return result