From 3b2a5ac3bb6abb19eb6decdc950dd94f50dcbd9e Mon Sep 17 00:00:00 2001 From: RemixDev Date: Sun, 20 Sep 2020 10:35:05 +0200 Subject: [PATCH] Moved utils.misc in utils --- deemix/app/downloadjob.py | 2 +- deemix/app/queuemanager.py | 2 +- deemix/app/track.py | 2 +- deemix/utils/__init__.py | 120 ++++++++++++++++++++++++++++++++++++- deemix/utils/misc.py | 120 ------------------------------------- 5 files changed, 121 insertions(+), 125 deletions(-) delete mode 100644 deemix/utils/misc.py diff --git a/deemix/app/downloadjob.py b/deemix/app/downloadjob.py index 74f95a0..7b3e0e6 100644 --- a/deemix/app/downloadjob.py +++ b/deemix/app/downloadjob.py @@ -14,7 +14,7 @@ from tempfile import gettempdir from deemix.app.queueitem import QISingle, QICollection from deemix.app.track import Track -from deemix.utils.misc import changeCase +from deemix.utils import changeCase from deemix.utils.pathtemplates import generateFilename, generateFilepath, settingsRegexAlbum, settingsRegexArtist, settingsRegexPlaylistFile from deemix.api.deezer import USER_AGENT_HEADER from deemix.utils.taggers import tagID3, tagFLAC diff --git a/deemix/app/queuemanager.py b/deemix/app/queuemanager.py index 1585f99..ba62071 100644 --- a/deemix/app/queuemanager.py +++ b/deemix/app/queuemanager.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 from deemix.app.downloadjob import DownloadJob -from deemix.utils.misc import getIDFromLink, getTypeFromLink, getBitrateInt +from deemix.utils import getIDFromLink, getTypeFromLink, getBitrateInt from deemix.api.deezer import APIError from spotipy.exceptions import SpotifyException from deemix.app.queueitem import QueueItem, QISingle, QICollection, QIConvertable diff --git a/deemix/app/track.py b/deemix/app/track.py index 05999e6..90d3198 100644 --- a/deemix/app/track.py +++ b/deemix/app/track.py @@ -2,7 +2,7 @@ import logging from deemix.api.deezer import APIError -from deemix.utils.misc import removeFeatures, andCommaConcat, uniqueArray +from deemix.utils import removeFeatures, andCommaConcat, uniqueArray logging.basicConfig(level=logging.INFO) logger = logging.getLogger('deemix') diff --git a/deemix/utils/__init__.py b/deemix/utils/__init__.py index 9d389f1..d119857 100644 --- a/deemix/utils/__init__.py +++ b/deemix/utils/__init__.py @@ -1,2 +1,118 @@ -#!/usr/bin/env python3 -# Empty File +import re +import string + +def getBitrateInt(txt): + txt = str(txt).lower() + if txt in ['flac', 'lossless', '9']: + return 9 + elif txt in ['mp3', '320', '3']: + return 3 + elif txt in ['128', '1']: + return 1 + elif txt in ['360', '360_hq', '15']: + return 15 + elif txt in ['360_mq', '14']: + return 14 + elif txt in ['360_lq', '13']: + return 13 + else: + return None + + +def changeCase(str, type): + if type == "lower": + return str.lower() + elif type == "upper": + return str.upper() + elif type == "start": + return string.capwords(str) + elif type == "sentence": + return str.capitalize() + else: + return str + + +def removeFeatures(title): + clean = title + if "(feat." in clean.lower(): + pos = clean.lower().find("(feat.") + tempTrack = clean[:pos] + if ")" in clean: + tempTrack += clean[clean.find(")", pos + 1) + 1:] + clean = tempTrack.strip() + return clean + + +def andCommaConcat(lst): + tot = len(lst) + result = "" + for i, art in enumerate(lst): + result += art + if tot != i + 1: + if tot - 1 == i + 1: + result += " & " + else: + result += ", " + return result + + +def getIDFromLink(link, type): + if '?' in link: + link = link[:link.find('?')] + if link.endswith("/"): + link = link[:-1] + + if link.startswith("http") and 'open.spotify.com/' in link: + if type == "spotifyplaylist": + return link[link.find("/playlist/") + 10:] + if type == "spotifytrack": + return link[link.find("/track/") + 7:] + if type == "spotifyalbum": + return link[link.find("/album/") + 7:] + elif link.startswith("spotify:"): + if type == "spotifyplaylist": + return link[link.find("playlist:") + 9:] + if type == "spotifytrack": + return link[link.find("track:") + 6:] + if type == "spotifyalbum": + return link[link.find("album:") + 6:] + elif type == "artisttop": + return re.search(r"\/artist\/(\d+)\/top_track", link)[1] + elif type == "artistdiscography": + return re.search(r"\/artist\/(\d+)\/discography", link)[1] + else: + return link[link.rfind("/") + 1:] + + +def getTypeFromLink(link): + type = '' + if 'spotify' in link: + type = 'spotify' + if 'playlist' in link: + type += 'playlist' + elif 'track' in link: + type += 'track' + elif 'album' in link: + type += 'album' + elif 'deezer' in link: + if '/track' in link: + type = 'track' + elif '/playlist' in link: + type = 'playlist' + elif '/album' in link: + type = 'album' + elif re.search("\/artist\/(\d+)\/top_track", link): + type = 'artisttop' + elif re.search("\/artist\/(\d+)\/discography", link): + type = 'artistdiscography' + elif '/artist' in link: + type = 'artist' + return type + + +def uniqueArray(arr): + for iPrinc, namePrinc in enumerate(arr): + for iRest, nRest in enumerate(arr): + if iPrinc!=iRest and namePrinc.lower() in nRest.lower(): + del arr[iRest] + return arr diff --git a/deemix/utils/misc.py b/deemix/utils/misc.py deleted file mode 100644 index 2c57a4a..0000000 --- a/deemix/utils/misc.py +++ /dev/null @@ -1,120 +0,0 @@ -#!/usr/bin/env python3 -import re -import string - - -def getBitrateInt(txt): - txt = str(txt).lower() - if txt in ['flac', 'lossless', '9']: - return 9 - elif txt in ['mp3', '320', '3']: - return 3 - elif txt in ['128', '1']: - return 1 - elif txt in ['360', '360_hq', '15']: - return 15 - elif txt in ['360_mq', '14']: - return 14 - elif txt in ['360_lq', '13']: - return 13 - else: - return None - - -def changeCase(str, type): - if type == "lower": - return str.lower() - elif type == "upper": - return str.upper() - elif type == "start": - return string.capwords(str) - elif type == "sentence": - return str.capitalize() - else: - return str - - -def removeFeatures(title): - clean = title - if "(feat." in clean.lower(): - pos = clean.lower().find("(feat.") - tempTrack = clean[:pos] - if ")" in clean: - tempTrack += clean[clean.find(")", pos + 1) + 1:] - clean = tempTrack.strip() - return clean - - -def andCommaConcat(lst): - tot = len(lst) - result = "" - for i, art in enumerate(lst): - result += art - if tot != i + 1: - if tot - 1 == i + 1: - result += " & " - else: - result += ", " - return result - - -def getIDFromLink(link, type): - if '?' in link: - link = link[:link.find('?')] - if link.endswith("/"): - link = link[:-1] - - if link.startswith("http") and 'open.spotify.com/' in link: - if type == "spotifyplaylist": - return link[link.find("/playlist/") + 10:] - if type == "spotifytrack": - return link[link.find("/track/") + 7:] - if type == "spotifyalbum": - return link[link.find("/album/") + 7:] - elif link.startswith("spotify:"): - if type == "spotifyplaylist": - return link[link.find("playlist:") + 9:] - if type == "spotifytrack": - return link[link.find("track:") + 6:] - if type == "spotifyalbum": - return link[link.find("album:") + 6:] - elif type == "artisttop": - return re.search(r"\/artist\/(\d+)\/top_track", link)[1] - elif type == "artistdiscography": - return re.search(r"\/artist\/(\d+)\/discography", link)[1] - else: - return link[link.rfind("/") + 1:] - - -def getTypeFromLink(link): - type = '' - if 'spotify' in link: - type = 'spotify' - if 'playlist' in link: - type += 'playlist' - elif 'track' in link: - type += 'track' - elif 'album' in link: - type += 'album' - elif 'deezer' in link: - if '/track' in link: - type = 'track' - elif '/playlist' in link: - type = 'playlist' - elif '/album' in link: - type = 'album' - elif re.search("\/artist\/(\d+)\/top_track", link): - type = 'artisttop' - elif re.search("\/artist\/(\d+)\/discography", link): - type = 'artistdiscography' - elif '/artist' in link: - type = 'artist' - return type - - -def uniqueArray(arr): - for iPrinc, namePrinc in enumerate(arr): - for iRest, nRest in enumerate(arr): - if iPrinc!=iRest and namePrinc.lower() in nRest.lower(): - del arr[iRest] - return arr