Как решить проблему неполных RSS лент или получение веб-контента для чтения его на электрокнижке
Началось все с RSS. Возникла у меня идея использовать свой LBook V3 в режиме «периодического издания». Очень быстро я понял, что такое «краткая лента с анонсами». Среди решений этой проблемы, на тот момент, были :
- Python скрипт от Traut & Mar00k – претензий минимум, а именно одна – не все форматы графики поддерживает;
- RSS Farm – в то время не поддерживал пользовательские каналы и пользоваться можно было только тем, что там есть;
- Yahoo Pipes – странные ошибки, проблемы с кодировками, неожиданные отказы плюс моя личная нелюбовь к Веб приложениям.
А еще я хотел (помимо RSS новостей):
- Читать форумы в оффлайне и прямо на электрокнижке;
- Выкачивать и читать архивные версии журналов;
- Выкачивать и читать книги размещенные на сайте без возможности скачивать их целиком.
Понятно, что один только RSS мне все это не обеспечит. После некоторых раздумий решил написать что-то свое.
Основную задачу я видел так:
Нужна программа, способная сформировать документ в выходном формате, если пользователь корректно объяснит ей, с помощью настроек, следующие вещи :
- Где брать контент (адреса);
- Как обрабатывать контент (правила обработки);
- Куда сохранять выходные документы (хранилище, организованное в виде категорий документов (для удобства)).
В качестве языка программирования был выбран Java 6 SE, чтобы «везде работало». В качестве выходного формата был выбран FB2, в силу его распространенности и адекватности с точки зрения программиста.
В общем, через некоторое время, программа, реализующая все это, была готова.
Хочу отметить следующее:
Программа отдельно – настройки отдельно. Настройки для работы с конкретным сайтом представляют собой небольшие XML файлы, лежащие в отдельном каталоге рабочего пространства программы.
Из этого следует:
- Можно писать свои настройки;
- Можно использовать готовые;
- Настройками можно обмениваться, например, по электронной почте или как-нибудь еще;
- Немножко романтическо-утопический вариант: каждый уважающий себя сайт может публиковать эти настройки у себя с тем, чтобы рядовые пользователи могли их скачать и использовать для автоматического получения контента сайта.
В прилагаемой к программе документации я попытался изложить и основные моменты, положенные в архитектуру программы и достаточно небольшой (на данный момент менее 10 операторов) язык описания правил обработки контента.
Приглашаю всех ознакомиться с результатом: sites.google.com/site/nmdparser/
Подготовлено: IgorS48







![Реклама Технолекс [PocketBook 301] (01 September 2010) Реклама Технолекс [PocketBook 301] (01 September 2010)](http://www.prohorenkov.com/openx/www/images/eee4ff111a1609c99edce5384ab54b58.jpg)
![Реклама Технолекс [PocketBook 360] (01 September 2010) Реклама Технолекс [PocketBook 360] (01 September 2010)](http://www.prohorenkov.com/openx/www/images/cccac19fabb63838a38af4f8d02079a0.jpg)
![Реклама Технолекс [Sony Reader PRS-505] (01 September 2010) Реклама Технолекс [Sony Reader PRS-505] (01 September 2010)](http://www.prohorenkov.com/openx/www/images/7a95d1aa87ea0a99b06d98ceff646037.jpg)





Спасибо! Это то, чего давно не хватало!
Спасибо за отзыв.
[...] СМИ. Автор (видимо?) описывает свой проект на The-ebook (Как решить проблему неполных RSS лент или получение веб-…) и на сайте проекта (Для чего нужен nmdparser.) Похоже, будет [...]
Спасибо! Давно искал такую программу!
Спасибо за отзыв. Надеюсь nmdParser Вас не разочарует.
Супер! Это то, чего не хватало.
Было бы неплохо все-таки сделать в виде exe файла, чтобы хранить на книге и запускать из любого места дислокации.
Это Вы можете уже сейчас. Я тестил такой вариант. nmdParser держите на карточке и запускаете с нее. Главное чтобы на «месте дислокаци» были Java и Internet. На этот случай в nmdParser заложена поддержка разных наборов конфигурационных параметров. Правда это в документации я еще не успел описать
.
Я тоже скачал. Испытал. Заработало не сразу, пришлось похимичить.
Для пробы запросил новости сразу с 3х сайтов – «3Dnews.ru», «bash.org.ru» и «novayagazeta.ru».
Парсер на скорости 64kb/s пропахал часа полтора, слопал примерно 50Mb трафика, занял столько же на диске своим кешем (временно) но родил таки 3 полноценных незипованных FB2 книжки.
3Dnews.fb2 – 22Mb – за 8 дней с картинками
bash.fb2 – 0,66Mb – за 12 дней без картинок
novaya_gazeta.fb2 – за 2 дня с картинками
В книгах не анонсы статей, а полное содержание!
Отличное двухуровневое оглавление.
Хороши выглядят на полке (PB360), в качестве автора – домен, в качестве серии – дата.
В процессе я следил за логом и кешем, были многочисленные обрывы по тайм-ауту и битые файлы картинок. Но в книге все картинки целые.
Не знаю, масштабирутся картинки или нет, но в книге не попалось ни одной, не умещающейся в экран.
На большом файле ридер однажды споткнулся и вывалился в меню.
Вторично запускать не стал, а надо бы. Интересно, он опять начнет все качать (кэш-то удален) или только обновления? Не пробовал выдирать контент со страниц, и грабить архивы периодики. Это потом.
В общем, программа не удобная, но она развивается и дает отличный результат.
Появилось желание написать свой сценарий, вероятно придется попыхтеть.
Автору огромное спасибо!
http://img171.imageshack.us/img171/4564/scr0003.gif
http://img142.imageshack.us/img142/2825/scr0005.gif
http://img142.imageshack.us/img142/4412/scr0004.gif
Игорь, не могли бы взглянуть и сказать, что там не работает с the-ebook.org/forum/rss.php ?
Сам я не могу найти, не разобрался пока.
[i]Парсер на скорости 64kb/s пропахал часа полтора…[/i]
Спасибо, что дождались! Картинки – есть картинки. Тем более от 3DNews. Ответы и комментарии разместил в ветке «Общий раздел по программному обеспечению. rss feeds –> fb2″ Ссылку здесь разместить не могу – банит.
Hello,
I would like to get rss news from different subareas of http://www.sme.sk.
Can you help me to set up my environment?
Thanks and regards,
Peter
Please contact me via email nmds48@gmail.com for more detailed information.
Hello Igor,
mail sent – waiting for your solution.
Regards,
Peter
hello Igor,
read something from your webpage:
1. for full-context RSS use:
nmd -cf bash http://bash.org.ru/rss/
update:
nmd -ua bash
to get result bash.fb2 in subdirectory bash.
2. for normal (short) RSS use command:
nmdParser creates in locator subdirectory bbc, with address http://www.bbc.co.uk/russian/index.xml
F.e.:
nmd -cb bbc http://www.bbc.co.uk/russian/index.xml
nmd -ua bbc
Regards,
Peter
PS: Somehow I need to check the problem with http://www.sme.sk