From d7112063a06ee226665bfe9d0849c8c718a0fb0c Mon Sep 17 00:00:00 2001 From: Robert Honz Date: Mon, 11 Nov 2024 10:05:32 +0100 Subject: Option added to embed and download album art. --- tidal_dl_ng/gui.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'tidal_dl_ng/gui.py') diff --git a/tidal_dl_ng/gui.py b/tidal_dl_ng/gui.py index 55e2b97..cc8f7f5 100644 --- a/tidal_dl_ng/gui.py +++ b/tidal_dl_ng/gui.py @@ -31,7 +31,6 @@ from tidal_dl_ng.helper.tidal import ( search_results_all, user_media_lists, ) -from tidal_dl_ng.metadata import Metadata try: import qdarktheme @@ -757,7 +756,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): if cover_url and self.cover_url_current != cover_url: self.cover_url_current = cover_url - data_cover: bytes = Metadata.cover_data(cover_url) + data_cover: bytes = Download.cover_data(cover_url) pixmap: QtGui.QPixmap = QtGui.QPixmap() pixmap.loadFromData(data_cover) self.l_pm_cover.setPixmap(pixmap) -- cgit v1.3.1 From 9e75cc46566541fb69c8a43e53315e89bdaef1d7 Mon Sep 17 00:00:00 2001 From: Robert Honz Date: Mon, 11 Nov 2024 11:18:25 +0100 Subject: ✨ Share URL can be copied using right click in GUI. Fixes #132 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tidal_dl_ng/gui.py | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) (limited to 'tidal_dl_ng/gui.py') diff --git a/tidal_dl_ng/gui.py b/tidal_dl_ng/gui.py index cc8f7f5..5837a6b 100644 --- a/tidal_dl_ng/gui.py +++ b/tidal_dl_ng/gui.py @@ -248,6 +248,9 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): tree.setColumnWidth(3, 150) tree.setColumnWidth(4, 150) header.setSectionResizeMode(0, QtWidgets.QHeaderView.ResizeToContents) + # Connect the contextmenu + tree.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) + tree.customContextMenuRequested.connect(self.menu_context_tree_results) def _init_tree_results_model(self, model: QtGui.QStandardItemModel) -> None: model.setColumnCount(7) @@ -358,7 +361,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): self.spinner.stop() self.spinner = None - def menu_context_tree_lists(self, point): + def menu_context_tree_lists(self, point: QtCore.QPoint): # Infos about the node selected. index = self.tr_lists_user.indexAt(point) @@ -369,12 +372,46 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): # We build the menu. menu = QtWidgets.QMenu() menu.addAction("Download Playlist", lambda: self.thread_download_list_media(point)) + menu.addAction("Copy Share URL", lambda: self.thread_copy_url_share(self.tr_lists_user, point)) menu.exec(self.tr_lists_user.mapToGlobal(point)) - def thread_download_list_media(self, point): + def menu_context_tree_results(self, point: QtCore.QPoint): + # Infos about the node selected. + index = self.tr_results.indexAt(point) + + # Do not open menu if something went wrong or a parent node is clicked. + if not index.isValid(): + return + + # We build the menu. + menu = QtWidgets.QMenu() + menu.addAction("Copy Share URL", lambda: self.thread_copy_url_share(self.tr_results, point)) + + menu.exec(self.tr_results.mapToGlobal(point)) + + def thread_download_list_media(self, point: QtCore.QPoint): self.thread_it(self.on_download_list_media, point) - self.thread_it(self.list_items_show_result, point=point) + + def thread_copy_url_share(self, tree_target: QtWidgets.QTreeWidget, point: QtCore.QPoint): + self.thread_it(self.on_copy_url_share, tree_target, point) + + def on_copy_url_share(self, tree_target: QtWidgets.QTreeWidget | QtWidgets.QTreeView, point: QtCore.QPoint = None): + if isinstance(tree_target, QtWidgets.QTreeWidget): + + item: QtWidgets.QTreeWidgetItem = tree_target.itemAt(point) + media: Album | Artist | Mix | Playlist = get_user_list_media_item(item) + else: + index: QtCore.QModelIndex = tree_target.indexAt(point) + media: Track | Video | Album | Artist | Mix | Playlist = get_results_media_item( + index, self.proxy_tr_results, self.model_tr_results + ) + + clipboard = QtWidgets.QApplication.clipboard() + url_share = media.share_url if hasattr(media, "share_url") else "No share URL available." + + clipboard.clear() + clipboard.setText(url_share) def on_download_list_media(self, point: QtCore.QPoint = None): items: [QtWidgets.QTreeWidgetItem] -- cgit v1.3.1 From ac7afca1bfbd255140602fb7863791b31cb4e109 Mon Sep 17 00:00:00 2001 From: Robert Honz Date: Mon, 11 Nov 2024 12:06:21 +0100 Subject: ✨ Column added to display "date added" of list items. Fixes #146 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tidal_dl_ng/gui.py | 26 +++++++++++++++++++++++--- tidal_dl_ng/model/gui_data.py | 1 + 2 files changed, 24 insertions(+), 3 deletions(-) (limited to 'tidal_dl_ng/gui.py') diff --git a/tidal_dl_ng/gui.py b/tidal_dl_ng/gui.py index 5837a6b..7aa2150 100644 --- a/tidal_dl_ng/gui.py +++ b/tidal_dl_ng/gui.py @@ -253,9 +253,11 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): tree.customContextMenuRequested.connect(self.menu_context_tree_results) def _init_tree_results_model(self, model: QtGui.QStandardItemModel) -> None: - model.setColumnCount(7) + labels_column: [str] = ["#", "obj", "Artist", "Title", "Album", "Duration", "Quality", "Date Added"] + + model.setColumnCount(len(labels_column)) model.setRowCount(0) - model.setHorizontalHeaderLabels(["#", "obj", "Artist", "Title", "Album", "Duration", "Quality"]) + model.setHorizontalHeaderLabels(labels_column) def _init_tree_queue(self, tree: QtWidgets.QTableWidget): tree.setColumnHidden(1, True) @@ -480,6 +482,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): child_album: QtGui.QStandardItem = QtGui.QStandardItem(item.album) child_duration: QtGui.QStandardItem = QtGui.QStandardItem(duration) child_quality: QtGui.QStandardItem = QtGui.QStandardItem(item.quality) + child_date_added: QtGui.QStandardItem = QtGui.QStandardItem(item.date_user_added) 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. @@ -488,7 +491,16 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): child_dummy.setEnabled(False) child_index.appendRow(child_dummy) - return child_index, child_obj, child_artist, child_title, child_album, child_duration, child_quality + return ( + child_index, + child_obj, + child_artist, + child_title, + child_album, + child_duration, + child_quality, + child_date_added, + ) def on_tr_results_add_top_level_item(self, item_child: Sequence[QtGui.QStandardItem]): self.model_tr_results.appendRow(item_child) @@ -537,6 +549,8 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): if isinstance(item, Track | Video | Album): explicit = " 🅴" if item.explicit else "" + date_user_added: str = item.user_date_added.strftime("%Y-%m-%d_%H:%M") if item.user_date_added else "" + if isinstance(item, Track): result_item: ResultItem = ResultItem( position=idx, @@ -547,6 +561,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): obj=item, quality=quality_audio_highest(item), explicit=bool(item.explicit), + date_user_added=date_user_added, ) result.append(result_item) @@ -560,6 +575,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): obj=item, quality=item.video_quality, explicit=bool(item.explicit), + date_user_added=date_user_added, ) result.append(result_item) @@ -573,6 +589,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): obj=item, quality="", explicit=False, + date_user_added=date_user_added, ) result.append(result_item) @@ -586,6 +603,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): obj=item, quality=quality_audio_highest(item), explicit=bool(item.explicit), + date_user_added=date_user_added, ) result.append(result_item) @@ -600,6 +618,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): obj=item, quality="", explicit=False, + date_user_added=date_user_added, ) result.append(result_item) @@ -613,6 +632,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): obj=item, quality="", explicit=False, + date_user_added=date_user_added, ) result.append(result_item) diff --git a/tidal_dl_ng/model/gui_data.py b/tidal_dl_ng/model/gui_data.py index 8c7c30e..186ed98 100644 --- a/tidal_dl_ng/model/gui_data.py +++ b/tidal_dl_ng/model/gui_data.py @@ -28,6 +28,7 @@ class ResultItem: obj: object quality: str explicit: bool + date_user_added: str @dataclass -- cgit v1.3.1