Вы можете прислать нам новости или сообщить что-то очень важное заполнив форму.

Print Friendly, PDF & Email

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

24 сентября, 2009
Ключевые слова: , , , , , , ,

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



Вы можете прислать нам новости или сообщить что-то очень важное заполнив форму.