use DateTime::Format::MySQL;
use Newslash::Util;
use File::Spec;
+use Mojo::Log;
+
sub new {
my $class = shift;
my $home = $self->_detect_home;
if ($home) {
$config_file = File::Spec->catdir($home, "newslash-feedfetcher.yaml");
+ if (! -e $config_file) {
+ $config_file = File::Spec->catdir($home, "newslash-web.yaml");
+ }
}
- }
+ }
my $config = eval { LoadFile($config_file) };
die qq{Can't parse config "$config_file": $@} if $@;
sub run {
my $self = shift;
- my $verbose = 2;
+ my $log = Mojo::Log->new;
+
+ if ($ENV{MOJO_LOG_LEVEL}) {
+ $log->level($ENV{MOJO_LOG_LEVEL});
+ }
+ else {
+ $log->level("warn");
+ }
my $config = $self->_load_config;
$self->config($config);
}
for my $feed (@$rs) {
if ($feed->{status} ne "active") {
- print "$feed->{title} is not active. skip ...";
+ $log->info("$feed->{title} is not active. skip ...");
next;
}
- print "fetch $feed->{url} ...\n" if $verbose > 0;
+ $log->info("fetch $feed->{url} ...");
my $f = $feeds->fetch_url(\$feed->{url}, $config->{FeedFetcher} || {});
my $now = DateTime::Format::MySQL->format_datetime(DateTime->now);
if (!$f) {
my $error = $feeds->last_error;
- warn "fetch $feed->{url} failed - $error.\n";
+ $log->error("fetch $feed->{url} failed - $error.");
$feeds->update(feed_id => $feed->{feed_id},
latest_fetch_time => $now,
latest_fetch_result => $feeds->last_errorno);
);
if (!defined $id) {
my $error = $feeds->last_error;
- warn "cannot create feed item: $error";
+ $log->error("cannot create feed item: $error");
}
else {
if ($id == 0) {
- print "update item " . $item->link . " (feed_id: $feed->{feed_id})\n" if $verbose > 1;
+ $log->debug("update item " . $item->link . " (feed_id: $feed->{feed_id})");
}
else {
- print "create item " . $item->link . " (feed_id: $feed->{feed_id}, item_id: $id)\n" if $verbose > 1;
+ $log->debug("create item " . $item->link . " (feed_id: $feed->{feed_id}, item_id: $id)");
}
}
}