Harald Schmidt Show Monolog

5 Mai 2003 von andreas Kommentieren »

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 to continue…”;

#$status = ;

exit;

Kommentare geschlossen.