@ -1,5 +1,5 @@
#!/usr/bin/env bash
#!/usr/bin/env bash
scriptVersion = "1.0.15 0 "
scriptVersion = "1.0.15 1 "
lidarrUrlBase = " $( cat /config/config.xml | xq | jq -r .Config.UrlBase) "
lidarrUrlBase = " $( cat /config/config.xml | xq | jq -r .Config.UrlBase) "
if [ " $lidarrUrlBase " = "null" ] ; then
if [ " $lidarrUrlBase " = "null" ] ; then
lidarrUrlBase = ""
lidarrUrlBase = ""
@ -226,7 +226,7 @@ AddDeezerArtistToLidarr () {
lidarrArtistsData = " $( curl -s " $lidarrUrl /api/v1/artist?apikey= ${ lidarrApiKey } " ) "
lidarrArtistsData = " $( curl -s " $lidarrUrl /api/v1/artist?apikey= ${ lidarrApiKey } " ) "
lidarrArtistIds = " $( echo " ${ lidarrArtistsData } " | jq -r ".[].foreignArtistId" ) "
lidarrArtistIds = " $( echo " ${ lidarrArtistsData } " | jq -r ".[].foreignArtistId" ) "
deezerArtistsUrl = $( echo " ${ lidarrArtistsData } " | jq -r ".[].links | .[] | select(.name==\"deezer\") | .url" )
deezerArtistsUrl = $( echo " ${ lidarrArtistsData } " | jq -r ".[].links | .[] | select(.name==\"deezer\") | .url" )
deeze ArtistIds= " $( echo " $deezerArtistsUrl " | grep -o '[[:digit:]]*' | sort -u) "
deeze r ArtistIds= " $( echo " $deezerArtistsUrl " | grep -o '[[:digit:]]*' | sort -u) "
log " :: Finding $description ... "
log " :: Finding $description ... "
log " :: $getDeezerArtistsIdsCount $description Found... "
log " :: $getDeezerArtistsIdsCount $description Found... "
for id in ${ !getDeezerArtistsIds[@] } ; do
for id in ${ !getDeezerArtistsIds[@] } ; do
@ -236,7 +236,7 @@ AddDeezerArtistToLidarr () {
sleep $sleepTimer
sleep $sleepTimer
log " :: $currentprocess of $getDeezerArtistsIdsCount :: $deezerArtistName :: Searching Musicbrainz for Deezer artist id ( $deezerArtistId ) "
log " :: $currentprocess of $getDeezerArtistsIdsCount :: $deezerArtistName :: Searching Musicbrainz for Deezer artist id ( $deezerArtistId ) "
if echo " $deeze ArtistIds" | grep " ^ ${ deezerArtistId } $" | read; then
if echo " $deeze r ArtistIds" | grep " ^ ${ deezerArtistId } $" | read; then
log " :: $currentprocess of $getDeezerArtistsIdsCount :: $deezerArtistName :: $deezerArtistId already in Lidarr... "
log " :: $currentprocess of $getDeezerArtistsIdsCount :: $deezerArtistName :: $deezerArtistId already in Lidarr... "
continue
continue
fi
fi
@ -1112,22 +1112,23 @@ SearchProcess () {
continue
continue
fi
fi
if [ " $dlClientSource " = "deezer" ] ; then
if [ " $dlClientSource " = "deezer" ] ; then
skipTidal = true
skipTidal = true
skipDeezer = false
skipDeezer = false
fi
fi
if [ " $dlClientSource " = "tidal" ] ; then
if [ " $dlClientSource " = "tidal" ] ; then
skipDeezer = true
skipDeezer = true
skipTidal = false
skipTidal = false
fi
fi
if [ " $dlClientSource " = "both" ] ; then
if [ " $dlClientSource " = "both" ] ; then
skipDeezer = false
skipDeezer = false
skipTidal = false
skipTidal = false
fi
fi
# Search Musicbrainz for Tidal Album ID
# Search Musicbrainz for Tidal Album ID
if [ $audioLyricType = both ] ; then
if [ $audioLyricType = both ] ; then
if [ " $skipTidal " = "false" ] ; then
if [ " $skipTidal " = "false" ] ; then
# Verify it's not already imported into Lidarr
# Verify it's not already imported into Lidarr
@ -1218,7 +1219,7 @@ SearchProcess () {
# Search for explicit matches
# Search for explicit matches
if [ $audioLyricType = both ] || [ $audioLyricType = clean ] ; then
if [ $audioLyricType = both ] || [ $audioLyricType = clean ] ; then
if [ " $ skipTidal" = "false " ] ; then
if [ " $ dlClientSource" = "both" ] || [ " $dlClientSource " = "tidal " ] ; then
FuzzyTidalSearch " $processNumber of $wantedListAlbumTotal " " $wantedAlbumId " "false"
FuzzyTidalSearch " $processNumber of $wantedListAlbumTotal " " $wantedAlbumId " "false"
fi
fi
fi
fi
@ -1233,7 +1234,7 @@ SearchProcess () {
# Search for clean matches
# Search for clean matches
if [ $audioLyricType = both ] || [ $audioLyricType = clean ] ; then
if [ $audioLyricType = both ] || [ $audioLyricType = clean ] ; then
if [ " $ skipTidal" = "false " ] ; then
if [ " $ dlClientSource" = "both" ] || [ " $dlClientSource " = "tidal " ] ; then
FuzzyTidalSearch " $processNumber of $wantedListAlbumTotal " " $wantedAlbumId " "false"
FuzzyTidalSearch " $processNumber of $wantedListAlbumTotal " " $wantedAlbumId " "false"
fi
fi
fi
fi
@ -1247,29 +1248,12 @@ SearchProcess () {
fi
fi
if [ $audioLyricType = both ] ; then
if [ $audioLyricType = both ] ; then
if [ " $skipDeezer " = "false" ] ; then
if [ " $dlClientSource " = "both" ] || [ " $dlClientSource " = "deezer" ] ; then
# Verify it's not already imported into Lidarr
LidarrTaskStatusCheck
CheckLidarrBeforeImport " $lidarrAlbumForeignAlbumId " "notbeets"
if [ $alreadyImported = true ] ; then
log " :: $processNumber of $wantedListAlbumTotal :: $lidarrArtistNameSanitized :: $lidarrAlbumTitle :: Already Imported, skipping... "
continue
fi
FuzzyDeezerSearch " $processNumber of $wantedListAlbumTotal " " $wantedAlbumId "
FuzzyDeezerSearch " $processNumber of $wantedListAlbumTotal " " $wantedAlbumId "
log " :: $processNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: ERROR :: Various Artists is not supported by normal search, skipping... "
continue
else
log " :: $processNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: ERROR :: Various Artists is not supported by normal search, skipping... "
continue
fi
fi
else
log " :: $processNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: ERROR :: Various Artists is not supported by normal search, skipping... "
continue
fi
fi
log " :: $processNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: ERROR :: Various Artists is not supported by normal search, skipping... "
continue
fi
fi
if [ " $skipDeezer " = "false" ] ; then
if [ " $skipDeezer " = "false" ] ; then
@ -1293,6 +1277,7 @@ SearchProcess () {
fi
fi
skipDeezer = true
skipDeezer = true
fi
fi
deezerArtistIds = ( $( echo " $deezerArtistUrl " | grep -o '[[:digit:]]*' | sort -u) )
fi
fi
@ -1323,12 +1308,10 @@ SearchProcess () {
# Search for explicit matches
# Search for explicit matches
if [ $audioLyricType = both ] || [ $audioLyricType = explicit ] ; then
if [ $audioLyricType = both ] || [ $audioLyricType = explicit ] ; then
# Tidal search
# Tidal search
if [ " $skipTidal " = "false" ] ; then
if [ " $dlClientSource " = "both" ] || [ " $dlClientSource " = "tidal" ] ; then
for tidalArtistId in $( echo $tidalArtistIds ) ; do
FuzzyTidalSearch " $processNumber of $wantedListAlbumTotal " " $wantedAlbumId " "true"
ArtistTidalSearch " $processNumber of $wantedListAlbumTotal " " $wantedAlbumId " " $tidalArtistId " "true"
done
fi
fi
LidarrTaskStatusCheck
LidarrTaskStatusCheck
CheckLidarrBeforeImport " $lidarrAlbumForeignAlbumId " "notbeets"
CheckLidarrBeforeImport " $lidarrAlbumForeignAlbumId " "notbeets"
if [ $alreadyImported = true ] ; then
if [ $alreadyImported = true ] ; then
@ -1337,7 +1320,9 @@ SearchProcess () {
fi
fi
if [ " $skipTidal " = "false" ] ; then
if [ " $skipTidal " = "false" ] ; then
FuzzyTidalSearch " $processNumber of $wantedListAlbumTotal " " $wantedAlbumId " "true"
for tidalArtistId in $( echo $tidalArtistIds ) ; do
ArtistTidalSearch " $processNumber of $wantedListAlbumTotal " " $wantedAlbumId " " $tidalArtistId " "true"
done
fi
fi
LidarrTaskStatusCheck
LidarrTaskStatusCheck
@ -1349,9 +1334,9 @@ SearchProcess () {
# Deezer search
# Deezer search
if [ " $skipDeezer " = "false" ] ; then
if [ " $skipDeezer " = "false" ] ; then
for dId in ${ !deeze ArtistIds[@]} ; do
for dId in ${ !deeze r ArtistIds[@]} ; do
deeze ArtistId= " ${ deeze ArtistIds[ $dId ] } "
deeze r ArtistId= " ${ deeze r ArtistIds[ $dId ] } "
ArtistDeezerSearch " $processNumber of $wantedListAlbumTotal " " $wantedAlbumId " " $deeze ArtistId" "true"
ArtistDeezerSearch " $processNumber of $wantedListAlbumTotal " " $wantedAlbumId " " $deeze r ArtistId" "true"
done
done
fi
fi
@ -1368,10 +1353,7 @@ SearchProcess () {
if [ $audioLyricType = both ] || [ $audioLyricType = clean ] ; then
if [ $audioLyricType = both ] || [ $audioLyricType = clean ] ; then
# Tidal search
# Tidal search
if [ " $skipTidal " = "false" ] ; then
if [ " $skipTidal " = "false" ] ; then
FuzzyTidalSearch " $processNumber of $wantedListAlbumTotal " " $wantedAlbumId " "false"
for tidalArtistId in $( echo $tidalArtistIds ) ; do
ArtistTidalSearch " $processNumber of $wantedListAlbumTotal " " $wantedAlbumId " " $tidalArtistId " "false"
done
fi
fi
LidarrTaskStatusCheck
LidarrTaskStatusCheck
@ -1382,7 +1364,9 @@ SearchProcess () {
fi
fi
if [ " $skipTidal " = "false" ] ; then
if [ " $skipTidal " = "false" ] ; then
FuzzyTidalSearch " $processNumber of $wantedListAlbumTotal " " $wantedAlbumId " "false"
for tidalArtistId in $( echo $tidalArtistIds ) ; do
ArtistTidalSearch " $processNumber of $wantedListAlbumTotal " " $wantedAlbumId " " $tidalArtistId " "false"
done
fi
fi
LidarrTaskStatusCheck
LidarrTaskStatusCheck
@ -1394,9 +1378,9 @@ SearchProcess () {
# Deezer search
# Deezer search
if [ " $skipDeezer " = "false" ] ; then
if [ " $skipDeezer " = "false" ] ; then
for dId in ${ !deeze ArtistIds[@]} ; do
for dId in ${ !deeze r ArtistIds[@]} ; do
deeze ArtistId= " ${ deeze ArtistIds[ $dId ] } "
deeze r ArtistId= " ${ deeze r ArtistIds[ $dId ] } "
ArtistDeezerSearch " $processNumber of $wantedListAlbumTotal " " $wantedAlbumId " " $deeze ArtistId" "false"
ArtistDeezerSearch " $processNumber of $wantedListAlbumTotal " " $wantedAlbumId " " $deeze r ArtistId" "false"
done
done
fi
fi
fi
fi
@ -1410,14 +1394,7 @@ SearchProcess () {
# Fallback/last resort Fuzzy Search
# Fallback/last resort Fuzzy Search
if [ $audioLyricType = both ] ; then
if [ $audioLyricType = both ] ; then
if [ " $skipDeezer " = "false" ] ; then
if [ " $dlClientSource " = "both" ] || [ " $dlClientSource " = "deezer" ] ; then
# Verify it's not already imported into Lidarr
LidarrTaskStatusCheck
CheckLidarrBeforeImport " $lidarrAlbumForeignAlbumId " "notbeets"
if [ $alreadyImported = true ] ; then
log " :: $processNumber of $wantedListAlbumTotal :: $lidarrArtistNameSanitized :: $lidarrAlbumTitle :: Already Imported, skipping... "
continue
fi
FuzzyDeezerSearch " $processNumber of $wantedListAlbumTotal " " $wantedAlbumId "
FuzzyDeezerSearch " $processNumber of $wantedListAlbumTotal " " $wantedAlbumId "
fi
fi
fi
fi
@ -1459,7 +1436,7 @@ ArtistDeezerSearch () {
if [ ! -f " /config/extended/cache/deezer/ $3 -albums.json " ] ; then
if [ ! -f " /config/extended/cache/deezer/ $3 -albums.json " ] ; then
DArtistAlbumList " $3 "
DArtistAlbumList " $3 "
fi
fi
if [ ! -f " /config/extended/cache/deezer/ $3 -albums.json " ] ; then
if [ ! -f " /config/extended/cache/deezer/ $3 -albums.json " ] ; then
return
return
fi
fi
@ -1562,7 +1539,12 @@ FuzzyDeezerSearch () {
fi
fi
if [ ! -z " $deezerSearch " ] ; then
if [ ! -z " $deezerSearch " ] ; then
for deezerAlbumID in $( echo " $deezerSearch " | jq -r .album.id | sort -u) ; do
for deezerAlbumID in $( echo " $deezerSearch " | jq -r .album.id | sort -u) ; do
deezerAlbumData = " $( echo " $deezerSearch " | jq -r " .album | select(.id== $deezerAlbumID ) " ) "
if [ -f " /config/extended/cache/deezer/ ${ msuicbrainzDeezerDownloadAlbumID } .json " ] ; then
deezerArtistAlbumData = " $( cat " /config/extended/cache/deezer/ $deezerAlbumID .json " ) "
else
deezerArtistAlbumData = " $( curl -s " https://api.deezer.com/album/ $deezerAlbumID " ) "
fi
deezerAlbumTrackCount = " $( echo $deezerArtistAlbumData | jq -r .nb_tracks) "
deezerAlbumTitle = $( echo " $deezerAlbumData " | jq -r .title | head -n1)
deezerAlbumTitle = $( echo " $deezerAlbumData " | jq -r .title | head -n1)
lidarrAlbumReleaseTitleClean = $( echo " $lidarrAlbumReleaseTitle " | sed -e "s%[^[:alpha:][:digit:]]%%g" -e "s/ */ /g" | sed 's/^[.]*//' | sed 's/[.]*$//g' | sed 's/^ *//g' | sed 's/ *$//g' )
lidarrAlbumReleaseTitleClean = $( echo " $lidarrAlbumReleaseTitle " | sed -e "s%[^[:alpha:][:digit:]]%%g" -e "s/ */ /g" | sed 's/^[.]*//' | sed 's/[.]*$//g' | sed 's/^ *//g' | sed 's/ *$//g' )
deezerAlbumTitleClean = $( echo ${ deezerAlbumTitle } | sed -e "s%[^[:alpha:][:digit:]]%%g" -e "s/ */ /g" | sed 's/^[.]*//' | sed 's/[.]*$//g' | sed 's/^ *//g' | sed 's/ *$//g' )
deezerAlbumTitleClean = $( echo ${ deezerAlbumTitle } | sed -e "s%[^[:alpha:][:digit:]]%%g" -e "s/ */ /g" | sed 's/^[.]*//' | sed 's/[.]*$//g' | sed 's/^ *//g' | sed 's/ *$//g' )
@ -1575,7 +1557,7 @@ FuzzyDeezerSearch () {
DownloadProcess " $deezerAlbumID " "DEEZER" " $lidarrAlbumReleaseYear " " $lidarrAlbumReleaseTitle "
DownloadProcess " $deezerAlbumID " "DEEZER" " $lidarrAlbumReleaseYear " " $lidarrAlbumReleaseTitle "
# Verify it was successfully imported into Lidarr
# Verify it was successfully imported into Lidarr
LidarrTaskStatusCheck
LidarrTaskStatusCheck
CheckLidarrBeforeImport " $lidarrAlbumForeignAlbumId " "notbeets" " $ lidarrAlbumRelease TrackCount"
CheckLidarrBeforeImport " $lidarrAlbumForeignAlbumId " "notbeets" " $ deezerAlbum TrackCount"
if [ $alreadyImported = true ] ; then
if [ $alreadyImported = true ] ; then
break 2
break 2
fi
fi
@ -1934,7 +1916,7 @@ AddRelatedArtists () {
lidarrArtistLinkDeezerIds = " $( echo " ${ lidarrArtistsData } " | jq -r ".[] | .links[] | select(.name==\"deezer\") | .url" | grep -o '[[:digit:]]*' ) "
lidarrArtistLinkDeezerIds = " $( echo " ${ lidarrArtistsData } " | jq -r ".[] | .links[] | select(.name==\"deezer\") | .url" | grep -o '[[:digit:]]*' ) "
log " :: $lidarrArtistTotal Artists Found "
log " :: $lidarrArtistTotal Artists Found "
deezerArtistsUrl = $( echo " ${ lidarrArtistsData } " | jq -r ".[].links | .[] | select(.name==\"deezer\") | .url" )
deezerArtistsUrl = $( echo " ${ lidarrArtistsData } " | jq -r ".[].links | .[] | select(.name==\"deezer\") | .url" )
deeze ArtistIds= " $( echo " $deezerArtistsUrl " | grep -o '[[:digit:]]*' | sort -u) "
deeze r ArtistIds= " $( echo " $deezerArtistsUrl " | grep -o '[[:digit:]]*' | sort -u) "
for id in ${ !lidarrArtistList[@] } ; do
for id in ${ !lidarrArtistList[@] } ; do
artistNumber = $(( $id + 1 ))
artistNumber = $(( $id + 1 ))