From 00885ae674bc35bc3685bc11b06cf93e14ad059e Mon Sep 17 00:00:00 2001 From: RemixDev Date: Wed, 19 Aug 2020 17:16:39 +0200 Subject: [PATCH] It's now possible to cancel spotify playlist conversion --- deemix/app/downloadjob.py | 21 +++++++++++---------- deemix/app/spotifyhelper.py | 2 ++ 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/deemix/app/downloadjob.py b/deemix/app/downloadjob.py index cefc303..ff8ca6d 100644 --- a/deemix/app/downloadjob.py +++ b/deemix/app/downloadjob.py @@ -104,16 +104,17 @@ class DownloadJob: self.playlistURLs = [] def start(self): - if isinstance(self.queueItem, QISingle): - result = self.downloadWrapper(self.queueItem.single) - if result: - self.singleAfterDownload(result) - elif isinstance(self.queueItem, QICollection): - tracks = [None] * len(self.queueItem.collection) - with ThreadPoolExecutor(self.settings['queueConcurrency']) as executor: - for pos, track in enumerate(self.queueItem.collection, start=0): - tracks[pos] = executor.submit(self.downloadWrapper, track) - self.collectionAfterDownload(tracks) + if not self.queueItem.cancel: + if isinstance(self.queueItem, QISingle): + result = self.downloadWrapper(self.queueItem.single) + if result: + self.singleAfterDownload(result) + elif isinstance(self.queueItem, QICollection): + tracks = [None] * len(self.queueItem.collection) + with ThreadPoolExecutor(self.settings['queueConcurrency']) as executor: + for pos, track in enumerate(self.queueItem.collection, start=0): + tracks[pos] = executor.submit(self.downloadWrapper, track) + self.collectionAfterDownload(tracks) if self.interface: if self.queueItem.cancel: self.interface.send('currentItemCancelled', self.queueItem.uuid) diff --git a/deemix/app/spotifyhelper.py b/deemix/app/spotifyhelper.py index 260e0dc..7c0d385 100644 --- a/deemix/app/spotifyhelper.py +++ b/deemix/app/spotifyhelper.py @@ -237,6 +237,8 @@ class SpotifyHelper: interface.send("startConversion", queueItem.uuid) collection = [] for pos, track in enumerate(queueItem.extra['unconverted'], start=1): + if queueItem.cancel: + return if str(track['id']) in cache['tracks']: trackID = cache['tracks'][str(track['id'])] else: