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