First pass at adding key files
This commit is contained in:
126
site/slowtwitch.com/cgi-bin/articles/admin/rss.cgi
Executable file
126
site/slowtwitch.com/cgi-bin/articles/admin/rss.cgi
Executable file
@ -0,0 +1,126 @@
|
||||
#!/usr/local/bin/perl
|
||||
|
||||
use strict;
|
||||
use lib '/var/home/slowtwitch/slowtwitch.com/cgi-bin/articles/admin';
|
||||
use Links qw/:objects/;
|
||||
use Links::SiteHTML;
|
||||
use GT::Date;
|
||||
use XML::RSS;
|
||||
|
||||
$| = 1;
|
||||
local $SIG{__DIE__} = \&Links::fatal;
|
||||
Links::init('/var/home/slowtwitch/slowtwitch.com/cgi-bin/articles/admin');
|
||||
|
||||
main();
|
||||
|
||||
sub main {
|
||||
# ------------------------------------------------------------------
|
||||
# Main admin loop, displays html pages and other admin tasks.
|
||||
#
|
||||
my @updates = get_recent_updates('Links', 'Add_Date', 'DESC', 10);
|
||||
gen_rss(@updates);
|
||||
}
|
||||
|
||||
sub get_recent_updates {
|
||||
# ------------------------------------------------------------------
|
||||
# Get recent news updates from the DB and return an array of hashes
|
||||
#
|
||||
my ($table, $sort_by, $sort_order, $limit) = @_;
|
||||
my $db = $DB->table($table);
|
||||
$db->select_options("ORDER BY $sort_by $sort_order", "LIMIT $limit");
|
||||
|
||||
my $sth = $db->select();
|
||||
my @loop;
|
||||
while (my $link = $sth->fetchrow_hashref) {
|
||||
$link = Links::SiteHTML::tags('link',$link);
|
||||
push @loop, {
|
||||
description => $link->{Description},
|
||||
title => $link->{Title},
|
||||
link => $link->{detailed_url},
|
||||
};
|
||||
}
|
||||
return @loop;
|
||||
}
|
||||
|
||||
sub gen_rss {
|
||||
# ------------------------------------------------------------------
|
||||
# Generate the rss output file
|
||||
#
|
||||
my @updates = @_;
|
||||
|
||||
use URI::Escape;
|
||||
|
||||
my $date = GT::Date::date_get(time, "%yyyy%-%mm%-%dd%T%hh%:%mm%:%ss%%o%");
|
||||
$date =~ s/^(.*)(\d\d)$/$1:$2/;
|
||||
|
||||
my $rss = XML::RSS->new(version => '1.0', encoding => 'iso-8859-1');
|
||||
$rss->channel(
|
||||
title => 'Slowtwitch.com',
|
||||
link => 'http://www.slowtwitch.com',
|
||||
description => '',
|
||||
dc => {
|
||||
date => $date,
|
||||
creator => 'Slowtwitch.com',
|
||||
publisher => 'Slowtwitch.com',
|
||||
rights => 'Copyright 2007, Slowtwitch.com',
|
||||
language => 'en-us',
|
||||
},
|
||||
syn => {
|
||||
updatePeriod => 'daily',
|
||||
updateFrequency => '1',
|
||||
updateBase => $date,
|
||||
}
|
||||
);
|
||||
|
||||
$rss->image(
|
||||
title => 'Slowtwitch.com',
|
||||
url => 'http://www.slowtwitch.com/favicon.ico',
|
||||
link => 'http://www.slowtwitch.com',
|
||||
dc => {
|
||||
creator => 'Slowtwitch.com'
|
||||
}
|
||||
);
|
||||
|
||||
foreach (@updates) {
|
||||
my $t = escape_for_xml($_->{title});
|
||||
my $d = escape_for_xml($_->{description});
|
||||
|
||||
$rss->add_item(
|
||||
title => $t,
|
||||
link => $_->{link},
|
||||
description => $d,
|
||||
);
|
||||
}
|
||||
|
||||
$rss->save('/var/home/slowtwitch/slowtwitch.com/www/rss/slowtwitch.rss');
|
||||
}
|
||||
|
||||
sub escape_for_xml {
|
||||
my $text = shift;
|
||||
|
||||
$text =~ s/\x82/,/g;
|
||||
$text =~ s-\x83-<em>f</em>-g;
|
||||
$text =~ s/\x84/,,/g;
|
||||
$text =~ s/\x85/.../g;
|
||||
|
||||
$text =~ s/\x88/^/g;
|
||||
$text =~ s-\x89- °/°°-g;
|
||||
|
||||
$text =~ s/\x8B/</g;
|
||||
$text =~ s/\x8C/Oe/g;
|
||||
|
||||
$text =~ s/\x91/`/g;
|
||||
$text =~ s/\x92/'/g;
|
||||
$text =~ s/\x93/"/g;
|
||||
$text =~ s/\x94/"/g;
|
||||
$text =~ s/\x95/*/g;
|
||||
$text =~ s/\x96/-/g;
|
||||
$text =~ s/\x97/--/g;
|
||||
$text =~ s-\x98-<sup>~</sup>-g;
|
||||
$text =~ s-\x99-<sup>TM</sup>-g;
|
||||
|
||||
$text =~ s/\x9B/>/g;
|
||||
$text =~ s/\x9C/oe/g;
|
||||
|
||||
return "<![CDATA[$text]]>";
|
||||
}
|
Reference in New Issue
Block a user