Made nextitem work on a thread
This commit is contained in:
parent
9c49bf5d23
commit
318ad689ea
|
@ -117,7 +117,6 @@ class DownloadJob:
|
||||||
with ThreadPoolExecutor(self.settings['queueConcurrency']) as executor:
|
with ThreadPoolExecutor(self.settings['queueConcurrency']) as executor:
|
||||||
for pos, track in enumerate(self.queueItem.collection, start=0):
|
for pos, track in enumerate(self.queueItem.collection, start=0):
|
||||||
tracks[pos] = executor.submit(self.downloadWrapper, track)
|
tracks[pos] = executor.submit(self.downloadWrapper, track)
|
||||||
pool.waitall()
|
|
||||||
self.collectionAfterDownload(tracks)
|
self.collectionAfterDownload(tracks)
|
||||||
if self.interface:
|
if self.interface:
|
||||||
if self.queueItem.cancel:
|
if self.queueItem.cancel:
|
||||||
|
@ -159,7 +158,7 @@ class DownloadJob:
|
||||||
searched = ""
|
searched = ""
|
||||||
|
|
||||||
for i in range(len(tracks)):
|
for i in range(len(tracks)):
|
||||||
result = tracks[i].wait()
|
result = tracks[i].result()
|
||||||
if not result: return None # Check if item is cancelled
|
if not result: return None # Check if item is cancelled
|
||||||
|
|
||||||
# Log errors to file
|
# Log errors to file
|
||||||
|
|
|
@ -15,6 +15,8 @@ from os import remove
|
||||||
import uuid
|
import uuid
|
||||||
from urllib.request import urlopen
|
from urllib.request import urlopen
|
||||||
|
|
||||||
|
import threading
|
||||||
|
|
||||||
logging.basicConfig(level=logging.INFO)
|
logging.basicConfig(level=logging.INFO)
|
||||||
logger = logging.getLogger('deemix')
|
logger = logging.getLogger('deemix')
|
||||||
|
|
||||||
|
@ -26,6 +28,7 @@ class QueueManager:
|
||||||
self.currentItem = ""
|
self.currentItem = ""
|
||||||
self.dz = deezerHelper or Deezer()
|
self.dz = deezerHelper or Deezer()
|
||||||
self.sp = spotifyHelper
|
self.sp = spotifyHelper
|
||||||
|
self.queueThread = None
|
||||||
|
|
||||||
def generateTrackQueueItem(self, id, settings, bitrate, trackAPI=None, albumAPI=None, dz=None):
|
def generateTrackQueueItem(self, id, settings, bitrate, trackAPI=None, albumAPI=None, dz=None):
|
||||||
if not dz: dz = self.dz
|
if not dz: dz = self.dz
|
||||||
|
@ -440,15 +443,18 @@ class QueueManager:
|
||||||
if interface: interface.send("addedToQueue", queueItem.getSlimmedItem())
|
if interface: interface.send("addedToQueue", queueItem.getSlimmedItem())
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
self.nextItem(dz, interface)
|
if not self.queueThread:
|
||||||
|
self.queueThread = threading.Thread(target=self.nextItem, args=(dz, interface))
|
||||||
|
self.queueThread.start()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def nextItem(self, dz=None, interface=None):
|
def nextItem(self, dz=None, interface=None):
|
||||||
if not dz: dz = self.dz
|
if not dz: dz = self.dz
|
||||||
# Check that nothing is already downloading and
|
# Check that nothing is already downloading and
|
||||||
# that the queue is not empty
|
# that the queue is not empty
|
||||||
if self.currentItem != "": return None
|
if self.currentItem != "" or not len(self.queue):
|
||||||
if not len(self.queue): return None
|
self.queueThread = None
|
||||||
|
return None
|
||||||
|
|
||||||
self.currentItem = self.queue.pop(0)
|
self.currentItem = self.queue.pop(0)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue