#!/usr/bin/perl use Blerg::Database; use Mail::Message; use POSIX qw/strftime/; use strict; use v5.10; my $t1 = time; my $t0 = $t1 - 86400; sub send_email { my ($username) = @_; if (!Blerg::Database::exists($username)) { return; } my $email_conf_path = Blerg::Database::configuration->{data_path} . "/$username/email"; if (!-f $email_conf_path) { return; } open CONF, $email_conf_path; my $email = ; close CONF; my $blerg = Blerg::Database->open_existing($username); my @items = $blerg->subscription_list; $blerg->close; if (!@items) { return; } my $feeditems; for my $i (@items) { use Data::Dumper; $blerg = Blerg::Database->open_existing($i->{author}) or next; my $ts = $blerg->timestamp($i->{record}); if ($ts >= $t0 && $ts < $t1) { my $data = $blerg->fetch($i->{record}); next if !defined $data; my $date = strftime('%T %b %-d %Y (%Z)', localtime($ts)); $feeditems .= "== $i->{author} at $date\n\n$data\n\n\n"; } $blerg->close; } if (!defined $feeditems) { return; } Mail::Message->build( From => Mail::Address->new('BlergBot', 'noreply@blerg.cc'), To => Mail::Address->new($username, $email), Subject => 'Blërg Daily Digest', Mail::Message::Field->new('Content-Type', 'text/plain', 'charset="utf8"'), data => <send; } # TODO: Be smarter about this. Maybe maintain a list of users with email addresses? opendir USERS, Blerg::Database::configuration->{data_path}; while (my $user = readdir USERS) { next if $user =~ /^\./; send_email($user); }