rss2html/update2

50 lines
1.4 KiB
Perl
Executable File

#!/usr/bin/perl
use strict;
use warnings;
use v5.14;
use DBI;
update2();
sub update2 {
no autovivification qw(fetch);
my $dbh = DBI->connect("dbi:SQLite:dbname=rss2html.sqlite", "", "");
$dbh->{sqlite_unicode} = 1;
my $feeds = $dbh->selectall_arrayref("select * from feeds where update_frequency is not null", { Slice => {} });
my $seconds_per_week = 86400 * 7;
for my $feed (@$feeds) {
print "feed: $feed->{id} $feed->{title}\n";
my $now = time();
my $update_time = $now - $feed->{last_update};
print "\t", "update_time: $update_time\n";
my $start = $now - 4 * $seconds_per_week;
my $items = $dbh->selectall_arrayref("select * from items where feed_id=? and issued >= ? order by issued",
{ Slice => {} },
$feed->{id}, $start,
);
my $first_issued = $items->[0]{issued} // $start;
my $total_time = $now - $first_issued;
print "\t", "total_time: $total_time\n";
my $updates_in_interval = 0;
for my $item (@$items) {
my $t = $item->{issued};
my $dt1 = $now - $t;
my $dt2 = $dt1 % $seconds_per_week;
if ($dt2 < $update_time) {
$updates_in_interval++;
}
}
# normalize to one week
$updates_in_interval *= $seconds_per_week / $total_time;
$updates_in_interval += $update_time / $seconds_per_week; # add one update per week
print "\t", "updates_in_interval: $updates_in_interval\n";
}
}
# vim: tw=0