peerflix-deadbeef/peerflix-deadbeef
Evgeny Zinoviev bdc3aceb92 multiple improvements + license
- use RANDOM to generate port number
- support macOS
- check that all required binaries are in $PATH
- support wget if curl is not available
- added license
2019-12-23 00:25:40 +03:00

71 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
error() {
echo "error: $@"
exit 1
}
installed() {
command -v "$1" > /dev/null
return $?
}
get_deadbeef() {
if [[ "$OSTYPE" == "darwin"* ]]; then
echo "/Applications/DeaDBeeF.app/Contents/MacOS/DeaDBeeF"
else
echo deadbeef
fi
}
download() {
local source="$1"
local target="$2"
if installed curl; then
curl -o "$target" "$source"
elif installed wget; then
wget -O "$target" "$source"
fi
}
usage() {
echo "$NAME v$VERSION"
echo
echo "usage: $NAME <magnet or torrent>"
exit
}
mktemp_m3u() {
echo $(mktemp $TMPDIR/$(uuidgen).m3u)
}
VERSION="0.2"
NAME="peerflix-deadbeef"
DEADBEEF="$(get_deadbeef)"
[ -z "$1" ] && usage
installed "$DEADBEEF" || error "$DEADBEEF is not found"
installed peerflix || error "peerflix is not found in PATH"
installed curl || installed wget || error "curl or wget is required"
if [[ "$1" == "--ready" ]]; then
host="$2"
port="$3"
file=$(mktemp_m3u)
url="http://$host:$port/.m3u"
usleep 100000
download "$url" "$file"
$DEADBEEF "$file" &
sleep 3
rm "$file"
else
host="127.0.0.1"
port=$(( ( RANDOM % 10000 ) + 10000 ))
peerflix "$1" -ardh $host -p $port --on-listening "$0 --ready $host $port"
fi