Quiz Memorial Forum

Welcome Guest ( Log In | Register )

> ipb21.1.tcl, RSS-агрегатор
Kreon
post Oct 26 2006, 10:45 PM
Post #1


Developer
******

Group: Root Admin
Posts: 396
Joined: --
From: Внешние пределы
Member No.: 2



Появилось желание выложить в паблик ipb21.1.tcl, написанный аж с месяц назад. Не смотря на достаточно странное название скрипта, это развитие идеи созданного мной в прошлом ipb2egg.tcl на базе rssnew.tcl от GHhost. В сравнении с предыдущим релизом ipb2egg.tcl исправлено громадное число недочетов, оптимизировано хранение новостей и вывод их по запросу теперь имеет нормальную функциональность. Также появилась возможность поиска в архиве сохраненных новостей и т.п.
В данной версии есть поддержка патча Suzi Project, доступно чтение лент:
  • Стандарта IPBшного ssi.php (промаркировано просто как ipb, изначально было замечено в форумах IPB версий 1.3-2.0.4)
  • Стандартного вывода RSS в IPB 2.1.x.
  • Всех прочих лент, но с ограниченным функционалом
Помимо этого стало возможным раскодирование RSS, где текст новостей представлен в символах вида &#(число);, но также не оттестировано, от чего зависит такой вывод. Пока предположили, что это относится к UTF8-источникам, т.к. было замечено только на нем. %)
Относительно подробная настройка с примерами показана внутри скрипта.
С кодировками, отличными от cp1251, хотелось бы провести более широкое тестирование, этим и обусловлено выкладывание скрипта.

Команды:
!news <источник> [-число[-число2]] [маска запроса] - запрос новостей с источника, начиная с [-числа] до [-числа2], начиная с наиболее свежей новости, но не более PUBLIMIT и MSGLIMIT за раз, и с возможным указанием поиска по архивированным новостям с [маской запроса]
!feeds - вывод списка источников

Версия 1.0:
Attached File  ipb21.1.tcl ( 20.11k ) Number of downloads: 1550

Версия 1.2:
Attached File  ipb21.1.tcl ( 22.74k ) Number of downloads: 1581


--------------------
Не понял сам - не дай понять другому
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
2 Pages V < 1 2  
Reply to this topicStart new topic
Replies(20 - 32)
ASTRALOBJECT
post Jun 10 2008, 08:58 PM
Post #21


Посетитель
*

Group: Members
Posts: 1
Joined: 10-June 08
Member No.: 230



Как можно исправить?
CODE
Обновленный топик ?????? ?????? ? ?????? (http://ek-burg.my1.ru/forum/35-356-1)


В скрипте:
set ipb21(ver) "1.2"
# формат перекодировки
set ipb21(encoding_to) cp1251
ENCODINGFROM=utf-8
TYPE=rss
Бот еггдроп *18
В конфиге:
encoding system iso8859-1
RSS:
http://ek-burg.my1.ru/forum/0-0-0-37
CODE
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Kreon
post Jun 11 2008, 01:06 AM
Post #22


Developer
******

Group: Root Admin
Posts: 396
Joined: --
From: Внешние пределы
Member No.: 2



Установить патченного бота + encoding system cp1251.


--------------------
Не понял сам - не дай понять другому
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
kns
post Jul 30 2008, 01:26 AM
Post #23


Посетитель
*

Group: Members
Posts: 7
Joined: 27-June 08
Member No.: 236



Поколдовал тут немного над скриптом. Кое-что добавил, кое-что убрал, кое-что изменил.
  • + Параметр TIMER для фидов.
  • + Пара регекспов для RSS-секции.
  • * Кое-где regexp заменен на string map.
  • Остальное - несущественные мелочи
Итак. Новый параметр.
Теперь для каждого фида можно настраивать частоту обновления.
По умолчанию (ipb21(delay)) время равно 5 минутам.

Т.к. все настройки источников храню в каталоге data/feeds/, то сделал автоматическую загрузку оттуда.
Это - файлы с расширением .bas. Содержимое то же, что и в примере.

Добавлено 2 префикса для команд.
ipb21(pubprefix) и ipb21(msgprefix). Для команды ручного обновления (!cache) используется второй.

Флаг изменен на pubrss, т.е. теперь нужно включать скрипт на определенном канале.

Скрипт я использую только для обычных RSS.
Проверил на своих ботах - все работает.
Ах да, тестил я на патченных ботах. Поэтому, за работу на обычных не ручаюсь. Правда из того, что может повлиять, изменил, разве что, следующее:
код на 572 строке
CODE
if {[string match *[string tolower $keyword]* [string tolower $id]]} {

на
CODE
if {[string match -nocase "*${keyword}*" $id]} {


Особо ничего трогать не рискнул. :))
Если хватит упорства, постараюсь переделать скрипт под http.tcl.

upd (01.08.2008/01:50): немного изменил код. :)
upd (03.08.2008/03:36): немного фиксов и изменений.


