v1.0.010 - Big changes, bug fixes

#9 

1. Only notify Plex to scan if new videos are downloaded or script is triggered by Radarr and not AutoExtras.bash
2. Adjusted language settings to actually function...
3. extrasSingle option now supports language setting
4. extrasSingle option, when not using Kodi Compatibility, sets the filename to Movie Folder name in the trailers directory
5. When extrasSingle option is true, force extrasType to trailer only
pull/49/head
RandomNinjaAtk 2 years ago committed by GitHub
parent bcb51b54d3
commit e36643944b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,18 +1,20 @@
#!/usr/bin/env bash #!/usr/bin/env bash
scriptVersion="1.0.007" scriptVersion="1.0.010"
arrEventType="$radarr_eventtype" arrEventType="$radarr_eventtype"
arrItemId=$radarr_movie_id arrItemId=$radarr_movie_id
tmdbApiKey="3b7751e3179f796565d88fdb2fcdf426" tmdbApiKey="3b7751e3179f796565d88fdb2fcdf426"
autoScan="false"
if [ ! -z "$1" ]; then if [ ! -z "$1" ]; then
arrItemId=$1 arrItemId=$1
autoScan="true"
fi fi
# Debugging # Debugging
#arrItemId=11677 #arrItemId=1
#extrasLanguages=en #extrasLanguages=it-IT,en-US
#extrasType=all #extrasType=all
#extrasOfficialOnly=true #extrasOfficialOnly=false
#extrasKodiCompatibility=true #extrasKodiCompatibility=true
#extrasSingle=false #extrasSingle=false
#enableExtras=true #enableExtras=true
@ -65,6 +67,7 @@ arrItemData=$(curl -s "$arrUrl/api/v3/movie/$arrItemId?apikey=$arrApiKey")
itemTitle=$(echo "$arrItemData" | jq -r .title) itemTitle=$(echo "$arrItemData" | jq -r .title)
itemHasFile=$(echo "$arrItemData" | jq -r .hasFile) itemHasFile=$(echo "$arrItemData" | jq -r .hasFile)
itemPath="$(echo "$arrItemData" | jq -r ".path")" itemPath="$(echo "$arrItemData" | jq -r ".path")"
itemFolder="$(basename "$itemPath")"
itemRelativePath="$(echo "$arrItemData" | jq -r ".movieFile.relativePath")" itemRelativePath="$(echo "$arrItemData" | jq -r ".movieFile.relativePath")"
itemTrailerId="$(echo "$arrItemData" | jq -r ".youTubeTrailerId")" itemTrailerId="$(echo "$arrItemData" | jq -r ".youTubeTrailerId")"
tmdbId="$(echo "$arrItemData" | jq -r ".tmdbId")" tmdbId="$(echo "$arrItemData" | jq -r ".tmdbId")"
@ -76,151 +79,156 @@ if [ ! -d "$itemPath" ]; then
fi fi
if [ "$extrasSingle" == "true" ]; then if [ "$extrasSingle" == "true" ]; then
if [ "$extrasKodiCompatibility" == "true" ] ; then extrasType="trailer"
extrasFileName="movie-trailer"
else
extrasFileName="trailers/Trailer"
fi
if [ ! -z "$itemTrailerId" ]; then
if [ ! -f "$itemPath/$extrasFileName.mkv" ]; then
log "$itemTitle :: Trailer :: Downloading Trailer ($itemTrailerId)..."
if [ ! -z "$cookiesFile" ]; then
yt-dlp --cookies "$cookiesFile" -o "$itemPath/$extrasFileName" --write-sub --sub-lang $extrasLanguages --embed-subs --merge-output-format mkv --no-mtime --geo-bypass "https://www.youtube.com/watch?v=$itemTrailerId"
else
yt-dlp -o "$itemPath/$extrasFileName" --write-sub --sub-lang $extrasLanguages --embed-subs --merge-output-format mkv --no-mtime --geo-bypass "https://www.youtube.com/watch?v=$itemTrailerId"
fi
if python3 /usr/local/sma/manual.py --config "/sma.ini" -i "$itemPath/$extrasFileName.mkv" -nt &>/dev/null; then
sleep 0.01
log "$itemTitle :: Trailer :: Processed with SMA..."
rm /usr/local/sma/config/*log*
else
log "$itemTitle :: Trailer :: ERROR :: SMA Processing Error"
rm "$itemPath/$extrasFileName.mkv"
log "$itemTitle :: Trailer :: INFO: deleted: $itemPath/$extrasFileName.mkv"
fi
if [ -f "$itemPath/$extrasFileName.mkv" ]; then
chmod 666 "$itemPath/$extrasFileName.mkv"
chown abc:abc "$itemPath/$extrasFileName.mkv"
fi
else
log "$itemTitle :: Trailer :: Already downloaded..."
fi
else
log "$itemTitle :: Trailer :: ERROR :: No Trailer ID Found, Skipping..."
fi
exit
fi fi
tmdbVideosListData=$(curl -s "https://api.themoviedb.org/3/movie/$tmdbId/videos?api_key=$tmdbApiKey" | jq -r '.results[] | select(.site=="YouTube")')
IFS=',' read -r -a filters <<< "$extrasLanguages" IFS=',' read -r -a filters <<< "$extrasLanguages"
for filter in "${filters[@]}" for filter in "${filters[@]}"
do do
tmdbVideosListData=$(curl -s "https://api.themoviedb.org/3/movie/$tmdbId/videos?api_key=$tmdbApiKey&language=$filter" | jq -r '.results[] | select(.site=="YouTube")')
log "$itemTitle :: Searching for \"$filter\" extras..." log "$itemTitle :: Searching for \"$filter\" extras..."
if [ "$extrasType" == "all" ]; then if [ "$extrasType" == "all" ]; then
tmdbVideosListDataIds=$(echo "$tmdbVideosListData" | jq -r "select(.iso_639_1==\"$filter\") | .id") tmdbVideosListDataIds=$(echo "$tmdbVideosListData" | jq -r ".id")
tmdbVideosListDataIdsCount=$(echo "$tmdbVideosListData" | jq -r "select(.iso_639_1==\"$filter\") | .id" | wc -l) tmdbVideosListDataIdsCount=$(echo "$tmdbVideosListData" | jq -r ".id" | wc -l)
else else
tmdbVideosListDataIds=$(echo "$tmdbVideosListData" | jq -r "select(.iso_639_1==\"$filter\" and .type==\"Trailer\") | .id") tmdbVideosListDataIds=$(echo "$tmdbVideosListData" | jq -r "select(.type==\"Trailer\") | .id")
tmdbVideosListDataIdsCount=$(echo "$tmdbVideosListData" | jq -r "select(.iso_639_1==\"$filter\" and .type==\"Trailer\") | .id" | wc -l) tmdbVideosListDataIdsCount=$(echo "$tmdbVideosListData" | jq -r "select(.type==\"Trailer\") | .id" | wc -l)
fi fi
if [ -z "$tmdbVideosListDataIds" ]; then if [ -z "$tmdbVideosListDataIds" ]; then
log "$itemTitle :: None found..." log "$itemTitle :: None found..."
continue continue
else
break
fi fi
done
if [ $tmdbVideosListDataIdsCount -le 0 ]; then
log "$itemTitle :: No Extras Found, skipping..."
exit
fi
log "$itemTitle :: $tmdbVideosListDataIdsCount Extras Found!" if [ $tmdbVideosListDataIdsCount -le 0 ]; then
i=0 log "$itemTitle :: No Extras Found, skipping..."
for id in $(echo "$tmdbVideosListDataIds"); do exit
i=$(( i + 1))
tmdbExtraData="$(echo "$tmdbVideosListData" | jq -r "select(.id==\"$id\")")"
tmdbExtraTitle="$(echo "$tmdbExtraData" | jq -r .name)"
tmdbExtraTitleClean="$(echo "$tmdbExtraTitle" | sed -e "s/[^[:alpha:][:digit:]$^&_+=()'%;{},.@#]/ /g" -e "s/ */ /g" | sed 's/^[.]*//' | sed 's/[.]*$//g' | sed 's/^ *//g' | sed 's/ *$//g')"
tmdbExtraKey="$(echo "$tmdbExtraData" | jq -r .key)"
tmdbExtraType="$(echo "$tmdbExtraData" | jq -r .type)"
tmdbExtraOfficial="$(echo "$tmdbExtraData" | jq -r .official)"
if [ "$tmdbExtraOfficial" != "true" ]; then
if [ "$extrasOfficialOnly" == "true" ]; then
log "$itemTitle :: $i of $tmdbVideosListDataIdsCount :: $tmdbExtraType :: Not official, skipping..."
continue
fi
fi fi
if [ "$tmdbExtraType" == "Featurette" ]; then log "$itemTitle :: $tmdbVideosListDataIdsCount Extras Found!"
extraFolderName="featurettes"
elif [ "$tmdbExtraType" == "Trailer" ]; then i=0
extraFolderName="trailers" for id in $(echo "$tmdbVideosListDataIds"); do
elif [ "$tmdbExtraType" == "Behind the Scenes" ]; then i=$(( i + 1))
extraFolderName="behind the scenes" updatePlex="false"
else tmdbExtraData="$(echo "$tmdbVideosListData" | jq -r "select(.id==\"$id\")")"
log "$itemTitle :: $i of $tmdbVideosListDataIdsCount :: $tmdbExtraType :: ERROR :: Extra Type Not found" tmdbExtraTitle="$(echo "$tmdbExtraData" | jq -r .name)"
if [ -f "/config/logs/MovieExtras-InvalidType.txt" ]; then tmdbExtraTitleClean="$(echo "$tmdbExtraTitle" | sed -e "s/[^[:alpha:][:digit:]$^&_+=()'%;{},.@#]/ /g" -e "s/ */ /g" | sed 's/^[.]*//' | sed 's/[.]*$//g' | sed 's/^ *//g' | sed 's/ *$//g')"
if cat "/config/logs/MovieExtras-InvalidType.txt" | grep "$tmdbExtraType" | read; then tmdbExtraKey="$(echo "$tmdbExtraData" | jq -r .key)"
tmdbExtraType="$(echo "$tmdbExtraData" | jq -r .type)"
tmdbExtraOfficial="$(echo "$tmdbExtraData" | jq -r .official)"
if [ "$tmdbExtraOfficial" != "true" ]; then
if [ "$extrasOfficialOnly" == "true" ]; then
log "$itemTitle :: $i of $tmdbVideosListDataIdsCount :: $tmdbExtraType :: Not official, skipping..."
continue continue
fi
fi
if [ "$tmdbExtraType" == "Featurette" ]; then
extraFolderName="featurettes"
elif [ "$tmdbExtraType" == "Trailer" ]; then
extraFolderName="trailers"
elif [ "$tmdbExtraType" == "Behind the Scenes" ]; then
extraFolderName="behind the scenes"
else
log "$itemTitle :: $i of $tmdbVideosListDataIdsCount :: $tmdbExtraType :: ERROR :: Extra Type Not found"
if [ -f "/config/logs/MovieExtras-InvalidType.txt" ]; then
if cat "/config/logs/MovieExtras-InvalidType.txt" | grep "$tmdbExtraType" | read; then
continue
else
echo "$tmdbExtraType" >> "/config/logs/MovieExtras-InvalidType.txt"
fi
fi
echo "$tmdbExtraType" >> "/config/logs/MovieExtras-InvalidType.txt"
continue
fi
if [ "$extrasSingle" == "true" ]; then
log "$itemTitle :: $i of $tmdbVideosListDataIdsCount :: $tmdbExtraType :: Single Trailer Enabled..."
if [ "$extrasKodiCompatibility" == "true" ] ; then
finalPath="$itemPath"
finalFileName="movie-trailer"
else else
echo "$tmdbExtraType" >> "/config/logs/MovieExtras-InvalidType.txt" finalPath="$itemPath/$extraFolderName"
finalFileName="$itemFolder"
fi fi
else
finalPath="$itemPath/$extraFolderName"
finalFileName="$tmdbExtraTitleClean"
fi fi
echo "$tmdbExtraType" >> "/config/logs/MovieExtras-InvalidType.txt"
continue
fi
if [ ! -d "$itemPath/$extraFolderName" ]; then if [ ! -d "$finalPath" ]; then
mkdir -p "$itemPath/$extraFolderName" mkdir -p "$finalPath"
chmod 777 "$itemPath/$extraFolderName" chmod 777 "$finalPath"
chown abc:abc "$itemPath/$extraFolderName" chown abc:abc "$finalPath"
fi fi
finalPath="$itemPath/$extraFolderName"
if [ -f "$finalPath/$tmdbExtraTitleClean.mkv" ]; then if [ -f "$finalPath/$finalFileName.mkv" ]; then
log "$itemTitle :: $i of $tmdbVideosListDataIdsCount :: $tmdbExtraType :: $tmdbExtraTitle ($tmdbExtraKey) :: Already Downloaded, skipping..." log "$itemTitle :: $i of $tmdbVideosListDataIdsCount :: $tmdbExtraType :: $tmdbExtraTitle ($tmdbExtraKey) :: Already Downloaded, skipping..."
continue if [ "$extrasSingle" == "true" ]; then
fi log "$itemTitle :: $i of $tmdbVideosListDataIdsCount :: $tmdbExtraType :: Finished processing single trailer download"
break
fi
continue
fi
log "$itemTitle :: $i of $tmdbVideosListDataIdsCount :: $tmdbExtraType :: $tmdbExtraTitle ($tmdbExtraKey) :: Downloading..." videoLanguages="$(echo "$extrasLanguages" | sed "s/-[[:alpha:]][[:alpha:]]//g")"
if [ ! -z "$cookiesFile" ]; then
yt-dlp --cookies "$cookiesFile" -o "$finalPath/$tmdbExtraTitleClean" --write-sub --sub-lang $extrasLanguages --embed-subs --merge-output-format mkv --no-mtime --geo-bypass "https://www.youtube.com/watch?v=$tmdbExtraKey" &>/dev/null log "$itemTitle :: $i of $tmdbVideosListDataIdsCount :: $tmdbExtraType :: $tmdbExtraTitle ($tmdbExtraKey) :: Downloading..."
else if [ ! -z "$cookiesFile" ]; then
yt-dlp -o "$finalPath/$tmdbExtraTitleClean" --write-sub --sub-lang $extrasLanguages --embed-subs --merge-output-format mkv --no-mtime --geo-bypass "https://www.youtube.com/watch?v=$tmdbExtraKey" &>/dev/null yt-dlp --cookies "$cookiesFile" -o "$finalPath/$finalFileName" --write-sub --sub-lang $videoLanguages --embed-subs --merge-output-format mkv --no-mtime --geo-bypass "https://www.youtube.com/watch?v=$tmdbExtraKey" &>/dev/null
fi else
if [ -f "$finalPath/$tmdbExtraTitleClean.mkv" ]; then yt-dlp -o "$finalPath/$finalFileName" --write-sub --sub-lang $videoLanguages --embed-subs --merge-output-format mkv --no-mtime --geo-bypass "https://www.youtube.com/watch?v=$tmdbExtraKey" &>/dev/null
log "$itemTitle :: $i of $tmdbVideosListDataIdsCount :: $tmdbExtraType :: $tmdbExtraTitle ($tmdbExtraKey) :: Compete" fi
chmod 666 "$finalPath/$tmdbExtraTitleClean.mkv" if [ -f "$finalPath/$finalFileName.mkv" ]; then
chown abc:abc "$finalPath/$tmdbExtraTitleClean.mkv" log "$itemTitle :: $i of $tmdbVideosListDataIdsCount :: $tmdbExtraType :: $tmdbExtraTitle ($tmdbExtraKey) :: Compete"
else chmod 666 "$finalPath/$finalFileName.mkv"
log "$itemTitle :: $i of $tmdbVideosListDataIdsCount :: $tmdbExtraType :: $tmdbExtraTitle ($tmdbExtraKey) :: ERROR :: Download Failed" chown abc:abc "$finalPath/$finalFileName.mkv"
continue else
fi log "$itemTitle :: $i of $tmdbVideosListDataIdsCount :: $tmdbExtraType :: $tmdbExtraTitle ($tmdbExtraKey) :: ERROR :: Download Failed"
continue
fi
if python3 /usr/local/sma/manual.py --config "/sma.ini" -i "$finalPath/$finalFileName.mkv" -nt & /dev/null; then
sleep 0.01
log "$itemTitle :: $i of $tmdbVideosListDataIdsCount :: $tmdbExtraType :: $tmdbExtraTitle :: Processed with SMA..."
rm /usr/local/sma/config/*log*
else
log "$itemTitle :: $i of $tmdbVideosListDataIdsCount :: $tmdbExtraType :: $tmdbExtraTitle :: ERROR :: SMA Processing Error"
rm "$finalPath/$finalFileName.mkv"
log "$itemTitle :: $i of $tmdbVideosListDataIdsCount :: $tmdbExtraType :: $tmdbExtraTitle :: INFO: deleted: $finalPath/$finalFileName.mkv"
fi
updatePlex="true"
if [ "$extrasSingle" == "true" ]; then
log "$itemTitle :: $i of $tmdbVideosListDataIdsCount :: $tmdbExtraType :: Finished processing single trailer download"
break
fi
done
if python3 /usr/local/sma/manual.py --config "/sma.ini" -i "$finalPath/$tmdbExtraTitleClean.mkv" -nt &>/dev/null; then
sleep 0.01
log "$itemTitle :: $i of $tmdbVideosListDataIdsCount :: $tmdbExtraType :: $tmdbExtraTitle :: Processed with SMA..."
rm /usr/local/sma/config/*log*
else
log "$itemTitle :: $i of $tmdbVideosListDataIdsCount :: $tmdbExtraType :: $tmdbExtraTitle :: ERROR :: SMA Processing Error"
rm "$finalPath/$tmdbExtraTitleClean.mkv"
log "$itemTitle :: $i of $tmdbVideosListDataIdsCount :: $tmdbExtraType :: $tmdbExtraTitle :: INFO: deleted: $finalPath/$tmdbExtraTitleClean.mkv"
fi
done done
# Process item with PlexNotify.bash if plexToken is configured # Process item with PlexNotify.bash if plexToken is configured
if [ ! -z "$plexToken" ]; then if [ ! -z "$plexToken" ]; then
log "Using PlexNotify.bash to update Plex...." # Always update plex if extra is downloaded
bash /config/extended/scripts/PlexNotify.bash "$itemPath" if [ "$updatePlex" == "true" ]; then
log "Using PlexNotify.bash to update Plex...."
bash /config/extended/scripts/PlexNotify.bash "$itemPath"
exit
fi
# Do not notify plex if this script was triggered by the AutoExtras.bash and no Extras were downloaded
if [ "$autoScan" == "true" ]; then
log "Skipping plex notification, not needed...."
exit
else
log "Using PlexNotify.bash to update Plex...."
bash /config/extended/scripts/PlexNotify.bash "$itemPath"
exit
fi
fi fi
exit exit

Loading…
Cancel
Save