Wiki2rem
From XPUB & Lens-Based wiki
#!/usr/bin/perl
# wiki2rem
# Convert the PZI Networked Media course schedule from
# the HTML of Trac's wiki to a remind calendar file
=head1 NAME
wiki2rem - Convert the the PZI Networked Media course schedule from HTML to remind
=head1 SYNOPSIS
wiki2rem [URL]
wiki2rem < [FILE.html]
=head1 DEPENDENCIES
wget
=head1 AUTHOR
FC, 4/2010
=cut
# determine current year
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime time;
$year += 1900;
# fetch web page if URL is given as an argument
if ($ARGV[0]) {
# sanitize input
$ARGV[0] =~ s/[;|\s]//g;
@wiki_lines = split ("\n", `wget -O - $ARGV[0]`);
}
# or act as a filter on the HTML file supplied via STDIN
else {
while (<STDIN>) {
push @wiki_lines, $_;
}
}
# transform wiki schedule HTML page into a remind file, print to STDOUT
foreach $_(@wiki_lines) {
chomp;
if (/<h3 id/) {
/.*id=\"([A-Z][a-z]+)([A-Z][a-z]+)([0-9]+)\".*/;
$day = "$3 $2 $year";
}
if (/<li>/) {
/.*<li>([0-9]+)-([0-9]+) (.*)/;
$hour = $1.':00';
$duration = $2-$1.':00';
$message = $3;
$message =~ s/<[^>]*>//g;
if ($message) {
print "$day AT $hour DURATION $duration MSG $message\n";
}
}
}
# EOF