Создание электронных книг в формате FictionBook 2.1: практическое руководство (pre-release) - Страница 19

Изменить размер шрифта:

Наша задача заключается в том, чтобы вырезать куски текста из html-файлов, склеить их в один файл.

Скрипт, представленный ниже, не только блестяще справляется с этим, но и выдает на выходе вполне приличный FB2, с заполненным заголовком, готовой аннотацией и разбитый на секции.

# Скрипт для конвертации журналов с WiseSoft.ru в FB2

# (C) Юзич, апрель-май 2008 г.

#

# поддерживаемый формат файлов: пачка html, журналы сделанные c ноября 2003 г. по ноябрь 2006 г. включительно.

# примечание: изменения в декабре 2006 и марте 2007 - некритичные

# теоретически должен обрабатывать журналы сделанные по июль 2007 включительно

# но уже с мая 2007 в тексте могут попадаться дополнительные тэги, мешающие правильной конвертации

# хотя все это касается, в основном, журнала "Хакер" ("Хакер-спец").

# "Мобильные компьютеры", к примеру, по-прежнему, как шли, так и идут в старом формате

# да и чтобы обрабатывать журналы, сделанные до ноября 2003, достаточно подправить ключевые фразы

#

# запускать из директории, где находится файл-оглавление журнала (index.htm)

# запуск: ruby ws_j_cnv.rb

#

# считываем файл-оглавление в строку

wfile=File.open("index.htm")

ltext=wfile.readlines.to_s

wfile.close

# выгрызаем заголовок

fbtitle=/(.+)(#d{1,3})(.+)/.match(ltext).captures

# выгрызаем ссылки на статьи и разделители

filtr=/(.+)|(.+)/

lmas = ltext.grep(filtr)

# начинаем формировать выходной текст

outtext="<p>"+fbtitle[0]+fbtitle[1]+fbtitle[2]+"</p>n"

# начинаем формировать аннотацию

annotation="

Содержание номера:

n"

# флажок открытой секции раздела

flagSect=false

# прокручиваем список ссылок

lmas.each do |line|

  if line.include? "SPAN" then     # ССЫЛКА ИЛИ РАЗДЕЛИТЕЛЬ?

    if flagSect then outtext=outtext+"