#!/usr/bin/perl # # File: slackcur.pl # By: Hai Binh Nguyen # Date: Sat May 19 09:48:34 GMT+7 2007 # Desc: fetch slackware-current changelog and make an RSS feed ################################################################################ use LWP::Simple; $URL = "ftp://ftp.slackware.com/pub/slackware/slackware-current/ChangeLog.txt"; $ROOT = "/var/www/vnoss.net/"; #$ROOT = "./"; $FEED_FILE = $ROOT."swcurrent.xml"; $LOG_SPLIT = "+--------------------------+"; $NUM_OF_FEED = 15; my $log = get $URL or die "Could not get $URL\n"; my @CONTENT = split (/\n/, $log); my $i = 0; my $j = 0; foreach $line (@CONTENT) { if ($i == $NUM_OF_FEED) { last; } unless ($line eq $LOG_SPLIT) { if ($j == 0) { $itemTitle = "Updates on ".substr ($line, 0, 10); $itemTitle =~ s/\s+/ /g; $itemDate = processDate ($line); push (@feedTitle, $itemTitle); push (@feedDate, $itemDate); $j++; next; } $line =~ s/^(\S+\.tgz):/

$1<\/b>:/; $line =~ s/\s+/ /g; chomp ($line); $itemContent = $itemContent.$line; $j++; } if ($line eq $LOG_SPLIT) { $i++; $j = 0; push (@feedContent, $itemContent); $itemContent = ""; } } createRSS (\@feedTitle, \@feedDate, \@feedContent); sub createRSS { my ($itit, $idat, $icon) = @_; my @tit = @$itit; my @dat = @$idat; my @con = @$icon; open (FEED_FILE, ">$FEED_FILE") or die ("Could not open $FEED_FILE"); print FEED_FILE < Slackware-current Changelogs http://www.slackware.com/changelog/current.php?cpu=i386 This is the current development tree for upcoming versions of Slackware. It's usually updated once a day, sometimes more. Things you see here will likely be included in the next stable release. en-us Slackware is a registered trademark of Slackware Linux, Inc. $dat[0] VnOSS - Vietnam Opensource Software b1nhb00ng END ; for (my $i = 0; $i < $NUM_OF_FEED; $i++) { print FEED_FILE < $tit[$i] http://www.slackware.com/changelog/current.php?cpu=i386 $dat[$i] b1nhb00ng $dat[$i] END ; } print FEED_FILE < END ; close (FEED_FILE); } sub processDate { my $raw = $_[0]; my (@mo) = ("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep" , "Oct", "Nov", "Dec"); my $i = 0; %mo = map { $_ => ++$i } @mo; my ($day, $mo, $d, $t, $tz, $y) = split (" ", $raw); $date = sprintf "%s-%02d-%02dT%s-05:00", $y, $mo{$mo}, $d, $t; return $date; }