mirror of
https://gitlab.com/RemixDev/deemix-py.git
synced 2025-01-04 06:06:08 +00:00
f530a4e89f
Removed saveDownloadQueue and tagsLanguage from lib settings Revert embedded cover change Fixed bitrate fallback check Use overwriteFile setting when downloading embedded covers Fixed bitrate fallback not working Fixed some issues to make the lib work Implemented spotify plugin back Better handling of albums upcs Fixed queue item not cancelling correctly Code parity with deemix-js Code cleanup with pylint Even more rework on the library More work on the library (WIP) Total rework of the library (WIP) Some rework done on types Added start queue function Made nextitem work on a thread Removed dz as first parameter Started queuemanager refactoring Removed eventlet Co-authored-by: RemixDev <RemixDev64@gmail.com> Reviewed-on: https://git.freezer.life/RemixDev/deemix-py/pulls/4 Co-Authored-By: RemixDev <remixdev@noreply.localhost> Co-Committed-By: RemixDev <remixdev@noreply.localhost>
76 lines
2.1 KiB
Python
76 lines
2.1 KiB
Python
import string
|
|
from deezer import TrackFormats
|
|
import os
|
|
|
|
USER_AGENT_HEADER = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) " \
|
|
"Chrome/79.0.3945.130 Safari/537.36"
|
|
|
|
def canWrite(folder):
|
|
return os.access(folder, os.W_OK)
|
|
|
|
def generateReplayGainString(trackGain):
|
|
return "{0:.2f} dB".format((float(trackGain) + 18.4) * -1)
|
|
|
|
def getBitrateNumberFromText(txt):
|
|
txt = str(txt).lower()
|
|
if txt in ['flac', 'lossless', '9']:
|
|
return TrackFormats.FLAC
|
|
if txt in ['mp3', '320', '3']:
|
|
return TrackFormats.MP3_320
|
|
if txt in ['128', '1']:
|
|
return TrackFormats.MP3_128
|
|
if txt in ['360', '360_hq', '15']:
|
|
return TrackFormats.MP4_RA3
|
|
if txt in ['360_mq', '14']:
|
|
return TrackFormats.MP4_RA2
|
|
if txt in ['360_lq', '13']:
|
|
return TrackFormats.MP4_RA1
|
|
return None
|
|
|
|
def changeCase(txt, case_type):
|
|
if case_type == "lower":
|
|
return txt.lower()
|
|
if case_type == "upper":
|
|
return txt.upper()
|
|
if case_type == "start":
|
|
return string.capwords(txt)
|
|
if case_type == "sentence":
|
|
return txt.capitalize()
|
|
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()
|
|
clean = ' '.join(clean.split())
|
|
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 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
|
|
|
|
def removeDuplicateArtists(artist, artists):
|
|
artists = uniqueArray(artists)
|
|
for role in artist.keys():
|
|
artist[role] = uniqueArray(artist[role])
|
|
return (artist, artists)
|