[BACK]Return to errata_scraper.pl CVS log [TXT][DIR] Up to [local] / openbsd / errata_scraper

Diff for /openbsd/errata_scraper/errata_scraper.pl between version 1.2 and 1.5

version 1.2, 2011/03/21 17:28:15 version 1.5, 2015/10/12 01:37:53
Line 1 
Line 1 
 #!/usr/bin/perl  #!/usr/bin/perl
 # $AFresh1: errata_scraper.pl,v 1.1 2011/03/21 16:26:58 andrew Exp $  # $AFresh1: errata_scraper.pl,v 1.4 2011/05/29 01:04:30 andrew Exp $
 ########################################################################  ########################################################################
 # Copyright (c) 2011 Andrew Fresh <andrew@afresh1.com>  # Copyright (c) 2011 Andrew Fresh <andrew@afresh1.com>
 #  #
Line 19 
Line 19 
 use warnings;  use warnings;
   
 use Mojo::UserAgent;  use Mojo::UserAgent;
 use Mojo::ByteStream 'b';  
   
 Mojo::UserAgent->new->get('http://www.openbsd.org/errata48.html')  my $base_uri = 'http://www.openbsd.org/';
   ->res->dom('li')->each(  
     sub {  
         my $e = shift;  
   
         my $patch = $e->at('a[href$=".patch"]')->attrs->{href};  my $ua = Mojo::UserAgent->new;
         my $title = b( $e->at('strong')->replace('')->all_text )->trim;  
         my $arch  = b( $e->at('i')->replace('')->all_text )->trim;  my $ls = $ua->get( $base_uri . 'errata.html' )->res->dom('a[href^="errata"]');
         my $descr = b( $e->all_text )->trim;  
   foreach my $l ( @{$ls}[ -2, -1 ] ) {
       print 'Errata for OpenBSD ', $l->text, "\n";
       foreach my $e (
           reverse @{ $ua->get( $base_uri . $l->attr('href') )->res->dom('li')
           } )
       {
           my $title;
           if (my $t = $e->at('strong')) {
               $title = $t->all_text;
               $t->replace('');
           }
           else {
               next;
           }
           my $patch;
           if (my $p = $e->at('a[href$=".patch.sig"],a[href$=".patch"]')) {
               $patch = $p->attr('href');
               $p->replace('');
           }
           my $arch = $e->at('i')->tap(sub { $_[0]->replace('') } )->text;
           my $descr = $e->all_text;
         $descr =~ s/\s+/ /gs;          $descr =~ s/\s+/ /gs;
           $descr =~ s/\s(\.(?:\s|$))/$1/gs;
           $descr =~ s/\.+$/./gs;
   
         print 'Title: ', $title, "\n";          print 'Title: ', $title, "\n";
         print 'Arch:  ', $arch,  "\n";          print 'Arch:  ', $arch,  "\n";
         print 'Patch: ', $patch, "\n";          print 'Patch: ', $patch, "\n" if $patch;
         print 'Descr: ', $descr, "\n";          print 'Descr: ', $descr, "\n";
         print "\n";          print "\n";
     }      }
 );  }

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.5

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>