#!/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 } tempdir() { for TMPDIR in "$TMPDIR" "$TMP" /var/tmp /tmp; do test -d "$TMPDIR" && echo "$TMPDIR" && break done } 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 " exit } tempname() { echo $(tempdir)/$(uuidgen).m3u } VERSION="0.3" 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=$(tempname) 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