@ -1,5 +1,5 @@
#!/usr/bin/env bash
scriptVersion = "1.0.29 1 "
scriptVersion = "1.0.29 2 "
if [ -z " $lidarrUrl " ] || [ -z " $lidarrApiKey " ] ; then
lidarrUrlBase = " $( cat /config/config.xml | xq | jq -r .Config.UrlBase) "
if [ " $lidarrUrlBase " = = "null" ] ; then
@ -82,17 +82,13 @@ log "3"; sleep 1
log "2" ; sleep 1
log "1" ; sleep 1
if [ ! -d /config/xdg ] ; then
mkdir -p /config/xdg
fi
Configuration ( ) {
processstartid = " $( ps -A -o pid,cmd| grep "start_audio.sh" | grep -v grep | head -n 1 | awk '{print $1}' ) "
processdownloadid = " $( ps -A -o pid,cmd| grep "audio.sh" | grep -v grep | head -n 1 | awk '{print $1}' ) "
processdownloadid = " $( ps -A -o pid,cmd| grep "Audio.sh" | grep -v grep | head -n 1 | awk '{print $1}' ) "
log "To kill script, use the following command:"
log " kill -9 $processstartid "
log " kill -9 $processdownloadid "
sleep 2
@ -524,18 +520,18 @@ DownloadProcess () {
downloadedAlbumTitleClean = " $( echo " $4 " | sed -e "s%[^[:alpha:][:digit:]._' ]% %g" -e "s/ */ /g" | sed 's/^[.]*//' | sed 's/[.]*$//g' | sed 's/^ *//g' | sed 's/ *$//g' ) "
if find " $downloadPath " /complete -type d -iname " $lidarrArtistNameSanitized - $downloadedAlbumTitleClean ( $3 )-*- $1 - $2 " | read; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: ERROR :: Previously Downloaded... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: ERROR :: Previously Downloaded... "
return
fi
# check for log file
if [ " $2 " = = "DEEZER" ] ; then
if [ -f /config/extended/logs/downloaded/deezer/$1 ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: ERROR :: Previously Downloaded ( $1 )... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: ERROR :: Previously Downloaded ( $1 )... "
return
fi
if [ -f /config/extended/logs/downloaded/failed/deezer/$1 ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: ERROR :: Previously Attempted Download ( $1 )... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: ERROR :: Previously Attempted Download ( $1 )... "
return
fi
fi
@ -543,11 +539,11 @@ DownloadProcess () {
# check for log file
if [ " $2 " = = "TIDAL" ] ; then
if [ -f /config/extended/logs/downloaded/tidal/$1 ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: ERROR :: Previously Downloaded ( $1 )... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: ERROR :: Previously Downloaded ( $1 )... "
return
fi
if [ -f /config/extended/logs/downloaded/failed/tidal/$1 ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: ERROR :: Previously Attempted Download ( $1 )... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: ERROR :: Previously Attempted Download ( $1 )... "
return
fi
fi
@ -565,7 +561,7 @@ DownloadProcess () {
touch /temp-download
sleep 0.1
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Download Attempt number $downloadTry "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Download Attempt number $downloadTry "
if [ " $2 " = = "DEEZER" ] ; then
if [ " $downloadTry " = = "1" ] ; then
DeezerClientTest
@ -588,19 +584,19 @@ DownloadProcess () {
find " $downloadPath /incomplete " -type f -iname "*.flac" -newer "/temp-download" -print0 | while IFS = read -r -d '' file; do
audioFlacVerification " $file "
if [ " $verifiedFlacFile " = = "0" ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Flac Verification :: $file :: Verified "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Flac Verification :: $file :: Verified "
else
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Flac Verification :: $file :: ERROR :: Failed Verification "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Flac Verification :: $file :: ERROR :: Failed Verification "
rm " $file "
fi
done
downloadCount = $( find " $downloadPath " /incomplete/ -type f -regex ".*/.*\.\(flac\|m4a\|mp3\)" | wc -l)
if [ " $downloadCount " -ne " $5 " ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: ERROR :: download failed, missing tracks... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: ERROR :: download failed, missing tracks... "
completedVerification = "false"
else
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Success "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Success "
completedVerification = "true"
fi
@ -612,14 +608,14 @@ DownloadProcess () {
fi
break
else
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Retry Download in 1 second fix errors... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Retry Download in 1 second fix errors... "
sleep 1
fi
done
# Consolidate files to a single folder
if [ " $2 " = = "TIDAL" ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Consolidating files to single folder "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Consolidating files to single folder "
find " $downloadPath /incomplete " -type f -exec mv "{}" " $downloadPath " /incomplete/ \;
if [ -d " $downloadPath " /incomplete/atd ] ; then
rm -rf " $downloadPath " /incomplete/atd
@ -634,8 +630,8 @@ DownloadProcess () {
downloadCount = $( find " $downloadPath " /incomplete/ -type f -regex ".*/.*\.\(flac\|m4a\|mp3\)" | wc -l)
if [ " $downloadCount " -ne " $5 " ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: ERROR :: All download Attempts failed... "
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Logging $1 as failed download... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: ERROR :: All download Attempts failed... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Logging $1 as failed download... "
if [ " $2 " = = "DEEZER" ] ; then
@ -648,7 +644,7 @@ DownloadProcess () {
fi
# Log Completed Download
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Logging $1 as successfully downloaded... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Logging $1 as successfully downloaded... "
if [ " $2 " = = "DEEZER" ] ; then
touch /config/extended/logs/downloaded/deezer/$1
fi
@ -658,7 +654,7 @@ DownloadProcess () {
# Correct Artist/albumartist Flac files
find " $downloadPath /incomplete " -type f -iname "*.flac" -print0 | while IFS = read -r -d '' file; do
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Setting ARTIST/ALBUMARTIST tag to \" $lidarrArtistName \" :: $file "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Setting ARTIST/ALBUMARTIST tag to \" $lidarrArtistName \" :: $file "
metaflac --remove-tag= ALBUMARTIST " $file "
metaflac --remove-tag= ARTIST " $file "
metaflac --set-tag= ALBUMARTIST = " $lidarrArtistName " " $file "
@ -670,7 +666,7 @@ DownloadProcess () {
if [ -f /config/extended/beets-error ] ; then
rm /config/extended/beets-error
fi
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Processing files with beets... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Processing files with beets... "
ProcessWithBeets " $downloadPath /incomplete "
if [ -f /config/extended/beets-error ] ; then
@ -682,7 +678,7 @@ DownloadProcess () {
find " $downloadPath /incomplete " -type f -iname "*.flac" -print0 | while IFS = read -r -d '' file; do
lrcFile = " ${ file %.* } .lrc "
if [ -f " $lrcFile " ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Embedding lyrics (lrc) into $file "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Embedding lyrics (lrc) into $file "
metaflac --remove-tag= Lyrics " $file "
metaflac --set-tag-from-file= " Lyrics= $lrcFile " " $file "
rm " $lrcFile "
@ -690,7 +686,7 @@ DownloadProcess () {
done
if [ " $audioFormat " != "native" ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Converting Flac Audio to ${ audioFormat ^^ } ( $audioBitrateText ) "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Converting Flac Audio to ${ audioFormat ^^ } ( $audioBitrateText ) "
if [ " $audioFormat " = = "opus" ] ; then
options = " -c:a libopus -b:a ${ audioBitrate } k -application audio -vbr off "
extension = "opus"
@ -718,20 +714,20 @@ DownloadProcess () {
filenamenoext = " ${ filename %.* } "
if [ " $audioFormat " = = "opus" ] ; then
if opusenc --bitrate ${ audioBitrate } --vbr --music " $file " " $foldername / ${ filenamenoext } . $extension " ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: $filename :: Conversion to $audioFormat ( $audioBitrateText ) successful "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: $filename :: Conversion to $audioFormat ( $audioBitrateText ) successful "
rm " $file "
else
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: $filename :: ERROR :: Conversion Failed "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: $filename :: ERROR :: Conversion Failed "
rm " $foldername / ${ filenamenoext } . $extension "
fi
continue
fi
if ffmpeg -loglevel warning -hide_banner -nostats -i " $file " -n -vn $options " $foldername / ${ filenamenoext } . $extension " < /dev/null; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: $filename :: Conversion to $audioFormat ( $audioBitrateText ) successful "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: $filename :: Conversion to $audioFormat ( $audioBitrateText ) successful "
rm " $file "
else
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: $filename :: ERROR :: Conversion Failed "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: $filename :: ERROR :: Conversion Failed "
rm " $foldername / ${ filenamenoext } . $extension "
fi
done
@ -741,7 +737,7 @@ DownloadProcess () {
if [ " $enableReplaygainTags " = = "true" ] ; then
AddReplaygainTags " $downloadPath /incomplete "
else
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Replaygain Tagging Disabled (set enableReplaygainTags=true to enable...) "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Replaygain Tagging Disabled (set enableReplaygainTags=true to enable...) "
fi
albumquality = " $( find " $downloadPath " /incomplete/ -type f -regex ".*/.*\.\(flac\|opus\|m4a\|mp3\)" | head -n 1 | egrep -i -E -o " \.{1}\w* $" | sed 's/\.//g' ) "
@ -770,7 +766,7 @@ DownloadProcess () {
LidarrTaskStatusCheck
CheckLidarrBeforeImport " $checkLidarrAlbumId "
if [ " $alreadyImported " = = "true" ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
rm -rf " $downloadPath " /incomplete/*
fi
fi
@ -781,7 +777,7 @@ DownloadProcess () {
LidarrTaskStatusCheck
CheckLidarrBeforeImport " $checkLidarrAlbumId "
if [ " $alreadyImported " = = "true" ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
rm -rf " $downloadPath " /incomplete/*
fi
fi
@ -792,7 +788,7 @@ DownloadProcess () {
LidarrTaskStatusCheck
CheckLidarrBeforeImport " $checkLidarrAlbumId "
if [ " $alreadyImported " = = "true" ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
rm -rf " $downloadPath " /incomplete/*
fi
fi
@ -824,7 +820,7 @@ ProcessWithBeets () {
beet -c /config/extended/scripts/beets-config.yaml -l /config/extended/beets-library.blb -d " $1 " import -qC " $1 "
if [ $( find " $1 " -type f -regex ".*/.*\.\(flac\|opus\|m4a\|mp3\)" -newer "/config/beets-match" | wc -l) -gt 0 ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: SUCCESS: Matched with beets! "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: SUCCESS: Matched with beets! "
find " $downloadPath /incomplete " -type f -iname "*.flac" -print0 | while IFS = read -r -d '' file; do
getArtistCredit = " $( ffprobe -loglevel 0 -print_format json -show_format -show_streams " $file " | jq -r ".format.tags.ARTIST_CREDIT" | sed "s/null//g" | sed " /^ $/d " ) "
metaflac --remove-tag= ALBUMARTIST " $file "
@ -838,7 +834,7 @@ ProcessWithBeets () {
metaflac --set-tag= ALBUMARTIST = " $lidarrArtistName " " $file "
done
else
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: ERROR :: Unable to match using beets to a musicbrainz release... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: ERROR :: Unable to match using beets to a musicbrainz release... "
return
fi
@ -871,7 +867,7 @@ ProcessWithBeets () {
fi
if [ ! -f " /config/extended/logs/downloaded/musicbrainz_matched/ $matchedTagsAlbumReleaseGroupId " ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Marking MusicBrainz Release Group ( $matchedTagsAlbumReleaseGroupId ) as succesfully downloaded... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Marking MusicBrainz Release Group ( $matchedTagsAlbumReleaseGroupId ) as succesfully downloaded... "
touch " /config/extended/logs/downloaded/musicbrainz_matched/ $matchedTagsAlbumReleaseGroupId "
fi
@ -887,12 +883,12 @@ ProcessWithBeets () {
if [ ${ checkLidarrAlbumPercentOfTracks %%.* } -ge 100 ] ; then
if [ " $wantedAlbumListSource " = = "missing" ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: ERROR :: Already Imported Album (Missing) "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: ERROR :: Already Imported Album (Missing) "
rm -rf " $downloadPath /incomplete " /*
touch /config/extended/beets-error
return
else
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Importing Album (Cutoff) "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Importing Album (Cutoff) "
return
fi
fi
@ -903,66 +899,66 @@ ProcessWithBeets () {
DownloadQualityCheck ( ) {
if [ " $requireQuality " = = "true" ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Checking for unwanted files "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Checking for unwanted files "
if [ " $audioFormat " != "native" ] ; then
if find " $1 " -type f -regex ".*/.*\.\(opus\|m4a\|mp3\)" | read; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Unwanted files found! "
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Performing cleanup... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Unwanted files found! "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Performing cleanup... "
rm " $1 " /*
else
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: No unwanted files found! "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: No unwanted files found! "
fi
fi
if [ " $audioFormat " = = "native" ] ; then
if [ " $audioBitrate " = = "lossless" ] ; then
if find " $1 " -type f -regex ".*/.*\.\(opus\|m4a\|mp3\)" | read; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Unwanted files found! "
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Performing cleanup... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Unwanted files found! "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Performing cleanup... "
rm " $1 " /*
else
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: No unwanted files found! "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: No unwanted files found! "
fi
elif [ " $2 " = = "DEEZER" ] ; then
if find " $1 " -type f -regex ".*/.*\.\(opus\|m4a\|flac\)" | read; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Unwanted files found! "
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Performing cleanup... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Unwanted files found! "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Performing cleanup... "
rm " $1 " /*
else
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: No unwanted files found! "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: No unwanted files found! "
fi
elif [ " $2 " = = "TIDAL" ] ; then
if find " $1 " -type f -regex ".*/.*\.\(opus\|flac\|mp3\)" | read; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Unwanted files found! "
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Performing cleanup... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Unwanted files found! "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Performing cleanup... "
rm " $1 " /*
else
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: No unwanted files found! "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: No unwanted files found! "
fi
fi
fi
else
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Skipping download quality check... (enable by setting: requireQuality=true) "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Skipping download quality check... (enable by setting: requireQuality=true) "
fi
}
AddReplaygainTags ( ) {
# Input Data
# $1 Folder path to scan and add tags
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Adding Replaygain Tags using r128gain "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Adding Replaygain Tags using r128gain "
r128gain -r -c 1 -a " $1 " & >/dev/null
}
NotifyLidarrForImport ( ) {
LidarrProcessIt = $( curl -s " $lidarrUrl /api/v1/command " --header "X-Api-Key:" ${ lidarrApiKey } -H "Content-Type: application/json" --data " {\"name\":\"DownloadedAlbumsScan\", \"path\":\" $1 \"} " )
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: LIDARR IMPORT NOTIFICATION SENT! :: $1 "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: LIDARR IMPORT NOTIFICATION SENT! :: $1 "
}
NotifyPlexToScan ( ) {
LidarrTaskStatusCheck
CheckLidarrBeforeImport " $checkLidarrAlbumId "
if [ " $alreadyImported " = = "true" ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Notifying Plex to Scan :: $lidarrArtistPath "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Notifying Plex to Scan :: $lidarrArtistPath "
bash /config/extended/scripts/PlexNotify.bash " $lidarrArtistPath "
fi
}
@ -1077,11 +1073,11 @@ GetMissingCutOffList () {
log " FINDING MISSING ALBUMS :: sorted by $searchSort "
amountPerPull = "1000"
amountPerPull = 1000
page = 0
log " $lidarrMissingTotalRecords Missing Albums Found! "
log "Getting Missing Album IDs"
if [ " $lidarrMissingTotalRecords " -ge "1" ] ; then
if [ $lidarrMissingTotalRecords -ge 1 ] ; then
offsetcount = $(( $lidarrMissingTotalRecords / $amountPerPull ))
for ( ( i = 0; i<= $offsetcount ; i++) ) ; do
page = $(( $i + 1 ))
@ -1090,9 +1086,9 @@ GetMissingCutOffList () {
if [ " $dlnumber " -gt " $lidarrMissingTotalRecords " ] ; then
dlnumber = " $lidarrMissingTotalRecords "
fi
log " Downloading page $page ... ( $offset - $dlnumber of $lidarrMissingTotalRecords Results) "
log " $page :: missing :: Downloading page $page ... ( $offset - $dlnumber of $lidarrMissingTotalRecords Results) "
lidarrRecords = $( wget --timeout= 0 -q -O - " $lidarrUrl /api/v1/wanted/missing?page= $page &pagesize= $amountPerPull &sortKey= $searchOrder &sortDirection= $searchDirection &apikey= ${ lidarrApiKey } " | jq -r '.records[].id' )
log " Filtering Miss ing Album IDs by removing previously searched Album IDs (/config/extended/notfound/<files>)"
log " $page :: missing :: Filter ing Album IDs by removing previously searched Album IDs (/config/extended/notfound/<files>) "
for lidarrRecordId in $( echo $lidarrRecords ) ; do
if [ ! -f /config/extended/logs/notfound/$lidarrRecordId --* ] ; then
touch " /config/extended/cache/lidarr/list/ ${ lidarrRecordId } -missing "
@ -1100,11 +1096,11 @@ GetMissingCutOffList () {
done
lidarrMissingRecords = $( ls /config/extended/cache/lidarr/list | wc -l )
log " ${ lidarrMissingRecords } missing albums found to process!"
log " $page :: missing :: ${ lidarrMissingRecords } albums found to process!"
wantedListAlbumTotal = $lidarrMissingRecords
if [ ${ lidarrMissingRecords } -gt 0 ] ; then
log " Searching for $wantedListAlbumTotal items "
log " $page :: missing :: Searching for $wantedListAlbumTotal items "
SearchProcess
rm /config/extended/cache/lidarr/list/*-missing
fi
@ -1115,10 +1111,10 @@ GetMissingCutOffList () {
# Get cutoff album list
lidarrCutoffTotalRecords = $( wget --timeout= 0 -q -O - " $lidarrUrl /api/v1/wanted/cutoff?page=1&pagesize=1&sortKey= $searchOrder &sortDirection= $searchDirection &apikey= ${ lidarrApiKey } " | jq -r .totalRecords)
log " FINDING CUTOFF ALBUMS sorted by $searchSort "
log " $lidarrCutoffTotalRecords CutOff Albums Found Found! "
log "Getting CutOff Album IDs"
if [ " $lidarrCutoffTotalRecords " -ge "1" ] ; then
page = 0
if [ $lidarrCutoffTotalRecords -ge 1 ] ; then
offsetcount = $(( $lidarrCutoffTotalRecords / $amountPerPull ))
for ( ( i = 0; i<= $offsetcount ; i++) ) ; do
page = $(( $i + 1 ))
@ -1128,9 +1124,9 @@ GetMissingCutOffList () {
dlnumber = " $lidarrCutoffTotalRecords "
fi
log " Downloading page $page ... ( $offset - $dlnumber of $lidarrCutoffTotalRecords Results) "
log " $page :: cutoff :: Downloading page $page ... ( $offset - $dlnumber of $lidarrCutoffTotalRecords Results) "
lidarrRecords = $( wget --timeout= 0 -q -O - " $lidarrUrl /api/v1/wanted/cutoff?page= $page &pagesize= $amountPerPull &sortKey= $searchOrder &sortDirection= $searchDirection &apikey= ${ lidarrApiKey } " | jq -r '.records[].id' )
log " Filtering CutOff Album IDs by removing previously searched Album IDs (/config/extended/notfound/<files>)"
log " $page :: cutoff :: Filtering Album IDs by removing previously searched Album IDs (/config/extended/notfound/<files>) "
for lidarrRecordId in $( echo $lidarrRecords ) ; do
if [ ! -f /config/extended/logs/notfound/$lidarrRecordId --* ] ; then
@ -1139,11 +1135,11 @@ GetMissingCutOffList () {
done
lidarrCutoffRecords = $( ls /config/extended/cache/lidarr/list/*-cutoff | wc -l)
log " ${ lidarrCutoffRecords } CutOff ablums found to process!"
log " $page :: cutoff :: ${ lidarrCutoffRecords } ablums found to process!"
wantedListAlbumTotal = $lidarrCutoffRecords
if [ ${ lidarrCutoffRecords } -gt 0 ] ; then
log " Searching for $wantedListAlbumTotal items "
log " $page :: cutoff :: Searching for $wantedListAlbumTotal items "
SearchProcess
rm /config/extended/cache/lidarr/list/*-cutoff
fi
@ -1175,24 +1171,24 @@ SearchProcess () {
cutoffNotify = "false"
if [ -f " /config/extended/logs/notfound/ $wantedAlbumId -- $lidarrArtistForeignArtistId -- $lidarrAlbumForeignAlbumId " ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrAlbumType :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: Previously Not Found, skipping... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrAlbumType :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: Previously Not Found, skipping... "
continue
fi
if [ " $enableVideoScript " = = "true" ] ; then
if [ -d /config/extended/logs/video/complete ] ; then
if [ ! -f " /config/extended/logs/video/complete/ $lidarrArtistForeignArtistId " ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $lidarrAlbumType :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: Skipping until all videos are processed for the artist... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrAlbumType :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: Skipping until all videos are processed for the artist... "
continue
fi
else
log " $p rocessNumber of $wantedListAlbumTotal :: $lidarrAlbumType :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: Skipping until all videos are processed for the artist... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrAlbumType :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: Skipping until all videos are processed for the artist... "
continue
fi
fi
if [ -f " /config/extended/logs/downloaded/notfound/ $lidarrAlbumForeignAlbumId " ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $lidarrAlbumTitle :: $lidarrAlbumType :: Previously Not Found, skipping... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrAlbumTitle :: $lidarrAlbumType :: Previously Not Found, skipping... "
rm " /config/extended/logs/downloaded/notfound/ $lidarrAlbumForeignAlbumId "
touch " /config/extended/logs/notfound/ $wantedAlbumId -- $lidarrArtistForeignArtistId -- $lidarrAlbumForeignAlbumId "
chmod 777 " /config/extended/logs/notfound/ $wantedAlbumId -- $lidarrArtistForeignArtistId -- $lidarrAlbumForeignAlbumId "
@ -1232,9 +1228,9 @@ SearchProcess () {
if [ [ ${ currentDateClean } -ge ${ lidarrAlbumReleaseDateClean } ] ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Starting Search... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Starting Search... "
else
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Album ( $lidarrAlbumReleaseDate ) has not been released, skipping... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Album ( $lidarrAlbumReleaseDate ) has not been released, skipping... "
continue
fi
@ -1257,14 +1253,14 @@ SearchProcess () {
# fallback to musicbrainz db for link
if [ -z " $deezerArtistUrl " ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: DEEZER :: Fallback to musicbrainz for Deezer ID "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: DEEZER :: Fallback to musicbrainz for Deezer ID "
musicbrainzArtistData = $( curl -s -A " $agent " " https://musicbrainz.org/ws/2/artist/ ${ lidarrArtistForeignArtistId } ?inc=url-rels&fmt=json " )
deezerArtistUrl = $( echo " $musicbrainzArtistData " | jq -r '.relations | .[] | .url | select(.resource | contains("deezer")) | .resource' )
fi
if [ -z " $deezerArtistUrl " ] ; then
sleep 1.5
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: DEEZER :: ERROR :: musicbrainz id: $lidarrArtistForeignArtistId is missing Deezer link, see: \"/config/logs/deezer-artist-id-not-found.txt\" for more detail... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: DEEZER :: ERROR :: musicbrainz id: $lidarrArtistForeignArtistId is missing Deezer link, see: \"/config/logs/deezer-artist-id-not-found.txt\" for more detail... "
touch "/config/logs/deezer-artist-id-not-found.txt"
if cat "/config/logs/deezer-artist-id-not-found.txt" | grep " https://musicbrainz.org/artist/ $lidarrArtistForeignArtistId /edit " | read; then
sleep 0.01
@ -1280,14 +1276,14 @@ SearchProcess () {
if [ " $skipTidal " = = "false" ] ; then
# fallback to musicbrainz db for link
if [ -z " $tidalArtistUrl " ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: TIDAL :: Fallback to musicbrainz for Tidal ID "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: TIDAL :: Fallback to musicbrainz for Tidal ID "
musicbrainzArtistData = $( curl -s -A " $agent " " https://musicbrainz.org/ws/2/artist/ ${ lidarrArtistForeignArtistId } ?inc=url-rels&fmt=json " )
tidalArtistUrl = $( echo " $musicbrainzArtistData " | jq -r '.relations | .[] | .url | select(.resource | contains("tidal")) | .resource' )
fi
if [ -z " $tidalArtistUrl " ] ; then
sleep 1.5
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: TIDAL :: ERROR :: musicbrainz id: $lidarrArtistForeignArtistId is missing Tidal link, see: \"/config/logs/tidal-artist-id-not-found.txt\" for more detail... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: TIDAL :: ERROR :: musicbrainz id: $lidarrArtistForeignArtistId is missing Tidal link, see: \"/config/logs/tidal-artist-id-not-found.txt\" for more detail... "
touch "/config/logs/tidal-artist-id-not-found.txt"
if cat "/config/logs/tidal-artist-id-not-found.txt" | grep " https://musicbrainz.org/artist/ $lidarrArtistForeignArtistId /edit " | read; then
sleep 0.01
@ -1363,14 +1359,14 @@ SearchProcess () {
LidarrTaskStatusCheck
CheckLidarrBeforeImport " $checkLidarrAlbumId "
if [ " $alreadyImported " = = "true" ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
break 2
fi
# Tidal Artist search
if [ " $skipTidal " = = "false" ] ; then
for tidalArtistId in $( echo $tidalArtistIds ) ; do
ArtistTidalSearch " $p rocessNumber of $wantedListAlbumTotal " " $tidalArtistId " " $lyricFilter "
ArtistTidalSearch " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal " " $tidalArtistId " " $lyricFilter "
sleep 0.01
done
fi
@ -1379,7 +1375,7 @@ SearchProcess () {
LidarrTaskStatusCheck
CheckLidarrBeforeImport " $checkLidarrAlbumId "
if [ " $alreadyImported " = = "true" ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
break 2
fi
@ -1387,7 +1383,7 @@ SearchProcess () {
if [ " $skipDeezer " = = "false" ] ; then
for dId in ${ !deezerArtistIds[@] } ; do
deezerArtistId = " ${ deezerArtistIds [ $dId ] } "
ArtistDeezerSearch " $p rocessNumber of $wantedListAlbumTotal " " $deezerArtistId " " $lyricFilter "
ArtistDeezerSearch " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal " " $deezerArtistId " " $lyricFilter "
sleep 0.01
done
fi
@ -1397,13 +1393,13 @@ SearchProcess () {
LidarrTaskStatusCheck
CheckLidarrBeforeImport " $checkLidarrAlbumId "
if [ " $alreadyImported " = = "true" ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
break 2
fi
# Tidal fuzzy search
if [ " $dlClientSource " = = "both" ] || [ " $dlClientSource " = = "tidal" ] ; then
FuzzyTidalSearch " $p rocessNumber of $wantedListAlbumTotal " " $lyricFilter "
FuzzyTidalSearch " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal " " $lyricFilter "
sleep 0.01
fi
@ -1411,13 +1407,13 @@ SearchProcess () {
LidarrTaskStatusCheck
CheckLidarrBeforeImport " $checkLidarrAlbumId "
if [ " $alreadyImported " = = "true" ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
break 2
fi
# Deezer fuzzy search
if [ " $dlClientSource " = = "both" ] || [ " $dlClientSource " = = "deezer" ] ; then
FuzzyDeezerSearch " $p rocessNumber of $wantedListAlbumTotal " " $lyricFilter "
FuzzyDeezerSearch " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal " " $lyricFilter "
sleep 0.01
fi
@ -1434,7 +1430,7 @@ SearchProcess () {
LidarrTaskStatusCheck
CheckLidarrBeforeImport " $checkLidarrAlbumId "
if [ " $alreadyImported " = = "true" ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
continue
fi
@ -1443,12 +1439,12 @@ SearchProcess () {
if [ " $skipTidal " = = "false" ] ; then
# Search Musicbrainz
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Musicbrainz URL :: Tidal :: Searching for Album ID... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Musicbrainz URL :: Tidal :: Searching for Album ID... "
msuicbrainzTidalDownloadAlbumID = $( curl -s -A " $agent " " https://musicbrainz.org/ws/2/release?release-group= $lidarrAlbumForeignAlbumId &inc=url-rels&fmt=json " | jq -r | grep "tidal.com" | head -n 1 | sed -e "s%[^[:digit:]]%%g" )
# Process Album ID if found
if [ ! -z $msuicbrainzTidalDownloadAlbumID ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Musicbrainz URL :: Tidal ::: FOUND! "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Musicbrainz URL :: Tidal ::: FOUND! "
tidalArtistAlbumData = " $( curl -s " https://api.tidal.com/v1/albums/ ${ msuicbrainzTidalDownloadAlbumID } ?countryCode= $tidalCountryCode " -H 'x-tidal-token: CzET4vdadNUFQ5JU' ) "
tidalAlbumTrackCount = " $( echo " $tidalArtistAlbumData " | jq -r .numberOfTracks) "
downloadedAlbumTitle = " $( echo " ${ tidalArtistAlbumData } " | jq -r .title) "
@ -1457,19 +1453,19 @@ SearchProcess () {
downloadedReleaseDate = $( echo " $tidalArtistAlbumData " | jq -r '.streamStartDate' )
fi
downloadedReleaseYear = " ${ downloadedReleaseDate : 0 : 4 } "
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Musicbrainz URL :: Tidal :: Downloading $tidalAlbumTrackCount Tracks :: $downloadedAlbumTitle ( $downloadedReleaseYear ) "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Musicbrainz URL :: Tidal :: Downloading $tidalAlbumTrackCount Tracks :: $downloadedAlbumTitle ( $downloadedReleaseYear ) "
DownloadProcess " $msuicbrainzTidalDownloadAlbumID " "TIDAL" " $downloadedReleaseYear " " $downloadedAlbumTitle " " $tidalAlbumTrackCount "
# Verify it was successfully imported into Lidarr
LidarrTaskStatusCheck
CheckLidarrBeforeImport " $checkLidarrAlbumId "
if [ " $alreadyImported " = = "true" ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
continue
fi
else
sleep 1.5
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Musicbrainz URL :: Tidal :: NOT FOUND! "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Musicbrainz URL :: Tidal :: NOT FOUND! "
fi
fi
fi
@ -1477,7 +1473,7 @@ SearchProcess () {
LidarrTaskStatusCheck
CheckLidarrBeforeImport " $checkLidarrAlbumId "
if [ " $alreadyImported " = = "true" ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
continue
fi
@ -1486,30 +1482,30 @@ SearchProcess () {
if [ " $skipDeezer " = = "false" ] ; then
# Search Musicbrainz
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Musicbrainz URL :: Deezer :: Searching for Album ID... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Musicbrainz URL :: Deezer :: Searching for Album ID... "
musicbrainzDeezerDownloadAlbumID = $( curl -s -A " $agent " " https://musicbrainz.org/ws/2/release?release-group= $lidarrAlbumForeignAlbumId &inc=url-rels&fmt=json " | jq -r | grep "deezer.com" | grep "album" | head -n 1 | sed -e "s%[^[:digit:]]%%g" )
# Process Album ID if found
if [ ! -z $musicbrainzDeezerDownloadAlbumID ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Musicbrainz URL :: Deezer :: FOUND! "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Musicbrainz URL :: Deezer :: FOUND! "
GetDeezerAlbumInfo " ${ musicbrainzDeezerDownloadAlbumID } "
deezerArtistAlbumData = $( cat " /config/extended/cache/deezer/ $musicbrainzDeezerDownloadAlbumID .json " )
deezerAlbumTrackCount = " $( echo " $deezerArtistAlbumData " | jq -r .nb_tracks) "
deezerAlbumTitle = " $( echo " $deezerArtistAlbumData " | jq -r .title) "
downloadedReleaseDate = " $( echo " $deezerArtistAlbumData " | jq -r .release_date) "
downloadedReleaseYear = " ${ downloadedReleaseDate : 0 : 4 } "
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Musicbrainz URL :: Deezer :: Downloading $deezerAlbumTrackCount Tracks :: $deezerAlbumTitle ( $downloadedReleaseYear ) "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Musicbrainz URL :: Deezer :: Downloading $deezerAlbumTrackCount Tracks :: $deezerAlbumTitle ( $downloadedReleaseYear ) "
DownloadProcess " $musicbrainzDeezerDownloadAlbumID " "DEEZER" " $downloadedReleaseYear " " $deezerAlbumTitle " " $deezerAlbumTrackCount "
# Verify it was successfully imported into Lidarr
LidarrTaskStatusCheck
CheckLidarrBeforeImport " $checkLidarrAlbumId "
if [ " $alreadyImported " = = "true" ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
continue
fi
else
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Musicbrainz URL :: Deezer :: NOT FOUND! "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Musicbrainz URL :: Deezer :: NOT FOUND! "
fi
fi
fi
@ -1517,43 +1513,43 @@ SearchProcess () {
LidarrTaskStatusCheck
CheckLidarrBeforeImport " $checkLidarrAlbumId "
if [ " $alreadyImported " = = "true" ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported, skipping... "
continue
fi
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Album Not found "
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Marking Album as notfound "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Album Not found "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Marking Album as notfound "
if [ ! -f " /config/extended/logs/notfound/ $wantedAlbumId -- $lidarrArtistForeignArtistId -- $lidarrAlbumForeignAlbumId " ] ; then
touch " /config/extended/logs/notfound/ $wantedAlbumId -- $lidarrArtistForeignArtistId -- $lidarrAlbumForeignAlbumId "
chmod 777 " /config/extended/logs/notfound/ $wantedAlbumId -- $lidarrArtistForeignArtistId -- $lidarrAlbumForeignAlbumId "
fi
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Search Complete... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Search Complete... "
done
}
GetDeezerAlbumInfo ( ) {
until false
do
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: Getting Album info... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: Getting Album info... "
if [ ! -f " /config/extended/cache/deezer/ $1 .json " ] ; then
curl -s " https://api.deezer.com/album/ $1 " -o " /config/extended/cache/deezer/ $1 .json "
sleep $sleepTimer
fi
if [ -f " /config/extended/cache/deezer/ $1 .json " ] ; then
if jq -e . >/dev/null 2>& 1 <<< " $( cat /config/extended/cache/deezer/$1 .json) " ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: Album info downloaded and verified... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: Album info downloaded and verified... "
chmod 777 /config/extended/cache/deezer/$1 .json
albumInfoVerified = true
break
else
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: Error getting album information "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: Error getting album information "
if [ -f " /config/extended/cache/deezer/ $1 .json " ] ; then
rm " /config/extended/cache/deezer/ $1 .json "
fi
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: Retrying... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: Retrying... "
fi
else
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: ERROR :: Download Failed "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: ERROR :: Download Failed "
fi
done
@ -1585,13 +1581,13 @@ ArtistDeezerSearch () {
type = "Clean"
fi
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Deezer :: $type :: $lidarrReleaseTitle :: Searching $2 ... (Track Count: $lidarrAlbumReleasesMinTrackCount - $lidarrAlbumReleasesMaxTrackCount )... "
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Deezer :: $type :: $lidarrReleaseTitle :: Filtering results by lyric type and \" $lidarrAlbumReleaseTitleFirstWord \"... "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Deezer :: $type :: $lidarrReleaseTitle :: Searching $2 ... (Track Count: $lidarrAlbumReleasesMinTrackCount - $lidarrAlbumReleasesMaxTrackCount )... "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Deezer :: $type :: $lidarrReleaseTitle :: Filtering results by lyric type and \" $lidarrAlbumReleaseTitleFirstWord \"... "
deezerArtistAlbumsData = $( cat " /config/extended/cache/deezer/ $2 -albums.json " | jq -r .data[ ] )
deezerArtistAlbumsIds = $( echo " ${ deezerArtistAlbumsData } " | jq -r "select(.explicit_lyrics==" $3 " ) | select(.title | test(\"^ $lidarrAlbumReleaseTitleFirstWord \";\"i\")) | .id " )
resultsCount = $( echo " $deezerArtistAlbumsIds " | wc -l)
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Deezer :: $type :: $lidarrReleaseTitle :: $resultsCount search results found "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Deezer :: $type :: $lidarrReleaseTitle :: $resultsCount search results found "
for deezerAlbumID in $( echo " $deezerArtistAlbumsIds " ) ; do
deezerAlbumData = " $( echo " $deezerArtistAlbumsData " | jq -r " select(.id== $deezerAlbumID ) " ) "
deezerAlbumTitle = " $( echo " $deezerAlbumData " | jq -r ".title" ) "
@ -1622,14 +1618,14 @@ ArtistDeezerSearch () {
continue
fi
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Deezer :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $deezerAlbumTitleClean :: Checking for Match... "
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Deezer :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $deezerAlbumTitleClean :: Calculating Similarity... "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Deezer :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $deezerAlbumTitleClean :: Checking for Match... "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Deezer :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $deezerAlbumTitleClean :: Calculating Similarity... "
diff = $( levenshtein " ${ lidarrAlbumReleaseTitleClean ,, } " " ${ deezerAlbumTitleClean ,, } " 2>/dev/null)
if [ " $diff " -le " $matchDistance " ] ; then
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Deezer :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $deezerAlbumTitleClean :: Deezer MATCH Found :: Calculated Difference = $diff "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Deezer :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $deezerAlbumTitleClean :: Deezer MATCH Found :: Calculated Difference = $diff "
# Execute Download
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Deezer :: $type :: $lidarrReleaseTitle :: Downloading $deezerAlbumTrackCount Tracks :: $deezerAlbumTitle ( $downloadedReleaseYear ) "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Deezer :: $type :: $lidarrReleaseTitle :: Downloading $deezerAlbumTrackCount Tracks :: $deezerAlbumTitle ( $downloadedReleaseYear ) "
DownloadProcess " $deezerAlbumID " "DEEZER" " $downloadedReleaseYear " " $deezerAlbumTitle " " $deezerAlbumTrackCount "
@ -1645,8 +1641,8 @@ ArtistDeezerSearch () {
if [ " $alreadyImported " = = "true" ] ; then
return
else
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Deezer :: $type :: $lidarrReleaseTitle :: ERROR :: Albums found, but none matching search criteria... "
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Deezer :: $type :: $lidarrReleaseTitle :: ERROR :: Album not found... "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Deezer :: $type :: $lidarrReleaseTitle :: ERROR :: Albums found, but none matching search criteria... "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Deezer :: $type :: $lidarrReleaseTitle :: ERROR :: Album not found... "
fi
}
@ -1666,7 +1662,7 @@ FuzzyDeezerSearch () {
mkdir -p /config/extended/cache/deezer
fi
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Deezer :: $type :: $lidarrReleaseTitle :: Searching... (Track Count: $lidarrAlbumReleasesMinTrackCount - $lidarrAlbumReleasesMaxTrackCount ) "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Deezer :: $type :: $lidarrReleaseTitle :: Searching... (Track Count: $lidarrAlbumReleasesMinTrackCount - $lidarrAlbumReleasesMaxTrackCount ) "
deezerSearch = ""
if [ " $lidarrArtistForeignArtistId " = = "89ad4ac3-39f7-470e-963a-56509c546377" ] ; then
@ -1677,7 +1673,7 @@ FuzzyDeezerSearch () {
deezerSearch = $( curl -s " https://api.deezer.com/search?q=artist:%22 ${ albumArtistNameSearch } %22%20album:%22 ${ albumTitleSearch } %22&strict=on&limit=20 " | jq -r ".data[]" )
fi
resultsCount = $( echo " $deezerSearch " | jq -r .album.id | sort -u | wc -l)
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Deezer :: $type :: $lidarrReleaseTitle :: $resultsCount search results found "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Deezer :: $type :: $lidarrReleaseTitle :: $resultsCount search results found "
if [ ! -z " $deezerSearch " ] ; then
for deezerAlbumID in $( echo " $deezerSearch " | jq -r .album.id | sort -u) ; do
deezerAlbumData = " $( echo " $deezerSearch " | jq -r " .album | select(.id== $deezerAlbumID ) " ) "
@ -1716,12 +1712,12 @@ FuzzyDeezerSearch () {
continue
fi
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Deezer :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $deezerAlbumTitleClean :: Checking for Match... "
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Deezer :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $deezerAlbumTitleClean :: Calculating Similarity... "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Deezer :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $deezerAlbumTitleClean :: Checking for Match... "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Deezer :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $deezerAlbumTitleClean :: Calculating Similarity... "
diff = $( levenshtein " ${ lidarrAlbumReleaseTitleClean ,, } " " ${ deezerAlbumTitleClean ,, } " 2>/dev/null)
if [ " $diff " -le " $matchDistance " ] ; then
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Deezer :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $deezerAlbumTitleClean :: Deezer MATCH Found :: Calculated Difference = $diff "
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Deezer :: $type :: $lidarrReleaseTitle :: Downloading $deezerAlbumTrackCount Tracks :: $deezerAlbumTitle ( $downloadedReleaseYear ) "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Deezer :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $deezerAlbumTitleClean :: Deezer MATCH Found :: Calculated Difference = $diff "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Deezer :: $type :: $lidarrReleaseTitle :: Downloading $deezerAlbumTrackCount Tracks :: $deezerAlbumTitle ( $downloadedReleaseYear ) "
DownloadProcess " $deezerAlbumID " "DEEZER" " $downloadedReleaseYear " " $deezerAlbumTitle " " $deezerAlbumTrackCount "
@ -1733,9 +1729,9 @@ FuzzyDeezerSearch () {
fi
fi
done
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Deezer :: $type :: $lidarrReleaseTitle :: ERROR :: Results found, but none matching search criteria... "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Deezer :: $type :: $lidarrReleaseTitle :: ERROR :: Results found, but none matching search criteria... "
else
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Deezer :: $type :: $lidarrReleaseTitle :: ERROR :: No results found via Fuzzy Search... "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Deezer :: $type :: $lidarrReleaseTitle :: ERROR :: No results found via Fuzzy Search... "
fi
}
@ -1768,19 +1764,19 @@ ArtistTidalSearch () {
fi
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Tidal :: $type :: $lidarrReleaseTitle :: Searching $2 ... (Track Count: $lidarrAlbumReleasesMinTrackCount - $lidarrAlbumReleasesMaxTrackCount )... "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Tidal :: $type :: $lidarrReleaseTitle :: Searching $2 ... (Track Count: $lidarrAlbumReleasesMinTrackCount - $lidarrAlbumReleasesMaxTrackCount )... "
tidalArtistAlbumsData = $( cat " /config/extended/cache/tidal/ $2 -albums.json " | jq -r " .items | sort_by(.numberOfTracks) | sort_by(.explicit) | reverse |.[] | select((.numberOfTracks <= $lidarrAlbumReleasesMaxTrackCount ) and .numberOfTracks >= $lidarrAlbumReleasesMinTrackCount ) " )
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Tidal :: $type :: $lidarrReleaseTitle :: Filtering results by lyric type, track count and \" $lidarrAlbumReleaseTitleFirstWord \" "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Tidal :: $type :: $lidarrReleaseTitle :: Filtering results by lyric type, track count and \" $lidarrAlbumReleaseTitleFirstWord \" "
tidalArtistAlbumsIds = $( echo " ${ tidalArtistAlbumsData } " | jq -r "select(.explicit==" $3 " ) | select(.title | test(\"^ $lidarrAlbumReleaseTitleFirstWord \";\"i\")) | .id " )
if [ -z " $tidalArtistAlbumsIds " ] ; then
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Tidal :: $type :: $lidarrReleaseTitle :: ERROR :: No search results found... "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Tidal :: $type :: $lidarrReleaseTitle :: ERROR :: No search results found... "
return
fi
searchResultCount = $( echo " $tidalArtistAlbumsIds " | wc -l)
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Tidal :: $type :: $lidarrReleaseTitle :: $searchResultCount search results found "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Tidal :: $type :: $lidarrReleaseTitle :: $searchResultCount search results found "
for tidalArtistAlbumId in $( echo $tidalArtistAlbumsIds ) ; do
tidalArtistAlbumData = $( echo " $tidalArtistAlbumsData " | jq -r "select(.id==" $tidalArtistAlbumId ")" )
@ -1801,14 +1797,14 @@ ArtistTidalSearch () {
continue
fi
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Tidal :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $tidalAlbumTitleClean :: Checking for Match... "
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Tidal :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $tidalAlbumTitleClean :: Calculating Similarity... "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Tidal :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $tidalAlbumTitleClean :: Checking for Match... "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Tidal :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $tidalAlbumTitleClean :: Calculating Similarity... "
diff = $( levenshtein " ${ lidarrAlbumReleaseTitleClean ,, } " " ${ tidalAlbumTitleClean ,, } " 2>/dev/null)
if [ " $diff " -le " $matchDistance " ] ; then
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Tidal :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $tidalAlbumTitleClean :: Tidal MATCH Found :: Calculated Difference = $diff "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Tidal :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $tidalAlbumTitleClean :: Tidal MATCH Found :: Calculated Difference = $diff "
# Execute Download
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Tidal :: $type :: $lidarrReleaseTitle :: Downloading $downloadedTrackCount Tracks :: $downloadedAlbumTitle ( $downloadedReleaseYear ) "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Tidal :: $type :: $lidarrReleaseTitle :: Downloading $downloadedTrackCount Tracks :: $downloadedAlbumTitle ( $downloadedReleaseYear ) "
DownloadProcess " $tidalArtistAlbumId " "TIDAL" " $downloadedReleaseYear " " $downloadedAlbumTitle " " $downloadedTrackCount "
@ -1819,15 +1815,15 @@ ArtistTidalSearch () {
break
fi
else
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Tidal :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $tidalAlbumTitleClean :: Tidal Match Not Found :: Calculated Difference ( $diff ) greater than 5 "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Tidal :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $tidalAlbumTitleClean :: Tidal Match Not Found :: Calculated Difference ( $diff ) greater than 5 "
fi
done
if [ " $alreadyImported " = = "true" ] ; then
return
else
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Tidal :: $type :: $lidarrReleaseTitle :: ERROR :: Albums found, but none matching search criteria... "
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Tidal :: $type :: $lidarrReleaseTitle :: ERROR :: Album not found "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Tidal :: $type :: $lidarrReleaseTitle :: ERROR :: Albums found, but none matching search criteria... "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Artist Search :: Tidal :: $type :: $lidarrReleaseTitle :: ERROR :: Album not found "
fi
}
@ -1843,7 +1839,7 @@ FuzzyTidalSearch () {
type = "Clean"
fi
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Tidal :: $type :: $lidarrReleaseTitle :: Searching... (Track Count: $lidarrAlbumReleasesMinTrackCount - $lidarrAlbumReleasesMaxTrackCount )... "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Tidal :: $type :: $lidarrReleaseTitle :: Searching... (Track Count: $lidarrAlbumReleasesMinTrackCount - $lidarrAlbumReleasesMaxTrackCount )... "
if [ " $lidarrArtistForeignArtistId " = = "89ad4ac3-39f7-470e-963a-56509c546377" ] ; then
# Search without Artist for VA albums
@ -1855,7 +1851,7 @@ FuzzyTidalSearch () {
sleep $sleepTimer
tidalSearch = $( echo " $tidalSearch " | jq -r " select(.title | test(\"^ $lidarrAlbumReleaseTitleFirstWord \";\"i\")) " )
searchResultCount = $( echo " $tidalSearch " | jq -r ".id" | sort -u | wc -l)
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Tidal :: $type :: $lidarrReleaseTitle :: $searchResultCount search results found ( $lidarrAlbumReleaseTitleFirstWord ) "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Tidal :: $type :: $lidarrReleaseTitle :: $searchResultCount search results found ( $lidarrAlbumReleaseTitleFirstWord ) "
if [ ! -z " $tidalSearch " ] ; then
for tidalAlbumID in $( echo " $tidalSearch " | jq -r .id | sort -u) ; do
tidalAlbumData = " $( echo " $tidalSearch " | jq -r " select(.id== $tidalAlbumID ) " ) "
@ -1876,12 +1872,12 @@ FuzzyTidalSearch () {
continue
fi
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Tidal :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $tidalAlbumTitleClean :: Checking for Match... "
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Tidal :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $tidalAlbumTitleClean :: Calculating Similarity... "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Tidal :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $tidalAlbumTitleClean :: Checking for Match... "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Tidal :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $tidalAlbumTitleClean :: Calculating Similarity... "
diff = $( levenshtein " ${ lidarrAlbumReleaseTitleClean ,, } " " ${ tidalAlbumTitleClean ,, } " 2>/dev/null)
if [ " $diff " -le " $matchDistance " ] ; then
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Tidal :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $tidalAlbumTitleClean :: Tidal MATCH Found :: Calculated Difference = $diff "
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Tidal :: $type :: $lidarrReleaseTitle :: Downloading $downloadedTrackCount Tracks :: $tidalAlbumTitle ( $downloadedReleaseYear ) "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Tidal :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $tidalAlbumTitleClean :: Tidal MATCH Found :: Calculated Difference = $diff "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Tidal :: $type :: $lidarrReleaseTitle :: Downloading $downloadedTrackCount Tracks :: $tidalAlbumTitle ( $downloadedReleaseYear ) "
DownloadProcess " $tidalAlbumID " "TIDAL" " $downloadedReleaseYear " " $tidalAlbumTitle " " $downloadedTrackCount "
@ -1893,12 +1889,12 @@ FuzzyTidalSearch () {
fi
else
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Tidal :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $tidalAlbumTitleClean :: Tidal Match Not Found :: Calculated Difference ( $diff ) greater than 5 "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Tidal :: $type :: $lidarrReleaseTitle :: $lidarrAlbumReleaseTitleClean vs $tidalAlbumTitleClean :: Tidal Match Not Found :: Calculated Difference ( $diff ) greater than 5 "
fi
done
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Tidal :: $type :: $lidarrReleaseTitle :: ERROR :: Albums found, but none matching search criteria... "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Tidal :: $type :: $lidarrReleaseTitle :: ERROR :: Albums found, but none matching search criteria... "
else
log " $1 :: $ wantedAlbumListSource :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Tidal :: $type :: $lidarrReleaseTitle :: ERROR :: No results found... "
log " $1 :: $ lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Fuzzy Search :: Tidal :: $type :: $lidarrReleaseTitle :: ERROR :: No results found... "
fi
}
@ -1907,21 +1903,21 @@ CheckLidarrBeforeImport () {
alreadyImported = false
checkLidarrAlbumData = " $( curl -s " $lidarrUrl /api/v1/album/ $1 ?apikey= ${ lidarrApiKey } " ) "
checkLidarrAlbumPercentOfTracks = $( echo " $checkLidarrAlbumData " | jq -r ".statistics.percentOfTracks" )
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Checking Lidarr for existing files "
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: $checkLidarrAlbumPercentOfTracks % Tracks found "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Checking Lidarr for existing files "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: $checkLidarrAlbumPercentOfTracks % Tracks found "
if [ " $checkLidarrAlbumPercentOfTracks " = = "null" ] ; then
checkLidarrAlbumPercentOfTracks = 0
return
fi
if [ " ${ checkLidarrAlbumPercentOfTracks %%.* } " -ge "100" ] ; then
if [ " $wantedAlbumListSource " = = "missing" ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported Album (Missing), skipping... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported Album (Missing), skipping... "
alreadyImported = true
return
fi
if [ " $wantedAlbumListSource " = = "cutoff" ] ; then
if [ " $cutoffNotify " = = "true" ] ; then
log " $p rocessNumber of $wantedListAlbumTotal :: $wantedAlbumListSource :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported Album (CutOff), skipping... "
log " $p age :: $wantedAlbumListSource :: $p rocessNumber of $wantedListAlbumTotal :: $lidarrArtistName :: $lidarrAlbumTitle :: $lidarrAlbumType :: Already Imported Album (CutOff), skipping... "
alreadyImported = true
cutoffNotiy = "false"
return