#!/bin/sh TMP="${HOME}/.local/tmp" KEY=$(( $$ )) FIFO="${TMP}/${KEY}.fifo" _OPT="${TMP}/${KEY}.opt" _URL="${TMP}/${KEY}.url" _F="$( cat <<'EOF' video_data() { if [ -n "${1}" ]; then TITLE="$( yt-dlp --no-warnings --get-title "${1}" )" RESOLUTIONS="$( \ yt-dlp --no-warnings --list-formats "${1}" | \ grep -v "audio" | \ awk '$2=="mp4" {print $3}' | uniq | \ awk -F'x' 'ORS="p" {print "!"$2}' | \ cut -c 2- \ )" echo "${TITLE}" >"${FIFO}" echo "${RESOLUTIONS}" >"${FIFO}" echo "" >"${FIFO}" echo "" >"${FIFO}" echo "" >"${FIFO}" else echo "Empty" >"${FIFO}" echo "" >"${FIFO}" echo "" >"${FIFO}" echo "" >"${FIFO}" echo "" >"${FIFO}" fi } EOF )" export FIFO export _F mkfifo "${FIFO}" ( yad --plug="${KEY}" --tabnum=2 --form \ --cycle-read \ --separator=";" \ --field="Title::RO" \ --field="Resolution::CB" \ --field="On-Top:CHK" \ --field="Without borders:CHK" \ --field="On all workspaces:CHK" <"${FIFO}" | cut -d';' -f2-) >"${_OPT}" & exec 3> "${FIFO}" printf "\n\n\n\n\n" >"${FIFO}" ( yad --use-interp="/bin/sh -c '%s'" \ --plug="${KEY}" --tabnum=1 \ --image="youtube" --text="Type the URL of the video" \ --separator=";" \ --form --columns=1 \ --field="Video URL:" \ --field='Get info!gtk-find!:FBTN' \ "" 'eval "${_F}";video_data "%1"' | cut -d';' -f1 ) >"${_URL}" & yad --paned --key="${KEY}" \ --tab="" --tab="Info" \ --window-icon="youtube" \ --title="yt-dlp GUI for mpv" \ --geometry=480x320 --center URL="$( cat "${_URL}" )" RES="$( cat "${_OPT}" | cut -d';' -f1 | sed 's/.$//' )" OPTS="--no-terminal" for i in $( seq 2 4 ); do if [ "$( cat ${_OPT} | cut -d';' -f${i} )" == "TRUE" ]; then case ${i} in 2) OPTS="${OPTS} --ontop" ;; 3) OPTS="${OPTS} --no-border" ;; 4) OPTS="${OPTS} --on-all-workspaces" ;; esac else fi done if [ -n "${URL}" ]; then mpv ${OPTS} --ytdl-format="bv*[height<=${RES}]+ba/b[height<=${RES}] / wv*+ba/w" "${URL}" & fi rm -f "${FIFO}" "${_OPT}" "${_URL}"