diff options
| author | Robert Honz <exislow+github@gmail.com> | 2024-03-22 17:31:33 +0100 |
|---|---|---|
| committer | Robert Honz <exislow+github@gmail.com> | 2024-03-22 17:31:33 +0100 |
| commit | 48fd379ebaed9398791bd1dab819a6351b3763df (patch) | |
| tree | 7d4a7c900223a08fb1f49b60522f55488a2f9ff1 /tidal_dl_ng/gui.py | |
| parent | 6c3ed1030876e1670f13c96c1beb036020203be7 (diff) | |
| download | tidal-dl-ng-48fd379ebaed9398791bd1dab819a6351b3763df.tar.gz | |
✨ Search for artists is possible.
Diffstat (limited to 'tidal_dl_ng/gui.py')
| -rw-r--r-- | tidal_dl_ng/gui.py | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/tidal_dl_ng/gui.py b/tidal_dl_ng/gui.py index 9ca72e1..e1ca19d 100644 --- a/tidal_dl_ng/gui.py +++ b/tidal_dl_ng/gui.py @@ -30,6 +30,7 @@ except ImportError as e: import coloredlogs.converter from rich.progress import Progress from tidalapi import Album, Mix, Playlist, Quality, Track, UserPlaylist, Video +from tidalapi.artist import Artist from tidalapi.session import SearchTypes from tidal_dl_ng.config import Settings, Tidal @@ -178,10 +179,10 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): def _populate_search_types(self, ui_target: QtWidgets.QComboBox, options: SearchTypes): for item in options: - if item and item.__name__ != "Artist": + if item: ui_target.addItem(item.__name__, item) - self.cb_search_type.setCurrentIndex(1) + self.cb_search_type.setCurrentIndex(2) def _init_tree_results(self, tree: QtWidgets.QTableWidget): tree.setColumnHidden(5, True) @@ -321,10 +322,14 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): self.s_tr_results_add_top_level_item.emit(child) def populate_tree_result_child(self, item: [Track | Video | Mix | Album | Playlist], index_count_digits: int): + duration: str = "" + # TODO: Duration needs to be calculated later to properly fill with zeros. - # Format seconds to mm:ss. - m, s = divmod(item.duration_sec, 60) - duration: str = f"{m:02d}:{s:02d}" + if item.duration_sec > -1: + # Format seconds to mm:ss. + m, s = divmod(item.duration_sec, 60) + duration: str = f"{m:02d}:{s:02d}" + # Since sorting happens only by string, we need to pad the index and add 1 (to avoid start at 0) index: str = str(item.position + 1).zfill(index_count_digits) @@ -337,7 +342,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): child.setText(4, duration) child.setData(5, QtCore.Qt.ItemDataRole.UserRole, item.obj) - if isinstance(item.obj, Mix | Playlist | Album): + if isinstance(item.obj, Mix | Playlist | Album | Artist): # Add a disabled dummy child, so expansion arrow will appear. This Child will be replaced on expansion. child_dummy: QtWidgets.QTreeWidgetItem = QtWidgets.QTreeWidgetItem() @@ -443,6 +448,17 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): ) result.append(result_item) + elif isinstance(item, Artist): + result_item: ResultItem = ResultItem( + position=idx, + artist=item.name, + title="", + album="", + duration_sec=-1, + obj=item, + ) + + result.append(result_item) return result @@ -521,7 +537,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): def list_items_show_result( self, - media_list: Album | Playlist | Mix | None = None, + media_list: Album | Playlist | Mix | Artist | None = None, point: QtCore.QPoint | None = None, parent: QtWidgets.QTreeWidgetItem = None, ) -> None: @@ -530,7 +546,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): media_list = item.data(3, QtCore.Qt.ItemDataRole.UserRole) # Get all results - media_items: [Track | Video] = items_results_all(media_list) + media_items: [Track | Video | Album] = items_results_all(media_list) result: [ResultItem] = self.search_result_to_model(media_items) self.populate_tree_results(result, parent=parent) @@ -597,7 +613,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): if load_children: list_item.removeChild(list_item.child(0)) - media_list: [Mix | Album | Playlist] = list_item.data(5, QtCore.Qt.ItemDataRole.UserRole) + media_list: [Mix | Album | Playlist | Artist] = list_item.data(5, QtCore.Qt.ItemDataRole.UserRole) self.list_items_show_result(media_list=media_list, parent=list_item) |
