#!/usr/bin/perl use warnings; use strict; $| = 1; use TMA::Config; use TheSchwartz; my $client = TheSchwartz->new( databases => $TMA::Config::schwartz_dbs, ); use Cache::Memcached; my $cc = new Cache::Memcached ( servers => $TMA::Config::memcached_loot_servers, ); my $count = 0; my $opt_r = 0; # skip l2n check use Getopt::Long qw(:config no_ignore_case bundling); GetOptions( 'r' => \$opt_r, ); if (@ARGV) { my $verb = shift @ARGV; if ($verb eq 'store') { # default } else { die "unsupported verb $verb"; } } if (@ARGV) { &spool(@ARGV); } else { while () { s/[\r\n\s]+/ /g; s/(^ | $)//g; # warn "bad input: $_" unless /^http:/i; my ($url, $ref,) = split(" ", $_); &spool($url, $ref,); } } print $count,"\n"; exit 0; sub spool ($$) { my ($url, $ref,) = @_; if ($url =~ /^\w[-\w]+\.\w[^\/]+\//) { warn "adding url decoration"; $url = "http://".$url; } my $coa; if ($url =~ m,^(http://[^/]+/),) { $coa = lc $1; } else { warn "bad url $url"; return 0; } my $l2n = $cc->get("l2n:".$url); if (!$opt_r && $l2n) { # printf STDERR "SKIP(%s): l2n code %i\n", $url, $l2n->{code}; return 0; } my $job = TheSchwartz::Job->new( funcname => 'LootOne', uniqkey => $url, coalesce => $coa, arg => { url => $url, ref => $ref, }, ); if ($client->insert($job)) { $count++; return 1; } # printf STDERR "SKIP(%s): insert fail\n", $url; return 0; }