✨ Direct search for links in GUI is possible. ♻️ Instantiate media method was moved to helper.

This commit is contained in:
Robert Honz
2024-02-26 07:27:53 +01:00
parent 43326ec93f
commit d845f40e54
3 changed files with 57 additions and 29 deletions
+31 -4
View File
@@ -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():
@@ -404,6 +419,18 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
obj=item,
)
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