summaryrefslogtreecommitdiff
path: root/tidal_dl_ng/gui.py
diff options
context:
space:
mode:
authorRobert Honz <exislow+github@gmail.com>2024-02-26 07:27:53 +0100
committerRobert Honz <exislow+github@gmail.com>2024-02-26 07:27:53 +0100
commitd845f40e540f33ec719f1cc3d6b2448456b009ac (patch)
tree6ca10c5dbd2288099b9bd393a14068da2c7c510a /tidal_dl_ng/gui.py
parent43326ec93f2b8e06caaaf81acac8114dafa1bd61 (diff)
downloadtidal-dl-ng-d845f40e540f33ec719f1cc3d6b2448456b009ac.tar.gz
✨ Direct search for links in GUI is possible. ♻️ Instantiate media method was moved to helper.
Diffstat (limited to 'tidal_dl_ng/gui.py')
-rw-r--r--tidal_dl_ng/gui.py35
1 files changed, 31 insertions, 4 deletions
diff --git a/tidal_dl_ng/gui.py b/tidal_dl_ng/gui.py
index 6c904d7..0eb5697 100644
--- a/tidal_dl_ng/gui.py
+++ b/tidal_dl_ng/gui.py
@@ -7,7 +7,14 @@ from requests.exceptions import HTTPError
from tidal_dl_ng import __version__
from tidal_dl_ng.dialog import DialogLogin, DialogPreferences, DialogVersion
from tidal_dl_ng.helper.path import get_format_template
-from tidal_dl_ng.helper.tidal import items_results_all, search_results_all, user_media_lists
+from tidal_dl_ng.helper.tidal import (
+ get_tidal_media_id,
+ get_tidal_media_type,
+ instantiate_media,
+ items_results_all,
+ search_results_all,
+ user_media_lists,
+)
try:
import qdarktheme
@@ -342,9 +349,17 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
self.apply_settings(self.settings)
def search(self, query: str, types_media: SearchTypes) -> [ResultItem]:
- result_search: dict[str, [SearchTypes]] = search_results_all(
- session=self.tidal.session, needle=query, types_media=types_media
- )
+ # If a direct link was searched for, skip search and create the object from the link directly.
+ if "http" in query:
+ media_type = get_tidal_media_type(query)
+ item_id = get_tidal_media_id(query)
+ media = instantiate_media(self.tidal.session, media_type, item_id)
+ result_search = {"direct": [media]}
+ else:
+ result_search: dict[str, [SearchTypes]] = search_results_all(
+ session=self.tidal.session, needle=query, types_media=types_media
+ )
+
result: [ResultItem] = []
for _media_type, l_media in result_search.items():
@@ -405,6 +420,18 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
)
result.append(result_item)
+ elif isinstance(item, Mix):
+ result_item: ResultItem = ResultItem(
+ position=idx,
+ artist=item.sub_title,
+ title=item.title,
+ album="",
+ # TODO: Calculate total duration.
+ duration_sec=-1,
+ obj=item,
+ )
+
+ result.append(result_item)
return result