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
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}"
|
|
|
|
|