From 53c8db80f8884c0e08e4f2908caaaf1a8e0e5697 Mon Sep 17 00:00:00 2001 From: Robert Honz Date: Fri, 19 Jan 2024 07:34:32 +0100 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Refactoring=20of=20tidal?= =?UTF-8?q?=20related=20function.=20Cleaned=20up=20TODOs.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tidal_dl_ng/gui.py | 19 ++++--------------- tidal_dl_ng/helper/tidal.py | 10 +++++++++- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/tidal_dl_ng/gui.py b/tidal_dl_ng/gui.py index de963b0..e1be127 100644 --- a/tidal_dl_ng/gui.py +++ b/tidal_dl_ng/gui.py @@ -3,7 +3,7 @@ import sys from collections.abc import Callable from tidal_dl_ng.helper.path import get_format_template -from tidal_dl_ng.helper.tidal import items_results_all, search_results_all +from tidal_dl_ng.helper.tidal import items_results_all, search_results_all, user_media_lists try: import qdarktheme @@ -69,7 +69,6 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): self.settings = Settings() self.threadpool = QtCore.QThreadPool() - # TODO: Show GUI, create a progress bar showing the TIDAL querying progress. self._init_tree_results(self.tr_results) self._init_tree_lists(self.tr_lists_user) self._init_progressbar() @@ -145,14 +144,11 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): tree.setColumnHidden(5, True) tree.sortByColumn(0, QtCore.Qt.SortOrder.AscendingOrder) - # TODO: Refactor to own TIDAL file or so. def tidal_user_lists(self): # Start loading spinner self.spinner_start.emit(self.tr_lists_user) - user_playlists: [Playlist | UserPlaylist] = self.tidal.session.user.playlist_and_favorite_playlists() - user_mixes: [Mix] = self.tidal.session.mixes().categories[0].items - user_all: [Playlist | UserPlaylist | Mix] = user_playlists + user_mixes + user_all: [Playlist | UserPlaylist | Mix] = user_media_lists(self.tidal.session) self.s_populate_tree_lists.emit(user_all) @@ -280,7 +276,6 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): child.setText(4, duration) child.setData(5, QtCore.Qt.ItemDataRole.UserRole, item.obj) - # TODO: Fix "QBasicTimer::start: Timers cannot be started from another thread" self.s_tr_results_add_top_level_item.emit(child) def on_tr_results_add_top_level_item(self, widget_item: QtWidgets.QTreeWidgetItem): @@ -440,7 +435,6 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): self.b_download.setEnabled(True) def download(self, media: Track | Album | Playlist | Video | Mix, dl: Download) -> None: - # TODO: Refactor this. Move this logic to `Download` class and provide a generic interface. self.s_pb_reset.emit() self.s_statusbar_message.emit(StatusbarMessage(message="Download started...")) @@ -454,7 +448,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): file_template = get_format_template(media, self.settings) if isinstance(media, Track | Video): - result_download, download_path_file = dl.item( + dl.item( media=media, path_base=self.settings.data.download_base_path, file_template=file_template, @@ -462,16 +456,11 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): progress=progress, fn_logger=logger_gui, ) - - if result_download: - 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 | Playlist | Mix): dl.items( + media=media, path_base=self.settings.data.download_base_path, file_template=file_template, - media=media, video_download=self.settings.data.video_download, progress_gui=data_pb, progress=progress, diff --git a/tidal_dl_ng/helper/tidal.py b/tidal_dl_ng/helper/tidal.py index 60f636d..9c4eeba 100644 --- a/tidal_dl_ng/helper/tidal.py +++ b/tidal_dl_ng/helper/tidal.py @@ -1,4 +1,4 @@ -from tidalapi import Album, Mix, Playlist, Session, Track, Video +from tidalapi import Album, Mix, Playlist, Session, Track, UserPlaylist, Video from tidalapi.session import SearchTypes from tidal_dl_ng.constants import MediaType @@ -96,3 +96,11 @@ def items_results_all(media_list: [Mix | Playlist | Album], videos_include: bool done = True return result + + +def user_media_lists(session: Session) -> [Playlist | UserPlaylist | Mix]: + user_playlists: [Playlist | UserPlaylist] = session.user.playlist_and_favorite_playlists() + user_mixes: [Mix] = session.mixes().categories[0].items + result: [Playlist | UserPlaylist | Mix] = user_playlists + user_mixes + + return result