81 lines
1.4 KiB
Plaintext
81 lines
1.4 KiB
Plaintext
|
#!/bin/bash
|
||
|
|
||
|
#pvid: streamlink wrapper
|
||
|
|
||
|
print_help() {
|
||
|
echo "A streamlink wrapper"
|
||
|
echo ""
|
||
|
echo "Usage: emp [options] url"
|
||
|
echo ""
|
||
|
echo "Options:"
|
||
|
echo " -h, --help Print this help text"
|
||
|
echo " -b, --bg Play the video on the root window"
|
||
|
echo " -a, --audio Play only the audio"
|
||
|
echo ""
|
||
|
exit 0
|
||
|
}
|
||
|
|
||
|
short_args=hba
|
||
|
long_args=help,bg,audio
|
||
|
|
||
|
# default
|
||
|
default_stream="best"
|
||
|
mpv_cmd="mpv"
|
||
|
player_args="--wid="$(xdotool getactivewindow)""
|
||
|
streamlink_args="--retry-stream 30"
|
||
|
|
||
|
# Parse arguments
|
||
|
parsed_args=$(getopt --options $short_args --longoptions $long_args --name "$0" -- "$@")
|
||
|
if [[ $? -ne 0 ]]; then
|
||
|
echo "Failed to parse arguments"
|
||
|
exit 2
|
||
|
fi
|
||
|
eval set -- "$parsed_args"
|
||
|
while true; do
|
||
|
case "$1" in
|
||
|
-h|--help)
|
||
|
print_help
|
||
|
;;
|
||
|
-b|--bg)
|
||
|
a=y
|
||
|
streamlink_args="$streamlink_args --quiet"
|
||
|
mpv_cmd="xwinwrap -ov -fs -- mpv"
|
||
|
player_args="--no-osc --wid WID"
|
||
|
shift
|
||
|
;;
|
||
|
-a|--audio)
|
||
|
a=y
|
||
|
streamlink_args="$streamlink_args --quiet"
|
||
|
player_args="--no-video"
|
||
|
shift
|
||
|
;;
|
||
|
--)
|
||
|
shift
|
||
|
break
|
||
|
;;
|
||
|
*)
|
||
|
#the following args will be passed to streamlink
|
||
|
break
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
if [[ -z "$@" ]]; then
|
||
|
print_help
|
||
|
fi
|
||
|
|
||
|
streamlink \
|
||
|
$streamlink_args \
|
||
|
--default-stream "$default_stream" \
|
||
|
--player="$mpv_cmd" \
|
||
|
--player-args "$player_args -- {filename}" \
|
||
|
$@ &
|
||
|
|
||
|
if [[ -n "$a" ]]; then
|
||
|
cava
|
||
|
fi
|
||
|
|
||
|
wait
|
||
|
exit $?
|
||
|
|