Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/perl
- use LWP::Simple;
- use Mojo::DOM;
- sub dotarget {
- my $domain = "http://supp.iar.com";
- my $targetcode = @_[0];
- my $targetname = @_[1];
- my $url="$domain/Download/SW/?item=$targetcode";
- my $outhtml;
- my $browser = LWP::UserAgent->new;
- $response = $browser->get($url);
- $response->is_success || die("$targetcode: Can't get $url -- ".$response->status_line);
- my $dom = Mojo::DOM->new( $response->content );
- my $dllink = $dom->find('frame[name*="exec"]')->[0]->{src};
- if(not $dllink =~ /http:/) { $dllink = $domain.$dllink; }
- $response = $browser->get($dllink);
- $response->is_success || die("$targetcode: Can't get $dllink -- ".$response->status_line);
- $dom = Mojo::DOM->new($response->content);
- my $finalurl = "";
- $dom->find("a[href]")->each(sub {
- if( $_->text =~ m/Download/ ) {
- $finalurl = $_->{href};
- if(not $finalurl =~ /http:/) { $finalurl = $domain.$finalurl; }
- }
- } );
- if($finalurl eq "") {
- $outhtml.=" <item>\n";
- $outhtml.=" <title>$targetname: not found</title>\n";
- $outhtml.=" <description><![CDATA[$targetcode: registration required?]]></description>\n";
- $outhtml.=" </item>\n";
- print "$targetcode: can't find download url\n";
- return $outhtml;
- }
- my $headers = $browser->head($finalurl) || die("$targetcode: can't get headers");
- my $installerurl = $headers->{_request}->{_uri};
- my $installerexe = (URI->new($installerurl)->path_segments)[-1];
- my $installerupdated = $headers->{_headers}->{"last-modified"};
- my $installersize = $headers->{_headers}->{"content-length"};
- $outhtml.=" <item>\n";
- $outhtml.=" <title>$targetname</title>\n";
- $outhtml.=" <link>$installerurl</link>\n";
- $outhtml.=" <pubDate>$installerupdated</pubDate>\n";
- $outhtml.=" <description><![CDATA[$targetcode <a href=\"$installerurl\">$installerexe</a><br>$installersize bytes]]></description>\n";
- $outhtml.=" </item>\n";
- print "$targetcode: $installerurl\n";
- return $outhtml;
- }
- #генерим список платформ
- my $url="https://www.iar.com/iar-embedded-workbench/downloads/";
- my $browser = LWP::UserAgent->new;
- $response = $browser->get($url);
- $response->is_success || die("Can't get list of platforms");
- my $dom = Mojo::DOM->new( $response->content );
- my %desclist;
- my $desc;
- my @a = $dom->find('div[id*="main-body"] tr td')->each(sub {
- if($_ =~ m/IAR Embedded Workbench for ([\d\w]+)/g) {
- $desc = $1;
- }elsif($_ =~ m/Download\/SW\/\?item=([\d\w-]+)/g) {
- $desclist{$1}=$desc;
- }
- } );
- $desclist{"EWARM-EVAL"}="ARM";
- ##########################################################
- open (OUTXML,">iarrss.xml");
- print OUTXML <<HTML;
- <?xml version="1.0"?>
- <rss version="2.0">
- <channel>
- <title>iar</title>
- <description>iar rss</description>
- HTML
- while(($targetcode,$targetname) = each(%desclist)) {
- print OUTXML dotarget($targetcode, $targetname);
- }
- print OUTXML " </channel>\n";
- print OUTXML "</rss>\n";
- close(OUTXML);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement