use strict;
-our $VERSION = '2023091200';
+our $VERSION = '2023111700';
our %IRSSI = (
authors => 'Stefan \'tommie\' Tomanek',
contact => 'stefan@pico.ruhr.de',
sub get_rate_url {
my ($src) = @_;
+ if (ref $src) { ($src) = grep { $_ } map { $_->{source} } values %$src; }
+ die("No script source address found\n") unless $src;
my $ua = LWP::UserAgent->new(env_proxy=>1, keep_alive=>1, timeout=>30);
$ua->agent('ScriptAssist/'.$VERSION);
my $request = HTTP::Request->new('GET', $src);
my $error = join "\n", $response->status_line(), (grep / at .* line \d+/, split "\n", $response->content()), '';
die("Fetching ratings location failed: $error");
}
+ if (my $error = $response->header('X-Died')) {
+ die("$error\n");
+ }
my $votes_url;
for my $tag ($response->content() =~ /<script([^>]*)>/g) {
my $attr = " $tag ";
}
$request = HTTP::Request->new('GET', $votes_url);
$response = $ua->request($request);
- if (!$response->is_success) {
+ if (!$response->is_success || $response->header('X-Died')) {
my $error = join "\n", $response->status_line(), (grep / at .* line \d+/, split "\n", $response->content()), '';
die("Fetching ratings failed: $error");
}
sub rate_script {
my ($script, $stars) = @_;
my $xml = get_scripts();
- my $votes = get_rate_url(map { $_->{source} } values %$xml);
+ my $votes = get_rate_url($xml);
my $n = get_names($script, $xml, $votes);
die "Script $script not found\n" unless $n->{votes};
return $n->{votes}{u}
sub get_ratings {
my ($scripts, $limit) = @_;
my $xml = get_scripts();
- my $votes = get_rate_url(map { $_->{source} } values %$xml);
+ my $votes = get_rate_url($xml);
foreach (keys %{$votes}) {
if ($xml->{$_}) {
$xml->{$_}{votes} = $votes->{$_}{v};
$error = join "\n", $response->status_line(), (grep / at .* line \d+/, split "\n", $response->content()), '';
next;
}
+ if (my $died = $response->header('X-Died')) {
+ $error = $died;
+ next;
+ }
$fetched = 1;
my $data = $response->content();
my $src = $site;
$ua->agent('ScriptAssist/'.2003020803);
my $request = HTTP::Request->new('GET', $site.'/scripts/'.$n->{plname});
my $response = $ua->request($request);
- if ($response->is_success()) {
+ if ($response->is_success() && !$response->header('X-Died')) {
my $file = $response->content();
mkdir $dir.'/scripts/' unless (-e $dir.'/scripts/');
open(my $f, '>', $dir.'/scripts/'.$n->{plname}.'.new');
$ua->agent('ScriptAssist/'.2003020803);
my $request2 = HTTP::Request->new('GET', $site.'/signatures/'.$n->{plname}.'.asc');
my $response2 = $ua->request($request2);
- if ($response2->is_success()) {
+ if ($response2->is_success() && !$response->header('X-Died')) {
my $sig_dir = $dir.'/scripts/signatures/';
mkdir $sig_dir unless (-e $sig_dir);
open(my $s, '>', $sig_dir.$n->{plname}.'.asc');