Also, ich habe es geschafft, ich musste "nur" statt LWP LWP::Simple nehmen und dann die URL ganz normal downloaden.
Mein Script funktioniert soweit(jedenfalls für die "Celebritys", Models habe ich nicht ausprobiert), aber betrachtet es nicht als fertig, es gibt noch ein paar Verbesserungen zu machen:
-Es wird bei der Pfad eingabe nicht automatisch ein neuer Ordner erstellt, fasst der Zielordner nicht existiert
-eine downloaden y/n Abfrage wäre ganz schön (können schon ein paar Bilder sein).
-Pfadsicherung
-Absichern wenn es das Girl nicht gibt
-Bei "Found picture" nur die richtigen Anzeigen +verbessern
-Existieren nicht mehrere Seiten rasselt das Programm endloss vor sich hin
-Allgemeine Codeoptimierung
-Kommentare einfügen
Das ist was mir gerade einfällt...
Wenn ihr eine andere Auflösung wollt einfach unter $Aufloesung = "blabla" eintragen, falls das Bild in der Auflösung existiert sollte es dann heruntergeladen werden.
Wer will kann dies oder weiters machen, der Quelltext soll "Open Source" sein, so lange man ihn nicht für irgendein Geschäft, in dem es um Geld geht, braucht könnt ihr damit machen was ihr wollt, eine kleine Namensnennung wäre aber doch nicht schlecht. 😀
Spenden sind Willkommen! 😉
[syntax="perl"]
#!/usr/local/bin/perl
use LWP::Simple;
$aufloesung = "1024x768";
print "Bitte Name eingeben\n";
$girl = <stdin>;
chop($girl);
print "Bitte Pfad eingeben\n";
$path = <stdin>;
chop($path);
$girl =~ tr/[A-Z] _/[a-z]-/ ;
print "Searching for $girl\n";
$i = 0;
$liste_alt = 1;
$liste = 0;
while($liste_alt != $liste)
{
$liste_alt = @liste;
$url = "http://www.skins.be/celebrity/$girl/page$i/";
$i++;
print "Searching in URL $url\n";
$site = get($url);
while($site =~ m/<a href=\".+$girl\/(.+)\/$aufloesung.\"/gi)
{
print "Found picture: $1 \n";
push(@liste,$1);
}
$liste = @liste;
}
sort(@liste);
$laenge = @liste;
for($i = 1;$i<=$laenge;$i++)
{
while(@liste[$i] eq @liste[$i-1])
{
splice(@liste,$i,1);
$laenge--;
}
}
sort(@liste);
$laenge = @liste;
print "Es gibt $laenge Bilder zu downloaden.\n";
for($i=0;$i<=$laenge;$i++)
{
$url = "http://wallpapers.skins.be/$girl/$girl-$aufloesung-@liste[$i].jpg";
$site = get($url);
$url =~ /.+\/$girl\/(.+)/;
$name = $1;
$name =~ tr/A-Za-z0-9./_/c;
$name_file = "$path$name";
$rest = $laenge-$i;
print "Speichere Bild Nr. $rest/$laenge: $name_file\n";
open(FILE,">$name_file")|| die "Die Datei $name_file konnte nicht geöffnet werden!\n";
binmode(FILE);
print FILE $site;
close FILE;
}
print "Alle Operationen erledigt!\n";
[/syntax]
Wie gesagt bei mir funktioniert es...
Es erscheinen aber noch ein paar Warnungen.
Wie gesagt, dies war nur eine Übung, Anspruch auf Genialität hat der Code (noch) nicht! 😉
Greetz Dead