Skip to content

Instantly share code, notes, and snippets.

@mackee
Created February 17, 2013 14:21
Show Gist options
  • Save mackee/4971668 to your computer and use it in GitHub Desktop.
Save mackee/4971668 to your computer and use it in GitHub Desktop.
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use 5.014;
use Time::Piece::ISO;
use LWP::Simple;
use JSON::XS;
use Storable;
use Try::Tiny;
$ENV{TZ} = "GMT";
my $now_dt = Time::Piece->new;
my $start_dt = $now_dt - $now_dt->min * 60 - $now_dt->sec;
my $since_dt = $now_dt - ($now_dt->min - int($now_dt->min/10) * 10) * 60 - $now_dt->sec;
my $result =
decode_json(
get(
'https://api.github.com/gists/public?since='.$since_dt->datetime.'Z'
)
);
my $older_dt = Time::Piece->new();
my %lang_result = ();
try {
%lang_result = %{retrieve('/tmp/gistream')};
}
catch {
store(+{}, '/tmp/gistream');
};
%lang_result = () if exists $lang_result{start_dt} && $lang_result{start_dt} ne $start_dt->datetime;
$lang_result{start_dt} = $start_dt->datetime;
for my $row (@$result) {
for my $filename (keys %{$row->{files}}) {
if (my $language = $row->{files}->{$filename}->{language}) {
$lang_result{$language}++;
}
}
my $dt = Time::Piece::ISO->strptime($row->{updated_at} =~ s/[A-Z]$//r);
$older_dt = $dt if $dt < $older_dt;
}
store(\%lang_result, '/tmp/gistream');
delete $lang_result{start_dt};
for my $language (keys %lang_result) {
say "$language\t$lang_result{$language}";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment