handbrake_for_plex.sh
shellcheck.sh
This commit is contained in:
@@ -59,24 +59,26 @@ fi
|
||||
|
||||
logsize=$(wc -c <"$logfile")
|
||||
|
||||
if [ $logsize -ge 1000 ]; then
|
||||
if [ "$logsize" -ge 1000 ]; then
|
||||
cp "$logfile" "$logfile.old"
|
||||
truncate -s 0 "$logfile"
|
||||
fi
|
||||
|
||||
|
||||
#Move to trash after conversion
|
||||
trash=true
|
||||
|
||||
|
||||
command -v jq >/dev/null 2>&1 || { echo -e "${bold}93mhandbrake_for_plex${reset} require ${bold}jq${reset} but it's not installed.\nRun ${italic}(brew install jq)${reset}\nAborting..." >&2; exit 1; }
|
||||
command -v jq >/dev/null 2>&1 || {
|
||||
echo -e "${bold}93mhandbrake_for_plex${reset} require ${bold}jq${reset} but it's not installed.\nRun ${italic}(brew install jq)${reset}\nAborting..." >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
fzf_bin=0
|
||||
if (! type fzf > /dev/null 2>&1); then
|
||||
if (! type fzf >/dev/null 2>&1); then
|
||||
echo -e "Install ${bold}fzf${reset} for a better experience !"
|
||||
echo -e "${italic}brew install fzf${reset}"
|
||||
fzf_bin=0
|
||||
else {
|
||||
else
|
||||
{
|
||||
fzf_bin=1
|
||||
fzf_args=(
|
||||
--height=8
|
||||
@@ -150,19 +152,19 @@ update_handbrake() {
|
||||
|
||||
echo "Downloading $url"
|
||||
dest=$HOME/Downloads
|
||||
filename=$(basename $url)
|
||||
curl -L -O --output-dir $dest "$url"
|
||||
filename=$(basename "$url")
|
||||
curl -L -O --output-dir "$dest" "$url"
|
||||
|
||||
if [[ $? -eq 0 ]]; then
|
||||
|
||||
vol=$(hdiutil mount $dest/$filename | tail -1 | awk '{print $3}')
|
||||
vol=$(hdiutil mount "$dest"/"$filename" | tail -1 | awk '{print $3}')
|
||||
|
||||
app=$vol/HandBrakeCLI
|
||||
install_folder=$HOME/.local/bin/
|
||||
|
||||
if [ -f "$app" ]; then
|
||||
echo "Copying $filename to $install_folder"
|
||||
cp "$app" $install_folder
|
||||
cp "$app" "$install_folder"
|
||||
fi
|
||||
|
||||
x="$install_folder""HandBrakeCLI"
|
||||
@@ -175,8 +177,8 @@ update_handbrake() {
|
||||
fi
|
||||
fi
|
||||
|
||||
cd $HOME
|
||||
hdiutil unmount $vol
|
||||
cd "$HOME" || exit
|
||||
hdiutil unmount "$vol"
|
||||
|
||||
fi
|
||||
fi
|
||||
@@ -189,7 +191,7 @@ installation() {
|
||||
#long_path=`pwd`"/"`basename "$0"`
|
||||
long_path=$(realpath "$0")
|
||||
|
||||
echo -e "${bold}Installing "`basename "$0"`"${reset}"
|
||||
echo -e "${bold}Installing $(basename "$0")${reset}"
|
||||
echo
|
||||
|
||||
fzf_install_paths=("/usr/local/bin" "$HOME/.local/bin" "$HOME")
|
||||
@@ -225,8 +227,7 @@ installation() {
|
||||
notification() {
|
||||
#path_img=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||
|
||||
if [ "$3" -eq 0 ];
|
||||
then
|
||||
if [ "$3" -eq 0 ]; then
|
||||
sound="Glass"
|
||||
#image="$path_img/success.png"
|
||||
#image="$path_img/HandBrake.icns"
|
||||
@@ -247,60 +248,64 @@ notification() {
|
||||
|
||||
while getopts "h?i:o:p:z" opt; do
|
||||
case "$opt" in
|
||||
h|\?)
|
||||
h | \?)
|
||||
showHelp
|
||||
exit 0
|
||||
;;
|
||||
i) input_path="$OPTARG"
|
||||
i)
|
||||
input_path="$OPTARG"
|
||||
;;
|
||||
o) output_path="$OPTARG"
|
||||
o)
|
||||
output_path="$OPTARG"
|
||||
;;
|
||||
p) profile="$OPTARG"
|
||||
p)
|
||||
profile="$OPTARG"
|
||||
;;
|
||||
z) installation
|
||||
z)
|
||||
installation
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Reset OPTIND
|
||||
shift $((OPTIND-1))
|
||||
shift $((OPTIND - 1))
|
||||
|
||||
|
||||
|
||||
|
||||
Github="https://github.com/HandBrake/HandBrake"
|
||||
# Update handbrake_for_plex.sh from GitHub
|
||||
#Github="https://github.com/HandBrake/HandBrake"
|
||||
# Public Repo:
|
||||
#RawUrl="https://raw.githubusercontent.com/Bruno21/bashbirds/main/bashbirds.sh"
|
||||
# Private Repo:
|
||||
RawUrl="https://x-access-token:$GITHUB_TOKEN@raw.githubusercontent.com/HandBrake/HandBrake/main/bashbirds.sh"
|
||||
#RawUrl="https://x-access-token:$GITHUB_TOKEN@raw.githubusercontent.com/HandBrake/HandBrake/main/bashbirds.sh"
|
||||
|
||||
### Check if there's a new release of the script:
|
||||
LatestRelease="$(curl -s -r 0-50 $RawUrl | sed -n "/VERSION/s/VERSION=//p" | tr -d '"')"
|
||||
#LatestRelease="$(curl -s -r 0-50 $RawUrl | sed -n "/VERSION/s/VERSION=//p" | tr -d '"')"
|
||||
#LatestChanges="$(curl -s -r 0-2000 $RawUrl | sed -n "/ChangeNotes/s/# ChangeNotes: //p")"
|
||||
LatestChanges="$(curl -s -r 0-2000 $RawUrl | grep "^### ChangeNotes:" | sed 's/### ChangeNotes://g')"
|
||||
|
||||
#LatestChanges="$(curl -s -r 0-2000 $RawUrl | grep "^### ChangeNotes:" | sed 's/### ChangeNotes://g')"
|
||||
|
||||
###
|
||||
|
||||
echo "_ _ ____ _ _ ___ ___ ____ ____ _ _ ____ ____ ____ ____ ___ _ ____ _ _ ";
|
||||
echo "|__| |__| |\ | | \ |__] |__/ |__| |_/ |___ |___ | | |__/ |__] | |___ \/ ";
|
||||
echo "| | | | | \| |__/ |__] | \ | | | \_ |___ | |__| | \ | |___ |___ _/\_ ";
|
||||
echo " ";
|
||||
echo " ";
|
||||
echo " ";
|
||||
echo "_ _ ____ _ _ ___ ___ ____ ____ _ _ ____ ____ ____ ____ ___ _ ____ _ _ "
|
||||
echo "|__| |__| |\ | | \ |__] |__/ |__| |_/ |___ |___ | | |__/ |__] | |___ \/ "
|
||||
echo "| | | | | \| |__/ |__] | \ | | | \_ |___ | |__| | \ | |___ |___ _/\_ "
|
||||
echo " "
|
||||
echo " "
|
||||
echo " "
|
||||
|
||||
gh_hbc_repo="HandBrake/HandBrake"
|
||||
last_hbc_release=$(curl --silent "https://api.github.com/repos/${gh_hbc_repo}/releases/latest" | grep -Po "(?<=\"tag_name\": \").*(?=\")")
|
||||
|
||||
last_hbc_release="1.9.3"
|
||||
version_brew=$(ls /opt/homebrew/Cellar/handbrake 2>/dev/null)
|
||||
version_brew="1.9.1"
|
||||
cli=$(which HandBrakeCLI) # /Users/bruno/.local/bin/HandBrakeCLI
|
||||
version_cli=$("$cli" --version 2>/dev/null | awk '{print $2}') # HandBrake 1.9.2
|
||||
|
||||
#echo "$version_brew - $version_cli"
|
||||
|
||||
if [ "$version_brew" != "" ]; then
|
||||
if [ "$version_cli" != "" ]; then
|
||||
if [ "$(printf '%s\n' "$version_cli" "$version_brew" | sort -V | head -n1)" = "$version_cli" ]; then
|
||||
HANDBRAKE_CLI="/opt/homebrew/Cellar/handbrake/$version/bin/HandBrakeCLI"
|
||||
HANDBRAKE_CLI="/opt/homebrew/Cellar/handbrake/$version_brew/bin/HandBrakeCLI"
|
||||
HB_VERSION="$version_brew"
|
||||
else
|
||||
HANDBRAKE_CLI="$cli"
|
||||
@@ -310,7 +315,7 @@ if [ "$version_brew" != "" ]; then
|
||||
|
||||
fi
|
||||
else
|
||||
HANDBRAKE_CLI="/opt/homebrew/Cellar/handbrake/$version/bin/HandBrakeCLI"
|
||||
HANDBRAKE_CLI="/opt/homebrew/Cellar/handbrake/$version_brew/bin/HandBrakeCLI"
|
||||
HB_VERSION="$version_brew"
|
||||
fi
|
||||
else
|
||||
@@ -347,19 +352,17 @@ REGEX="([sS]([0-9]{2,}|[X]{2,})[eE]([0-9]{2,}|[Y]{2,}))"
|
||||
REGEX2=".[0-9]{4}" # année 2019 mais avec un caractère avant (chaine ne commence pas par 2019)
|
||||
|
||||
movies=()
|
||||
for FILE in "${SRC}"/**/*.{mkv,avi,mp4,m4v}
|
||||
do
|
||||
for FILE in "${SRC}"/**/*.{mkv,avi,mp4,m4v}; do
|
||||
# Get file size
|
||||
FILESIZE=$(stat -c%s "$FILE")
|
||||
|
||||
if (( FILESIZE > MAXSIZE )); then
|
||||
if ((FILESIZE > MAXSIZE)); then
|
||||
movies+=("${FILE}")
|
||||
fi
|
||||
done
|
||||
nb_movies=${#movies[@]}
|
||||
|
||||
for FILE in "${movies[@]}"
|
||||
do
|
||||
for FILE in "${movies[@]}"; do
|
||||
filename=$(basename "$FILE")
|
||||
#extension=${filename##*.}
|
||||
filename=${filename%.*}
|
||||
@@ -370,7 +373,7 @@ do
|
||||
declare -a lt=()
|
||||
declare -a dt=()
|
||||
|
||||
: <<'END_COMMENT'
|
||||
: <<'END_COMMENT'
|
||||
https://stackoverflow.com/questions/41231998/mediainfo-cli-command-line-interface-syntax-teaching-me-once-for-all
|
||||
media=$(mediainfo --Output=file:///$SCRIPT_DIR/template.txt "$FILE")
|
||||
l=$(echo "$media" | sed -n '1p')
|
||||
@@ -389,7 +392,7 @@ END_COMMENT
|
||||
# Remplace les . par des espaces
|
||||
e=$(echo "${filename%$MATCH*}" | sed 's/\./\ /g' | sed 's/^[[:blank:]]*//;s/[[:blank:]]*$//')
|
||||
# Capitalise chaque mot
|
||||
f=( $e )
|
||||
f=($e)
|
||||
g=${f[@]^}
|
||||
# Met en majuscule SxxExx
|
||||
new_name="$g - ${MATCH^^}.$DEST_EXT"
|
||||
@@ -409,8 +412,7 @@ END_COMMENT
|
||||
#continue
|
||||
fi
|
||||
|
||||
|
||||
if ! command -v mediainfo &> /dev/null; then
|
||||
if ! command -v mediainfo &>/dev/null; then
|
||||
echo -e "${bold}mediainfo${reset} could not be found !\n"
|
||||
echo -e "You should install ${bold}mediainfo${reset}:\n"
|
||||
echo -e " - brew install mediainfo"
|
||||
@@ -421,8 +423,7 @@ END_COMMENT
|
||||
|
||||
infos=$(mediainfo "$FILE" --output=JSON | jq '.media.track')
|
||||
|
||||
while read row
|
||||
do
|
||||
while read row; do
|
||||
type=$(echo "$row" | jq -r '.["@type"]')
|
||||
|
||||
if [[ "$type" == "General" ]]; then
|
||||
@@ -446,7 +447,7 @@ END_COMMENT
|
||||
|
||||
fmt=$(echo "$video" | jq -j '.Format | select( . != null )')
|
||||
|
||||
if [ $fmt != "JPEG" ]; then
|
||||
if [ "$fmt" != "JPEG" ]; then
|
||||
format_video=$(echo "$video" | jq -j '.Format | select( . != null )')
|
||||
format_profile=$(echo "$video" | jq -j '.Format_Profile | select( . != null )')
|
||||
format_level=$(echo "$video" | jq -j '.Format_Level | select( . != null )')
|
||||
@@ -489,7 +490,6 @@ END_COMMENT
|
||||
fi
|
||||
done < <(echo "$infos" | jq -c '.[]')
|
||||
|
||||
|
||||
# Menu
|
||||
|
||||
#menu=$(echo "$infos" | jq -j '.[] | .Menu' | sed '1d;$d')
|
||||
@@ -498,8 +498,7 @@ END_COMMENT
|
||||
|
||||
m=()
|
||||
n=1
|
||||
while IFS= read -r line
|
||||
do
|
||||
while IFS= read -r line; do
|
||||
# L'apparition
|
||||
# "_00_07_57_920": "en:00:07:57.920",
|
||||
|
||||
@@ -518,7 +517,6 @@ END_COMMENT
|
||||
# t: "_00_07_57_920"
|
||||
# c: "en:00:07:57.920",
|
||||
|
||||
|
||||
tt=$(echo "$t" | sed -n '1 s/"//gp' | xargs | sed 's/^_//' | sed 's/_/h/1' | sed 's/_/mm/1' | sed 's/_/s/1' | sed 's/s.*//')
|
||||
#cc=$(echo "$c" | tr -d '"' | xargs | awk -F ":" '{print $2}' | sed 's/,$//' | sed 's/^/ /')
|
||||
cc=$(echo "$c" | tr -d '"' | xargs | sed 's/,$//' | sed 's/^/ /' | xargs)
|
||||
@@ -530,9 +528,9 @@ END_COMMENT
|
||||
|
||||
#m+=("$n:$tt")
|
||||
m+=("$n:$cc ($tt)")
|
||||
((n=n+1))
|
||||
((n = n + 1))
|
||||
fi
|
||||
done <<< "$menus"
|
||||
done <<<"$menus"
|
||||
|
||||
((count++))
|
||||
echo -e "\n\n${bold}(${red}$count${reset}${bold} / $nb_movies) $filename${reset}"
|
||||
@@ -569,8 +567,7 @@ END_COMMENT
|
||||
|
||||
if [ "$nb_text" -ge 1 ]; then
|
||||
|
||||
for val in ${!ft[@]}
|
||||
do
|
||||
for val in "${!ft[@]}"; do
|
||||
index=${val}
|
||||
((index++))
|
||||
|
||||
@@ -583,11 +580,9 @@ END_COMMENT
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
if [ "$nb_menu" -ge 1 ]; then
|
||||
echo -e "\n${bold}Menu:${reset}"
|
||||
for elem in "${m[@]}";
|
||||
do
|
||||
for elem in "${m[@]}"; do
|
||||
#echo "${elem}"
|
||||
# en:00:07:57.920 : 00h07mm57
|
||||
|
||||
@@ -599,7 +594,6 @@ END_COMMENT
|
||||
|
||||
fi # if mediainfo installed
|
||||
|
||||
|
||||
file_export="$DEST"/"$new_name"
|
||||
|
||||
if [ ! -f "$file_export" ]; then
|
||||
@@ -612,20 +606,20 @@ END_COMMENT
|
||||
|
||||
if [ "$nb_text" -ge 1 ]; then
|
||||
echo -e "$z (with ${bold}${language_text}${reset} subtitle track)" # with fr-FR
|
||||
$HANDBRAKE_CLI -i "$FILE" -o "$file_export" "$PRESET" --subtitle-lang-list "$SUBTITLE_LIST" --all-subtitles 2>> $logfile
|
||||
$HANDBRAKE_CLI -i "$FILE" -o "$file_export" "$PRESET" --subtitle-lang-list "$SUBTITLE_LIST" --all-subtitles 2>>$logfile
|
||||
else
|
||||
echo -e "$z"
|
||||
$HANDBRAKE_CLI -i "$FILE" -o "$file_export" "$PRESET" 2>> $logfile
|
||||
$HANDBRAKE_CLI -i "$FILE" -o "$file_export" "$PRESET" 2>>$logfile
|
||||
fi
|
||||
result=$?
|
||||
|
||||
echo
|
||||
|
||||
result=$?
|
||||
if [ "$result" = 0 ]; then
|
||||
echo -e "${green}$new_name available in $DEST${reset}"
|
||||
notification "HandBrake for Plex" "$new_name available in $DEST" $result
|
||||
fi
|
||||
|
||||
|
||||
# Open DEST file in an app
|
||||
if [ "$APP" != "" ]; then
|
||||
if [[ $(command -v mdfind) == "" ]]; then
|
||||
@@ -633,7 +627,7 @@ END_COMMENT
|
||||
else
|
||||
#x=$(mdfind -name "$APP" kind:application)
|
||||
# /usr/bin/mdfind $@ 2> >(grep --invert-match ' \[UserQueryParser\] ' >&2)
|
||||
x=$(mdfind -name "$APP" kind:application 2> /dev/null)
|
||||
x=$(mdfind -name "$APP" kind:application 2>/dev/null)
|
||||
|
||||
if [ "$x" != "" ]; then
|
||||
if [ -f "$file_export" ]; then
|
||||
@@ -657,26 +651,23 @@ END_COMMENT
|
||||
gio trash "$FILE" >/dev/null
|
||||
fi
|
||||
|
||||
[ "$(echo "${parent_folder}/"*)" = "${parent_folder}/*" ] && rm -rf "${parent_folder}";
|
||||
[ "$(echo "${parent_folder}/"*)" = "${parent_folder}/*" ] && rm -rf "${parent_folder}"
|
||||
|
||||
echo ""
|
||||
|
||||
else
|
||||
echo -e "\n${green}$file_export already transcoded !${reset}\n"
|
||||
((already_transcoded+=1))
|
||||
((already_transcoded += 1))
|
||||
fi
|
||||
|
||||
|
||||
FILESIZE=
|
||||
|
||||
done
|
||||
|
||||
transcoded=$((count-already_transcoded))
|
||||
transcoded=$((count - already_transcoded))
|
||||
|
||||
if [ "$transcoded" -eq 0 ]; then
|
||||
echo -e "\n${red}No file to transcode !${reset}"
|
||||
else
|
||||
echo -e "\n${green}${transcoded} files successfully transcoded !${reset}"
|
||||
fi
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user