summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tidal_dl_ng/constants.py1
-rw-r--r--tidal_dl_ng/gui.py42
2 files changed, 37 insertions, 6 deletions
diff --git a/tidal_dl_ng/constants.py b/tidal_dl_ng/constants.py
index 91cb0f3..ba99ec6 100644
--- a/tidal_dl_ng/constants.py
+++ b/tidal_dl_ng/constants.py
@@ -64,3 +64,4 @@ class QueueDownloadStatus(StrEnum):
Downloading: str = "▶️"
Finished: str = "✅"
Failed: str = "❌"
+ Skipped: str = "↪️"
diff --git a/tidal_dl_ng/gui.py b/tidal_dl_ng/gui.py
index 557f083..6c14d74 100644
--- a/tidal_dl_ng/gui.py
+++ b/tidal_dl_ng/gui.py
@@ -83,6 +83,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
s_queue_download_item_downloading: QtCore.Signal = QtCore.Signal(object)
s_queue_download_item_finished: QtCore.Signal = QtCore.Signal(object)
s_queue_download_item_failed: QtCore.Signal = QtCore.Signal(object)
+ s_queue_download_item_skipped: QtCore.Signal = QtCore.Signal(object)
def __init__(self, tidal: Tidal | None = None):
super().__init__()
@@ -636,6 +637,8 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
self.s_queue_download_item_downloading.connect(self.on_queue_download_item_downloading)
self.s_queue_download_item_finished.connect(self.on_queue_download_item_finished)
self.s_queue_download_item_failed.connect(self.on_queue_download_item_failed)
+ self.s_queue_download_item_skipped.connect(self.on_queue_download_item_skipped)
+
def on_logout(self):
result: bool = self.tidal.logout()
@@ -795,13 +798,18 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
)
if len(items) > 0:
+ result: QueueDownloadStatus
item: QtWidgets.QTreeWidgetItem = items[0]
media: Track | Album | Playlist | Video | Mix | Artist = get_queue_download_media(item)
try:
self.s_queue_download_item_downloading.emit(item)
- self.on_queue_download(media)
- self.s_queue_download_item_finished.emit(item)
+ result = self.on_queue_download(media)
+
+ if result == QueueDownloadStatus.Finished:
+ self.s_queue_download_item_finished.emit(item)
+ elif result == QueueDownloadStatus.Skipped:
+ self.s_queue_download_item_skipped.emit(item)
except:
self.s_queue_download_item_failed.emit(item)
else:
@@ -816,10 +824,14 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def on_queue_download_item_failed(self, item: QtWidgets.QTreeWidgetItem) -> None:
self.queue_download_item_status(item, QueueDownloadStatus.Failed)
+ def on_queue_download_item_skipped(self, item: QtWidgets.QTreeWidgetItem) -> None:
+ self.queue_download_item_status(item, QueueDownloadStatus.Skipped)
+
def queue_download_item_status(self, item: QtWidgets.QTreeWidgetItem, status: str) -> None:
item.setText(0, status)
- def on_queue_download(self, media: Track | Album | Playlist | Video | Mix | Artist) -> None:
+ def on_queue_download(self, media: Track | Album | Playlist | Video | Mix | Artist) -> QueueDownloadStatus:
+ result: QueueDownloadStatus
items_media: [Track | Album | Playlist | Video | Mix | Artist]
if isinstance(media, Artist):
@@ -830,18 +842,23 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
download_delay: bool = bool(isinstance(media, Track | Video) and self.settings.data.download_delay)
for item_media in items_media:
- self.download(item_media, self.dl, delay_track=download_delay)
+ result = self.download(item_media, self.dl, delay_track=download_delay)
+
+ return result
def download(
self, media: Track | Album | Playlist | Video | Mix | Artist, dl: Download, delay_track: bool = False
- ) -> None:
+ ) -> QueueDownloadStatus:
+ result_dl: bool
+ path_file: str
+ result: QueueDownloadStatus
self.s_pb_reset.emit()
self.s_statusbar_message.emit(StatusbarMessage(message="Download started..."))
file_template = get_format_template(media, self.settings)
if isinstance(media, Track | Video):
- dl.item(media=media, file_template=file_template, download_delay=delay_track)
+ result_dl, path_file = dl.item(media=media, file_template=file_template, download_delay=delay_track)
elif isinstance(media, Album | Playlist | Mix):
dl.items(
media=media,
@@ -850,8 +867,21 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
download_delay=self.settings.data.download_delay,
)
+ # Dummy values
+ result_dl = True
+ path_file = "/tmp/dummy"
+
self.s_statusbar_message.emit(StatusbarMessage(message="Download finished.", timout=2000))
+ if result_dl and path_file:
+ result = QueueDownloadStatus.Finished
+ elif not result_dl and path_file:
+ result = QueueDownloadStatus.Skipped
+ else:
+ result = QueueDownloadStatus.Failed
+
+ return result
+
def on_version(
self, update_check: bool = False, update_available: bool = False, update_info: ReleaseLatest = None
) -> None: