Автор Тема: RSS  (Прочитано 5229 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Cyberinfo

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.cyberinfo.ru
RSS
« : 27 Февраля 2005, 17:37:47 »
Кто знает как сделать RSS новости в этом движке?

ddkd

  • Гость
RSS
« Ответ #1 : 27 Февраля 2005, 21:45:30 »
Cyberinfo
смотря для каких целей тебе. Ты только заголовки хочешь отправлять?

ddkd

  • Гость
RSS
« Ответ #2 : 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 = <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/\'/&apos;/gsm;
$rss_title =~ s/\\\\?"/"/gsm;

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

$ftext =~ s/&/&/gsm;
$ftext =~ s/</</gsm;
$ftext =~ s/>/>/gsm;
$ftext =~ s/\'/&apos;/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";


работоспособность не гарантирую. ибо писалось под конкретный сайт. для конкретных целий.

ddkd

  • Гость
RSS
« Ответ #3 : 27 Февраля 2005, 21:58:49 »
если руки заточены под то что надо, то думаю сможешь пределать. Тока плиз сохрани копирайт. мелочь а приятно :)

Оффлайн Cyberinfo

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.cyberinfo.ru
RSS
« Ответ #4 : 27 Февраля 2005, 21:59:12 »
а куда его заливать и т.д. где нит вкл. и прочее?

ddkd

  • Гость
RSS
« Ответ #5 : 28 Февраля 2005, 00:51:59 »
Заливать в папку /admin/ в файле admin.cgi найди таблицу которая за навигацию отвечает и там напиши <a href=rss.pl target=_blank>Обновить RSS</a>

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

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

категории прописаный по порядку т.е. к примеру к категории с ID=1 будет пресвоено имя Железо.
while (<FT> ) { 
   if (/<!--
CONTENT-->([^<]+< ){10}p>(dd)s([^ ]+)s(dddd)s(dd:dd)([^<]*)<([^<]+< ){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/\\ns*\\n/\\n/gs) { }; 
   while ($ftext =~ s/\\n//gs) { }; 
     } 
    } 


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


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

Оффлайн ddkd

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.it-zona.ru
RSS
« Ответ #6 : 28 Февраля 2005, 01:02:08 »
зарегался

Оффлайн Cyberinfo

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.cyberinfo.ru
RSS
« Ответ #7 : 06 Марта 2005, 14:33:04 »
require "rss.pm";
use HTTP:""ate;

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

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28