
- 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
71 lines
1.3 KiB
Bash
Executable File
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
|