#!/bin/bash # bash script to play files from a slow network ressource using mpv # caches the file in /tmp and moves to $ARCHIV # -y to skip verification # export global variable $ARCHIV # set the exit code right for quitting # echo "q quit 255" >> ~/.mpv/input.conf if [ "$1" = "-y" ] || [ "$1" = "y" ] || [ "$1" = "Y" ] || [ "$1" = "-Y" ]; then verify="yes" shift else verify=0 fi player[0]=$(command -v mpv) #media player of choice player[1]=$(command -v mplayer) player[2]=$(command -v vlc) #you shouldn't use vlc for i in "${player[@]}"; do if [ ! $i = "" ]; then player=$i break fi done if [ ! $player ]; then echo "No media player found. Please edit this script manually. I recommend the mpv. http://mpv.io" exit 1 fi file="$@" if [ ! -d $ARCHIV ]; then echo "Note: Variable \$ARCHIV couldn't be found. It will play the file fine, but you should consider to organize your collection." read -p "You can export it temporarily. If you do, just type the path to the folder (without the trailing slash!), if you don't, leave it empty. " path if [ $path ] && [ -d $path ] && [ -w $path ]; then export ARCHIV=$path echo "Roger that!" fi fi if [ -d /tmp ] && [ -w /tmp ]; then tmp="/tmp" cp "$file" /tmp & else read -p "Please name the directory (without the trailing slash!) to cache the file: " tmp if [ -d $tmp ] && [ -w $tmp ]; then cp "$file" "$tmp" & else echo "Directory doesn't exist or you don't have write permission." exit 1 fi fi echo -n "Preparing the awesome! Starting playback in.." echo -n " 2" sleep 1 echo -n " 1" sleep 1 echo " Start!" $player $tmp/"$file" if [ $? -eq 0 ]; then if [ -d $ARCHIV ] && [ -w $ARCHIV ]; then echo "Finished $file succesfull." if [ $verify -eq 0 ]; then read -p "Should we move everything to the Archiv? ($ARCHIV) [Y/n/rm/other] " verify fi if [ ! $verify ] || [ $verify = "ja" ] || [ $verify = "yes" ] || [ $verify = "j" ] || [ $verify = "y" ] || [ $verify = "Y" ]; then echo "Moving the stuff to $ARCHIV." mv -v $tmp/"$file" "$ARCHIV" if [ $? -eq 0 ]; then rm -v "$file" fi elif [ $verify = "other" ] || [ $verify = "o" ] || [ $verify = "O" ] || [ $verify = "OTHER" ]; then read -p "Please tell us the absolute path: " path if [ -d $path ] && [ -w $path ]; then echo "Moving to $path." mv -v $tmp/"$file" "$path" if [ $? -eq 0 ]; then rm -v "$file" fi else echo "Sorry, \"$path\" doesn't exist." exit 1 fi elif [ $verify = "r" ] || [ $verify = "rm" ] || [ $verify = "remove" ] || [ $verify = "RM" ] || [ $verify = "R" ]; then echo "Cleaning the mess up. Only removing files from $tmp." rm -v $tmp/"$file" else echo "Okay, don't touching the files." fi else echo "Can't move to \"$ARCHIV\". Directory doesn't exist or you don't have write permission." exit 1 fi else echo "Something is broken with the media player!" exit 1 fi echo "Have a nice day!"