Rewrite code & up to version 2.0

This commit is contained in:
q3aql 2021-03-12 17:47:33 +01:00
parent c6034c7394
commit 03a69bcbae

View File

@ -1,42 +1,62 @@
#!/bin/bash #!/bin/bash
# Script to install FFmpeg on GNU/Linux ########################################################
# Website: https://www.johnvansickle.com/ffmpeg/ # Script to install FFmpeg on GNU/Linux #
# Created by q3aql (q3aql@protonmail.ch) # Website: https://www.johnvansickle.com/ffmpeg/ #
# Builds by John Van Sickle (john.vansickle@gmail.com) # Created by q3aql (q3aql@protonmail.ch) #
# Licensed by GPL v.2 # Builds by John Van Sickle (john.vansickle@gmail.com) #
# Date: 22-03-2019 # Licensed by GPL v2.0 #
# -------------------------------------- # Date: 12-03-2021 #
VERSION=1.2.1 ########################################################
VERSION="v2.0"
M_DATE="100321"
# Variables
URL=https://www.johnvansickle.com/ffmpeg/ URL=https://www.johnvansickle.com/ffmpeg/
URL_RELEASES=https://johnvansickle.com/ffmpeg/releases/ URL_RELEASES=https://johnvansickle.com/ffmpeg/releases/
URL_BUILDS=https://johnvansickle.com/ffmpeg/builds/ URL_BUILDS=https://johnvansickle.com/ffmpeg/builds/
TMP_DIR=/tmp TMP_DIR=/tmp
PATH_INSTALL=/usr/bin/ PATH_INSTALL=/usr/bin/
# Downloader
APP_DOWNLOAD="x"
NAME_APP_DOWNLOAD="x"
# Check if 'user' is 'root'
user=$(whoami)
if [ "$user" == "root" ] ; then
echo "OK" > /dev/null
else
echo "You must be root!"
exit 0
fi
# Detect "kernel" name # Function to check root permission
KERNEL=$(uname -s) function rootMessage() {
mkdir -p /etc/root &> /dev/null
administrator=$?
if [ ${administrator} -eq 0 ] ; then
rm -rf /etc/root
else
echo ""
echo "* ffmpeg-install ${VERSION} (${M_DATE}) (GPL v2.0)"
echo ""
echo "+ Root permissions are required!"
echo ""
exit
fi
}
if [ $KERNEL == "Linux" ]; then # Function to detect "kernel" name
function kernelCheck() {
KERNEL=$(uname -s)
if [ $KERNEL == "Linux" ]; then
KERNEL=linux KERNEL=linux
else else
echo "Unsupported OS ($KERNEL)" echo ""
exit 0 echo "* ffmpeg-install ${VERSION} (${M_DATE}) (GPL v2.0)"
fi echo ""
echo "+ Unsupported OS ($KERNEL)"
echo ""
exit
fi
}
# Detect "arch" system # Function to detect "arch" system.
archs=`uname -m` function archCheck() {
case "$archs" in archs=`uname -m`
case "$archs" in
i?86) i?86)
ARCH=i686 ARCH=i686
;; ;;
@ -44,127 +64,145 @@ case "$archs" in
ARCH=amd64 ARCH=amd64
;; ;;
*) *)
echo "Unsupported Arquitecture ($archs)" echo ""
exit 0 echo "* ffmpeg-install ${VERSION} (${M_DATE}) (GPL v2.0)"
esac echo ""
echo "+ Unsupported Arquitecture ($archs)"
echo ""
exit
esac
}
#Check if 'curl' is installed. # Function to check if 'curl' is installed.
curl --help > /dev/null function curlCheck () {
curl --help &> /dev/null
if [ "$?" -eq 0 ] ; then if [ "$?" -eq 0 ] ; then
echo "OK" > /dev/null echo "OK" > /dev/null
else else
echo "You must install 'curl'." echo ""
echo "* ffmpeg-install ${VERSION} (${M_DATE}) (GPL v2.0)"
echo ""
echo "+ Error: You must install 'curl'."
echo ""
exit
fi fi
}
# Check available downloaders (wget, axel or aria2c). # Function to check available downloaders (wget, axel or aria2c).
wget --help > /dev/null function checkDownloader() {
if [ "$?" -eq 0 ] ; then # Check wget installed
APP_DOWNLOAD='wget -c' wget --help &> /dev/null
NAME_APP_DOWNLOAD="wget" checkWget="$?"
else # Check axel installed
echo "wget disabled" axel --help &> /dev/null
fi checkAxel="$?"
# Check aria2c installed
axel --help > /dev/null aria2c --help &> /dev/null
if [ "$?" -eq 0 ] ; then checkAria2="$?"
APP_DOWNLOAD='axel' # Check variables
NAME_APP_DOWNLOAD="axel" if [ ${checkAria2} -eq 0 ] ; then
else
echo "axel disabled"
fi
aria2c --help > /dev/null
if [ "$?" -eq 0 ] ; then
APP_DOWNLOAD='aria2c --check-certificate=false' APP_DOWNLOAD='aria2c --check-certificate=false'
NAME_APP_DOWNLOAD="aria2c" NAME_APP_DOWNLOAD="aria2c"
else elif [ ${checkAxel} -eq 0 ] ; then
echo "aria2c disabled" APP_DOWNLOAD='axel'
NAME_APP_DOWNLOAD="axel"
elif [ ${checkWget} -eq 0 ] ; then
APP_DOWNLOAD='wget -c'
NAME_APP_DOWNLOAD="wget"
elif [ "x${APP_DOWNLOAD}" = "x" ] ; then
echo ""
echo "* ffmpeg-install ${VERSION} (${M_DATE}) (GPL v2.0)"
echo ""
echo "+ Error: You must install 'wget' or 'axel' or 'aria2'."
echo ""
exit
fi fi
}
if [ "x$APP_DOWNLOAD" = "x" ] ; then # Check all configs
echo "Error: You must install 'wget' or 'axel' or 'aria2'." rootMessage
fi kernelCheck
archCheck
#Install, update & uninstall FFmpeg curlCheck
case $1 in checkDownloader
# Sintax to install, update and uninstall FFmpeg.
case ${1} in
--install|-install|--update|-update) --install|-install|--update|-update)
cd $TMP_DIR cd ${TMP_DIR}
rm -rf ffmpeg-* rm -rf ffmpeg-*
if [ "$2" == "release" ] ; then echo ""
curl $URL | grep "$URL_RELEASES" | cut -d '"' -f 2 | grep "$ARCH" | head -1 > $TMP_DIR/ffmpeg-url echo "* ffmpeg-install ${VERSION} (${M_DATE}) (GPL v2.0)"
echo ""
if [ "${2}" == "release" ] ; then
curl ${URL} | grep "${URL_RELEASES}" | cut -d '"' -f 2 | grep "${ARCH}" | head -1 > $TMP_DIR/ffmpeg-url
if [ "$?" -eq 0 ] ; then if [ "$?" -eq 0 ] ; then
echo "OK" > /dev/null echo "OK" > /dev/null
else else
echo "Connection problem!" echo "+ Connection problem!"
echo "Exiting..." echo "* Exiting..."
exit exit
fi fi
else else
curl $URL | grep "$URL_BUILDS" | cut -d '"' -f 2 | grep "$ARCH" | head -1 > $TMP_DIR/ffmpeg-url curl ${URL} | grep "${URL_BUILDS}" | cut -d '"' -f 2 | grep "${ARCH}" | head -1 > $TMP_DIR/ffmpeg-url
if [ "$?" -eq 0 ] ; then if [ "$?" -eq 0 ] ; then
echo "OK" > /dev/null echo "OK" > /dev/null
else else
echo "Connection problem!" echo "+ Connection problem!"
echo "Exiting..." echo "* Exiting..."
exit exit
fi fi
fi fi
URL_PACKAGE=`cat $TMP_DIR/ffmpeg-url` URL_PACKAGE=`cat $TMP_DIR/ffmpeg-url`
NAME_PACKAGE=`cat /tmp/ffmpeg-url | cut -d "/" -f 6` NAME_PACKAGE=`cat /tmp/ffmpeg-url | cut -d "/" -f 6`
clear #clear
echo "Downloading $NAME_PACKAGE ($NAME_APP_DOWNLOAD)" echo "* Downloading ${NAME_PACKAGE} (${NAME_APP_DOWNLOAD})"
$APP_DOWNLOAD $URL_PACKAGE ${APP_DOWNLOAD} ${URL_PACKAGE}
if [ "$?" -eq 0 ] ; then if [ "$?" -eq 0 ] ; then
echo "OK" > /dev/null echo "OK" > /dev/null
else else
echo "Connection problem!" echo ""
echo "Exiting..." echo "+ Connection problem!"
echo "* Exiting..."
exit exit
fi fi
tar Jxvf $NAME_PACKAGE tar Jxvf ${NAME_PACKAGE}
rm -f ffmpeg-url ffmpeg*xz rm -f ffmpeg-url ffmpeg*xz
cd ffmpeg-* cd ffmpeg-*
cp -rf ffmpeg $PATH_INSTALL cp -rfv ffmpeg ${PATH_INSTALL}
cp -rf ffprobe $PATH_INSTALL cp -rfv ffprobe ${PATH_INSTALL}
cd .. cd ..
rm -rf ffmpeg-* rm -rf ffmpeg-*
echo "Done!" echo "* Finished!"
exit 0 exit
;; ;;
--uninstall|-uninstall) --uninstall|-uninstall)
echo "Uninstalling..." echo ""
echo "* ffmpeg-install ${VERSION} (${M_DATE}) (GPL v2.0)"
echo ""
echo "* Uninstalling FFmpeg..."
sleep 3 sleep 3
rm -rf /usr/bin/ffmpeg rm -rfv /usr/bin/ffmpeg
rm -rf /usr/bin/ffprobe rm -rfv /usr/bin/ffprobe
rm -rf /usr/bin/ffserver echo "* Finished!"
rm -rf /usr/bin/ffmpeg-10bit
echo "Done!"
;; ;;
--help|-help|-h|*) --help|-help|-h|*)
clear
echo "" echo ""
echo "** ffmpeg-install v.$VERSION **" echo "* ffmpeg-install ${VERSION} (${M_DATE}) (GPL v2.0)"
echo "" echo ""
echo "* How to install:" echo "* Script: q3aql (q3aql@protonmail.ch)"
echo "* Builds: John Van Sickle (john.vansickle@gmail.com)"
echo "" echo ""
echo " ffmpeg-install --install (Latest git version)" echo "+ Sintax:"
echo " ffmpeg-install --install release (Latest stable version)"
echo "" echo ""
echo "* How to update:" echo " $ ffmpeg-install --install --> Install FFmpeg (Git version)"
echo " $ ffmpeg-install --install release --> Install FFmpeg (Stable version)"
echo " $ ffmpeg-install --update --> Update FFmpeg (Git version)"
echo " $ ffmpeg-install --update release --> Update FFmpeg (Stable version)"
echo " $ ffmpeg-install --uninstall --> Uninstall FFmpeg previously installed"
echo " $ ffmpeg-install --help --> Show help"
echo "" echo ""
echo " ffmpeg-install --update (Latest git version)" exit
echo " ffmpeg-install --update release (Latest stable version)"
echo ""
echo "* How to uninstall:"
echo ""
echo " ffmpeg-install --uninstall"
echo ""
echo "* Show help:"
echo ""
echo " ffmpeg --help"
echo ""
exit 0
esac esac