Added removeDuplicateArtists option
This commit is contained in:
parent
42e55b3f06
commit
56bd8fac54
|
@ -36,6 +36,7 @@
|
||||||
"jpegImageQuality": 80,
|
"jpegImageQuality": 80,
|
||||||
"dateFormat": "Y-M-D",
|
"dateFormat": "Y-M-D",
|
||||||
"removeAlbumVersion": false,
|
"removeAlbumVersion": false,
|
||||||
|
"removeDuplicateArtists": false,
|
||||||
"featuredToTitle": "0",
|
"featuredToTitle": "0",
|
||||||
"titleCasing": "nothing",
|
"titleCasing": "nothing",
|
||||||
"artistCasing": "nothing",
|
"artistCasing": "nothing",
|
||||||
|
|
|
@ -12,7 +12,7 @@ from requests import get
|
||||||
from requests.exceptions import HTTPError, ConnectionError
|
from requests.exceptions import HTTPError, ConnectionError
|
||||||
|
|
||||||
from deemix.api.deezer import APIError, USER_AGENT_HEADER
|
from deemix.api.deezer import APIError, USER_AGENT_HEADER
|
||||||
from deemix.utils.misc import changeCase
|
from deemix.utils.misc import changeCase, uniqueArray
|
||||||
from deemix.utils.pathtemplates import generateFilename, generateFilepath, settingsRegexAlbum, settingsRegexArtist, settingsRegexPlaylistFile
|
from deemix.utils.pathtemplates import generateFilename, generateFilepath, settingsRegexAlbum, settingsRegexArtist, settingsRegexPlaylistFile
|
||||||
from deemix.utils.taggers import tagID3, tagFLAC
|
from deemix.utils.taggers import tagID3, tagFLAC
|
||||||
import logging
|
import logging
|
||||||
|
@ -168,7 +168,7 @@ def parseEssentialTrackData(track, trackAPI):
|
||||||
return track
|
return track
|
||||||
|
|
||||||
|
|
||||||
def getTrackData(dz, trackAPI_gw, trackAPI=None, albumAPI_gw=None, albumAPI=None):
|
def getTrackData(dz, trackAPI_gw, trackAPI=None, albumAPI_gw=None, albumAPI=None, removeDuplicates=False):
|
||||||
if not 'MD5_ORIGIN' in trackAPI_gw:
|
if not 'MD5_ORIGIN' in trackAPI_gw:
|
||||||
trackAPI_gw['MD5_ORIGIN'] = dz.get_track_md5(trackAPI_gw['SNG_ID'])
|
trackAPI_gw['MD5_ORIGIN'] = dz.get_track_md5(trackAPI_gw['SNG_ID'])
|
||||||
|
|
||||||
|
@ -271,6 +271,10 @@ def getTrackData(dz, trackAPI_gw, trackAPI=None, albumAPI_gw=None, albumAPI=None
|
||||||
if not artist['role'] in track['album']['artist']:
|
if not artist['role'] in track['album']['artist']:
|
||||||
track['album']['artist'][artist['role']] = []
|
track['album']['artist'][artist['role']] = []
|
||||||
track['album']['artist'][artist['role']].append(artist['name'])
|
track['album']['artist'][artist['role']].append(artist['name'])
|
||||||
|
if removeDuplicates:
|
||||||
|
track['album']['artists'] = uniqueArray(track['album']['artists'])
|
||||||
|
for role in track['album']['artist'].keys():
|
||||||
|
track['album']['artist'][role] = uniqueArray(track['album']['artist'][role])
|
||||||
track['album']['trackTotal'] = albumAPI['nb_tracks']
|
track['album']['trackTotal'] = albumAPI['nb_tracks']
|
||||||
track['album']['recordType'] = albumAPI['record_type']
|
track['album']['recordType'] = albumAPI['record_type']
|
||||||
track['album']['barcode'] = albumAPI['upc'] if 'upc' in albumAPI else "Unknown"
|
track['album']['barcode'] = albumAPI['upc'] if 'upc' in albumAPI else "Unknown"
|
||||||
|
@ -342,6 +346,11 @@ def getTrackData(dz, trackAPI_gw, trackAPI=None, albumAPI_gw=None, albumAPI=None
|
||||||
track['artist'][artist['role']] = []
|
track['artist'][artist['role']] = []
|
||||||
track['artist'][artist['role']].append(artist['name'])
|
track['artist'][artist['role']].append(artist['name'])
|
||||||
|
|
||||||
|
if removeDuplicates:
|
||||||
|
track['artists'] = uniqueArray(track['artists'])
|
||||||
|
for role in track['artist'].keys():
|
||||||
|
track['artist'][role] = uniqueArray(track['artist'][role])
|
||||||
|
|
||||||
if not 'discTotal' in track['album'] or not track['album']['discTotal']:
|
if not 'discTotal' in track['album'] or not track['album']['discTotal']:
|
||||||
if not albumAPI_gw:
|
if not albumAPI_gw:
|
||||||
logger.info(f"[{track['mainArtist']['name']} - {track['title']}] Getting more album infos")
|
logger.info(f"[{track['mainArtist']['name']} - {track['title']}] Getting more album infos")
|
||||||
|
@ -441,7 +450,8 @@ def downloadTrackObj(dz, trackAPI, settings, bitrate, queueItem, extraTrack=None
|
||||||
track = getTrackData(dz,
|
track = getTrackData(dz,
|
||||||
trackAPI_gw=trackAPI,
|
trackAPI_gw=trackAPI,
|
||||||
trackAPI=trackAPI['_EXTRA_TRACK'] if '_EXTRA_TRACK' in trackAPI else None,
|
trackAPI=trackAPI['_EXTRA_TRACK'] if '_EXTRA_TRACK' in trackAPI else None,
|
||||||
albumAPI=trackAPI['_EXTRA_ALBUM'] if '_EXTRA_ALBUM' in trackAPI else None
|
albumAPI=trackAPI['_EXTRA_ALBUM'] if '_EXTRA_ALBUM' in trackAPI else None,
|
||||||
|
removeDuplicates=settings['removeDuplicateArtists']
|
||||||
)
|
)
|
||||||
if 'cancel' in queueItem:
|
if 'cancel' in queueItem:
|
||||||
result['cancel'] = True
|
result['cancel'] = True
|
||||||
|
|
|
@ -89,6 +89,14 @@ def getTypeFromLink(link):
|
||||||
return type
|
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
|
||||||
|
|
||||||
|
|
||||||
def isValidLink(text):
|
def isValidLink(text):
|
||||||
if text.lower().startswith("http"):
|
if text.lower().startswith("http"):
|
||||||
if "deezer.com" in text.lower() or "open.spotify.com" in text.lower():
|
if "deezer.com" in text.lower() or "open.spotify.com" in text.lower():
|
||||||
|
|
Loading…
Reference in New Issue