use Fcntl ':flock'; # import LOCK_* constants
-my $version = q{ $Revision: 1.32 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
+my $version = q{ $Revision: 1.36 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/;
my $copyright = "WebCollage $version, Copyright (c) 1999" .
" Jamie Zawinski <jwz\@jwz.org>\n" .
" http://www.jwz.org/xscreensaver/\n";
"&MT=";
my $image_randomizer_3 = "http://www.altavista.com/cgi-bin/query?pg=q" .
"&text=yes&kl=XX&stype=stext&q=";
+my $photo_randomizer = "http://albums.photopoint.com/j/View?u=1&a=1&p=";
+my $photo_randomizer_lo = 10000001;
+my $photo_randomizer_hi = 12400000;
my $image_ppm = ($ENV{TMPDIR} ? $ENV{TMPDIR} : "/tmp") . "/webcollage." . $$;
my $image_tmp1 = $image_ppm . "-1";
my $http_proxy = undef;
my $http_timeout = 30;
my $cvt_timeout = 10;
-my $ppm_to_root_window_cmd = "xv -root -rmode 5 -viewonly" .
- " +noresetroot %%PPM%% -quit";
+
+# if we have xli, use it to write to the root window. else use xv.
+my $ppm_to_root_window_cmd_1 = "xli -quiet -onroot -center" .
+ " -border black %%PPM%%";
+my $ppm_to_root_window_cmd_2 = "xv -root -rmode 5 -viewonly" .
+ " +noresetroot %%PPM%% -quit";
+
+my $ppm_to_root_window_cmd = undef; # initialized by x_output()
+
my $filter_cmd = undef;
my $post_filter_cmd = undef;
my $background = undef;
next if ($u =~ m@[/.]digital\.com@i);
next if ($u =~ m@[/.]doubleclick\.net@i);
- if ($which == 0 && $u =~ m@[/.]corbis\.com/@) {
+ if ($which == 0 && $u =~ m@[/.]corbis\.com@) {
$skipped = 1;
if ( $verbose > 3 ) {
print STDERR "$progname: skipping corbis URL: $u\n";
}
+# Using the photo site, generate a random URL that will hopefully point
+# to an image. Returns two URLs, both of which are the URL of the image.
+# Returns () if nothing found this time.
+#
+sub pick_from_photo_randomizer {
+ my ( $timeout ) = @_;
+ my $n = ($photo_randomizer_lo +
+ int(rand() * ($photo_randomizer_hi - $photo_randomizer_lo)));
+ my $url = $photo_randomizer . $n;
+ return ( $url, $url, "photopoint" );
+}
+
+
# Picks a random image on a random page, and returns two URLs:
# the page containing the image, and the image.
# Returns () if nothing found this time.
my $total_1 = 0;
my $total_2 = 0;
my $total_3 = 0;
+my $total_4 = 0;
my $count_0 = 0;
my $count_1 = 0;
my $count_2 = 0;
my $count_3 = 0;
+my $count_4 = 0;
sub pick_image {
my ( $timeout ) = @_;
$total = ++$total_1;
$count = ++$count_1 if $img;
+ } elsif ($r < 70) {
+ ($base, $img, $source) = pick_from_photo_randomizer ($timeout);
+ $total = ++$total_4;
+ $count = ++$count_4 if $img;
+
# } elsif ($r < 80) {
# # HotBot sucks: 98% of the time, it says "no pages match your
# # search", and then if I load the URL again by hand, it works.
sub x_output {
- my $win_cmd = $ppm_to_root_window_cmd;
- $win_cmd =~ s/^([^ \t\r\n]+).*$/$1/;
+ my $win_cmd_1 = $ppm_to_root_window_cmd_1;
+ my $win_cmd_2 = $ppm_to_root_window_cmd_2;
+ $win_cmd_1 =~ s/^([^ \t\r\n]+).*$/$1/;
+ $win_cmd_2 =~ s/^([^ \t\r\n]+).*$/$1/;
# make sure the various programs we execute exist, right up front.
foreach ("ppmmake", "giftopnm", "djpeg", "pnmpaste", "pnmscale",
- "pnmcut", $win_cmd) {
+ "pnmcut") {
which ($_) || die "$progname: $_ not found on \$PATH.\n";
}
+ if (which($win_cmd_1)) {
+ $ppm_to_root_window_cmd = $ppm_to_root_window_cmd_1;
+ } elsif (which($win_cmd_2)) {
+ $ppm_to_root_window_cmd = $ppm_to_root_window_cmd_2;
+ } else {
+ die "$progname: neither $win_cmd_1 nor $win_cmd_2 found on \$PATH.\n";
+ }
+
$SIG{HUP} = \&x_cleanup;
$SIG{INT} = \&x_cleanup;
$SIG{QUIT} = \&x_cleanup;