♻️ Refactoring of tidal related function. Cleaned up TODOs.

This commit is contained in:
Robert Honz
2024-01-19 07:34:32 +01:00
parent 8e9e2c1794
commit 53c8db80f8
2 changed files with 13 additions and 16 deletions
+4 -15
View File
@@ -3,7 +3,7 @@ import sys
from collections.abc import Callable from collections.abc import Callable
from tidal_dl_ng.helper.path import get_format_template 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: try:
import qdarktheme import qdarktheme
@@ -69,7 +69,6 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
self.settings = Settings() self.settings = Settings()
self.threadpool = QtCore.QThreadPool() 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_results(self.tr_results)
self._init_tree_lists(self.tr_lists_user) self._init_tree_lists(self.tr_lists_user)
self._init_progressbar() self._init_progressbar()
@@ -145,14 +144,11 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
tree.setColumnHidden(5, True) tree.setColumnHidden(5, True)
tree.sortByColumn(0, QtCore.Qt.SortOrder.AscendingOrder) tree.sortByColumn(0, QtCore.Qt.SortOrder.AscendingOrder)
# TODO: Refactor to own TIDAL file or so.
def tidal_user_lists(self): def tidal_user_lists(self):
# Start loading spinner # Start loading spinner
self.spinner_start.emit(self.tr_lists_user) self.spinner_start.emit(self.tr_lists_user)
user_playlists: [Playlist | UserPlaylist] = self.tidal.session.user.playlist_and_favorite_playlists() user_all: [Playlist | UserPlaylist | Mix] = user_media_lists(self.tidal.session)
user_mixes: [Mix] = self.tidal.session.mixes().categories[0].items
user_all: [Playlist | UserPlaylist | Mix] = user_playlists + user_mixes
self.s_populate_tree_lists.emit(user_all) self.s_populate_tree_lists.emit(user_all)
@@ -280,7 +276,6 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
child.setText(4, duration) child.setText(4, duration)
child.setData(5, QtCore.Qt.ItemDataRole.UserRole, item.obj) 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) self.s_tr_results_add_top_level_item.emit(child)
def on_tr_results_add_top_level_item(self, widget_item: QtWidgets.QTreeWidgetItem): 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) self.b_download.setEnabled(True)
def download(self, media: Track | Album | Playlist | Video | Mix, dl: Download) -> None: 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_pb_reset.emit()
self.s_statusbar_message.emit(StatusbarMessage(message="Download started...")) 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) file_template = get_format_template(media, self.settings)
if isinstance(media, Track | Video): if isinstance(media, Track | Video):
result_download, download_path_file = dl.item( dl.item(
media=media, media=media,
path_base=self.settings.data.download_base_path, path_base=self.settings.data.download_base_path,
file_template=file_template, file_template=file_template,
@@ -462,16 +456,11 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
progress=progress, progress=progress,
fn_logger=logger_gui, 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): elif isinstance(media, Album | Playlist | Mix):
dl.items( dl.items(
media=media,
path_base=self.settings.data.download_base_path, path_base=self.settings.data.download_base_path,
file_template=file_template, file_template=file_template,
media=media,
video_download=self.settings.data.video_download, video_download=self.settings.data.video_download,
progress_gui=data_pb, progress_gui=data_pb,
progress=progress, progress=progress,
+9 -1
View File
@@ -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 tidalapi.session import SearchTypes
from tidal_dl_ng.constants import MediaType 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 done = True
return result 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