From 1f845b06fe32c8cc6e912db8bf87e23e1c88edd8 Mon Sep 17 00:00:00 2001 From: RandomNinjaAtk Date: Wed, 9 Nov 2022 08:28:16 -0500 Subject: [PATCH] 1.0.004 - Do not remove if episode failed to import due to TBA The script will no longer auto-remove failed imports due to TBA titles, but instead, skip them and attempt to refresh the series to fix the missing title. That way the Sonarr can import automatically after it has been updated to the correct title. --- root/scripts/QueueCleaner.bash | 58 +++++++++++++++------------------- 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/root/scripts/QueueCleaner.bash b/root/scripts/QueueCleaner.bash index 7392878..7e0d5e0 100644 --- a/root/scripts/QueueCleaner.bash +++ b/root/scripts/QueueCleaner.bash @@ -1,5 +1,5 @@ #!/usr/bin/env bash -scriptVersion="1.0.003" +scriptVersion="1.0.004" if [ -z "$arrUrl" ] || [ -z "$arrApiKey" ]; then arrUrlBase="$(cat /config/config.xml | xq | jq -r .Config.UrlBase)" @@ -23,37 +23,31 @@ if [ -f "/config/logs/QueueCleaner.txt" ]; then find /config/logs -type f -name "QueueCleaner.txt" -size +1024k -delete fi -touch "/config/logs/QueueCleaner.txt" -chmod 666 "/config/logs/QueueCleaner.txt" -exec &> >(tee -a "/config/logs/QueueCleaner.txt") - -arrQueueData="$(curl -s "$arrUrl/api/v3/queue?page=1&pagesize=200&sortDirection=descending&sortKey=progress&includeUnknownSeriesItems=true&apikey=${arrApiKey}" | jq -r .records[])" -arrQueueIds=$(echo "$arrQueueData" | jq -r 'select(.status=="completed") | select(.trackedDownloadStatus=="warning") | .id') -arrQueueIdsCount=$(echo "$arrQueueData" | jq -r 'select(.status=="completed") | select(.trackedDownloadStatus=="warning") | .id' | wc -l) -if [ $arrQueueIdsCount -eq 0 ]; then - log "No items in queue to clean up..." -else - for queueId in $(echo $arrQueueIds); do - arrQueueItemData="$(echo "$arrQueueData" | jq -r "select(.id==$queueId)")" - arrQueueItemTitle="$(echo "$arrQueueItemData" | jq -r .title)" - log "Removing Failed Queue Item ID: $queueId ($arrQueueItemTitle) from Sonarr..." - curl -sX DELETE "$arrUrl/api/v3/queue/$queueId?removeFromClient=true&blocklist=true&apikey=${arrApiKey}" - done -fi - -arrQueueData="$(curl -s "$arrUrl/api/v3/queue?page=1&pagesize=200&sortDirection=descending&sortKey=progress&includeUnknownSeriesItems=true&apikey=${arrApiKey}" | jq -r .records[])" -arrQueueIds=$(echo "$arrQueueData" | jq -r 'select(.status=="failed") | select(.trackedDownloadStatus=="warning") | .id') -arrQueueIdsCount=$(echo "$arrQueueData" | jq -r 'select(.status=="failed") | select(.trackedDownloadStatus=="warning") | .id' | wc -l) -if [ $arrQueueIdsCount -eq 0 ]; then - log "No items in queue to clean up..." -else +CleanerProcess () { + arrQueueData="$(curl -s "$arrUrl/api/v3/queue?page=1&pagesize=200&sortDirection=descending&sortKey=progress&includeUnknownSeriesItems=true&apikey=${arrApiKey}" | jq -r .records[])" + arrQueueIds=$(echo "$arrQueueData" | jq -r 'select(.status=="completed") | select(.trackedDownloadStatus=="warning") | .id') + arrQueueIdsCount=$(echo "$arrQueueData" | jq -r 'select(.status=="completed") | select(.trackedDownloadStatus=="warning") | .id' | wc -l) + if [ $arrQueueIdsCount -eq 0 ]; then + log "No items in queue to clean up..." + else + for queueId in $(echo $arrQueueIds); do + arrQueueItemData="$(echo "$arrQueueData" | jq -r "select(.id==$queueId)")" + arrQueueItemTitle="$(echo "$arrQueueItemData" | jq -r .title)" + arrEpisodeData="$(curl -s "$arrUrl/api/v3/episode/$queueId?apikey=${arrApiKey}")" + arrEpisodeTitle="$(echo "$arrEpisodeData" | jq -r .title)" + arrEpisodeSeriesId="$(echo "$arrEpisodeData" | jq -r .seriesId)" + if [ "$arrEpisodeTitle" == "TBA" ]; then + log "ERROR :: Episode title is \"$arrEpisodeTitle\" and prevents auto-import, refreshing series..." + refreshSeries=$(curl -s "$arrUrl/api/v3/command" -X POST -H 'Content-Type: application/json' -H "X-Api-Key: $arrApiKey" --data-raw "{\"name\":\"RefreshSeries\",\"seriesId\":$arrEpisodeSeriesId}") + continue + else + log "Removing Failed Queue Item ID: $queueId ($arrQueueItemTitle) from Sonarr..." + curl -sX DELETE "$arrUrl/api/v3/queue/$queueId?removeFromClient=true&blocklist=true&apikey=${arrApiKey}" + fi + done + fi +} - for queueId in $(echo $arrQueueIds); do - arrQueueItemData="$(echo "$arrQueueData" | jq -r "select(.id==$queueId)")" - arrQueueItemTitle="$(echo "$arrQueueItemData" | jq -r .title)" - log "Removing Failed Queue Item ID: $queueId ($arrQueueItemTitle) from Sonarr..." - curl -sX DELETE "$arrUrl/api/v3/queue/$queueId?removeFromClient=true&blocklist=true&apikey=${arrApiKey}" - done -fi +CleanerProcess exit