#!/bin/sh # # Einfaches Beispiel für MP3 Streams, # siehe http://wiki.tcl.tk/12619 # \ package require opt package require snack 2.2 package require http proc playstream { socket token } { # Handler löschen, damit playstream nur # einmal gestartet wird fileevent $socket readable "" puts -nonewline stdout "Puffern ..." # mit Stream verbinden ::snack::sound ton -channel $socket # Puffer füllen for {set i 0} {$i < 30} {incr i} { after 100 puts -nonewline stdout "."; flush stdout } # Abspielen ton play -blocking 0 puts stdout "\nSpiele $::senderurl" } # Startprozedur tcl::OptProc main { { url "" "HTTP-URL für MP3, Ogg Vorbis oder M3U Datei" } } { # Eingabe Prüfen if {! [ regexp {^http:/} $url] } { error "ungültige URL «$url», nur http-Protokoll unterstützt" } # Wenn es eine playlist (m3u) ist, erst diese Laden if { [ string match .m3u [ file extension $url] ] } { set handler [http::geturl $url] set ::senderurl [http::data $handler ] http::cleanup $handler } else { set ::senderurl $url } # Dann die Verbindung zur MP3 oder Ogg Vorbis Datei öffnen if {![catch { http::geturl $::senderurl -handler playstream } weberr]} { vwait forever } else { puts stdout $weberr quit } } # hier wird das Skript gestartet if [catch { eval main $argv } err ] { puts stderr $err exit 1 }