summary refs log tree commit diff
path: root/lifestream.pl
diff options
context:
space:
mode:
Diffstat (limited to 'lifestream.pl')
-rw-r--r--lifestream.pl47
1 files changed, 47 insertions, 0 deletions
diff --git a/lifestream.pl b/lifestream.pl
new file mode 100644
index 0000000..891e945
--- /dev/null
+++ b/lifestream.pl
@@ -0,0 +1,47 @@
+#!/usr/bin/perl -w
+use strict;
+use feature 'say';
+
+use XML::Feed;
+use YAML::Syck;
+use URI;
+use Template;
+
+my $feeds = LoadFile( shift );
+
+my $hash_entries;
+foreach ( @$feeds ) {
+    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;
+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;