Attached File(s)
Attached File  ipb21.1.tcl ( 25.39k ) Number of downloads: 710
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alvor
post Jul 31 2008, 08:33 AM
Post #24


Участник
***

Group: Members
Posts: 30
Joined: 9-March 07
Member No.: 76



Все это хорошо, но при использовании типа rss21 возникает боянная проблема с <![CDATA[ ... ]]> (см. 1ю страницу топика), а при использовании rss вместо автора ставится название rss-потока (например у меня - "Территория общения"). Форум версии 2.3.4
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
kns
post Jul 31 2008, 03:25 PM
Post #25


Посетитель
*

Group: Members
Posts: 7
Joined: 27-June 08
Member No.: 236



Думаю, как и с rss-разделом, проблема решится добавлением одного регекспа.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alvor
post Jul 31 2008, 04:43 PM
Post #26


Участник
***

Group: Members
Posts: 30
Joined: 9-March 07
Member No.: 76



вроде бы есть в коде в разделе "ipb21" код regexp -nocase -- {<!\[CDATA\[(.+?)\]\]>} $desc tmp desc, однако все равно...
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
kns
post Jul 31 2008, 07:39 PM
Post #27


Посетитель
*

Group: Members
Posts: 7
Joined: 27-June 08
Member No.: 236



А точно ли это нужно в секции desc?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
kns
post Jul 31 2008, 07:53 PM
Post #28


Посетитель
*

Group: Members
Posts: 7
Joined: 27-June 08
Member No.: 236



В любом случае, можно просто поправить процедуру ::egglib::unhtml.


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
kns
post Aug 1 2008, 12:54 AM
Post #29


Посетитель
*

Group: Members
Posts: 7
Joined: 27-June 08
Member No.: 236



Поменял обычное деление на целочисленное в процедуре проверки промежутка между запросами источника.
Поменял логику (?) автоматической загрузки источников.
Поправил некоторые мелочи.


Attached File(s)
Attached File  ipb21.1.tcl ( 24.55k ) Number of downloads: 696


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
kns
post Aug 3 2008, 02:40 AM
Post #30


Посетитель
*

Group: Members
Posts: 7
Joined: 27-June 08
Member No.: 236



Немного фиксов и изменений.
Возможно была ошибка, когда не выводились новости по таймеру. Теперь точно нет.

В ближайшее время планирую избавиться от регсубов (и стрингмапов) типа
CODE
regsub -all {\\} $arg {\\\\} arg

и добавить выборку по категориям (удобно для новостных фидов).


Attached File(s)
Attached File  ipb21.1.tcl ( 25.39k ) Number of downloads: 699
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
kns
post Oct 19 2008, 05:09 AM
Post #31


Посетитель
*

Group: Members
Posts: 7
Joined: 27-June 08
Member No.: 236



Хм. Переделал скрипт под http.tcl, кое-что поправил, кое-что изменил. Сделал все буквально несколько минут назад, так что особо потестить не получилось. Понятно, что выкладывать такое рано, но у меня нет ни времени, ни особого желания гонять на ошибки, а тут всяко больше тестеров...
Поэтому, если кто хочет попробовать, отпишитесь, прилеплю скриптец. smile.gif


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Kein
post Mar 24 2009, 08:45 PM
Post #32


Посетитель
*

Group: Members
Posts: 6
Joined: 25-December 07
Member No.: 164



Чем RSS-synd не устраивает?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Kreon
post Mar 24 2009, 09:16 PM
Post #33


Developer
******

Group: Root Admin
Posts: 396
Joined: --
From: Внешние пределы
Member No.: 2



QUOTE(Kein @ Mar 24 2009, 08:45 PM) *

Чем RSS-synd не устраивает?

Наверное он чего-то не умел на тот момент, либо вообще.


--------------------
Не понял сам - не дай понять другому
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

2 Pages V < 1 2
Reply to this topicStart new topic
3 User(s) are reading this topic (3 Guests and 0 Anonymous Users)
0 Members:

 



Lo-Fi Version Time is now: 14th May 2024 - 02:22 PM
Design by GPF © 2006