| 1 |
#! /usr/bin/perl |
| 2 |
|
| 3 |
$max_rss_items = 15; |
| 4 |
$rssfile = "rss.rdf"; |
| 5 |
|
| 6 |
$lang = "ja"; |
| 7 |
$rssurl = "http://tombo.sourceforge.jp/tombo.rdf"; |
| 8 |
$toppage = "http://tombo.sourceforge.jp"; |
| 9 |
$description = "メモ管理ツールTOMBO リリース情報、お知らせ等を提供しています"; |
| 10 |
|
| 11 |
if ($#ARGV != 0 || !-d $ARGV[0]) { |
| 12 |
print "Usage : rssgen.pl <TMPLDIR>\n"; |
| 13 |
exit 1; |
| 14 |
} |
| 15 |
|
| 16 |
$srcdir = $ARGV[0]; |
| 17 |
|
| 18 |
opendir(DIR, "$srcdir/news") || die; |
| 19 |
my @l = sort( { $b <=> $a } readdir(DIR)); |
| 20 |
closedir(DIR); |
| 21 |
|
| 22 |
|
| 23 |
my @items = (); |
| 24 |
|
| 25 |
|
| 26 |
my $f, $d, $t, $sec, $headline, $cat, $dum; |
| 27 |
my $i = 0; |
| 28 |
foreach $f (@l) { |
| 29 |
next if ($f eq "." || $f eq ".."); |
| 30 |
next unless ($f =~ /^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})\.txt$/); |
| 31 |
last if ($i > $max_rss_items); |
| 32 |
|
| 33 |
$d = "$1-$2-$3"; |
| 34 |
$t = "$4:$5"; |
| 35 |
$sec = "$1$2$3$4$5"; |
| 36 |
|
| 37 |
open(F, "$srcdir/news/$f") || die; |
| 38 |
|
| 39 |
$headline = <F>; |
| 40 |
chop($headline); |
| 41 |
|
| 42 |
$cat = <F>; chop($cat); # category |
| 43 |
$dum = <F>; # skip blank line |
| 44 |
|
| 45 |
$desc = ""; |
| 46 |
while(<F>) { |
| 47 |
$desc .= $_; |
| 48 |
} |
| 49 |
close(F); |
| 50 |
|
| 51 |
my @itm = ($d, $t, $sec, $headline, $desc, $cat); |
| 52 |
push(@items, \@itm); |
| 53 |
|
| 54 |
$i++; |
| 55 |
} |
| 56 |
|
| 57 |
foreach $i (@items) { |
| 58 |
($d, $t, $sec, $headline, $desc, $cat) = @{$i}; |
| 59 |
# print "$d $t $sec $headline \n"; |
| 60 |
} |
| 61 |
|
| 62 |
|
| 63 |
open(RSS, "| nkf -w > $srcdir/$rssfile") || die; |
| 64 |
print RSS <<BASE ; |
| 65 |
<?xml version="1.0" encoding="utf-8" ?> |
| 66 |
<rdf:RDF |
| 67 |
xmlns="http://purl.org/rss/1.0/" |
| 68 |
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" |
| 69 |
xmlns:dc="http://purl.org/dc/elements/1.1/" |
| 70 |
xml:lang="$lang"> |
| 71 |
|
| 72 |
<channel rdf:about="$rssurl"> |
| 73 |
<title>TOMBO announce</title> |
| 74 |
<link>$toppage</link> |
| 75 |
<description>$description</description> |
| 76 |
<items> |
| 77 |
<rdf:Seq> |
| 78 |
BASE |
| 79 |
|
| 80 |
foreach $i (@items) { |
| 81 |
($d, $t, $sec, $headline, $desc, $cat) = @{$i}; |
| 82 |
print RSS " <rdf:li rdf:resource=\"$toppage/history.html#$sec\"/>\n"; |
| 83 |
} |
| 84 |
|
| 85 |
print RSS " </rdf:Seq>\n"; |
| 86 |
print RSS " </items>\n"; |
| 87 |
print RSS "</channel>\n"; |
| 88 |
|
| 89 |
foreach $i (@items) { |
| 90 |
($d, $t, $sec, $headline, $desc, $cat) = @{$i}; |
| 91 |
print RSS "<item rdf:about=\"$toppage/history.html#$sec\">\n"; |
| 92 |
print RSS " <title>$headline</title>\n"; |
| 93 |
print RSS " <link>$toppage/history.html#$sec</link>\n"; |
| 94 |
print RSS " <description>\n"; |
| 95 |
print RSS $desc; |
| 96 |
print RSS " </description>\n"; |
| 97 |
print RSS " <dc:date>$d"."T$t:00+09:00</dc:date>\n"; |
| 98 |
print RSS " <dc:subject>$cat</dc:subject>\n"; |
| 99 |
print RSS "</item>\n"; |
| 100 |
} |
| 101 |
|
| 102 |
print RSS "</rdf:RDF>\n"; |
| 103 |
|
| 104 |
close(RSS); |