hi
ich habe mal ein kleines perlscript geschrieben welches aus den mairlistlogdateien die songtitle extrahiert und zu einem icecast-server schickt.
es schaut im selben verzeichniss nach der Logdatei im format %Y-%M-%D.LOG und dort nach dem eintrag starte%t%a%t%b
den ersten eintrag nach starte bis zum nächsten Tabulator ist der interpret darauf folgt der songtitle.
für windows benutzer habe ich noch ein packet gepackt welches gleich perl mitbringt. http://sesamstrasse.homeip.net/mairlist/mairlist-icecast.zip
#!/usr/bin/perl
use LWP::Simple;
use CGI qw/ escape /;
$server = "myserver.de";
$port = "8000";
$adminpassword = "hackme";
$stream = "/stream";
$icecast = 2; # icecast version 1 oder 2
($sek, $min, $std, $tag, $mon, $jahr) = localtime(time+7200); #+7200 weil 2 stunden zuspät
if ($min < 10)
{
$min = '0'.$min;
}
if ($std < 10)
{
$std = '0'.$std;
}
if ($tag < 10)
{
$tag = '0'.$tag;
}
if (++$mon < 10)
{
$mon = '0'.$mon;
}
$jahr = $jahr + 1900;
$datum = "$jahr-$mon-$tag.LOG";
open (FH, "$datum") or die "keine logdatei mit dem namen $datum";
print "lese $datum\n";
# die ganze datei einlesen damit nicht alle vorhandenen titel nochmal gesetzt werden
while (<FH>) {
if ($_ =~ /starte/) {
push(@alles,$_);
}
}
# nur den letzten eintrag setzen
$alles[-1] =~ /starte\t(.*?)\t(.*?)\n/;
print "Interpret $1 mit dem Lied $2\n";
$song = "$1 - $2";
chop $song;
$song =~ s/\.mp3//;
$song =~ s/\.wav//;
$song = escape($song);
if ($icecast == 1) {$URL = "http://$server:$port/admin/admin.cgi?mode=updinfo&pass=$adminpassword&mount=$stream&song=$song";}
if ($icecast == 2) {$URL = "http://"."admin:$adminpassword@"."$server:$port/admin/metadata.xsl?mode=updinfo&mount=$stream&song=$song";}
unless (defined ($inhalt = get $URL)) {die "konnte title $song nicht setzen"};
# schleife um zu schauen ob ein neuer eintrag vorhanden ist.
for (;;) {
while (<FH>) {
if ($_ =~ /starte/) {
$_ =~ /starte\t(.*?)\t(.*?)\n/;
print "Interpret $1 mit dem Lied $2\n";
$song = "$1 - $2";
chop $song;
$song =~ s/\.mp3//;
$song =~ s/\.wav//;
$song = escape($song);
if ($icecast == 1) {$URL = "http://$server:$port/admin/admin.cgi?mode=updinfo&pass=$adminpassword&mount=$stream&song=$song";}
if ($icecast == 2) {$URL = "http://"."admin:$adminpassword@"."$server:$port/admin/metadata?mode=updinfo&mount=$stream&song=$song";}
# print "\n$URL\n";
unless (defined ($inhalt = get $URL)) {die "konnte title $song nicht setzen"};
# print "inhalt=".$inhalt;
}
}
sleep 1;
seek(FH,0 ,1);
}
und noch eine kleine vorstellung von uns
wir sind ein kleines jugendinternetradio aus alfeld und benutzen mairlist um die musik abzuspielen. einmal pro woche von 20 - 21 Uhr übertragen wir es ins internet. hier ist unsere Seite www.you-r-alf.de
mfg
ernie