Что нового

Обновление функции новостной ленты

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 563
Репутация
2 430
Внесены некоторые улучшения в агрегат новостной ленты.

* Лента теперь возвращает не 5 последних записей, а 10 (или 20, в зависимости от раздела).
* Теперь в поле «От» наряду с адресом электронной почты отображается никнейм (псевдоним) участника отправившего сообщение.
* В поле «Тема» после названия темы (в полукруглых скобках) добавлено отображение раздела в котором было оставлено сообщение.

* Теперь доступны следующие ссылки в списке лент:
* На сообщение в ленте выставлено ограничение в 2000 символов, при достигнутом ограничении текст обрезается и добавляется надпись:
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
OffTopic:
CreatoR [?]
:shok: что за чудо-юдо? ;D
PS: шучу. понял что RSS-агрегатор. просто со словом агрегат у меня связаны исключительно смешные ассоциации ;D
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 320
Извините за мою дремучесть :( , а как ей пользоваться?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
madmasles
1. почитать вики на эту тему -RSS
2. решить чем предпочтительнее пользоватся
  • Браузер
  • Сторонние агрегаторы
3. В зависимости от решения сделанной в п.2 добавить ленту в загрузчик
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 320
Kaster
Спасибо! У меня все получилось. Хорошая штука, однако, эта RSS!

PS
Век живи - век учись!
(Все равно дураком помрешь)
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 563
Репутация
2 430
Забыл добавить:

* Теперь в поле «От» наряду с адресом электронной почты отображается никнейм (псевдоним) участника отправившего сообщение.
* В поле «Тема» после названия темы (в полукруглых скобках) добавлено отображение раздела в котором было оставлено сообщение.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
OffTopic:
CreatoR
а ты любитель фигурных скобок, я смотрю ;D
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 563
Репутация
2 430
Kaster [?]
ты любитель фигурных скобок, я смотрю
Да не особо, просто если указан префикс темы, то добавление в квадратных скобках выглядит не очень, тем более что фигурные скобки не так часто используются в навзвании темы.
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
CreatoR
Не могу разобраться, почему RSS-лента с форума неправильно загружается в массив, при том что RSS-лента с софтодрома загружается без ошибок...

Код:
; НАЧАЛО

 #Include <_XMLDomWrapper.au3>
 #Include <array.au3>

 ;$URL="http://news.softodrom.ru/scr/rss.php"
 $URL="http://autoit-script.ru/index.php?type=rss;action=.xml"

 [email protected]&"\readrss.xml"

 ;InetGet($URL,$FILE)

 _XMLFileOpen($FILE)

 $A=_XMLGetValue("/rss/channel/item/title")
 _ArrayDisplay($A)

 $A=_XMLGetValue("/rss/channel/item/description")
 _ArrayDisplay($A)

; КОНЕЦ
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 563
Репутация
2 430
snoitaleR [?]
почему RSS-лента с форума неправильно загружается в массив
Трудно сказать, у меня этот скрипт не работает.
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
CreatoR
Может быть, потому не работает, что я закомментировал InetGet(), так как, закачав файл с лентой один раз, в дальнейшем работал с локальным файлом...
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 563
Репутация
2 430
snoitaleR [?]
Может быть, потому не работает, что я закомментировал InetGet()
Нет, это был просто тонкий намёк на то, что скрипт нужно выкладывать рабочий для всех, у меня например нет в папке «include» библиотеки «_XMLDomWrapper.au3», поэтому скрипт и не рботает, нужно было как минимум указать ссылку на неё.

Скачал библиотеку, проверил. Да, плохо обрабатывает, но проблема не в ленте, а в парсере.
Дело в том что в ленте, в заголовке тем, очень часто встречаются нестандартные символы, и RSS обработчик добавляет лишние «<![CDATA[....]]>», а _XMLGetValue умеет работать только с одной.

Т.ч нужно дорабатывать функцию.


Добавлено:
Сообщение автоматически объединено:

Вот обход этой проблемы:

Код:
#include <_XMLDomWrapper.au3>
#include <Array.au3>

;$URL = "http://news.softodrom.ru/scr/rss.php"
$URL = "http://autoit-script.ru/index.php?type=rss;action=.xml"

$FILE = @ScriptDir & "\readrss.xml"
;InetGet($URL, $FILE)

$READ = FileRead($FILE)

_XMLLoadXMLEx($READ)
;_XMLFileOpen($FILE)

$A = _XMLGetValue("/rss/channel/item/title")
_ArrayDisplay($A)

$A = _XMLGetValue("/rss/channel/item/description")
_ArrayDisplay($A)

Func _XMLLoadXMLEx($strXML)
	Local $aXML = StringRegExp($strXML, '(?s)<(?:title|description)>(.*?)</(?:title|description)>', 3)
	
	For $i = 1 To UBound($aXML)-1
		If $aXML[$i] = "" Then
			ContinueLoop
		EndIf
		
		$sStrip_CDDATA = StringRegExpReplace($aXML[$i], '<!\[CDATA\[(.*?)\]\]>', '\1')
		$strXML = StringReplace($strXML, $aXML[$i], '<![CDATA[' & $sStrip_CDDATA & ']]>')
	Next
	
	;ConsoleWrite($strXML & @LF)
	Return _XMLLoadXML($strXML)
EndFunc
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
CreatoR
Подскажи, пожалуйста, алгоритм обновления файла новостной ленты...
Для меня важно понять:
1. Как наверняка не пропустить ни одной новости?
2. Могут ли повторяться новости в двух последовательно скаченных файлах новостной ленты?
3. Если да, то как наверняка определить, что две новости одинаковы?
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 563
Репутация
2 430
snoitaleR [?]
1. Как наверняка не пропустить ни одной новости?
Проверять ленту чаще, но и тут можно упустить, это уже минус самого агрегата.

2. Могут ли повторяться новости в двух последовательно скаченных файлах новостной ленты?
Конечно.

3. Если да, то как наверняка определить, что две новости одинаковы?
Сравнить содержимое текущей ленты с предыдущей.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
OffTopic:
CreatoR
я тебя умоляю, говори агрегатор, вместо агрегата ;D
оно же даже по английский пишется RSS-aggregator
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 563
Репутация
2 430
OffTopic:
Kaster [?]
я тебя умоляю, говори агрегатор, вместо агрегата
Ну, я как бы говорю «агрегатор», а пишу сокращённо (по своему) «агрегат» :laugh:
 

AlexZZZ

Новичок
Сообщения
10
Репутация
1
День добрый!Я запустил,но выдает ошибку.См.вложение.Что это может быть?Спасибо
 
Верх