mpv
1 #!/bin/sh 2 3 # AM INSTALL SCRIPT VERSION 3.5 4 APP=mpv 5 SITE1="pkgforge-dev/mpv-AppImage" 6 SITE2="ivan-hc/MPV-appimage" 7 8 # CREATE DIRECTORIES AND ADD REMOVER 9 [ -n "$APP" ] && mkdir -p "/opt/$APP/tmp" "/opt/$APP/icons" && cd "/opt/$APP/tmp" || exit 1 10 printf "#!/bin/sh\nrm -f /usr/local/bin/$APP\nrm -R -f /opt/$APP" > ../remove 11 printf '\n%s' "rm -f /usr/local/share/applications/$APP-AM.desktop" >> ../remove 12 chmod a+x ../remove || exit 1 13 14 # CHOOSE A VERSION 15 read -r -p " 16 Choose which version of mpv AppImage to use: 17 18 1. mpv AppImage built with all dependencies, makes it able to work on 19 any linux system, even musl ones. 20 21 Source: https://github.com/pkgforge-dev/mpv-AppImage 22 23 2. mpv Archimage, this AppImage is made on top of JuNest (Archlinux). 24 25 Source: https://github.com/ivan-hc/MPV-appimage 26 27 Which version you choose (type a number and press ENTER)?" response 28 case "$response" in 29 1) rm -f /opt/"$APP"/version 30 UPDATER=1 31 version=$(curl -Ls https://api.github.com/repos/"$SITE1"/releases | sed 's/[()",{} ]/\n/g' | grep -io 'https.*mpv.*86_64.*mage$' | head -1) 32 wget "$version" 33 echo "$version" >> /opt/$APP/version;; 34 2) rm -f /opt/"$APP"/version 35 version=$(curl -Ls https://api.github.com/repos/"$SITE2"/releases | sed 's/[()",{} ]/\n/g' | grep -io 'https.*continuous.*mpv.*86_64.*mage$' | head -1) 36 UPDATER=2 37 wget "$version" 38 echo "$version" >> /opt/$APP/version;; 39 *) /opt/"$APP"/remove && exit;; 40 esac 41 cd .. 42 mv ./tmp/*mage ./"$APP" 43 rm -R -f ./tmp || exit 1 44 chmod a+x ./"$APP" || exit 1 45 46 # LINK 47 ln -s "/opt/$APP/$APP" "/usr/local/bin/$APP" 48 49 # SCRIPT TO UPDATE THE PROGRAM 50 cat >> ./AM-updater << 'EOF' 51 #!/bin/sh 52 set -u 53 APP=mpv 54 if [ -z "$APP" ]; then exit 1; fi 55 version0=$(cat "/opt/$APP/version") 56 version=$(curl -Ls https://api.github.com/repos/$SITE/releases | sed 's/[()",{} ]/\n/g' | grep -io 'https.*mpv.*86_64.*mage$' | head -1) 57 [ -n "$version" ] || { echo "Error getting link"; exit 1; } 58 if [ "$version" != "$version0" ]; then 59 notify-send "A new version of $APP is available, please wait" 60 mkdir "/opt/$APP/tmp" && cd "/opt/$APP/tmp" || exit 1 61 wget "$version" || exit 1 62 cd .. 63 mv --backup=t ./tmp/*mage ./"$APP" || exit 1 64 echo "$version" > ./version 65 rm -R -f ./tmp ./*~ 66 chmod a+x ./"$APP" || exit 1 67 notify-send "$APP is updated!" 68 else 69 echo "Update not needed!" 70 fi 71 EOF 72 if [ "$UPDATER" = "1" ]; then 73 sed -i 's#$SITE#pkgforge-dev/mpv-AppImage#g' /opt/"$APP"/AM-updater 74 elif [ "$UPDATER" = "2" ]; then 75 sed -i 's#$SITE#ivan-hc/MPV-appimage#g' /opt/"$APP"/AM-updater 76 fi 77 chmod a+x ./AM-updater || exit 1 78 79 # LAUNCHER & ICON 80 cd "/opt/$APP" || exit 1 81 ./"$APP" --appimage-extract *.desktop 1>/dev/null && mv ./squashfs-root/*.desktop ./"$APP".desktop 82 ./"$APP" --appimage-extract .DirIcon 1>/dev/null && mv ./squashfs-root/.DirIcon ./DirIcon 83 COUNT=0 84 while [ "$COUNT" -lt 10 ]; do # Tries to get the actual icon/desktop if it is a symlink to another symlink 85 if [ -L ./"$APP".desktop ]; then 86 LINKPATH=$(readlink ./"$APP".desktop) 87 ./"$APP" --appimage-extract "$LINKPATH" 1>/dev/null && mv ./squashfs-root/"$LINKPATH" ./"$APP".desktop 88 fi 89 if [ -L ./DirIcon ]; then 90 LINKPATH=$(readlink ./DirIcon) 91 ./"$APP" --appimage-extract "$LINKPATH" 1>/dev/null && mv ./squashfs-root/"$LINKPATH" ./DirIcon 92 fi 93 [ ! -L ./"$APP".desktop ] && [ ! -L ./DirIcon ] && break 94 COUNT=$((COUNT + 1)) 95 done 96 sed -i "s#Exec=[^ ]*#Exec=$APP#g; s#Icon=.*#Icon=/opt/$APP/icons/$APP#g" ./"$APP".desktop 97 mv ./"$APP".desktop /usr/local/share/applications/"$APP"-AM.desktop && mv ./DirIcon ./icons/"$APP" 1>/dev/null 98 rm -R -f ./squashfs-root