#!/usr/bin/perl -w
use strict; 
use LWP::UserAgent; 
use XML::RSS;
use URI;

# ile pozycji RSS?
my $counterlimit = 10;

# przedrostek adres URL obrazkw?
# albo file://, albo http://.
my $url_prefix = "file:///Users/morbus/Desktop/";

# pobieramy zapytanie lub koczymy dziaanie.
my $query = shift @ARGV; die unless $query;

# i pobieramy dane.
my $ua  = LWP::UserAgent->new;
my $url = URI->new('http://search.news.yahoo.com/search/news/');
$url->query_form(c => "news_photos", p => $query);
my $photosource = $ua->get($url)->content;

# nie ma wynikw, nie ma RSS.
die "Dla podanego zapytania nie znaleziono adnych wynikw!\n"
  if $photosource =~ /Sorry, no News Photos Matches/i;

# zaczynamy pakiet RSS.
my $rss = new XML::RSS (version => '0.91');
$rss->channel(
    'link'       => $url_prefix,
     title        => "Yahoo! News Photos Wallpaper",
     description  => "Obrazki pasujce do sowa kluczowego '$query'."
);

# nasz licznik.
my $counter = 0;

# pobieramy obrazki wraz z opisami
while ($photosource =~ m!hr width=90%.*?<a href="(.*?)"><img src=(.*?) .
*?size=2>(.*?)</font>.*?=timedate>.*?</span>!mgis) {
    last if $counter == $counterlimit; # ju koniec? idziemy dalej.
    my ($url, $pictureurl, $desc) = ($1, $2, $3);
    unless ($url && $pictureurl && $desc) { next; }

    # pobieramy ten obrazek do aktualnego katalogu.
    $ua->get($pictureurl, ':content_file' => "picture$counter.jpg");

    # dodajemy do pakietu RSS t pozycj.
    $rss->add_item(
       title       => substr($desc, 0, 75) . "...", 'link' => $url,
       description => "<img src=\"${url_prefix}picture${counter}.jpg\">  $desc",
    );

    # NexxTXTt!
    $counter++;
}

# i zapisujemy RSS.
$rss->save("wallpaper.rdf");

