script um vom mairlistlog die songtitle nach icecast schicke

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

das ist ja cool werde ich gleich mal testen :slight_smile:

hi,
ich habe bei dem erstellen der windows-version ein paar dateien vergessen. die habe ich jetzt mit reingepackt. also wer es unter windows versuchen will soll bitte nochmal das ganze packet runterladen.

mfg
ernie

hm, funzt das ganze auch mit nem shoutcast server? liebfrag

hi,
habe mal eine neue version gebastellt die auch für shoutcast-server funktioniert. (danke an frannek1 fürs testen )
auch wird jetzt überprüft ob das lied zu ende ist und noch kein neues angewählt wurde. dann wird der text der unter moderation angegeben ist angezeigt.
http://sesamstrasse.homeip.net/mairlist/mairlist-script-v2.zip

so müssen die logeinstellungen sein damit es mit meinem script funktioniert.

mfg
ernie

Das Script hat eben eine zwei stündige Sendung Überstanden :slight_smile:
was man nocht hinzifügen könnte wer das man Vieleicht die anzeige beliebend Ändern kann so Das man vieleicht ein Text einfügen kann

wie z.b. www.radiostark.de presentiert sendungs name und titel oder so sachen das er das mit dursch schleift oder auch Einfach nur irgend welsche infos mit anzeigt die man eintragen kann in eine DB oder auch nur in die config so sachen :).
das man da nicht immer alles im code rum schreiben muss :slight_smile: weil man ja das nicht einfach findet :slight_smile: also ich zumindestens :slight_smile:

PS wir haben mit einem Shputcast stream gesendet

Danke :slight_smile: