35 lines
873 B
Plaintext
35 lines
873 B
Plaintext
|
<?_code
|
||
|
{
|
||
|
use strict;
|
||
|
|
||
|
BML::set_content_type("text/xml");
|
||
|
|
||
|
my $recent = LJ::MemCache::get("blob:ljcom_latestposts2") || [];
|
||
|
my $ret;
|
||
|
|
||
|
$ret .= "<?xml version='1.0' encoding='utf-8'?>\n";
|
||
|
$ret .= <<"EOT";
|
||
|
<!-- You can poll this feed often, but spider smartly. We watch
|
||
|
and ban stupid bots. Your user agent should have contact/project info.
|
||
|
See $LJ::SITEROOT/bots/ -->
|
||
|
EOT
|
||
|
|
||
|
$ret .= "<weblogUpdates version='1'>\n";
|
||
|
|
||
|
# retrieve posts.
|
||
|
my @postids;
|
||
|
my %done; # journalid -> 1
|
||
|
foreach my $p (@$recent) {
|
||
|
next unless $p->{security} eq 'public';
|
||
|
my $u = $p->{journalu} or next;
|
||
|
next if $done{$u->{userid}}++;
|
||
|
my $base = LJ::journal_base($u);
|
||
|
$ret .= "<weblog url='$base/' rss='$base/data/rss' when='$p->{timepost}' />\n";
|
||
|
}
|
||
|
|
||
|
$ret .= "</weblogUpdates>\n";
|
||
|
|
||
|
return BML::noparse($ret);
|
||
|
}
|
||
|
_code?>
|