Генеральный спонсор проекта The-eBook.orgpocketbook.com.ua Устройства Магазины Сервис Поддержка bookland.net.ua Книги

Apple iPad“Между телефоном и компьютером, не заменяя их...”

HP Slate“До 2010 года казалось, что о Microsoft Tablet PC просто забыли...”

Начало Новости Устройства Загрузки Форум Реклама Даровать О проекте
Реклама FR Book (01 March 2010)
 
Реклама Sergmoj (11 May 2010 )

Как решить проблему неполных RSS лент или получение веб-контента для чтения его на электрокнижке

24 сентября, 2009 Tags: , , , , , ,

nmdparserНачалось все с RSS. Возникла у меня идея использовать свой LBook V3 в режиме «периодического издания». Очень быстро я понял, что такое «краткая лента с анонсами». Среди решений этой проблемы, на тот момент, были :

  1. Python скрипт от Traut & Mar00k – претензий минимум, а именно одна – не все форматы графики поддерживает;
  2. RSS Farm – в то время не поддерживал пользовательские каналы и пользоваться можно было только тем, что там есть;
  3. Yahoo Pipes – странные ошибки, проблемы с кодировками, неожиданные отказы плюс моя личная нелюбовь к Веб приложениям.

А еще я хотел (помимо RSS новостей):

  1. Читать форумы в оффлайне и прямо на электрокнижке;
  2. Выкачивать и читать архивные версии журналов;
  3. Выкачивать и читать книги размещенные на сайте без возможности скачивать их целиком.

Понятно, что один только RSS мне все это не обеспечит. После некоторых раздумий решил написать что-то свое.

Основную задачу я видел так:

Нужна программа, способная сформировать документ в выходном формате, если пользователь корректно объяснит ей, с помощью настроек, следующие вещи :

  1. Где брать контент (адреса);
  2. Как обрабатывать контент (правила обработки);
  3. Куда сохранять выходные документы (хранилище, организованное в виде категорий документов (для удобства)).

В качестве языка программирования был выбран Java 6 SE, чтобы «везде работало». В качестве выходного формата был выбран FB2, в силу его распространенности и адекватности с точки зрения программиста.

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

Хочу отметить следующее:

Программа отдельно – настройки отдельно. Настройки для работы с конкретным сайтом представляют собой небольшие XML файлы, лежащие в отдельном каталоге рабочего пространства программы.

Из этого следует:

  1. Можно писать свои настройки;
  2. Можно использовать готовые;
  3. Настройками можно обмениваться, например, по электронной почте или как-нибудь еще;
  4. Немножко романтическо-утопический вариант: каждый уважающий себя сайт может публиковать эти настройки у себя с тем, чтобы рядовые пользователи могли их скачать и использовать для автоматического получения контента сайта.

В прилагаемой к программе документации я попытался изложить и основные моменты, положенные в архитектуру программы и достаточно небольшой (на данный момент менее 10 операторов) язык описания правил обработки контента.

Приглашаю всех ознакомиться с результатом: sites.google.com/site/nmdparser/
Подготовлено: IgorS48

Похожие публикации:


Комментарии к сообщению “Как решить проблему неполных RSS лент или получение веб-контента для чтения его на электрокнижке”

  1. Ars:

    Спасибо! Это то, чего давно не хватало!

  2. [...] СМИ. Автор (видимо?) описывает свой проект на The-ebook (Как решить проблему неполных RSS лент или получение веб-…) и на сайте проекта (Для чего нужен nmdparser.) Похоже, будет [...]

  3. LutikTheBard:

    Спасибо! Давно искал такую программу!

  4. Vasilevs:

    Супер! Это то, чего не хватало.
    Было бы неплохо все-таки сделать в виде exe файла, чтобы хранить на книге и запускать из любого места дислокации.

    • Это Вы можете уже сейчас. Я тестил такой вариант. nmdParser держите на карточке и запускаете с нее. Главное чтобы на «месте дислокаци» были Java и Internet. На этот случай в nmdParser заложена поддержка разных наборов конфигурационных параметров. Правда это в документации я еще не успел описать :) .

  5. Kosta:

    Я тоже скачал. Испытал. Заработало не сразу, пришлось похимичить.
    Для пробы запросил новости сразу с 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

    • Kosta:

      Игорь, не могли бы взглянуть и сказать, что там не работает с the-ebook.org/forum/rss.php ?
      Сам я не могу найти, не разобрался пока.

    • [i]Парсер на скорости 64kb/s пропахал часа полтора…[/i]

      Спасибо, что дождались! Картинки – есть картинки. Тем более от 3DNews. Ответы и комментарии разместил в ветке «Общий раздел по программному обеспечению. rss feeds –> fb2″ Ссылку здесь разместить не могу – банит.

  6. 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

  7. Hello Igor,

    mail sent – waiting for your solution.
    Regards,

    Peter

  8. 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


ReaderOne (01 April 2010)