commit b3b92805d98adbdf83ed3c06162f8effd46fd226
parent 82c9894c54890e944601ec056f880dd7a6ecc1ce
Author: Kyle Milz <kyle@getaddrinfo.net>
Date: Sat, 28 Feb 2015 18:04:08 -0700
PriceChart: add trunc_line function
Diffstat:
3 files changed, 31 insertions(+), 13 deletions(-)
diff --git a/PriceChart.pm b/PriceChart.pm
@@ -4,7 +4,7 @@ use DBI;
use Exporter;
@ISA = ("Exporter");
-@EXPORT = qw(get_config get_dom new_ua get_log get_dbh);
+@EXPORT = qw(get_config get_dom get_log get_dbh trunc_line new_ua);
sub get_config
@@ -74,10 +74,8 @@ sub get_dom
my $resp = $ua->get($url);
if ($resp->is_success) {
- if (length($url) > 55) {
- $url = "..." . substr($url, length($url) - 55);
- }
- print "info: GET $url " . $resp->status_line . "\n" if ($verbose);
+ my $short_url = trunc_line($url, length($resp->status_line) + 11, 1);
+ print "info: GET " . $resp->status_line . " $short_url\n" if ($verbose);
return HTML::Grabber->new(html => $resp->decoded_content);
}
@@ -99,10 +97,11 @@ sub new_ua
$ua->default_header("User-Agent" => $cfg->{"user_agent"});
if ($verbose) {
- print "info: new_ua: user agent http headers are:\n";
+ print "info: new_ua: http headers are:\n";
my $headers = $ua->default_headers;
for (sort keys %$headers) {
- print " $_: " . $headers->{$_}. "\n";
+ my $header = trunc_line($headers->{$_}, length($_) + 16);
+ print " $_: $header\n";
}
}
@@ -125,4 +124,23 @@ sub get_log
return $log;
}
+sub trunc_line
+{
+ my $line = shift;
+ my $prefix = shift || 0;
+ my $front = shift || 0;
+
+ my ($wchar) = Term::ReadKey::GetTerminalSize();
+ if (length($line) < ($wchar - $prefix - 3)) {
+ return $line;
+ }
+
+ if ($front) {
+ my $chopped = substr($line, length($line) - ($wchar - $prefix - 3));
+ return "..." . $chopped;
+ }
+ my $chopped = substr($line, 0, ($wchar - $prefix - 3));
+ return $chopped . "...";
+}
+
1;
diff --git a/price_scraper.pl b/price_scraper.pl
@@ -10,6 +10,7 @@ use List::Util qw(min);
use LWP::Simple;
use PriceChart;
use POSIX;
+use Term::ReadKey;
use URI::Escape;
@@ -109,7 +110,8 @@ for my $vendor (sort keys %{$cfg->{"vendors"}}) {
if (length($desc) > 50) {
$desc = substr($desc, 0, 50) . "...";
}
- print "info: $vendor: $desc\n";
+ my $desc_s = trunc_line($desc, length($vendor) + 9);
+ print "info: $vendor: $desc_s\n";
}
}
diff --git a/product_scraper.pl b/product_scraper.pl
@@ -11,6 +11,7 @@ use Getopt::Std;
use HTML::Grabber;
use LWP::Simple;
use PriceChart;
+use Term::ReadKey;
my %args;
@@ -217,12 +218,9 @@ sub mem_exp_scrape_thumbnail
return undef;
}
- my $tmp_desc = $desc;
- if (length($tmp_desc) > 50) {
- $tmp_desc = substr($tmp_desc, 0, 50) . "...";
- }
+ my $shortened_desc = trunc_line($desc, length($info_hdr) + 2);
print "$info_hdr: $brand $part_num\n" if ($args{v});
- print "$info_hdr: $tmp_desc\n" if ($args{v});
+ print "$info_hdr: $shortened_desc\n" if ($args{v});
return ($brand, $part_num, $desc);
}