Я пытаюсь искать и загрузить определенные изображения / покрытие передней и задней части / веб-сайта, если найдено, но независимо от того, что я делаю я всегда загружаю только одного из них. Что я должен изменить в своем коде для загрузки их обоих, если найдено?
use strict;
use warnings;
use LWP;
use LWP::UserAgent;
use URI::Escape;
use HTTP::Status;
getCover(...);
sub getCover {
......
while ($title_found =~ /'(http:\/\/images.blu-ray.com\/movies\/covers\/\d+_.*?)'/gis) {
$url = getSite($1);
if ($title_found =~ /front/) {
$filename = 'front.jpg';
}
elsif ($title_found =~ /back/) {
$filename = 'back.jpg';
}
}
my $dir = 'somepath'.$filename;
open F, ">", $dir;
binmode F;
print F $url;
close F;
return 0;
}
sub getSite {
$url = shift;
print "URL: $url\n";
my $r;
my $ua = new LWP::UserAgent();
$ua->agent("Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3) Gecko/20030312");
my $req = new HTTP::Request GET => $url;
$req->push_header("Accept-Language", "en");
$req = $ua->prepare_request($req);
my $res = $ua->request($req);
my $rc = $res->code;
if(is_success($rc)){
$r = $res->as_string();
$r = $res->content();
}
else {
print "Failed\n";
}
return $r;
}
Попробуйте поместить часть, которая сохраняет в 'somepath'. $ Filename
, внутри цикла while
, а не вне его.
Кроме того, похоже, что $ title_found
должен содержать несколько URL-адресов. В этом случае вам нужно сохранить $ 1
во временной переменной и искать в ней переднюю / заднюю часть вместо $ title_found
. В противном случае вы сохраните обе обложки на front.jpg
.