commit 460c57ff20cb93e63ab03a40050b022069cb63b5
parent 16f58665d8d791b32b53836d681b421009ea3346
Author: Kyle R W Milz <kyle@getaddrinfo.net>
Date: Mon, 11 Aug 2014 23:32:56 -0600
price_scraper: remove function
Diffstat:
M | price_scraper.pl | | | 132 | ++++++++++++++++++++++++++++++++++++++----------------------------------------- |
1 file changed, 64 insertions(+), 68 deletions(-)
diff --git a/price_scraper.pl b/price_scraper.pl
@@ -58,83 +58,79 @@ else {
select $logfile;
}
+my $time_start = time;
+my @prices;
+
+my $part_no;
if ($args{p}) {
- scrape_vendors($args{p});
+ $part_no = $args{p};
}
else {
- scrape_vendors();
-}
-
-sub scrape_vendors
-{
- my $time_start = time;
- my @prices;
-
my $results = $dbh->selectcol_arrayref("select part_num from products");
# sequentially pick one product every hour
my $index = (time / 3600) % scalar(@$results);
- my $part_no = $results->[$index];
-
- print strftime "%b %e %Y %H:%M ", localtime;
- printf "%-15s [", $part_no;
-
- my $ua = LWP::UserAgent->new(agent => 'Mozilla/5.0');
- # some sites need this (amazon I think?)
- $ua->default_header('Accept' => '*/*');
-
- while (my ($name, $vendor) = each ($cfg->{vendors})) {
-
- my $resp = $ua->get("$vendor->{search_uri}$part_no");
- if (! $resp->is_success) {
- print STDERR "$name: " . $resp->status_line . "\n";
- print ' ';
- next;
- }
-
- my $dom = HTML::Grabber->new(html => $resp->decoded_content);
-
- #if (substr($vendor->{context}, 0, 1) eq '@') {
- # $vendor->{context} =~ s/@/#/;
- #}
-
- #my $context = $dom->find($vendor->{context})->html();
- #if ($context) {
- # $dom = HTML::Grabber->new(html => $context);
- #}
- #else {
- # print ' ';
- # next;
- #}
-
- my $price = $dom->find($vendor->{reg_price})->text;
- if ($vendor->{sale_price}) {
- my $sale = $dom->find($vendor->{sale_price})->text;
- $price = $sale if ($sale ne '');
- }
-
- if (! $price) {
- print ' ';
- next;
- }
-
- ($price) = ($price =~ m/(\d[\d,]+)/);
- $price =~ s/,//;
-
- print substr($name, 0, 1);
- push @prices, "$name=$price";
+ $part_no = $results->[$index];
+}
+
+print strftime "%b %e %Y %H:%M ", localtime;
+printf "%-15s [", $part_no;
+
+my $ua = LWP::UserAgent->new(agent => 'Mozilla/5.0');
+# some sites need this (amazon I think?)
+$ua->default_header('Accept' => '*/*');
+
+while (my ($name, $vendor) = each ($cfg->{vendors})) {
+
+ my $resp = $ua->get("$vendor->{search_uri}$part_no");
+ if (! $resp->is_success) {
+ print STDERR "$name: " . $resp->status_line . "\n";
+ print ' ';
+ next;
+ }
+
+ my $dom = HTML::Grabber->new(html => $resp->decoded_content);
+
+ #if (substr($vendor->{context}, 0, 1) eq '@') {
+ # $vendor->{context} =~ s/@/#/;
+ #}
+
+ #my $context = $dom->find($vendor->{context})->html();
+ #if ($context) {
+ # $dom = HTML::Grabber->new(html => $context);
+ #}
+ #else {
+ # print ' ';
+ # next;
+ #}
+
+ my $price = $dom->find($vendor->{reg_price})->text;
+ if ($vendor->{sale_price}) {
+ my $sale = $dom->find($vendor->{sale_price})->text;
+ $price = $sale if ($sale ne '');
}
- print '] (' . (time - $time_start) . " s)\n";
- if ($args{v}) {
- print "$_\n" for @prices;
+ if (! $price) {
+ print ' ';
+ next;
}
- return if ($args{n} || (scalar @prices) == 0);
+ ($price) = ($price =~ m/(\d[\d,]+)/);
+ $price =~ s/,//;
+
+ print substr($name, 0, 1);
+ push @prices, "$name=$price";
+}
- mkdir $cfg->{paths}{data};
- open FILE, ">>", "$cfg->{paths}{data}/$part_no.txt" or die $!;
- print FILE time * 1000;
- print FILE "\t$_" for @prices;
- print FILE "\n";
- close FILE;
+print '] (' . (time - $time_start) . " s)\n";
+if ($args{v}) {
+ print "$_\n" for @prices;
}
+
+exit if ($args{n} || (scalar @prices) == 0);
+
+mkdir $cfg->{paths}{data};
+open FILE, ">>", "$cfg->{paths}{data}/$part_no.txt" or die $!;
+print FILE time * 1000;
+print FILE "\t$_" for @prices;
+print FILE "\n";
+close FILE;