Cleaned up some code
This commit is contained in:
parent
e81adde17d
commit
d6106f30b7
|
@ -1,3 +1,3 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
__version__ = "1.2.22"
|
||||
__version__ = "1.3.0"
|
||||
|
|
|
@ -9,4 +9,4 @@ class deemix:
|
|||
self.set = Settings(configFolder)
|
||||
self.dz = Deezer()
|
||||
self.sp = SpotifyHelper(configFolder)
|
||||
self.qm = QueueManager()
|
||||
self.qm = QueueManager(self.sp)
|
||||
|
|
|
@ -10,7 +10,7 @@ from os import makedirs, remove, system as execute
|
|||
from tempfile import gettempdir
|
||||
from time import sleep
|
||||
|
||||
from deemix.app.queueitem import QIConvertable, QISingle, QICollection
|
||||
from deemix.app.queueitem import QISingle, QICollection
|
||||
from deemix.app.track import Track
|
||||
from deemix.utils.misc import changeCase
|
||||
from deemix.utils.pathtemplates import generateFilename, generateFilepath, settingsRegexAlbum, settingsRegexArtist, settingsRegexPlaylistFile
|
||||
|
@ -91,12 +91,9 @@ def formatDate(date, template):
|
|||
return template
|
||||
|
||||
class DownloadJob:
|
||||
def __init__(self, dz, sp, queueItem, interface=None):
|
||||
def __init__(self, dz, queueItem, interface=None):
|
||||
self.dz = dz
|
||||
self.sp = sp
|
||||
self.interface = interface
|
||||
if isinstance(queueItem, QIConvertable) and queueItem.extra:
|
||||
self.sp.convert_spotify_playlist(self.dz, queueItem, interface=self.interface)
|
||||
self.queueItem = queueItem
|
||||
self.settings = queueItem.settings
|
||||
self.bitrate = queueItem.bitrate
|
||||
|
|
|
@ -15,13 +15,14 @@ logging.basicConfig(level=logging.INFO)
|
|||
logger = logging.getLogger('deemix')
|
||||
|
||||
class QueueManager:
|
||||
def __init__(self):
|
||||
def __init__(self, spotifyHelper=None):
|
||||
self.queue = []
|
||||
self.queueList = {}
|
||||
self.queueComplete = []
|
||||
self.currentItem = ""
|
||||
self.sp = spotifyHelper
|
||||
|
||||
def generateQueueItem(self, dz, sp, url, settings, bitrate=None, albumAPI=None, interface=None):
|
||||
def generateQueueItem(self, dz, url, settings, bitrate=None, albumAPI=None, interface=None):
|
||||
forcedBitrate = getBitrateInt(bitrate)
|
||||
bitrate = forcedBitrate if forcedBitrate else settings['maxBitrate']
|
||||
if 'deezer.page.link' in url:
|
||||
|
@ -270,15 +271,17 @@ class QueueManager:
|
|||
collection,
|
||||
)
|
||||
|
||||
elif type == "spotifytrack":
|
||||
if not sp.spotifyEnabled:
|
||||
elif type == "spotifytrack" and self.sp:
|
||||
if not self.sp.spotifyEnabled:
|
||||
logger.warn("Spotify Features is not setted up correctly.")
|
||||
return QueueError(url, "Spotify Features is not setted up correctly.", "spotifyDisabled")
|
||||
|
||||
try:
|
||||
track_id = sp.get_trackid_spotify(dz, id, settings['fallbackSearch'])
|
||||
track_id = self.sp.get_trackid_spotify(dz, id, settings['fallbackSearch'])
|
||||
except SpotifyException as e:
|
||||
return QueueError(url, "Wrong URL: "+e.msg[e.msg.find('\n')+2:])
|
||||
except Exception as e:
|
||||
return QueueError(url, "Something went wrong: "+str(e))
|
||||
|
||||
if track_id != "0":
|
||||
return self.generateQueueItem(dz, sp, f'https://www.deezer.com/track/{track_id}', settings, bitrate)
|
||||
|
@ -286,15 +289,17 @@ class QueueManager:
|
|||
logger.warn("Track not found on deezer!")
|
||||
return QueueError(url, "Track not found on deezer!", "trackNotOnDeezer")
|
||||
|
||||
elif type == "spotifyalbum":
|
||||
if not sp.spotifyEnabled:
|
||||
elif type == "spotifyalbum" and self.sp:
|
||||
if not self.sp.spotifyEnabled:
|
||||
logger.warn("Spotify Features is not setted up correctly.")
|
||||
return QueueError(url, "Spotify Features is not setted up correctly.", "spotifyDisabled")
|
||||
|
||||
try:
|
||||
album_id = sp.get_albumid_spotify(dz, id)
|
||||
album_id = self.sp.get_albumid_spotify(dz, id)
|
||||
except SpotifyException as e:
|
||||
return QueueError(url, "Wrong URL: "+e.msg[e.msg.find('\n')+2:])
|
||||
except Exception as e:
|
||||
return QueueError(url, "Something went wrong: "+str(e))
|
||||
|
||||
if album_id != "0":
|
||||
return self.generateQueueItem(dz, sp, f'https://www.deezer.com/album/{album_id}', settings, bitrate)
|
||||
|
@ -302,21 +307,23 @@ class QueueManager:
|
|||
logger.warn("Album not found on deezer!")
|
||||
return QueueError(url, "Album not found on deezer!", "albumNotOnDeezer")
|
||||
|
||||
elif type == "spotifyplaylist":
|
||||
if not sp.spotifyEnabled:
|
||||
elif type == "spotifyplaylist" and self.sp:
|
||||
if not self.sp.spotifyEnabled:
|
||||
logger.warn("Spotify Features is not setted up correctly.")
|
||||
return QueueError(url, "Spotify Features is not setted up correctly.", "spotifyDisabled")
|
||||
|
||||
try:
|
||||
return sp.generate_playlist_queueitem(dz, id, bitrate, settings)
|
||||
return self.sp.generate_playlist_queueitem(dz, id, bitrate, settings)
|
||||
except SpotifyException as e:
|
||||
return QueueError(url, "Wrong URL: "+e.msg[e.msg.find('\n')+2:])
|
||||
except Exception as e:
|
||||
return QueueError(url, "Something went wrong: "+str(e))
|
||||
|
||||
else:
|
||||
logger.warn("URL not supported yet")
|
||||
return QueueError(url, "URL not supported yet", "unsupportedURL")
|
||||
|
||||
def addToQueue(self, dz, sp, url, settings, bitrate=None, interface=None):
|
||||
def addToQueue(self, dz, url, settings, bitrate=None, interface=None):
|
||||
if not dz.logged_in:
|
||||
if interface:
|
||||
interface.send("loginNeededToDownload")
|
||||
|
@ -327,7 +334,7 @@ class QueueManager:
|
|||
if link == "":
|
||||
return False
|
||||
logger.info("Generating queue item for: "+link)
|
||||
return self.generateQueueItem(dz, sp, link, settings, bitrate, interface=interface)
|
||||
return self.generateQueueItem(dz, link, settings, bitrate, interface=interface)
|
||||
|
||||
if type(url) is list:
|
||||
queueItem = []
|
||||
|
@ -381,10 +388,10 @@ class QueueManager:
|
|||
self.queue.append(queueItem.uuid)
|
||||
self.queueList[queueItem.uuid] = queueItem
|
||||
|
||||
self.nextItem(dz, sp, interface)
|
||||
self.nextItem(dz, interface)
|
||||
return True
|
||||
|
||||
def nextItem(self, dz, sp, interface=None):
|
||||
def nextItem(self, dz, interface=None):
|
||||
if self.currentItem != "":
|
||||
return None
|
||||
else:
|
||||
|
@ -392,20 +399,24 @@ class QueueManager:
|
|||
self.currentItem = self.queue.pop(0)
|
||||
else:
|
||||
return None
|
||||
if isinstance(self.queueList[self.currentItem], QIConvertable) and self.queueList[self.currentItem].extra:
|
||||
logger.info(f"[{self.currentItem}] Converting tracks to deezer.")
|
||||
self.sp.convert_spotify_playlist(dz, self.queueList[self.currentItem], interface=interface)
|
||||
logger.info(f"[{self.currentItem}] Tracks converted.")
|
||||
if interface:
|
||||
interface.send("startDownload", self.currentItem)
|
||||
logger.info(f"[{self.currentItem}] Started downloading.")
|
||||
DownloadJob(dz, sp, self.queueList[self.currentItem], interface).start()
|
||||
self.afterDownload(dz, sp, interface)
|
||||
DownloadJob(dz, self.queueList[self.currentItem], interface).start()
|
||||
self.afterDownload(dz, interface)
|
||||
|
||||
def afterDownload(self, dz, sp, interface):
|
||||
def afterDownload(self, dz, interface):
|
||||
if self.queueList[self.currentItem].cancel:
|
||||
del self.queueList[self.currentItem]
|
||||
else:
|
||||
self.queueComplete.append(self.currentItem)
|
||||
logger.info(f"[{self.currentItem}] Finished downloading.")
|
||||
self.currentItem = ""
|
||||
self.nextItem(dz, sp, interface)
|
||||
self.nextItem(dz, interface)
|
||||
|
||||
|
||||
def getQueue(self):
|
||||
|
|
|
@ -6,7 +6,7 @@ from os import mkdir
|
|||
import spotipy
|
||||
from spotipy.oauth2 import SpotifyClientCredentials
|
||||
from deemix.utils.localpaths import getConfigFolder
|
||||
from deemix.app.queueitem import QIConvertable, QICollection
|
||||
from deemix.app.queueitem import QIConvertable
|
||||
|
||||
emptyPlaylist = {
|
||||
'collaborative': False,
|
||||
|
|
|
@ -142,7 +142,7 @@ class Track:
|
|||
|
||||
def parseData(self, dz, settings, trackAPI_gw, trackAPI, albumAPI_gw, albumAPI):
|
||||
self.discNumber = trackAPI_gw.get('DISK_NUMBER')
|
||||
self.explicit = bool(int(trackAPI_gw.get('EXPLICIT_LYRICS') or "0"))
|
||||
self.explicit = bool(int(trackAPI_gw.get('EXPLICIT_LYRICS', "0")))
|
||||
self.copyright = trackAPI_gw.get('COPYRIGHT')
|
||||
self.replayGain = ""
|
||||
if 'GAIN' in trackAPI_gw:
|
||||
|
@ -152,7 +152,7 @@ class Track:
|
|||
self.contributors = trackAPI_gw['SNG_CONTRIBUTORS']
|
||||
|
||||
self.lyrics = {
|
||||
'id': trackAPI_gw.get('LYRICS_ID'),
|
||||
'id': trackAPI_gw.get('LYRICS_ID', "0"),
|
||||
'unsync': None,
|
||||
'sync': None,
|
||||
'syncID3': None
|
||||
|
@ -232,16 +232,16 @@ class Track:
|
|||
self.album['trackTotal'] = albumAPI['nb_tracks']
|
||||
self.album['recordType'] = albumAPI['record_type']
|
||||
|
||||
self.album['barcode'] = albumAPI.get('upc') or self.album['barcode']
|
||||
self.album['label'] = albumAPI.get('label') or self.album['label']
|
||||
self.album['explicit'] = bool(albumAPI.get('explicit_lyrics'))
|
||||
self.album['barcode'] = albumAPI.get('upc', self.album['barcode'])
|
||||
self.album['label'] = albumAPI.get('label', self.album['label'])
|
||||
self.album['explicit'] = bool(albumAPI.get('explicit_lyrics', False))
|
||||
if 'release_date' in albumAPI:
|
||||
self.album['date'] = {
|
||||
'day': albumAPI["release_date"][8:10],
|
||||
'month': albumAPI["release_date"][5:7],
|
||||
'year': albumAPI["release_date"][0:4]
|
||||
}
|
||||
self.album['discTotal'] = albumAPI.get('nb_disk')
|
||||
self.album['discTotal'] = albumAPI.get('nb_disk', "1")
|
||||
self.copyright = albumAPI.get('copyright')
|
||||
|
||||
if not self.album['pic']:
|
||||
|
@ -267,7 +267,7 @@ class Track:
|
|||
self.album['trackTotal'] = albumAPI_gw['NUMBER_TRACK']
|
||||
self.album['discTotal'] = albumAPI_gw['NUMBER_DISK']
|
||||
self.album['recordType'] = "Album"
|
||||
self.album['label'] = albumAPI_gw.get('LABEL_NAME') or self.album['label']
|
||||
self.album['label'] = albumAPI_gw.get('LABEL_NAME', self.album['label'])
|
||||
if 'EXPLICIT_ALBUM_CONTENT' in albumAPI_gw and 'EXPLICIT_LYRICS_STATUS' in albumAPI_gw['EXPLICIT_ALBUM_CONTENT']:
|
||||
self.album['explicit'] = albumAPI_gw['EXPLICIT_ALBUM_CONTENT']['EXPLICIT_LYRICS_STATUS'] in [1,4]
|
||||
if not self.album['pic']:
|
||||
|
|
Loading…
Reference in New Issue