summaryrefslogblamecommitdiff
path: root/lifestream.pl
blob: 9423cc5f4af8cebf50d0a0767ea380cd39ad5ce3 (plain) (tree)
1
2
3
4
5
6
7
8
9








                  
                               

                 
                                   

















                                                           





                                                          















                                                                    
#!/usr/bin/perl -w
use strict;
use feature 'say';

use XML::Feed;
use YAML::Syck;
use URI;
use Template;

my $config = LoadFile( shift );

my $hash_entries;
foreach ( @{$config->{actions}} ) {
    my $feed = XML::Feed->parse( URI->new( $_->{ url } ) );
    for my $e ( $feed->entries ) {
        my $date = $e->issued->strftime( '%Y.%m.%d' );
        push @{ $hash_entries->{ $date } },
            {
            source     => $_->{ source },
            date       => $e->issued->hms,
            title      => $e->title,
            link       => $e->link,
            source_url => $_->{ source_url },
            };
    }
}

my @dates = keys %$hash_entries;
my @sorted_dates = sort { $a cmp $b } @dates;

my $hash_templates;
for my $type ( 'profiles', 'actions' ) {
    foreach my $profile ( @{ $config->{ $type } } ) {
        push @{ $hash_templates->{ profiles } }, $profile;
    }
}

foreach my $date ( reverse @sorted_dates ) {
    my @actions = sort { $b->{ date } cmp $a->{ date } }
        @{ $hash_entries->{ $date } };
    push @{ $hash_templates->{ entries } },
        {
        date    => $date,
        actions => \@actions
        };
}

my $template = Template->new;
$template->process( 'lifestream.tt', $hash_templates, \my $content )
    or die $!;
open my $fh, '>:utf8', 'public/index.html';
print $fh $content;
close $fh;