#!/bin/bash # Copyright (C) 2007–2013 Petr Písař # This is free software. You may redistribute copies of it under the terms of # the GNU General Public License . # There is NO WARRANTY, to the extent permitted by law. VERSION="20" ## CHANGELOG # # Version 20 # * kctv addedd # * tvb1 updated # * Update livestation helper # # Version 19 released # * Streams available from voyo.sk added (thanks to Pali Rohár, dajto-* do not # work for me, geographical restriction probably) # * markiza-h added (2-Mbps version of markiza) # # Version 18 released # * The media player is configurable now. Use /etc/televizerc or ~/.televizerc # to override default configuration. Syntax is described in usage output. # # Version 17 released # * markiza updated (thanks to Pali Rohár) # # Version 16 released # * Update ČT24 and ČT1 HTTP/H264 stream rates # # Version 15 released # * nhk-world-h updated # * jpopsuki updated # # Version 14 released # * Put back livestation helper removed by accident # # Version 13 released # * Fix Deutsche Welle stations # * Fix livestation helper # # Version 12 released # * Add Czech TV Apple formats (ct1-a*, ct2-a*, ct24-a*, ct4-a*) # * Fix ct4-h100 # # Version 11 released # * Add ဒီမိုကရေတစ်မြန်မာ့အသံ (dvb) # * Add Bloomber TV (bloomberg) # * Livestation streams readded: aljazeerar, aljazeeren, bbcworldnews # * Add Deagu MBC (mbc-daegu) # * Add Arirang daily news (arirang-news). This is not a live stream. # * Add Arirang Korea (arirang-korea) # * Add Arirang World (arirang-world) # * NHK World replaced with high bit-rate version as old URL has been defunct # * Add libyatv as livestation helper has been resurrected # # Version 10 released # * Readd Rustavi2 in two instances (rustavi2-1, rustavi2-2) # * Remove stv3 as operator ceased the channel # * Update Russia Today as 3 different bitrates (rustd-300, rustd-500, # rustd-1000) # * Remove publictv as owner ceased operation # * Update markiza # * Update ktv # * Add Hope TV streams in H264 (hopetv-100, hopetv-300, hopetv-600) # * Update Georgian Public Brodcasting TV (add 3 servers) # * Add Deutsche Welle TV Arabia (dwtv-arabia) # * Add Deutsche Welle TV Asia (dwtv-asia) # * Add Deutsche Welle TV Europe (dwtv-europe) # * Remove dwtven (English version of Deutsche Welle) # * Remove 3.5-Mbps Czech TV streams as they do not exist # * Update cctv4 # * Update belarus # * Update alsharq # * Update aliraq # * Update ocko # # Version 9 released # * Replace nasa stream with new NASA TV streams # (differ on special occasions only) # * Update ct1, ct2, ct4, ct24. They require external ctstream script. # # Version 8 released # * CT Windows Media and Real Media stream removed # * CT1 H264 streams added # * CT2 H264 streams added # * CT4 H264 streams added # * CT24 H264 streams added # * Remove z1 as owner ceased broadcasting # * nhk-world-l stream added (English dubbed NHK World) # * nckyo added # # Version 7 released # * Update Czech (state) TV helper because web pages have changed, migrate all # stations to ivysilani-helper() # * Remove Czech TV streams for gone olympic games # * Add tvziva # * Add gimi # * Update nasa URL # # Version 6 released # * Czech TV playlist extraction adjusted to accept IP address # * Winter Olympic Games brodcasted by Czech TV fixed # * Readded z1 and ocko as latest MPlayer (2010-02-13) supports RTMP streams # # Version 5 released # * ctzoh added # (only trial spot currently, company is going to offer 8 streams) # * lux added # * removed helperlivestaion() channels because they moved to RTMP # * psctv removed as free access has been terminated # # Version 4 released # * cropping fixed on ct4-rpal # * ct1-rl, ct4-rl, ct4-rh fixed # * ct1-rpal and ct2-rpal a has correct size now # (or mplayer/ffmpeg has been fixed), resizing video filters removed. # * Failure of helper-ct() handled properly # * quoting improved in helper-livestation() # # Version 3 released # * helper-ct() fixed to accept newly deployed CDN servers with up to three # digit serial number. Thanks to Radovan Drazny . # * Typos fixed # # Version 2 released # * Columns made wider. # * Al Jazeera in English (aljazeeren) and in Arabic (aljazeerar) added. # * Euronews in German (euronewsde) added. Stream is broken currently. # * Livestation streams started using simple token autorization. # * helper-livestream() added and given programs fixed. # # Version 1 released # See for some streams of # Czech stations. # Default values CACHE=2048 DIRECT_STREAM=1 PLAYER="mplayer" # Load configuration test -f /etc/televizerc && source /etc/televizerc test -f ~/.televizerc && source ~/.televizerc # Usage death message function help() { local FMT='%-10s %-16s %s\n' cat<
. Program je šířen BEZ JAKÉKOLI ZÁRUKY, jak jen zákon dovoluje. COPY exit 1; } # Adds TV to the list by stream URL function addtv() { I=$((${#PRGM[@]})) PRGM[$I]="$1" TITLE[$I]="$2" URL[$I]="$3" EXTRA[$I]="$4" } # Adds TV to the list by URL helper function. # The function will be executed and it must set stream URL into MYURL variable # and the function must terminate successfully. function caltv() { I=$((${#PRGM[@]})) PRGM[$I]="$1" TITLE[$I]="$2" HELPER[$I]="$3" EXTRA[$I]="$4" } # Adds TV to the list by streamer function. # The function will be executed and its standard output will be connected to # a media player. function strtv() { I=$((${#PRGM[@]})) PRGM[$I]="$1" TITLE[$I]="$2" STREAMER[$I]="$3" EXTRA[$I]="$4" } # Example caltv "ctzoh1" "ČT ZOH 1" "helper-ctzoh 1" function helper-ctzoh() { local URL local PLAYLIST URL="http://zoh.ct24.cz/links.asp?zoh${1}" PLAYLIST=$(wget -O - "$URL" | grep 'textarea' | \ grep -oE '[^>]*(ctdir|89\.221\.209\.9)[^<]*') if [ \( "$?" -gt 0 \) -o \( -z "$PLAYLIST" \) ]; then echo "Chyba: na stránce ${URL} není možné najít odkaz na seznam skladeb" return 1 fi # The tail and last grep is to skip advertisments preordered and # postordered to standard content # FIXME: Add it once the stream are up MYURL=$(wget -O - -U 'MPlayer (Fuck wget discrimination)' "$PLAYLIST" |\ grep -o -E '[^"]*(cdn[1-9]{1,3}\.nacevi\.cz|(ctwm|ctrm|stream.)\.visual\.cz)[^"]*' |\ grep -v '/upoutavky/'| tail -n 1) if [ \( "$?" -gt 0 \) -o \( -z "$MYURL" \) ]; then echo "Chyba: V seznamu skladeb ${PLAYLIST} není možné najít odkaz na proud" return 1 fi } # Not all bit-rates are advertised despite they are available. # Bitrate (kb) to picture lines mapping: # 100 144p2 # 200 144p1 # 500 288p # 1000 404p # 2000 576p # 3500 720p # Replace in rtmp://wcdn34.nacevi.cz:80/CT24?.../CT24-MP4_288p.stream function helper-ct-mapped() { if [ "$#" != 2 ]; then echo "$0: bad invocation" return 1 fi local CHANNEL="$1" local LINES="$2" helper-ct "$CHANNEL" 500 if [ $? -gt 0 ]; then echo "Chyba: pomocná funkce helper-ct ${CHANNEL} 500 selhala" return 1; fi MYURL="${MYURL//288p/${LINES}}" } function helper-ct() { if [ "$#" != 2 ]; then echo "$0: bad invocation" return 1 fi local CHANNEL="$1" local RATE="$2" local PAGE="http://www.ceskatelevize.cz/ivysilani/zive/${CHANNEL}/" # Advertisments can precede real stream MYURL=$(ctstream "$PAGE" "$RATE" |tail -n1) if [ -z "$MYURL" ]; then echo "Chyba: pomocný skript ctstream ${PAGE} ${RATE} selhal" return 1; fi } function streamer-ct() { if [ "$#" != 2 ]; then echo "$0: bad invocation" 1>&2 return 1 fi local CHANNEL="$1" local RATE="$2" local PAGE="http://www.ceskatelevize.cz/ivysilani/zive/${CHANNEL}/" ctstream -A -s "$PAGE" "$RATE" } # Return value of element from XML string function get_element() { local ELEMENT="$1" local TEXT="$2" echo "$TEXT" | grep -o "<${ELEMENT}>[^<]*" | \ sed 's/[^>]*>\([^<]*\).*/\1/' | sed 's/&/\&/g' } # Return value of JSON element from XML string function get_json_element() { local ELEMENT="$1" local TEXT="$2" echo "$TEXT" | sed "s/.*"${ELEMENT}":"\([^&]*\)".*/\1/" } function helper-dwelle() { if [ "$#" != 2 ]; then echo "$0: bad invocation" return 1 fi local NAME="$1" local RATE="$2" local STREAMER FILE SMIL SMIL=$(wget -O - "http://www.metafilegenerator.de/DWelle/${NAME}/flv/tv.smil") STREAMER=$(echo "$SMIL" | grep -o 'base="[^"]*"' | sed 's/[^"]*"\([^"]*\).*/\1/') FILE=$(echo "$SMIL" | grep "bandwidth=\"${RATE}\"" | grep -o 'src="[^"]*"' | sed 's/[^"]*"\([^"]*\).*/\1/') MYURL="${STREAMER}${FILE} live=1" } function helper-livestation() { if [ "$#" != 2 ]; then echo "$0: bad invocation" return 1 fi local CHANNEL="$1" local RATE="$2" local JSON STREAMER FILE PLAYER JSON=$(wget -O - "http://www.livestation.com/channels/${CHANNEL}" | \ grep -o 'data-flashvars="[^"]*"' | sed 's/[^"]*"\([^"]*\).*/\1/') STREAMER=$(get_json_element 'streamer' "$JSON") FILE=$(get_json_element 'file' "$JSON" | \ sed 's/\(_\)\([^_.]*\)\(\.sdp\)$/\1'"$RATE"'\3/') PLAYER=$(get_json_element 'src' "$JSON") MYURL="${STREAMER}${FILE} swfurl=${PLAYER}" } # Process argument as date(1) format string. Usefull to insert nowaday date function helper-injecttime() { if [ "$#" != 1 ]; then echo "$0: bad invocation" return 1 fi MYURL=$(date "+${1}") if [ "$?" -ne 0 ]; then echo "Could not format date: $1" return 1 fi } # URL template for Voyo service in Slovakia function helper-voyosk() { if [ "$#" != 1 ]; then echo "$0: bad invocation" return 1 fi MYURL="rtmp://195.168.10.68:1935/live/${1}.sdp live=1 pageUrl=http://voyo.markiza.sk/zive-vysielanie/?channel=${1}" } # TV programs definition addtv "aliraq" "Al-Iraqiya" "http://212.7.196.74:80/iraqia" caltv "aljazeerar" "الجزيرة" "helper-livestation 43 high" caltv "aljazeeren" "Al Jazeera English" "helper-livestation 3 high" # This works: rtmpdump -v -r rtmp://livestfslivefs.fplive.net/aljazeeraflashlive-live/aljazeera_en_veryhigh addtv "alsharq" "AlSharqiya TV" "rtmp://ns6.indexforce.com/live/mystream" addtv "althingi" "Althingi" "http://netvarp.althingi.is/beint" caltv "arirang-news" "Arirang daily news" "helper-injecttime mms://121.156.66.59/News_2200/2200News_300k_%F.asf" addtv "arirang-korea" "Arirang Korea" "mms://s1.arirang.co.kr/Korea_Live" addtv "arirang-world" "Arirang World" "mms://s1.arirang.co.kr/World_Live" addtv "aqape" "Aqape TV" "mms://wms.dominiocreativo.com/agapetv" caltv "bbcworldnews" "BBC World News" "helper-livestation 10-bbc-world-news-english high" caltv "bloomberg" "Bloomberg TV" "helper-livestation 2-bloomberg-television-english high" addtv "belarus" "Беларусь-ТВ" "mms://livecast.tvr.by/video" addtv "cctv4" "CCTV 4" "mms://4.71.37.8/cctv4-200" strtv "ct1-a500" "ČT1 HTTP/H264 500k" "streamer-ct ct1 500000" caltv "ct1-h500" "ČT1 RTMP/H264 500k" "helper-ct ct1 500" strtv "ct1-a1000" "ČT1 HTTP/H264 1M" "streamer-ct ct1 1000000" caltv "ct1-h1000" "ČT1 RTMP/H264 1M" "helper-ct ct1 1000" strtv "ct1-a2000" "ČT1 HTTP/H264 2M" "streamer-ct ct1 2000000" caltv "ct1-h2000" "ČT1 RTMP/H264 2M" "helper-ct ct1 2000" strtv "ct2-a500" "ČT2 HTTP/H264 500k" "streamer-ct ct2 500" caltv "ct2-h500" "ČT2 RTMP/H264 500k" "helper-ct ct2 500" strtv "ct2-a1000" "ČT2 HTTP/H264 1M" "streamer-ct ct2 1000" caltv "ct2-h1000" "ČT2 RTMP/H264 1M" "helper-ct ct2 1000" strtv "ct2-a2000" "ČT2 HTTP/H264 2M" "streamer-ct ct2 2000" caltv "ct2-h2000" "ČT2 RTMP/H264 2M" "helper-ct ct2 2000" caltv "ct24-h100" "ČT24 RTMP/H264 100k" "helper-ct-mapped ct24 144p2" caltv "ct24-h200" "ČT24 RTMP/H264 200k" "helper-ct-mapped ct24 144p1" strtv "ct24-a500" "ČT24 HTTP/H264 500k" "streamer-ct ct24 545000" caltv "ct24-h500" "ČT24 RTMP/H264 500k" "helper-ct ct24 500" strtv "ct24-a1000" "ČT24 HTTP/H264 1M" "streamer-ct ct24 1120000" caltv "ct24-h1000" "ČT24 RTMP/H264 1M" "helper-ct ct24 1000" strtv "ct24-a2000" "ČT24 HTTP/H264 2M" "streamer-ct ct24 2144000" caltv "ct24-h2000" "ČT24 RTMP/H264 2M" "helper-ct ct24 2000" caltv "ct4-h100" "ČT4 RTMP/H264 100k" "helper-ct-mapped ct4 144p2" strtv "ct4-a500" "ČT4 HTTP/H264 500k" "streamer-ct ct4 500000" caltv "ct4-h500" "ČT4 RTMP/H264 500k" "helper-ct ct4 500" strtv "ct4-a1000" "ČT4 HTTP/H264 1M" "streamer-ct ct4 1000000" caltv "ct4-h1000" "ČT4 RTMP/H264 1M" "helper-ct ct4 1000" strtv "ct4-a2000" "ČT4 HTTP/H264 1M" "streamer-ct ct4 2000000" caltv "ct4-h2000" "ČT4 RTMP/H264 2M" "helper-ct ct4 2000" caltv "dajto-l" "TV Dajto 1M" 'helper-voyosk dajto' caltv "dajto-h" "TV Dajto 2M" 'helper-voyosk dajtoHQ' caltv "dvb" "ဒီမိုကရေတစ်မြန်မာ့အသံ" "helper-livestation 66-democratic-voice-of-burma-burmese" caltv "doma-l" "TV Doma 1M" 'helper-voyosk doma' caltv "doma-h" "TV Doma 2M" 'helper-voyosk doma_HQ' caltv "dwtv-amerika-l" "Deutsche Welle TV Amerika 85 kb/s" "helper-dwelle tv-northamerica low" caltv "dwtv-amerika-m" "Deutsche Welle TV Amerika 500 kb/s" "helper-dwelle tv-northamerica medium" caltv "dwtv-arabia-l" "Deutsche Welle TV Arabia 85 kb/s" "helper-dwelle tv-arabia low" caltv "dwtv-arabia-m" "Deutsche Welle TV Arabia 500 kb/s" "helper-dwelle tv-arabia medium" caltv "dwtv-asia-l" "Deutsche Welle TV Asia 85 kb/s" "helper-dwelle tv-asia low" caltv "dwtv-asia-m" "Deutsche Welle TV Asia 500 kb/s" "helper-dwelle tv-asia medium" caltv "dwtv-europe-l" "Deutsche Welle TV Europe 85 kb/s" "helper-dwelle tv-europa low" caltv "dwtv-europe-m" "Deutsche Welle TV Europe 500 kb/s" "helper-dwelle tv-europa medium" caltv "dwtv-europe-h" "Deutsche Welle TV Europe 1.2 Mb/s" "helper-dwelle tv-europa high" caltv "dwtv-lamerica-l" "Deutsche Welle TV Latinoamérica 85 kb/s" "helper-dwelle tv-latinoamerica low" caltv "dwtv-lamerica-m" "Deutsche Welle TV Latinoamérica 500 kb/s" "helper-dwelle tv-latinoamerica medium" #caltv "france24en" "France24 English" "helper-livestation 4-france-24-english high" addtv "france24fr" "France24 Français" "mms://stream1.france24.yacast.net/f24_livefr" addtv "gimi" "TV Gimi" "http://stream5.visual.cz/tvgimi" "-vf eq2=1.3" addtv "gpb1-g1" "Georgian Public Broadcast 1 server 1" "mms://80.241.246.154/1tv" addtv "gpb1-g2" "Georgian Public Broadcast 1 server 2" "mms://80.241.246.158/1tv" addtv "gpb1-usa" "Georgian Public Broadcast 1 USA server" "mms://80.241.246.158/1tv" addtv "hopetv-h" "Hope TV 896 kb/s" 'http://mediaserver.hopetv.cz/hopetv_high?MSWMExt=.asf' addtv "hopetv-l" "Hope TV 390 kb/s" 'http://mediaserver.hopetv.cz/hopetv_mid?MSWMExt=.asf' addtv "hopetv-600" "Hope TV 600 kb/s" 'rtmp://stream2.mediawork.cz/hopetv/hopetv1' addtv "hopetv-300" "Hope TV 300 kb/s" 'rtmp://stream2.mediawork.cz/hopetv/hopetv2' addtv "hopetv-100" "Hope TV 100 kb/s" 'rtmp://stream2.mediawork.cz/hopetv/hopetv3' addtv "jpopsuki" "JPopsuki TV" 'http://jpopsuki.fm:8800/;stream.nsv' addtv "kctv" "조선중앙TV" 'http://112.170.78.145:50000/chosun' addtv "ktv" "Kurdistan TV" "rtmp://www.kurdistantv.info/live/livestream live=1" caltv "libyatv" "قناة ليبيا" "helper-livestation 125-libya-tv-arabic high" addtv "lux" "TV Lux" "http://streaming.tvlux.sk/tvluxlive/" "-aspect 4:3" caltv "markiza" "Markíza 1M" 'helper-voyosk markiza' caltv "markiza-h" "Markíza 2M" 'helper-voyosk markiza_HQ' addtv "mbc-daegu" "Daegu MBC" "http://211.115.127.29:80/live" addtv "meteopress" "Meteopress" "http://www.meteopress.cz/video/meteotv.wmv" # Playlist 'http://www.nasa.gov/145588main_Digital_Edu.asx' addtv "nasa-edu" "NASA TV Education" "mms://a1632.l1856941631.c18569.g.lm.akamaistream.net/D/1632/18569/v0001/reflector:41631" # Playlisy 'http://www.nasa.gov/multimedia/isslivestream.asx' addtv "nasa-iss" "NASA TV ISS" "mms://a1709.l1856953708.c18569.g.lm.akamaistream.net/D/1709/18569/v0001/reflector:53708" # Playlist 'http://www.nasa.gov/145590main_Digital_Media.asx' addtv "nasa-media" "NASA TV Media" "mms://a1816.l1856941815.c18569.g.lm.akamaistream.net/D/1816/18569/v0001/reflector:41815" addtv "nasa-public-200" "NASA TV Public 200k" "http://nasa-f.akamaihd.net/public_h264_200@54826" addtv "nasa-public-400" "NASA TV Public 400k" "http://nasa-f.akamaihd.net/public_h264_400@54826" addtv "nasa-public-700" "NASA TV Public 700k" "http://nasa-f.akamaihd.net/public_h264_700@54826" addtv "nckyo" "NC Kyo" "http://nc-kyo.dyndns.tv/nc-kyo" #addtv "nhk-world-l" "NHK World low" "http://nhk-world.gekimedia.net/nhkw-lowm" # Be ware of the magic number 61783 (512 kbps?) addtv "nhk-world-h" "NHK World high" "rtmp://ams-3.net.fivecool.org/nhkw/gwm" addtv "noe-200" "TV Noe 200k" "mms://netshow.play.cz/noetv?WMContentBitrate=150000" addtv "noe-400" "TV Noe 400k" "mms://netshow.play.cz/noetv?WMContentBitrate=380000" addtv "noe-800" "TV Noe 800k" "mms://netshow.play.cz/noetv" caltv "nova-sport-l" "Nova Sport 1M" 'helper-voyosk novasport' caltv "nova-sport-h" "Nova Sport 2M" 'helper-voyosk novasport_HQ' addtv "ocko" "TV Óčko" "rtmp://stream6.idnes.cz/live/ocko.flv swfUrl=http://g.idnes.cz/swf/flv/test/player.swf live=1" #caltv "presstv" "Press TV" "helper-livestation 52-press-tv-english high" # RTA works but the URL is based on date and region. # TODO: Find the algorithm and write helper #addtv "rta-vc" "RTA" "mms://stream1.rta.cz/quality_middle/119000/118236.wmv" #addtv "rta-vc-700" "RTA VČ 700k" "mms://stream1.rta.cz/quality_high/115000/114636.wmv" #addtv "rta-vc-300" "RTA VČ 300k" "mms://stream1.rta.cz/quality_middle/115000/114636.wmv" addtv "rustd-300" "Russia Today 300k" "rtmp://fms5.visionip.tv/live/RT_1.flv" addtv "rustd-500" "Russia Today 500k " "rtmp://fms5.visionip.tv/live/RT_2.flv" addtv "rustd-1000" "Russia Today 1M" "rtmp://fms5.visionip.tv/live/RT_3.flv" addtv "ruv" "Ríkisútvarpið" "rtmp://68.68.29.206/ruv/beint-1" addtv "rustavi2-1" "Rustavi2 server 1" "mms://208.75.229.18/live1" addtv "rustavi2-2" "Rustavi2 server 2" "mms://208.75.229.90/rustavi2" # stv* do not work, there is playlist generator http://r3.streamcdn.eu/?ppname=fatchilive1&stream=fatchilli1.stream passed to SWF object on http://www.stv.sk/online/, but RTMP server rejects connections to the application. addtv "stv1" "Slovenská televíza 1" "http://stvstream.m1.livetv.sk/stv1live" addtv "stv2" "Slovenská televíza 2" "mms://stvstream.m2.livetv.sk/stv2live/" addtv "tvb1" "TV brněnská 1" "mms://stream5.visual.cz/tvbrno" addtv "tvba" "TV Bratislava" "http://81.89.49.210/tvbalive" addtv "tvziva" "TV Živa" "http://109.74.144.209/" caltv "voyo-l" "Voyo 1M" 'helper-voyosk voyo' caltv "voyo-h" "Voyo 2M" 'helper-voyosk voyo_HQ' # Parse parameters if [ \( $# = 0 \) -o \( "${1:0:1}" = '-' \) ]; then help; fi if [ $# -ge 1 ]; then for ((I=0; ${#PRGM[@]} - I; I=I+1)); do if [ "$1" == "${PRGM[$I]}" ]; then # TV program found MYURL="${URL[$I]}"; if test -z "$MYURL" && test -n "${HELPER[$I]}"; then # URL undefined, try to get it by helper ${HELPER[$I]}; if [ $? -gt 0 ]; then echo "Chyba: Nelze získat URL proudu: Pomocná funkce ${HELPER[$I]} selhala" exit 1; fi fi if test -z "$MYURL" && test -n "${STREAMER[$I]}"; then # URL undefined, use existing streamer MYSTREAMER="${STREAMER[$I]}" fi MYEXTRA="${EXTRA[$I]}"; break; fi done if test -z "${MYURL}" && test -z "$MYSTREAMER"; then echo "Chyba: Program „$1“ nebyl nalezen" echo "Nápovědu získáte zavoláním programu bez parametrů." exit 1 fi fi shift; # Go test -n "$DIRECT_STREAM" && unset http_proxy if test -n "$MYURL"; then case "$PLAYER" in mplayer|mplayer2) set -x "$PLAYER" -cache "$CACHE" $MYEXTRA "$@" "$MYURL" ;; *) set -x "$PLAYER" "$@" "$MYURL" ;; esac else case "$PLAYER" in gst123) echo "Přehrávač „$PLAYER“ neumí přehrávat ze standardního vstupu." exit 1 ;; mplayer|mplayer2) $MYSTREAMER | \ "$PLAYER" -cache "$CACHE" $MYEXTRA "$@" -noconsolecontrols - ;; *) $MYSTREAMER | "$PLAYER" "$@" /dev/stdin ;; esac fi # vim: textwidth=0