From 182e53179894f129ee6a2b590fff72c4b5e4c500 Mon Sep 17 00:00:00 2001 From: Robert Honz Date: Fri, 24 May 2024 09:31:37 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=9B=A0=EF=B8=8F=20Fixed=20crash=20on=20ri?= =?UTF-8?q?ght=20click=20->=20download=20a=20favorite=20list.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tidal_dl_ng/gui.py | 9 ++++++--- tidal_dl_ng/helper/tidal.py | 8 ++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/tidal_dl_ng/gui.py b/tidal_dl_ng/gui.py index 5f1fa24..56df35c 100644 --- a/tidal_dl_ng/gui.py +++ b/tidal_dl_ng/gui.py @@ -6,6 +6,7 @@ from collections.abc import Callable, Sequence from PySide6.QtGui import QStandardItem from requests.exceptions import HTTPError +from helper.tidal import favorite_function_factory from tidal_dl_ng import __version__, update_available from tidal_dl_ng.dialog import DialogLogin, DialogPreferences, DialogVersion from tidal_dl_ng.helper.gui import ( @@ -725,8 +726,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): # Only if clicked item is not a top level item. if media_list: if isinstance(media_list, str) and media_list.startswith("fav_"): - function_name: str = FAVORITES[media_list]["function_name"] - function_list = getattr(self.tidal.session.user.favorites, function_name) + function_list = favorite_function_factory(self.tidal, media_list) self.list_items_show_result(favorite_function=function_list) else: @@ -775,7 +775,10 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): media_list = get_user_list_media_item(item) # Get all results - if favorite_function: + if favorite_function or isinstance(media_list, str): + if isinstance(media_list, str): + favorite_function = favorite_function_factory(self.tidal, media_list) + media_items: [Track | Video | Album] = favorite_function() else: media_items: [Track | Video | Album] = items_results_all(media_list) diff --git a/tidal_dl_ng/helper/tidal.py b/tidal_dl_ng/helper/tidal.py index 2eece35..4b04bb7 100644 --- a/tidal_dl_ng/helper/tidal.py +++ b/tidal_dl_ng/helper/tidal.py @@ -5,6 +5,7 @@ from tidalapi.artist import Artist, Role from tidalapi.media import MediaMetadataTags, Quality from tidalapi.session import SearchTypes +from tidal_dl_ng.constants import FAVORITES from tidal_dl_ng.constants import MediaType from tidal_dl_ng.helper.exceptions import MediaUnknown @@ -192,3 +193,10 @@ def quality_audio_highest(media: Track | Album) -> Quality: quality = media.audio_quality return quality + + +def favorite_function_factory(tidal, favorite_item: str): + function_name: str = FAVORITES[favorite_item]["function_name"] + function_list: Callable = getattr(tidal.session.user.favorites, function_name) + + return function_list