#!/usr/bin/perl
#Впервые юзалось на compnews.org, сделано Fast & vu1tur
print "Content-type: text/html\\n\\n";
require "rss.pm";
use HTTP::Date;
@cats = (\'Железо\',\'Интернет\',\'\',\'Софт\',\'Игры\',\'Программирование\',\'Связь\',\'Безопасность\',\'GTA Vice City\',\'Телекоммуникации\');
%months = (\'Январь\',1,\'Февраль\',2,\'Март\',3,\'Апрель\',4,\'Май\',5,\'Июнь\',6,\'Июль\',7,\'Август\',8,\'Сентябрь\',9,\'Октябрь\',10,\'Ноябрь\',11,\'Декабрь\',12);
my $rss = XML::RSS->new(version => \'2.0\', encoding => "windows-1251");
my $rss2 = XML::RSS->new(version => \'2.0\', encoding => "windows-1251");
$rss->channel(title=>"compnews.org channel", link => "www.compnews.org", description => "IT новости от compnews.org");
$rss2->channel(title=>"compnews.org channel", link => "www.compnews.org", description => "IT новости от compnews.org");
$rss->image(url=>"http://www.compnews.org/images/logo.gif", title=>"compnews.org", link=>"http://www.compnews.org/");
$index_js = "/www/compnews.org/htdocs/news/index.js";
open(DATA, $index_js) or die "can\'t open filename: $!";
while ($news_line = <DATA>) {
if ($news_line =~ /<a href=\\\\\\"(.*org\\/(\\d\\d?)\\/\\d\\d\\d.\\d\\.shtml)\\\\\\">([^<]+)/g) {
my $ftext=$3;
my $catnum = $2;
{
my $newsfn = $1;
$newsfn =~ s/http:\\/\\/www\\.compnews\\.org//;
$newsfn = join(\'\',\'/www/compnews.org/htdocs\',$newsfn);
open(FT, $newsfn);
}
$a=$/;
undef $/;
my $tt = 0;
while (<FT>) {
if (/<!--CONTENT-->([^<]+<){10}p>(\\d\\d)\\s([^ ]+)\\s(\\d\\d\\d\\d)\\s(\\d\\d:\\d\\d)([^<]*)<([^<]+<){3}[^>]*>(.*)<p>Страницы: <b>.*<!-CONTENT STOP-->/ms) {
$ftext = $8;
$tt = join(\'-\',$4,$months{$3},$2);
$tt = join(\' \',$tt,$5);
$tt = join(\':\',$tt,\'00\');
$tt = str2time($tt,\'-0100\');
$ftext =~ s/<(?:[^>\'"]*|([\'"]).*?\\1)*>//gs;
while ($ftext =~ s/\\n\\s*\\n/\\n/gs) { };
while ($ftext =~ s/\\n//gs) { };
}
}
$/=$a;
close FT;
$rss_title = $3;
$rss_link = $1;
$rss_title =~ s/&/&/gsm;
$rss_title =~ s/</</gsm;
$rss_title =~ s/>/>/gsm;
$rss_title =~ s/\'/'/gsm;
$rss_title =~ s/\\\\?"/"/gsm;
$rss_link =~ s/&/&/gsm;
$rss_link =~ s/</</gsm;
$rss_link =~ s/>/>/gsm;
$rss_link =~ s/\'/'/gsm;
$rss_link =~ s/\\\\?"/"/gsm;
$ftext =~ s/&/&/gsm;
$ftext =~ s/</</gsm;
$ftext =~ s/>/>/gsm;
$ftext =~ s/\'/'/gsm;
$ftext =~ s/\\\\?"/"/gsm;
$rss->add_item(title => $rss_title, link => $rss_link, category => $cats[$catnum-1], pubDate => time2str($tt), comments=>$ftext);
$rss2->add_item(title => $rss_title, link => $rss_link, description => time2str($tt));
}
}
$rss->save("/www/compnews.org/htdocs/rss.xml");
$rss2->save("/www/compnews.org/htdocs/klip.xml");
close DATA;
#То что вы увидите когда запустите rss.pl, если удалить, то будет пустой экран.
print "<html>\\n";
print "<head>\\n";
print "<title>Обновление RSS файла прошло успешно</title>\\n";
print "</head>\\n";
print "<body>\\n";
print "<p>\\n";
print "Обновление RSS файла прошло успешно. <a href=/rss.xml target=_blank>rss.xml</a>\\n";
print "</p>\\n";
print "<p>\\n";
print "<a href=rss.pl>Обновить RSS файл еще раз</a>\\n";
print "</p>\\n";
print "</body>\\n";
print "</html>\\n";
работоспособность не гарантирую. ибо писалось под конкретный сайт. для конкретных целий.