165 lines
4.1 KiB
Bash
Executable File
165 lines
4.1 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
## hyphop ##
|
|
|
|
## MIT License
|
|
# https://github.com/hyphop/opus123.git
|
|
|
|
# AI-Radio.org opus streams tested
|
|
|
|
help(){
|
|
echo "
|
|
opus123 - command-line Opus codec radio player (like ogg123 or mpg123)
|
|
Listen internet radio station + display meta tags for songs
|
|
|
|
USAGE
|
|
|
|
opus123 [url|-shotcut] [dev]
|
|
|
|
EXAMPLE
|
|
opus123 http://ai-radio.org
|
|
opus123 http://ai-radio.org/128.opus default
|
|
opus123 http://ai-radio.org/320.opus plughw:CARD=DragonFly,DEV=0
|
|
opus123 -airadio
|
|
opus123 - null
|
|
AUDIODEV=plughw:CARD=HDMI,DEV=7 opus123
|
|
opus123 --show-config
|
|
wget https://ai-radio.org/get/opus123 -O- | sh -
|
|
|
|
DOWNLOAD
|
|
wget http://ai-radio.org/get/opus123
|
|
wget https://raw.githubusercontent.com/hyphop/opus123/master/opus123
|
|
|
|
INSTALL
|
|
chhmod 0755 opus123
|
|
|
|
CONFIG FILES
|
|
/etc/opus123.conf - system config
|
|
~/.opus123rc - user config
|
|
|
|
#audio_dev=default
|
|
#audio_out=
|
|
#audio_out=sox --rate 48000 -q -t raw -e signed -b 16 -c 2 - -t alsa
|
|
#reconnect_auto=1
|
|
#stream_default=http://ai-radio.org/64.opus
|
|
#stream_1=http://ai-radio.org/128.opus
|
|
#stream_2=http://ai-radio.org/64.opus
|
|
#stream_3=http://ai-radio.org/320.opus
|
|
#stream_n=URL
|
|
#stream_airadio=http://ai-radio.org/128.opus
|
|
|
|
Add shotcut example
|
|
|
|
echo stream_default=http://ai-radio.org/64.opus >> ~/.opus123rc
|
|
echo stream_airadio=http://ai-radio.org/64.opus >> ~/.opus123rc
|
|
|
|
LINKS
|
|
|
|
* https://github.com/hyphop/opus123.git
|
|
* http://ai-radio.org/chronos/2015-06-08-opus123-command-line-radio-player
|
|
|
|
"
|
|
}
|
|
note(){
|
|
echo " NOTICE!
|
|
$1 - required installed $2 package $3"
|
|
}
|
|
check(){
|
|
command -v $1 >/dev/null 2>&1 && return 1
|
|
return 0
|
|
}
|
|
|
|
|
|
[ "$1" = "--help" ] && help && exit
|
|
|
|
src=$1
|
|
|
|
decoder="opusdec --force-wav - -"
|
|
check opusdec && help && note opus-tools https://www.opus-codec.org/downloads/ && exit
|
|
|
|
LADSPA_PATH=/usr/lib/ladspa/
|
|
|
|
filter_sox=""
|
|
|
|
dev=$2
|
|
|
|
AUDIODEV=${AUDIODEV:-$dev}
|
|
LADSPA_PATH=${LADSPA_PATH:-/usr/lib/ladspa/}
|
|
conf=/etc/opus123.conf
|
|
store_user=~/.opus123rc
|
|
|
|
[ -f $conf ] && . $conf
|
|
[ -f $store_user ] && . $store_user
|
|
|
|
[ "$stream_default" = "" ] && {
|
|
echo "[i] write default user config $store_user" 2>&1 ;
|
|
echo "# default user config
|
|
#audio_dev=alsa_pcm_name
|
|
#audio_dev=default
|
|
reconnect_auto=1
|
|
stream_default=http://ai-radio.org/128.opus
|
|
stream_airadio=http://ai-radio.org/128.opus
|
|
stream_mid=http://ai-radio.org/128.opus
|
|
stream_hi=http://ai-radio.org/320.opus
|
|
stream_low=http://ai-radio.org/64.opus
|
|
" >> $store_user
|
|
|
|
[ -f $store_user ] && . $store_user
|
|
|
|
}
|
|
|
|
[ "$1" = "--show-config" ] && {
|
|
[ -f $conf ] && echo "== $conf" && cat $conf
|
|
[ -f $store_user ] && echo "== $store_user" && cat $store_user
|
|
exit 0
|
|
}
|
|
|
|
[ "$src" = "-list" ] && { grep stream_ $store_user; exit 0 ; }
|
|
#[ "$src" = "-conf" ] && { cat $store_user; exit 0; }
|
|
|
|
shotcut=${src#-}
|
|
[ "$shotcut" != "$src" ] && eval src=\$stream_$shotcut
|
|
|
|
[ "$src" = "" ] && { src=$stream_default;
|
|
[ "$src" ] && echo "use default stream $stream_default"; }
|
|
|
|
[ "$dev" = "" ] && dev=$audio_dev
|
|
[ "$dev" = "" ] && dev="default"
|
|
|
|
AUDIODEV=${AUDIODEV:-$dev}
|
|
dev=$AUDIODEV
|
|
export AUDIODEV=$AUDIODEV
|
|
|
|
[ "$get" = "" ] && { check curl || get="curl -k -A opus123/curl -sLN"; }
|
|
[ "$get" = "" ] && { check wget || get="wget -U opus123/wget -qO-"; }
|
|
[ "$get" = "" ] && help && note curl curl or && note wget wget && exit
|
|
|
|
[ "$audio_out" = "" ] || out=$audio_out
|
|
[ "$out" = "" ] && { check aplay || out="aplay -q -D $dev"; }
|
|
[ "$out" = "" ] && { check play || out="play -q -";
|
|
#out="play --rate 48000 -q -t raw -e signed -b 16 -c 2 - $filter_sox";
|
|
}
|
|
[ "$out" = "" ] && help && note aplay alsa-utils or && note play sox && exit
|
|
|
|
[ "$src" = "" ] && help && exit
|
|
|
|
echo "connection to $src / $get / $audio_filter / $out"
|
|
try=1
|
|
|
|
|
|
while [ "1" ]; do
|
|
|
|
echo "$get \"$src\" | $decoder | $audio_filter | $out"
|
|
|
|
[ "$audio_filter" = "" ] || \
|
|
$get "$src" | $decoder | $audio_filter | $out
|
|
[ "$audio_filter" = "" ] && \
|
|
$get "$src" | $decoder | $out
|
|
|
|
[ "$reconnect_auto" ] || exit 0;
|
|
echo "reconnect $try"
|
|
try=$((try+1))
|
|
sleep 1
|
|
done
|
|
|