Михаил Кондратович - Создание электронных книг в формате FictionBook 2.1: практическое руководство. Версия 1.0 Release Candidat 1 от 15.05.2008 г.

Тут можно читать онлайн Михаил Кондратович - Создание электронных книг в формате FictionBook 2.1: практическое руководство. Версия 1.0 Release Candidat 1 от 15.05.2008 г. - бесплатно полную версию книги (целиком) без сокращений. Жанр: Прочая околокомпьтерная литература. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Михаил Кондратович - Создание электронных книг в формате FictionBook 2.1: практическое руководство. Версия 1.0 Release Candidat 1 от 15.05.2008 г. краткое содержание

Создание электронных книг в формате FictionBook 2.1: практическое руководство. Версия 1.0 Release Candidat 1 от 15.05.2008 г. - описание и краткое содержание, автор Михаил Кондратович, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Книга предназначена для пользователей, желающих самостоятельно создавать и редактировать электронные книги в популярном формате FictionBook. Подробно описан сам формат FB и программные средства, предназначенные для работы с ним.

Создание электронных книг в формате FictionBook 2.1: практическое руководство. Версия 1.0 Release Candidat 1 от 15.05.2008 г. - читать онлайн бесплатно полную версию (весь текст целиком)

Создание электронных книг в формате FictionBook 2.1: практическое руководство. Версия 1.0 Release Candidat 1 от 15.05.2008 г. - читать книгу онлайн бесплатно, автор Михаил Кондратович
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

for i in 0..(wtext.length-1)

case wtext[i]

when 20: wtext[i] = 182 # обработать символ "Пи"

when 21: wtext[i] = 167 # обработать символ "параграф"

when 128..255: wtext[i] = doswin[wtext[i]-128] # обработать все остальное

end

end

wtext.gsub!("...", (133).chr) # многоточие - в символ "многоточие"

wtext.gsub!(/(\s)-\s/,'\1'+(151).chr+" ") # компьютерное тире - в типографское

# порубим строку в массив

wtext = wtext.split(/\n/)

wtext.collect! do |line|

if line =="" then

line = "" # пустая строка?

else

line="

"+line+"

" # нет, не пустая

end

end

# добавляем заголовок

wtext.insert(0,"

nonfiction

ru

Yuzich Ruby script (dostxt -> FB2)

")

# добавляем хвост

wtext << "

\n\n\n"

# сохраняем выходной файл

wfile = File.new(ARGF.filename.dup.gsub!(/\.txt/i,".fb2"),"w")

wfile.puts wtext

wfile.close

После того, как скрипт отработает, в директории появится файл <���имя_исходного_файла>.fb2. Небольшая правка в FB Editor и он полностью готов.

Пример второй.
Конвертирование журналов c WiseSoft.ru

Эта задачка гораздо интереснее первой. Как раз тот случай, когда написание специализированного конвертора полностью оправдано.

На ресурсе http://www.wisesoft.ruнаходится множество различных журналов. Форматы в котором они представлены, различаются, Но один из них особо привлекателен для преобразования в FB2. Я говорю о журналах которые представлены в виде пачки html-файлов («Хакер», «Хакер-спец», «Мобильные компьютеры», «Хулиган» и др.). При всей простоте конвертированию стандартными средствами этот способ хранения данных поддается с трудом.

Более близкое знакомство выявило следующее. Имеется файл index.htm с оглавлением. Статьи представляют собой кучки html-файлов, разбитые по папкам. Текст представляет собой обычные абзацы, обрамленные тэгами «

». Оформление html-ок везде стандартное.

К сожалению, такая лафа наблюдается не везде. С декабря 2006 года формат журналов начал эволюционировать. Статьи стали вмещаться в одну html-ку, появились списки, картинки, дополнительные стили. Хотя и не во всех журналах. Основная масса изданий представлена именно в таком виде, как описано выше. Поэтому сосредочимся именно на них.

Наша задача заключается в том, чтобы вырезать куски текста из 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})<\/font>(.+)<\/SPAN>/.match(ltext).captures

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

filtr=/(.+)<\/SPAN>|(.+)<\/a>/

lmas = ltext.grep(filtr)

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

outtext="

"+fbtitle[0]+fbtitle[1]+fbtitle[2]+"

\n"

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

annotation="

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

\n"

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

flagSect=false

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

lmas.each do |line|

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

if flagSect then outtext=outtext+"\n" end # РАЗДЕЛИТЕЛЬ. секцию закрывать надо?

/(.+)<\/SPAN>/.match(line) # выгрызаем разделитель...

outtext=outtext+"

\n

"+$1+"

\n" # открываем секцию раздела

annotation=annotation+"

"+$1+":

\n" # и дополняем аннотацию

flagSect=true # секция осталась открыта...

else # НЕ-ЕТ, ВСЕ-ТАКИ ССЫЛКА...

filtr.match(line)

pathf = $2 # берем путь к первому файлу статьи...

annotation=annotation+"

"+(149).chr+" "+$3+"

\n" # дополняем аннотацию...

puts pathf[0..2] # это чтобы не скучно было ждать...

outtext=outtext+"

\n" # открыли секцию...

while File::exists?(pathf) do # обрабатываем статью

# считали файлик в текстовую строку...

wfile=File.open(pathf)

wtext=wfile.readlines.to_s

wfile.close

wtext[/.+?<\/p>/m]="" # чик! головка...

wtext[/

.+<\/html>/m]="" # чик! хвостик...

# заголовок статьи оставлять?

wtext = pathf[4,2].to_i == 1 ? wtext.sub(/.*\n(.*\n.*\n).*\n.*\n/,' \1') : wtext.sub(/.*\n.*\n.*\n.*\n.*\n/,' \1')

outtext=outtext+wtext # оставшийся текст - к основному массиву

# модифицируем имя файла

if pathf[4,2].to_i >= 10

pathf[4,2] = (pathf[4,2].to_i + 1).to_s

else

pathf[4] = (pathf[4,2].to_i + 1).to_s

end

end # конец цикла

outtext=outtext+"

\n" # закрываем секцию

end # усе. статью оформили...

end # все статьи собрали в одну строку...

# модифицируем выходной текст под FB2

outtext.gsub!("

","

")

outtext.gsub!("

","")

outtext.gsub!("

","

")

outtext.gsub!("

","")

outtext.gsub!(" ",(160).chr)

outtext.gsub!(/&(?!lt;|gt;)/,"&")

annotation.gsub!(/&(?!lt;|gt;)/,"&")

outtext.gsub!("
","

")

outtext.gsub!("
","

")

# чистим мусор

outtext.gsub!(/\x01|\x12|\x18|\x1E/, "?") # удаляем непечатные символы

# корректируем неправильное использование "<" и ">"

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Михаил Кондратович читать все книги автора по порядку

Михаил Кондратович - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Создание электронных книг в формате FictionBook 2.1: практическое руководство. Версия 1.0 Release Candidat 1 от 15.05.2008 г. отзывы


Отзывы читателей о книге Создание электронных книг в формате FictionBook 2.1: практическое руководство. Версия 1.0 Release Candidat 1 от 15.05.2008 г., автор: Михаил Кондратович. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x