v1.0.0056 - Related Artist Improvements

#2

1. Sort related artists by highest -> lowest fan count (so with a setting of 1 for the limit, you'll only add the artist with most fans)
2. Limit the number of related artists per artist to be added (minimum 1, maximum 20)
3. Pause script until Lidarr finishes all tasks when adding an artist
4. Disable automatic Missing album Search after adding the additional artist to allow the script to have a chance to process them first
5. Skip adding related artists for unmonitored artists
pull/6/head
RandomNinjaAtk 3 years ago committed by GitHub
parent f6b95eb131
commit b1e0504e3d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,5 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
scriptVersion="1.0.0054" scriptVersion="1.0.0056"
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=""
@ -20,6 +20,8 @@ musicbrainzMirror=https://musicbrainz.org
#configureLidarrWithOptimalSettings=false #configureLidarrWithOptimalSettings=false
#audioFormat=opus #audioFormat=opus
#audioBitrate=160 #audioBitrate=160
#addRelatedArtists=true
#numberOfRelatedArtistsToAddPerArtist=1
echo "-----------------------------------------------------------------" echo "-----------------------------------------------------------------"
echo " |~) _ ._ _| _ ._ _ |\ |o._ o _ |~|_|_|" echo " |~) _ ._ _| _ ._ _ |\ |o._ o _ |~|_|_|"
@ -79,7 +81,7 @@ Configuration () {
if [ "$addRelatedArtists" = "true" ]; then if [ "$addRelatedArtists" = "true" ]; then
log ":: Add Deezer Related Artists is enabled" log ":: Add Deezer Related Artists is enabled"
log ":: Add $numberOfRelatedArtistsToAddPerArtist Deezer related Artist for each Lidarr Artist"
else else
log ":: Add Deezer Related Artists is disabled (enable by setting addRelatedArtists=true)" log ":: Add Deezer Related Artists is disabled (enable by setting addRelatedArtists=true)"
fi fi
@ -212,7 +214,8 @@ AddDeezerArtistToLidarr () {
\"metadataProfileId\": $metadataProfileId, \"metadataProfileId\": $metadataProfileId,
\"monitored\":true, \"monitored\":true,
\"monitor\":\"all\", \"monitor\":\"all\",
\"rootFolderPath\": \"$path\" \"rootFolderPath\": \"$path\",
\"addOptions\":{\"searchForMissingAlbums\":false}
}" }"
if echo "$lidarrArtistIds" | grep "^${musicbrainz_main_artist_id}$" | read; then if echo "$lidarrArtistIds" | grep "^${musicbrainz_main_artist_id}$" | read; then
@ -225,6 +228,7 @@ AddDeezerArtistToLidarr () {
else else
log ":: $currentprocess of $getDeezerArtistsIdsCount :: $deezerArtistName :: Artist not found in Musicbrainz, please add \"https://deezer.com/artist/${deezerArtistId}\" to the correct artist on Musicbrainz" log ":: $currentprocess of $getDeezerArtistsIdsCount :: $deezerArtistName :: Artist not found in Musicbrainz, please add \"https://deezer.com/artist/${deezerArtistId}\" to the correct artist on Musicbrainz"
fi fi
LidarrTaskStatusCheck
done done
} }
@ -1064,11 +1068,12 @@ ProcessWithBeets () {
\"foreignArtistId\": \"$foreignId\", \"foreignArtistId\": \"$foreignId\",
\"qualityProfileId\": $qualityProfileId, \"qualityProfileId\": $qualityProfileId,
\"metadataProfileId\": $metadataProfileId, \"metadataProfileId\": $metadataProfileId,
\"rootFolderPath\": \"$path\" \"rootFolderPath\": \"$path\",
\"addOptions\":{\"searchForMissingAlbums\":false}
}" }"
log ":: $processNumber of $wantedListAlbumTotal :: $lidarrArtistNameSanitized :: $lidarrAlbumTitle :: Adding Missing Artist to Lidarr :: $matchedLidarrAlbumArtistName ($matchedLidarrAlbumArtistId)..." log ":: $processNumber of $wantedListAlbumTotal :: $lidarrArtistNameSanitized :: $lidarrAlbumTitle :: Adding Missing Artist to Lidarr :: $matchedLidarrAlbumArtistName ($matchedLidarrAlbumArtistId)..."
lidarrAddArtist=$(curl -s "$lidarrUrl/api/v1/artist" -X POST -H 'Content-Type: application/json' -H "X-Api-Key: $lidarrApiKey" --data-raw "$data") lidarrAddArtist=$(curl -s "$lidarrUrl/api/v1/artist" -X POST -H 'Content-Type: application/json' -H "X-Api-Key: $lidarrApiKey" --data-raw "$data")
log ":: $processNumber of $wantedListAlbumTotal :: $lidarrArtistNameSanitized :: $lidarrAlbumTitle :: Allowing Lidarr Artist Update, pause for 2 min..." log ":: $processNumber of $wantedListAlbumTotal :: $lidarrArtistNameSanitized :: $lidarrAlbumTitle :: Allowing Lidarr Artist Update..."
LidarrTaskStatusCheck LidarrTaskStatusCheck
fi fi
fi fi
@ -1126,12 +1131,19 @@ AddRelatedArtists () {
lidarrArtistName="$(echo "${lidarrArtistData}" | jq -r " .artistName")" lidarrArtistName="$(echo "${lidarrArtistData}" | jq -r " .artistName")"
deezerArtistUrl=$(echo "${lidarrArtistData}" | jq -r ".links | .[] | select(.name==\"deezer\") | .url") deezerArtistUrl=$(echo "${lidarrArtistData}" | jq -r ".links | .[] | select(.name==\"deezer\") | .url")
deezerArtistIds=($(echo "$deezerArtistUrl" | grep -o '[[:digit:]]*' | sort -u)) deezerArtistIds=($(echo "$deezerArtistUrl" | grep -o '[[:digit:]]*' | sort -u))
lidarrArtistMonitored=$(echo "${lidarrArtistData}" | jq -r ".monitored")
log ":: Adding Related Artists for $lidarrArtistName"
if [ $lidarrArtistMonitored = false ]; then
log ":: Artist is not monitored :: skipping..."
continue
fi
for dId in ${!deezerArtistIds[@]}; do for dId in ${!deezerArtistIds[@]}; do
deezerArtistId="${deezerArtistIds[$dId]}" deezerArtistId="${deezerArtistIds[$dId]}"
deezerRelatedArtistData=$(curl -sL --fail "https://api.deezer.com/artist/$deezerArtistId/related") deezerRelatedArtistData=$(curl -sL --fail "https://api.deezer.com/artist/$deezerArtistId/related?limit=$numberOfRelatedArtistsToAddPerArtist"| jq -r ".data | sort_by(.nb_fan) | reverse | .[]")
getDeezerArtistsIds=($(echo $deezerRelatedArtistData | jq -r .data[].id)) getDeezerArtistsIds=($(echo $deezerRelatedArtistData | jq -r .id))
getDeezerArtistsIdsCount=$(echo $deezerRelatedArtistData | jq -r .data[].id | wc -l) getDeezerArtistsIdsCount=$(echo $deezerRelatedArtistData | jq -r .id | wc -l)
description="$lidarrArtistName Related Artists" description="$lidarrArtistName Related Artists"
AddDeezerArtistToLidarr AddDeezerArtistToLidarr
done done

Loading…
Cancel
Save