pricecharts

track prices of consumer electronics
Log | Files | Refs | README

commit 3cc2401e79e0f6503e5415e71f108cde6ecb430d
parent 0d18d24b3f87db1c5b7e6c652337e50907e4f9ad
Author: Kyle Milz <kyle@getaddrinfo.net>
Date:   Fri, 24 Oct 2014 01:47:28 -0600

shared: always export $cfg and $dbh

Diffstat:
Mgen_index.pl | 3---
Mgen_svg.pl | 5++---
Mprice_scraper.pl | 7++-----
Mproduct_scraper.pl | 4+---
Msearch.pl | 2--
Mshared.pm | 94+++++++++++++++++++++++++++++++++++--------------------------------------------
6 files changed, 46 insertions(+), 69 deletions(-)

diff --git a/gen_index.pl b/gen_index.pl @@ -9,9 +9,6 @@ use Template; use shared; -my $cfg = get_config(); -my $dbh = get_dbh($cfg); - my $config = { INTERPOLATE => 1, POST_CHOMP => 1, diff --git a/gen_svg.pl b/gen_svg.pl @@ -8,9 +8,8 @@ use POSIX; use shared; -my $cfg = get_config(); -my $dbh = get_dbh($cfg); -my $log = get_log($cfg, "pricechart_gen_svg"); + +my $log = get_log("pricechart_gen_svg"); print $log strftime "%b %e %Y %H:%M ", localtime; diff --git a/price_scraper.pl b/price_scraper.pl @@ -8,11 +8,8 @@ use POSIX; use shared; -my $cfg = get_config(); -my $dbh = get_dbh($cfg); -my $ua = get_ua($cfg); -my $log = get_log($cfg, "pricechart_scrapes"); - +my $ua = get_ua(); +my $log = get_log("pricechart_scrapes"); my $part_num; if ($args{p}) { diff --git a/product_scraper.pl b/product_scraper.pl @@ -11,9 +11,7 @@ use POSIX; use shared; -my $cfg = get_config(); -my $dbh = get_dbh($cfg); -my $ua = get_ua($cfg); +my $ua = get_ua(); srand; diff --git a/search.pl b/search.pl @@ -8,8 +8,6 @@ use Template; use shared; -my $cfg = get_config(); -my $dbh = get_dbh($cfg); mkdir "$cfg->{general}{var}/www/run"; my $socket_path = "$cfg->{general}{var}/www/run/search.sock"; diff --git a/shared.pm b/shared.pm @@ -9,7 +9,7 @@ use HTML::Grabber; use LWP::Simple; @ISA = ("Exporter"); -@EXPORT = qw(get_dom get_config get_dbh get_ua get_log vprint vprintf %args); +@EXPORT = qw(get_dom get_ua get_log vprint vprintf %args $cfg $dbh); our %args; @@ -17,6 +17,46 @@ getopts('f:np:v', \%args); $| = 1 if ($args{v}); +if (!$args{f}) { + if (-e "etc/pricechart.cfg") { + $cfg_file = "etc/pricechart.cfg"; + } else { + $cfg_file = "/etc/pricechart.cfg"; + } +} + +my $parser = Config::Grammar->new({ + _sections => ['vendors', 'general'], + vendors => { + # vendor regular expression + _sections => ['/[A-Za-z ]+/'], + '/[A-Za-z ]+/' => { + _vars => ['search_uri', 'reg_price', 'sale_price', 'color'], + }, + }, + general => { + _vars => [ + 'var', + 'user_agent', + 'email', + 'smtp', + ], + }, +}); + +our $cfg =$parser->parse($cfg_file) or die "error: $parser->{err}\n"; +make_dir($cfg->{general}{var}); + +my $db_dir = "$cfg->{general}{var}/db"; +make_dir($db_dir); +our $dbh = DBI->connect( + "dbi:SQLite:dbname=$db_dir/pricechart.db", + "", + "", + { RaiseError => 1 } +) or die $DBI::errstr; + + sub get_dom { my $url = shift; @@ -30,59 +70,8 @@ sub get_dom return HTML::Grabber->new(html => $resp->decoded_content); } -sub get_config -{ - if (!$args{f}) { - if (-e "etc/pricechart.cfg") { - $cfg_file = "etc/pricechart.cfg"; - } else { - $cfg_file = "/etc/pricechart.cfg"; - } - } - - my $parser = Config::Grammar->new({ - _sections => ['vendors', 'general'], - vendors => { - # vendor regular expression - _sections => ['/[A-Za-z ]+/'], - '/[A-Za-z ]+/' => { - _vars => ['search_uri', 'reg_price', 'sale_price', 'color'], - }, - }, - general => { - _vars => [ - 'var', - 'user_agent', - 'email', - 'smtp', - ], - }, - }); - - my $cfg =$parser->parse($cfg_file) or die "error: $parser->{err}\n"; - make_dir($cfg->{general}{var}); - - return $cfg; -} - -sub get_dbh -{ - my $cfg = shift; - my $db_dir = "$cfg->{general}{var}/db"; - - make_dir($db_dir); - my $dbh = DBI->connect( - "dbi:SQLite:dbname=$db_dir/pricechart.db", - "", - "", - { RaiseError => 1 },) or die $DBI::errstr; - return $dbh; -} - sub get_ua { - my $cfg = shift; - my $ua = LWP::UserAgent->new(agent => $cfg->{general}{user_agent}); $ua->default_header("Accept" => "*/*"); return $ua; @@ -90,7 +79,6 @@ sub get_ua sub get_log { - my $cfg = shift; my $file = shift; my $log_dir = "$cfg->{general}{var}/log";