Создание FB2 версии свежего номера журнала/газеты


    Предыстория


    Последнее время всё больше журналов и газет выкладывают свои свежие номера в сеть (Ведомости, Эксперт, Esquire и т.п.). Все хорошо с этими номерами за одним исключением — что бы их читать нужен интернет.
    С интернетом проблема в том что он не везде есть (метро) и не каждое устройство его видит (большинство e-ink ридеров).
    В связи с этим родилась мысль о том что не плохо бы делать копии периодики в виде электронных книжек (например в FB2 формате).

    Задача


    Создать решение, позволяющее генерировать файл FB2 формата из куска сайта, содержащего нужный выпуск журнала (например Эксперт №32 за 2010 год).
    Файл должен содержать картинки и желательно оглавление с перечнем статей.
    Создание файла с новым номером должно происходить в (полу)автоматическом режиме, занимать не больше 5-10 минут и не требовать серьёзной ручной обработки.

    Поиск решения


    Конвертер Что-То->FB2


    Как оказалось конвертеров HTML->FB2 кот наплакал. А таких, которые в автоматическом режиме могут обработать пачку html страничек и корректно составить оглавление и прописать ссылки, нет вообще. Хотя может быть я плохо искал или не разобрался в возможностях того, чего нашел.
    Для начала я попробовал все редакторы описанные в обзоре компьютерры.
    • «Any to FB2» — напрочь убивал кирилицу (скорее всего из за кривых рук) и заточен под работу с одной страницей.
    • «FictionBook Designer» — мощная штука, но не имеет (не нашел) функции автоконвертации.
    • Web2FB2 — ближе всего желаемому но имеет ограничение в 10 страниц и валит всё в одну кучу без оглавления

    Дальнейший поиск вывел на замечательный сервис FeedConverter (об этом сервисе на хабре уже писали).
    Тестирование на первом попавшемся русском RSS потоке показало что сервис:
    • справляется с кириллицей
    • генерирует оглавление в виде перечня записей
    • принимает картинки
    Т.е. теперь, для того что бы получить результат достаточно скормить на вход этому сервису фид, в котором будут полнотекстовые статьи номера.

    Полнотекcтовый RSS feed


    Рассматриваемый сайт не поставляет полнотекстового RSS с данными номеров. Только анотации последнего номера.
    Для создания Full Text RSS удобно использовать Yahoo Pipes. Скармливаем ему наш поток, и в цикле подгружаем полный текст статьи — http://pipes.yahoo.com/pipes/pipe.edit?_id=661b8231fa3df88317939d452e772c10. В случае, если сайт не предоставляет RSS потока вообще, а только публикует статьи (как например Esquire) механизм Yahoo Pipes позволяет отпарсить содержимое страницы, достать от туда ссылки и выкачать нужные статьи. Для этого я создал pipe http://pipes.yahoo.com/pipes/pipe.edit?_id=85427a7ff66aa7c06a1fa8da677fbd25
    У данного механизма есть плюс в том, что он позволяет достать любой номер, а не только последний.
    Для этого в строке вызова надо лишь поменять параметр, отвечающий за год и номер внутри года http://pipes.yahoo.com/pipes/pipe.run?_id=85427a7ff66aa7c06a1fa8da677fbd25&_render=rss&number=31&year=2010.

    Итого

    Финальный алгоритм создания FB2 версии периодики следующий:
    1. Находим сайт с информацией
    2. Берем RSS или индексную страницу
    3. Парсим страницу в Yahoo Pipes и подтягиваем полный текст статей
    4. Скармливаем выдачу пайпа FeedConverter-у и забираем FB2 книжку
    5. ??????
    6. PROFIT!
    При однажды настроенном пайпе получение нового номера в FB2 виде будет заключаться заходе на сайт FeedConverter-а и нажатия кнопки генерации.

    Ложка дегтя

    • В связи с тем, что Yahoo Pipes работает не слишком быстро, генерация может не пройти с первой попытки. Надеюсь создатели FeedConverter-а сделают что-нибудь с этим.
    • У Yahoo Pipes есть ограничения по тому, сколько процессорного времени может съедать один пайп. В связи с этим некоторые объемные выпуски журнала не укладываются в прокрустово ложе и вылетают с ошибкой (например Эксперт №1 за 2010 г.). Что делать с этим пока не понятно. Возможно стоит разнести парсинг и подгрузку текстов в разные пайпы.
      Подгрузку полных статей можно вынести на ReadBox.info (см ниже)

    Update 1: Ниже в комментариях подсказали отличный сервис для создания полнотекстовых версий — ReadBox.info. Для того что бы получить FullText feed на вход нужно скормить RSS поток и XPath блока с текстом. Таким образом функцию подгрузки текста можно убрать из Y!P, что позволит ей работать более стабильно.
    Собственно теперь процесс можно сделать таким:
    1. Находим сайт с информацией
    2. Берем RSS или индексную страницу
    3. Оставляем только нужные статьи или парсим индексную страницу в Yahoo Pipes
    4. Подтягиваем полный текст статей с помощью ReadBox.info
    5. Скармливаем RSS FeedConverter-у и забираем FB2 книжку
    6. ??????
    7. PROFIT!

    Update 2: Для тех кто не испугается ковыряния в конфигах и курения мануалов есть отличная программа для нашей цели — nmdparser. Вот пример того, как её можно настроить для получения в FB2 архивной копии Авторевью.
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 50

      +1
      Спасибо за статью, надо попробовать насколько это удобно и гибко. Пока пользуюсь отличной программкой nmdParser.
        0
        Хм. Эту програмку я видел, но не разбирался. Испугался учебной курвы (© Сергей Голубицкий) — уж больно крута.
        А с пайпами в свое время освоился, поэтому проще было на них сделать.
          0
          спасибо вам за наводку на nmdParser, ценная и удобная софтина.
          +1
          >Все хорошо с этими номерами за одним исключением — что бы их читать нужен интернет.

          По-моему, это сознательная политика редакций/издательств — находясь на сайте ты, кроме собственно чтения, просматриваешь и рекламу, скачав fb2 (pdf, ...) ты рекламу не смотришь (или нужно её и туда ввёрстывать, но тут ещё другие соображения — как считать число показов? по количеству скачиваний?)
            0
            В те дни, когда Эксперт пытался давать доступ к номерам за деньги, они позволяли скачивать PDF идентичный бумажному выпуску (и так же напичканый рекламой). В общем то никто не мешает так же поступать и с FB2.
            А по поводу того как считать показы, с бумажными версиям как то же считают, хотя там еще меньше гарантий что номер будет прочитан ровно один раз. Например пришел по подписке в большую контору — его может никто не увидеть вообще, или его положат в waiting room — тогда, сидя в очереди, его зачитают до дыр.
            +2
            Я бы с удовольствием почитал Хабр в fb2 на кпк.
              0
              Можно попробовать скормить FeedConverter-y вот этот поток: feeds.rss-farm.ru/rssfarmru/habrahabr
                +1
                Кстати говоря, та же Компьютерра выдает недельные материалы в виде fb2. Очень удобно для дороги.
                  0
                  Что то она похоже забили на это дело… Последний файл датирован мартом.
                    +2
                    Ээээ, были же ж. Гугление выдает копии на www.kinnet.ru/cterra/
                      0
                      Это фанаты похоже, а не официальная сборка =)
                        +2
                        Значит перефразируем :) те же фанаты Компьютерры выдают недельные материалы в fb2. Очень удобно для дороги
                          +1
                          Или так =)
                          Теперь у вас есть описанный механизм как сделать то же самое для любого другого сайта и не зависеть от его фанатов ;)
                  0
                  весьма ценная информация по конвертированию, пригодится. вообще тема конвертирования из одного формата в другой — это очень нужная тема, особенно в плане того как автоматизировать процесс. спасибо что не пожалели времени и выложили это на сайт. добавил в избранное.
                    0
                    Спасибо! весьма удобный и легкий способ затарится любымым чтивом.
                      0
                      А на картинке настоящее устройство или рендер? Если настоящее, можно узнать название?
                        0
                        Это Skiff Reader. Бог его знает существует ли он на самом деле. Может это инженерный сэмпл.
                          0
                          Блин, я бы такой купил — жалко что нигде не «светится» в продаже.
                          Его характеристики по вашей ссылке — прямо впечетляют
                      0
                      Конвертировать сразу в epub не получается. ((
                        –3
                        Журнал «Эксперт» хоть в чем-то эксперт?
                        Так вроде читаешь — все умно и правильно. Доходишь до материала в котором сам хоть немного эксперт — такой бред.
                        На статье «Профессор Голант изобрел идеальный градусник» меня вообще стошнило. Сколько лет прошло а все помню.
                        Ну не должен такой журнал писать в стиле Б. Питомника и Г. Проницательного.

                          0
                          Не соглашусь. Для многих Эксперт, а чаще даже его региональные издания, это чуть ли не единственная альтернатива пафосной полуправде из ящика. Тут хоть узнаешь, что на самом деле происходит.
                          0
                          Никто не выложит гововый файл fb2? Хочется посмотреть, как это будет выглядеть
                            0
                            Выложил на Народ
                            Njkmrj он малек доработан напильником. В текстовом редакторе зашел, название поменял.
                              0
                              спасибо
                          • UFO just landed and posted this here
                              0
                              >Я так и не увидел в Вашем посте решения.
                              Решение заключается в нетривиальном сочетании сервисов от 3-х поставщиков: Сайт журнала, Yahoo Pipe и FeedConverter.

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

                              >Стойкое впечатление, что Ваша задача — напомнить о FeedConverter.
                              Ви мене таки не поверите, но статью, рекламирующую FeedConverter я нашел уже после опубликования, когда Хабр предложил мне её в Похожих Публикациях наверху справа.

                              >Всем, кто работаето с EPUB и FB2, рекомендую софтину calibre-ebook.com — не идеал, но ничего более внятного не нашел.
                              Спасибо за наводку. На первый взгляд тяжелая монструозная библиотека, у которой задача формирования книг не больше чем маленькая фича. Например с потоком expert.ru/printissues/expert/rss/ она сразу не справилась. Если она не умеет подтаскивать полные версии статей, то смысла в ней мало.

                              >Новостные сайты, если только сами захотят и додумаются, будут предлагать КПК версию (опять же нужно зайти на их ресурс и скачать) своих выпусков.
                              Ну если хочется зависеть от прихоти владельцев новостных ресурсов, то пожалуйста, вперед. Компьютерра вон поигралась пару месяцев и забросила. Эксперт пару номеров выдал в PDF за деньгу и тоже сдулся. Бизнес Журнал тот вообще даже RSS не отдает.
                              +1
                              Тема актуальная более чем. Чтение электронных публикаций удобна и станет более популярной с выходном различных девайсов, позволяющих удобно это осуществлять (iPad, JooJoo, HP Slate, Dell и т.д.).
                              Лично использую для чтения два сервиса: Первый — Bookmate, в котором книги можно загружать в форматах fb2 и epub прямо из сети или из дома. Тут удобнее читать книги. Второй — Zinio — с большим функционалом и более" красивый" предназначен для чтения журналов таких издателей как National Geographic, GEO, Playboy, Maxim, PC Mag, Digital Photo, Decor, Art Mag,… и этот список безграничен, хотя книги тоже есть. Но у последнего есть один недостаток, — он коммерческий, есть конечно пара десятков фриварных журналов, но всё же.
                              Оба варианта поддерживают оффлайн режим, что решает проблему временной потери доступа к Интернету.
                              Так что есть из чего выбирать.
                                0
                                Некоторые издания дают PDF или сразу EPub. PDF -> EPub легко и безболезненно.
                                  0
                                  А с примерами?

                                  И еще — посоветуйте толковый инструмент для конвертирования DOC, TXT в FB2 или EPUB. А то домашняя библиотека такая разношерстная…
                                    0
                                    Примеры я там ниже дал, а насчёт конвертеров — ни разу ничего не конвертировал (: Всё что я читаю либо в PDF либо в EPub. И то и другое отлично читается как в моём гуглофоне, так и на компе. Ну русскую литературу качаю в FB2, но оно тоже отлично везде читается. А всё остальное я не качаю (:
                                    0
                                    Некоторые — это какие?
                                      0
                                      Если говорить про книги, то почти все крупные зарубежные издательства позволяют купить книгу как в PDF, так и в EPub. У меня есть опыт покупки у O'Reilly. Если говорить про периодику, то EPub я не видел, но PDF — не редкость. Мне каждый месяц приходит DJ Magazine в PDF и местный Латвийский журнал Digital Times. Это из тех, что я сам своими глазами читаю. А так много всякой периодики есть в PDF. Платно конечно же, обычно. В основном — зарубежное, ибо в России всё сразу на торренты улетает. Общался с представителем одного издательства, которое печатает книги IT тематики. Он сказал, что эксперименты были, ибо многие люди заинтересованы читать цифру. Но увы, культура покупки электронной книги отсутствует, потому не выгодно. А ОЧЕНЬ жаль!
                                        +1
                                          0
                                          Угу. Проблема только в том, что у узкоспециализированного издательства аудитория маленькая, плюс потребитель зарабатывает деньги благодаря знаниям вычитанным из книг. Я считаю это нечестным и вполне себе воровством — зарабатывать за счёт знаний других людей.

                                          А слушать музыку бесплатно для души — так и должно быть. Вот ставить в платном клубе пиратки — это не ок. Особенно если для автора музыки — это вопрос карьеры.
                                    0
                                    Может я зажрался, но тратить 5-10 минут нас создание 1го номера в fb2… Да я на прочтение болше 30мин не могу потратить.

                                    Мне подавай так: на сайте поставил галочки напротив тех журналов которые хочу читать, выбираю формат (фб2, епуб, пдф), и все. Причем делаю это 1 раз.
                                    Потом у себя на компе нажимаю 1 кнопку — «Sync» и получаю все свежие номера вышедшие с прошлого раза.

                                    Вот. Делайте стартап, монетизируйте ;) В принципе готов даже платить за подписку.

                                    Но вообще статья хорошая, просто я пользовался до этого плагином для firefox, который сразу в епуб сохраняет.
                                      0
                                      В принципе у Feed Converter-a так всё и устроенно. Там заносишь любимых список RSS лент, указываешь формат и жамкаешь кнопку. Когда уже все каналы настроены, дела на 1 клик.
                                      Ограничение 10 минут было для того что бы не было соблазна в алгоритм включать ручной составление оглавления и т.п.
                                        0
                                        ну в том то и дело что
                                        1. RSS != журнал
                                        2. туда нужно каждый раз заходить
                                        3. после этого надо ручками копировать на ридер

                                        если бы не пункт 1. можно было бы и из Colibri все это делать, там есть подписка на rss которaя конвертируется в epub. Правда криво :(
                                          0
                                          C помощью Y!P можно сделать RSS=журналу. Собственно пост в частности об этом
                                      0
                                      В принципе у Feed Converter-a так всё и устроенно. Там заносишь любимых список RSS лент, указываешь формат и жамкаешь кнопку. Когда уже все каналы настроены, дела на 1 клик.
                                      Ограничение 10 минут было для того что бы не было соблазна в алгоритм включать ручной составление оглавления и т.п.
                                        0
                                        не туда
                                        0
                                        Сам тоже озадачился как-то такой проблемой. Полного решения не нашел, хотя YQL выглядит привлекательно для этих целей.
                                        Но так как я пытался сграбить Популярную механику с сайта, то вряд ли какая тулза справится с отходами жизнедеятельности тамошнего дизайнера:
                                        — одна(!) статья на странице сайта содержит около 150 таблиц вложенных друг в друга
                                        — картинки лежат в @background ячеек таблицы ( в каком стандарте это написано? я не нашел)
                                        — структуры и внятных границ статей/врезок и пр. внутри нет
                                        — статьи долго висят в неполном виде, и нет точно предсказуемого момента, когда журнал доступен целиком
                                        В общем пришлось писать специальную php страничку, который разбирается с этим го… щем.
                                        Сначала я тоже думал про FB2 и тоже не нашел хорошей автоматической тулзы для конвертации странички. Но так как я пользуюсь Alreader, то остановился на очень простом варианте — сохраняю html с картинками, а потом упаковываю все в один архив. Читалка без проблем его открывает и отображает вместе с картинками.
                                          0
                                          А адрес сайта можно? Не этот случайно www.popmech.ru/archive/2010/issue/94/?
                                          Если он то никаких проблем быть не должно. Структура достаточно простая…
                                            0
                                            Да он. Простая снаружи, а внутри черт ногу сломит.
                                              0
                                              Прикольно. Y!P не хочет скачивать себе страницу с ошибкой: Can't fetch pages that do not allow it.
                                              У веб мастеров есть возможность запрещать Y!P обращаться к страницам сайта.
                                              Мдя… интересненько
                                              0
                                              к тому же мне надо было собрать все статьи со всеми картинками на одну страницу.
                                              плюс там есть сноски сбоку статьи, которые надо засунуть в тот же поток, т.к. на мобиле не такой широкий экран, как там рассчитано.
                                            0
                                            Для справки:
                                            После закрытия бумажной версии, Компьютерра, издавалась в FB2 — www.computerra.ru/fb2/
                                            Но судя по тому что номера с марта не обновлялись — проект зачах.
                                              0
                                              Тут эту тему уже обсуждали. Фанаты продолжают сборки делать.
                                              0
                                              Полную рсс-ленту хабра можно получить тут readbox.info/full-rss?sid=yqzs01zgi6
                                              А создавать другие полнотекстовые ленты можно тут readbox.info/full_rss_feeds
                                              Сразу предупреждаю, что этот сервис не решает данную проблему на 100%, но возможно вам поможет.

                                              Only users with full accounts can post comments. Log in, please.