|  |  | @ -1,6 +1,8 @@ | 
			
		
	
		
		
			
				
					
					|  |  |  | #!/bin/sh |  |  |  | #!/bin/sh | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | PIPE="$XDG_CACHE_HOME/mpv/umpv_fifo" |  |  |  | # Depends: socat | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | SOCK="/tmp/umpv-fifo" | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | help() { |  |  |  | help() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	B=$(tput bold) |  |  |  | 	B=$(tput bold) | 
			
		
	
	
		
		
			
				
					|  |  | @ -35,10 +37,10 @@ ${B}OPTIONS${N} | 
			
		
	
		
		
			
				
					
					|  |  |  | EOF |  |  |  | EOF | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | CLIP="$(xclip -se c -o)" |  |  |  | CLIP="$(xclip -selection clipboard -out)" | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | play() { |  |  |  | play() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	MPV="mpv --ytdl-raw-options=external-downloader=aria2c" |  |  |  | 	MPV="mpv --ytdl-raw-options=add-metadata=,external-downloader=aria2c" | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	if [ -z "$1" ]; then |  |  |  | 	if [ -z "$1" ]; then | 
			
		
	
		
		
			
				
					
					|  |  |  | 		MPV="$MPV $CLIP" |  |  |  | 		MPV="$MPV $CLIP" | 
			
		
	
		
		
			
				
					
					|  |  |  | 		# Cut off everything after space |  |  |  | 		# Cut off everything after space | 
			
		
	
	
		
		
			
				
					|  |  | @ -59,22 +61,21 @@ play() { | 
			
		
	
		
		
			
				
					
					|  |  |  | shuffle() { |  |  |  | shuffle() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	# Skip first argument |  |  |  | 	# Skip first argument | 
			
		
	
		
		
			
				
					
					|  |  |  | 	shift 1 |  |  |  | 	shift 1 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	mpv --no-video --shuffle \ |  |  |  | 	setsid -f mpv --no-video --shuffle \ | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		   --ytdl-format='bestaudio[ext=m4a]' \ |  |  |  | 		   --ytdl-format='bestaudio[ext=m4a]' \ | 
			
		
	
		
		
			
				
					
					|  |  |  | 		--ytdl-raw-options='external-downloader=aria2c' \ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		   "${@:-$CLIP}" |  |  |  | 		   "${@:-$CLIP}" | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | queue() { |  |  |  | queue() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	OPTIONS="--no-terminal --force-window --input-file=$PIPE --ytdl-raw-options=external-downloader=aria2c" |  |  |  | 	OPTIONS="--no-terminal --force-window --input-ipc-server=$SOCK --" | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	# Create mpv cache directory |  |  |  | 	# Create mpv cache directory | 
			
		
	
		
		
			
				
					
					|  |  |  | 	DIR="$(dirname "$PIPE")" |  |  |  | 	DIR="$(dirname "$SOCK")" | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	[ ! -d "$DIR" ] && mkdir -p "$DIR" |  |  |  | 	[ ! -d "$DIR" ] && mkdir -p "$DIR" | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	# Delete named pipe if no umpv is running |  |  |  | 	# Delete socket if no umpv is running | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	if ! pgrep -f "mpv $OPTIONS" > /dev/null; then |  |  |  | 	if ! pgrep -f "mpv $OPTIONS" > /dev/null; then | 
			
		
	
		
		
			
				
					
					|  |  |  | 		rm -f "$PIPE" |  |  |  | 		rm -f "$SOCK" | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	fi |  |  |  | 	fi | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	# Skip first argument |  |  |  | 	# Skip first argument | 
			
		
	
	
		
		
			
				
					|  |  | @ -82,19 +83,16 @@ queue() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	# Set url to argument if provided, clipboard otherwise |  |  |  | 	# Set url to argument if provided, clipboard otherwise | 
			
		
	
		
		
			
				
					
					|  |  |  | 	URLS="${*:-$CLIP}" |  |  |  | 	URLS="${*:-$CLIP}" | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	if [ -p "$PIPE" ]; then |  |  |  | 	if [ -S "$SOCK" ]; then | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		notify-send -t 2500 "Added video to queue.." |  |  |  | 		notify-send -t 2500 "Added video to queue.." | 
			
		
	
		
		
			
				
					
					|  |  |  | 		# Add video to named pipe |  |  |  | 		# Add video to named pipe | 
			
		
	
		
		
			
				
					
					|  |  |  | 		echo "$URLS" \ |  |  |  | 		echo "$URLS" | awk -v RS=' ' '{ print "raw loadfile "$1" append" }' \ | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			| awk -v RS=' ' '{ print "raw loadfile "$1" append" }' > "$PIPE" |  |  |  | 			| socat UNIX-CONNECT:"$SOCK" - | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	else |  |  |  | 	else | 
			
		
	
		
		
			
				
					
					|  |  |  | 		# Create named pipe |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		mkfifo "$PIPE" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		# Play video |  |  |  | 		# Play video | 
			
		
	
		
		
			
				
					
					|  |  |  | 		play "$OPTIONS" "$URLS" |  |  |  | 		notify-send -t 2500 "Loading video: $URLS" | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 		# shellcheck disable=2086 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		rm -f "$PIPE" |  |  |  | 		setsid -f mpv $OPTIONS $URLS | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	fi |  |  |  | 	fi | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |