#!/usr/bin/perl -wT ########################################### # slideshow # Mike Schilli, 2005 (m@perlmeister.com) ########################################### use strict; use CGI qw(:all); use Yahoo::Search AppId => "linux_magazin"; use Cache::FileCache; use Storable qw(freeze thaw); my $cache = Cache::FileCache->new({ namespace => 'slideshow', default_expires_in => 3600, auto_purge_on_set => 1, }); my $data; print header(-charset => "utf-8"); if(param('q') and defined param('s')) { $data = thaw $cache->get(param('q')); my $seq = param('s'); $seq %= scalar @$data; print refresh(5); print center( a({href => url()}, "Stop"), a({href => next_url()}, "Next"), p(), b(param('q')), ":", i($data->[$seq]->[1]), p(), img({src => $data->[$seq]->[0]}), p(), a({href => $data->[$seq]->[0]}, $data->[$seq]->[0]), ); } elsif(param('q')) { my @results = Yahoo::Search->Results( Image => param('q'), Count => 50, AllowAdult => 0, ); if(@results) { for(@results) { push @$data, [$_->Url(), $_->Summary()]; } print refresh(0); $cache->set(param('q'), freeze($data)); } else { print refresh(0, 1); } } else { print h2("Slideshow Search"), start_form(), textfield(-name => 'q'), submit(-value => "Search"), end_form(), font({size => 1}, "Powered by Yahoo! Search"); } ########################################## sub refresh { ########################################## my($sleep, $reset) = @_; return start_html( -title => "Slideshow", -head => meta({ -http_equiv => "Refresh", -content => "$sleep, URL=" . ($reset ? url() : next_url()) })); } ########################################## sub next_url { ########################################## my $s = param('s'); $s ||= 0; return sprintf "%s?q=%s&s=%d", url(), param('q'), $s+1; }