Forum Webscript.Ru

Наши скрипты => Sanitarium WebLoG => Тема начата: Cyberinfo от 27 Февраля 2005, 17:37:47

Название: RSS
Отправлено: Cyberinfo от 27 Февраля 2005, 17:37:47
Кто знает как сделать RSS новости в этом движке?
Название: RSS
Отправлено: ddkd от 27 Февраля 2005, 21:45:30
Cyberinfo
смотря для каких целей тебе. Ты только заголовки хочешь отправлять?
Название: RSS
Отправлено: ddkd от 27 Февраля 2005, 21:55:22

#!/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 = ) {
if ($news_line =~ /([^<]+)/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 () {
   if (/([^<]+<){10}p>(\\d\\d)\\s([^ ]+)\\s(\\d\\d\\d\\d)\\s(\\d\\d:\\d\\d)([^<]*)<([^<]+<){3}[^>]*>(.*)

Страницы: .*/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/$rss_title =~ s/>/>/gsm;
$rss_title =~ s/\'/'/gsm;
$rss_title =~ s/\\\\?"/"/gsm;

$rss_link =~ s/&/&/gsm;
$rss_link =~ s/$rss_link =~ s/>/>/gsm;
$rss_link =~ s/\'/'/gsm;
$rss_link =~ s/\\\\?"/"/gsm;

$ftext =~ s/&/&/gsm;
$ftext =~ s/$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 "\\n";
print "\\n";
print "Обновление RSS файла прошло успешно\\n";
print "\\n";
print "\\n";
print "

\\n";
print "Обновление RSS файла прошло успешно.
rss.xml\\n";
print "

\\n";
print "

\\n";
print "Обновить RSS файл еще раз\\n";
print "

\\n";
print "\\n";
print "\\n";

работоспособность не гарантирую. ибо писалось под конкретный сайт. для конкретных целий.
Название: RSS
Отправлено: ddkd от 27 Февраля 2005, 21:58:49
если руки заточены под то что надо, то думаю сможешь пределать. Тока плиз сохрани копирайт. мелочь а приятно :)
Название: RSS
Отправлено: Cyberinfo от 27 Февраля 2005, 21:59:12
а куда его заливать и т.д. где нит вкл. и прочее?
Название: RSS
Отправлено: ddkd от 28 Февраля 2005, 00:51:59
Заливать в папку /admin/ в файле admin.cgi найди таблицу которая за навигацию отвечает и там напиши Обновить RSS

Тока смотри я тебе еще раз говрю что этот скрипт был сделан под конкретный сайт, под его категории и тд. так что тебе прийдется поработать сним немного все что могу сразу сказать это
Цитировать

@cats =  (\'Железо\',\'Интернет\',\'\',\'Софт\',\'Игры\',\'Программиро
вание\',\'Связь\',\'Безопасность\',\'GTA Vice City\',\'Телекоммуникации\');

категории прописаный по порядку т.е. к примеру к категории с ID=1 будет пресвоено имя Железо.
while ( ) {
   if (/([^<]+< ){10}p>(dd)s([^ ]+)s(dddd)s(dd:dd)([^<]*)<([^<]+< ){3}[^>]*>(.*)

Страницы: .*/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/\\ns*\\n/\\n/gs) { };
   while ($ftext =~ s/\\n//gs) { };
     }
    }


от того как это записано скрипт будет читать файл. загаловки он берет из /news/index.js и линк к файлу который будет читать (шаблон article.txt). Вобщем потыркайся если еще чет не понятно будет спрашивай.


ЗЫ. Пашел регатся %)

Название: RSS
Отправлено: ddkd от 28 Февраля 2005, 01:02:08
зарегался
Название: RSS
Отправлено: Cyberinfo от 06 Марта 2005, 14:33:04
require "rss.pm";
use HTTP:""ate;

короче выдает ошибку в этих строках  и че делать?