You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@community.apache.org by rb...@apache.org on 2016/12/13 20:45:26 UTC

svn commit: r1774100 - /comdev/tools/birthday.pl

Author: rbowen
Date: Tue Dec 13 20:45:25 2016
New Revision: 1774100

URL: http://svn.apache.org/viewvc?rev=1774100&view=rev
Log:
Use committes.json rather than projects.json

Modified:
    comdev/tools/birthday.pl

Modified: comdev/tools/birthday.pl
URL: http://svn.apache.org/viewvc/comdev/tools/birthday.pl?rev=1774100&r1=1774099&r2=1774100&view=diff
==============================================================================
--- comdev/tools/birthday.pl (original)
+++ comdev/tools/birthday.pl Tue Dec 13 20:45:25 2016
@@ -2,9 +2,17 @@
 
 # Generates the csv file that I import into Hootsuite each month to do
 # the #ApacheBirthday tweets.
-# Note that as per https://s.apache.org/C3K7 this output isn't actually
-# correct, which hopefully I can fix before I need to use this script
-# the next time.
+#
+# Caveats:
+#
+# The "n years" bit probably doesn't work if you're running it
+# for a month in the following year. eg, if you run it for January while
+# it's still December.
+#
+# This script takes a long time to run because it verifies that projects
+# actually exist, by loading their website. This is so that we're not
+# reporting on Attic'ed projects, and subprojects, and so on.
+#
 
 use strict;
 use warnings;
@@ -13,22 +21,32 @@ use LWP::UserAgent;
 use HTTP::Request;
 use Data::Dumper;
 
-my $month = $ARGV[0];
+my $V = 0; # Set to 1 to make it noisy
+
+usage() unless $ARGV[0] =~ m/\d/;
+my $month = sprintf("%02d", $ARGV[0]);
 usage() unless $month;
 
 my $thisyear = (localtime(time))[5] + 1900;
 
-my $where = 'https://projects.apache.org/json/foundation/projects.json';
+my $where = 'https://projects.apache.org/json/foundation/committees.json';
 
 # Fetch the json
-my $ua = LWP::UserAgent->new(timeout=>30, agent=>"Twitter4Ponies/0.1 ");
+my $ua = LWP::UserAgent->new(timeout=>5, agent=>"Twitter4Ponies/0.1 ");
 my $res = $ua->request(HTTP::Request->new(GET => $where)); 
 my $projects = parse_json( $res->content );
 
-foreach my $proj ( keys %$projects ) {
-    my $d = $projects->{$proj}->{created};
+foreach my $p ( @$projects ) {
+
+    my $proj = $p->{id};
+    my $d = $p->{established};
     next unless $d;
-    next unless $d =~ m/-$month-/;
+    next unless $d =~ m/-$month$/;
+
+    # Skip projects that aren't actually there. (Attic? Subprojects?)
+    warn "Checking the validity of $proj" if $V;
+    my $v = $ua->request(HTTP::Request->new(GET => "http://$proj.apache.org/"));
+    next unless $v->is_success();
 
     my $y = ( $d =~ m/(\d\d\d\d)/ )[0];
     my $age = $thisyear - $y;
@@ -36,7 +54,7 @@ foreach my $proj ( keys %$projects ) {
     print '"01/' . "$month/$thisyear 09:00:00" . '",';
     print '"';
     print "Happy birthday to " .
-            $projects->{$proj}->{name} .
+            $p->{name} .
             " celebrating " . $age;
     print ( ($age > 1) ? ' years ' : ' year ' );
     print "this month. #ApacheBirthday";
@@ -50,3 +68,4 @@ sub usage {
     print "Usage: ./birthday.pl MONTH - eg, ./birthday.pl 07\n";
     exit();
 }
+