A collection of scripts used to organize movie collections. Can be used together with Plex.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

156 lines
3.7 KiB

#!/bin/bash
skipfile () {
echo
echo "------------- FILE -------------"
echo -en '\t\t'
echo $1
echo "--------------------------------"
echo "Press n to skip"
echo "Press y to continue"
echo "Press x/q to exit the script"
read -n 1 -p "Input Selection:" "mainmenuinput"
echo
if [ "$mainmenuinput" = "n" ];then
skip=1
elif [ "$mainmenuinput" = "y" ];then
skip=0
elif [ "$mainmenuinput" = "x" ];then
exit
elif [ "$mainmenuinput" = "q" ];then
exit
else
echo "You have entered an invallid selection!"
echo "Please try again!"
echo ""
echo "Press any key to continue..."
read -n 1
clear
mainmenu
fi
}
mainmenu () {
#echo "-- $1"
basename=$1
directory=$2
extension=$3
newname=$4
echo "Press y to accept format"
#echo "Press e to accept and set extended"
#echo "Press t to accept and set theatrical"
echo "Press n to skip"
echo "Press x/q to exit the script"
read -n 1 -p "Input Selection:" "mainmenuinput"
echo
if [ "$mainmenuinput" = "y" ]; then
mv "$directory/$basename.$extension" "$directory/$newname.$extension"
#elif [ "$mainmenuinput" = "e" ]; then
# echo "extended"
#elif [ "$mainmenuinput" = "t" ]; then
# echo "theatrical"
elif [ "$mainmenuinput" = "n" ];then
echo "Skipping - $filename"
elif [ "$mainmenuinput" = "x" ];then
exit
elif [ "$mainmenuinput" = "q" ];then
exit
else
echo "You have entered an invallid selection!"
echo "Please try again!"
echo ""
echo "Press any key to continue..."
read -n 1
clear
mainmenu
fi
}
convertsecs() {
h=$(bc <<< "${1}/3600")
m=$(bc <<< "(${1}%3600)/60")
s=$(bc <<< "${1}%60")
printf "%02dh %02dm %02ds" $h $m $s
echo " - $(($h*60+$m))m"
}
path="../../Videos/Movies/"
list=""
IFS=$'\n'
for filex in "`find ../../Videos/Movies/[A-Z]* -maxdepth 1 -type f -regex '.*/.*\.\(m4v\|avi\|mkv\|mp4\)'`"; do
list=$filex
done
for file in $list; do
filename=$(echo -e `basename "$file"`)
bsn="${filename%.*}"
extension="${filename##*.}"
directory="${file%/*.*}"
skipfile "$filename"
if [[ $skip -eq 1 ]]; then
echo "Skipping - $filename"
skip=0
else
json=$(ffprobe -v quiet -print_format json -show_format -show_streams "$directory/$filename")
codexName=$(echo $json | jq -r '.streams[0].codec_name')
audioChannel=$(echo $json | jq -r '.streams[1].channel_layout')
audioCodec=$(echo $json | jq -r '.streams[1].codec_name')
resolutionW=$(echo $json | jq -r '.streams[0].width')
resolutionH=$(echo $json | jq -r '.streams[0].height')
duration=$(echo $json | jq -r '.format.duration')
resu=" "
if [[ $resolutionW -gt 1500 ]]; then
if [[ $resolutionW -gt 3000 ]]; then
resu="2160p"
fi
if [[ $resolutionW -lt 2000 ]]; then
resu="1080p"
fi
elif [[ $resolutionW -gt 1000 ]]; then
resu="720p"
elif [[ $resolutionW -gt 800 ]]; then
resu="480p"
elif [[ $resolutionW -gt 400 ]]; then
resu="DVD-360p"
elif [[ $resolutionW -gt 300 ]]; then
resu="240p"
fi
formats=("352 x 240" "480 x 360" "858 x 480" "1280 x 720" "1920 x 1080" "3860 x 2160")
resolutions=("240p" "DVD-360p" "480p" "720p" "1080p" "2160p")
echo
echo "------------ FORMAT ------------"
for i in {0..5}; do
if [ "$resu" = "${resolutions[$i]}" ];then
echo "${resolutions[$i]} = ${formats[$i]} ------> $resolutionW x $resolutionH"
else
echo "${resolutions[$i]} = ${formats[$i]}"
fi
done
newname=$(echo "$bsn - [$resu][$audioCodec $audioChannel][$codexName]")
echo "------------ INFO --------------"
echo -en '\t\t'
echo $directory
echo
echo -en '\t\t'
echo "[$resu][$audioCodec $audioChannel][$codexName]"
echo
echo -en '\t\t'
convertsecs "${duration%.*}"
echo
echo -en '\t\t'
echo "$newname.$extension"
echo "--------------------------------"
mainmenu "$bsn" "$directory" "$extension" "$newname"
fi
done
exit