Funny and useful scripts
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

88 lines
1.9 KiB

#!/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="<b>Type the URL of the video</b>" \
--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}"