84 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
## Set color
Red="\e[31m"
Green="\e[32m"
Yellow="\e[33m"
NoColor="\e[0m"
## help
Usage(){
echo "$(basename "${0}") [mp4 file path]"
exit
}
Action () {
echo -ne "$1 : "
shift
ResStdout=$("${@}" 2> /dev/null)
Res=$?
if [[ ${Res} -eq 0 ]]
then
echo -e "[${Green}OK${NoColor}] ${ResStdout}"
else
if [[ ${Res} -eq 255 ]]
then
echo -e "[${Yellow}N/A${NoColor}] ${ResStdout}"
else
echo -e "[${Red}Failed${NoColor}] ${ResStdout}"
exit
fi
fi
}
CheckFile() {
Return=0
[[ ! -e ${File} ]] && ((Return++))
file "${File}"| grep -q "MP4"
Res=${?}
[[ ${Res} -ne 0 ]] && ((Return++))
return "${Return}"
}
CreateEnv() {
if [[ ! -d "${BaseDir}" ]]
then
mkdir -p "${BaseDir}"
Return=$?
else
Return=1
echo " - Directory \"${BaseDir}\" exist"
fi
return "${Return}"
}
Generate() {
ffmpeg -i "${File}" -pix_fmt bgr8 "${BaseDir}"/"${BaseName}"_%04d.bmp &> /dev/null
Res=${?}
if [[ "${Res}" -eq 0 ]]
then
Return=0
echo "- $(find "${BaseDir}" -name "*.bmp" | wc -l) Files generated"
else
Return=1
rm -Rf "${BaseDir}"
echo " - FFmpeg FAILED - ${BaseDir} deleted"
fi
return ${Return}
}
[[ -z $1 ]] && Usage
# Env
File=$(realpath "${1}")
BaseName=$(basename "${1}" | sed 's/\.mp4$//g')
BaseDir="$(xdg-user-dir PICTURES)/dwm-anime-wallpaper/${BaseName}"
# Main
Action "Check File" CheckFile
Action "Create Env" CreateEnv
Action "Generate bmp files" Generate