Viele wissen es gar nicht, aber auf der Homepage der Harald Schmidt Show wird Harald`s täglicher Monolog im mp3-Format zum Download angeboten. Anders als es der Name aber vermuten läßt werden in Harald`s Monolog nicht nur Elemente aus seiner Eröffnungsrede verarbeitet, es werden auch lustige oder interessante Situationen aus der Show eingebaut.
Wer bemüht ist seine Monolog-Sammlung lückenlos zu halten, wird jedoch sehr schnell einsehen, dass es schier umöglich ist den Monolog täglich downzuloaden. Deswegen habe ich ein Perl-Skript geschrieben, der diesen Download automatisiert. Details zum Skript gibt`s unter `More…`
Der Perlskript sollte nach Anpassung des Downloadverzeichnisses, dass in der Variablen $pathToMp3Folder gespeichert wird, auf Anhieb funktionieren.
Beim ersten Aufruf ist das Startdatum anzugeben. Sollen zum Beispiel alle Monologe seit Anfang 2003 abgeholt werden, so erreicht man dies durch den Aufruf von “monolog.pl 01.01.2003″.
Danach reicht das Ausführen von “monolog.pl”. Das Perlskript legt im Downloadverzeichnis eine Datei Namens .date.log an, in der das Datum des letzten Downloads gespeichert wird.
Und hier nun der Skript:
#!/usr/bin/perl
#——————————————————————————————–
# Programm: monolog.pl
#
# Zweck: Download der Harald Schmidt Show Monolog Mp3 Dateien
#
# Version: 1.0
#
#——————————————————————————————–
#——————————————————————————————–
# Module
#——————————————————————————————–
use LWP::Simple;
#use Time::Localtime;
use Time::Local;
#use Date::Calc qw(Day_of_Week Week_Number Day_of_Year);
#——————————————————————————————–
# Variablendeklaration
#——————————————————————————————–
my $dateLogFileName; #Datei in der aktuelle Aktualisierungsstand festgehalten wird
my $startDatum; #heutiges Datum
my $stampStartDatum; #Stamp Start Datum
my $stampHeutigesDatum; #Stamp heutiges Datum
my $stampTmpDatum; #Stamp für temporaeres DAtum
my $stampDiffOneDay; #ein Tag in Sekunden
my @aStartDatum; #Array für Start Datum
my @aHeutigesDatum; #Array für heutiges Datum
my @aTmpDatum; #Array für temp. Datum
my $conStatus; #Connection Status
my @URL; #zum URL zusammenbauen
my @lokalFileName; #zum LokalFileName bauen
my $tmpUrl; #temp. Url für Download
my $tmpLokalFileName; #temp. LokalFileName für Download
my $pathToMp3Folder;
#——————————————————————————————–
# Variablendeklaration
#——————————————————————————————–
$pathToMp3Folder = “/daten/Musik/Harald_Schmidt_Show/”;
$stampDiffOneDay = 86400;
$dateLogFileName = $pathToMp3Folder.”.date.log”;
@URL[0] = “http://schmidt.sat1.de/media/”; #erster Teil der Url
@URL[2] = “monolog.mp3″; #letzter Teil der Url
@lokalFileName[0] = $pathToMp3Folder.”Harald Schmidt Show – Monolog “; #erster Teil des Dateinamen
@lokalFileName[2] = “.mp3″; #letzter Teil des Dateinamen
#——————————————————————————————–
# Argumente pruefen
#——————————————————————————————–
# ein Argument: Start Datum forcieren
# kein Argument: Datum aus Datei lesen
# >1 Argument: Fehler
if (scalar @ARGV > 1){
die “download.pl opt[date dd.mm.yyyy]“;
}elsif(scalar @ARGV == 1){
$startDatum = shift;
}else{
#Datum aus Datei lesen
open (LESEN,”< $dateLogFileName") or die ("Konnte date.log nicht öffnen!");
$startDatum =
$startDatum =~ s/
//g;
close LESEN;
};
#——————————————————————————————–
# Daten vorbereiten/aufbereiten
#——————————————————————————————–
#Heutiges Datum ermitteln und in Array speichern
@aHeutigesDatum = (localtime)[3,4,5];
#Start Datum in Array speichern
$_ = $startDatum;
$startDatum =~ s/./;/g;
@aStartDatum = split “;”,$startDatum,3;
$startDatum =~ s/;/./g;
@aStartDatum[1] -= 1;
@aStartDatum[2] -= 1900;
#Daten in Epochen-Sekunden umrechnen
$stampStartDatum = timelocal($seconds,$minutes,$hours,@aStartDatum);
$stampHeutigesDatum = timelocal($seconds,$minutes,$hours,@aHeutigesDatum);
#——————————————————————————————–
# Download Schleife
#——————————————————————————————–
$stampTmpDatum = $stampStartDatum;
while($stampTmpDatum < $stampHeutigesDatum){
@aTmpDatum = (localtime($stampTmpDatum))[3,4,5];
printf (“Datum: %02d.%02d.%04d
“,@aTmpDatum[0],@aTmpDatum[1]+1,@aTmpDatum[2]+1900);
#URL dyn. erzeugen
@URL[1] = sprintf(“%02d/%02d/%02d/”,substr(@aTmpDatum[2]+1900,2,2),@aTmpDatum[1]+1,@aTmpDatum[0]);
$tmpUrl = “”;
foreach $i (@URL){
$tmpUrl .= $i;
};
#lokalen Dateinamen dyn. erzeugen
@lokalFileName[1] = sprintf(“%04d-%02d-%02d”,@aTmpDatum[2]+1900,@aTmpDatum[1]+1,@aTmpDatum[0]);
$tmpLokalFileName = “”;
foreach $i (@lokalFileName){
$tmpLokalFileName .= $i;
};
$tmpLokalFileName =~ s/ /_/g;
print “Server: “.$tmpUrl.”
“;
print “Local :”.$tmpLokalFileName.”
“;
#Download der Datei wenn noch nicht vorhanden
$_ = $tmpLokalFileName;
if (!(-e $tmpLokalFileName)){
$conStatus = mirror($tmpUrl,$tmpLokalFileName);
#Auswertung des Dateidownloads
if ($conStatus == 200){ #–> Erfolg
#in Log Datei schreiben
print $conStatus.” OK
“;
}else{
print $conStatus.” keine Show
“;
};
}else{
print “- existiert bereits
“;
};
#naechster Tag
$stampTmpDatum += $stampDiffOneDay;
};
#——————————————————————————————–
# Aktualisierungsstand schreiben
#——————————————————————————————–
open(SCHREIBEN,”> $dateLogFileName”);
print SCHREIBEN sprintf (“%02d.%02d.%04d
“,@aHeutigesDatum[0],@aHeutigesDatum[1]+1,@aHeutigesDatum[2]+1900);
close SCHREIBEN;
#——————————————————————————————–
# Ende
#——————————————————————————————–
#print “Press
#$status =
exit;