summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Honz <exislow+github@gmail.com>2024-02-26 07:34:07 +0100
committerRobert Honz <exislow+github@gmail.com>2024-02-26 07:34:07 +0100
commit3c57db9e825825cf04eb89f6f2abdfb144630fdf (patch)
treed4f9b64fbbff63b323105f18cf8411b950df1cf7
parentd845f40e540f33ec719f1cc3d6b2448456b009ac (diff)
downloadtidal-dl-ng-3c57db9e825825cf04eb89f6f2abdfb144630fdf.tar.gz
✨ Direct link search can handle invalid links.
-rw-r--r--tidal_dl_ng/gui.py8
-rw-r--r--tidal_dl_ng/helper/tidal.py25
2 files changed, 21 insertions, 12 deletions
diff --git a/tidal_dl_ng/gui.py b/tidal_dl_ng/gui.py
index 0eb5697..34a42f7 100644
--- a/tidal_dl_ng/gui.py
+++ b/tidal_dl_ng/gui.py
@@ -6,6 +6,7 @@ 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.exceptions import MediaUnknown
from tidal_dl_ng.helper.path import get_format_template
from tidal_dl_ng.helper.tidal import (
get_tidal_media_id,
@@ -353,7 +354,12 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
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)
+
+ try:
+ media = instantiate_media(self.tidal.session, media_type, item_id)
+ except MediaUnknown:
+ media = None
+
result_search = {"direct": [media]}
else:
result_search: dict[str, [SearchTypes]] = search_results_all(
diff --git a/tidal_dl_ng/helper/tidal.py b/tidal_dl_ng/helper/tidal.py
index bdb2abf..e13c909 100644
--- a/tidal_dl_ng/helper/tidal.py
+++ b/tidal_dl_ng/helper/tidal.py
@@ -112,17 +112,20 @@ def instantiate_media(
media_type: type[MediaType.TRACK, MediaType.VIDEO, MediaType.ALBUM, MediaType.PLAYLIST, MediaType.MIX],
id_media: str,
) -> Track | Video:
- if media_type == MediaType.TRACK:
- media = Track(session, id_media)
- elif media_type == MediaType.VIDEO:
- media = Video(session, id_media)
- elif media_type == MediaType.ALBUM:
- media = Album(session, id_media)
- elif media_type == MediaType.PLAYLIST:
- media = Playlist(session, id_media)
- elif media_type == MediaType.MIX:
- media = Mix(session, id_media)
- else:
+ try:
+ if media_type == MediaType.TRACK:
+ media = Track(session, id_media)
+ elif media_type == MediaType.VIDEO:
+ media = Video(session, id_media)
+ elif media_type == MediaType.ALBUM:
+ media = Album(session, id_media)
+ elif media_type == MediaType.PLAYLIST:
+ media = Playlist(session, id_media)
+ elif media_type == MediaType.MIX:
+ media = Mix(session, id_media)
+ else:
+ raise MediaUnknown
+ except:
raise MediaUnknown
return media