Мануал: создание fb2 файла: description (для тех, кто вычитывает или создает книги)

Здесь далее содержится мануал по тому, как правильно делать дескрипшен для fb2-файлов.

Пример начинки дескрипшена fb2-файла. Это идеал.

<?xml version="1.0" encoding="utf-8"?>
<FictionBook xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.gribuser.ru/xml/fictionbook/2.0">
    <description>
        <title-info>
            <genre>sf_fantasy</genre>
            <genre>sf_social</genre>
            <author>
                <first-name>Урсула</first-name>
                <middle-name>Крёбер</middle-name>
                <last-name>Ле Гуин</last-name>
            </author>
            <book-title>Город иллюзий</book-title>
            <annotation>
                <p>Герой, оказывающийся на оккупированной неизвестными существами — Сингами — Земле с полностью стертой памятью, путём нравственных скитаний и умозаключений пытается отличить Ложь от Истины и понять, кем же он на самом деле является.</p>
            </annotation>
            <date>1967</date>
            <coverpage>
                <image xlink:href="#cover.png"/>
            </coverpage>
            <lang>ru</lang>
            <src-lang>en</src-lang>
            <translator>
                <first-name>Сергей</first-name>
                <last-name>Славгородский</last-name>
            </translator>
            <sequence name="Хейнский цикл" number="3"/>
        </title-info>
        <src-title-info>
            <genre>sf_fantasy</genre>
            <genre>sf_social</genre>
            <author>
                <first-name>Ursula</first-name>
                <middle-name>Kroeber</middle-name>
                <last-name>Le Guin</last-name>
            </author>
            <book-title>The City of Illusion</book-title>
            <date>1967</date>
            <lang>ru</lang>
            <src-lang>en</src-lang>
            <translator>
                <first-name>Sergey</first-name>
                <last-name>Slavgorodsky</last-name>
            </translator>
            <sequence name="Hainish cycle" number="3"/>
        </src-title-info>
        <document-info>
            <author>
                <first-name>имя создавшего документ</first-name>
                <last-name>фамилия</last-name>
                <nickname>ник</nickname>
                <email>мыло</email>
            </author>
            <author>
                <first-name>...</first-name>
                <last-name>...</last-name>
                <nickname>...</nickname>
                <email>...</email>
            </author>
            <program-used>FB Tools, Fiction Book Designer</program-used>
            <date value="2008-02-12">12.02.2008</date>
            <src-url>http://lib.aldebaran.ru/author/le_guin_ursula/le_guin_ursula_gorod_illyuzii/</src-url>
            <src-ocr></src-ocr>
            <id>EC8BB391-F8A0-4C6D-84D1-C82A299EFE96</id>
            <version>2.0</version>
            <history>
                <p>v1.0 — книга отсканирована и выложена на Aldebaran. Roland (17.03.2005)</p>
                <p>v2.0 — произведена вычитка — исправлено более 200-т ошибок; добавлена внутренность fb2 (обложка, издание, переводчик и т.д.). С орфографией теперь всё вроде нормально, так что — занимающимся вычиткой — ищите синтаксические ошибки ;). Soshial (12.02.2008)</p>
            </history>
        </document-info>
        <publish-info>
            <book-name>Ожерелье планет Экумены</book-name>
            <publisher>Эксмо-Пресс</publisher>
            <city>Москва</city>
            <year>2007</year>
            <isbn>978-5-699-21588-1, 5-04-008488-9</isbn>
        </publish-info>
    </description>
    <body>
        ЗДЕСЬ НАХОДИТСЯ ТЕКСТ КНИГИ
    </body>
    <binary content-type="image/png" id="cover.png">
        ЗДЕСЬ ИЛЛЮСТРАЦИИ: ЧАЩЕ ВСЕГО - ОБЛОЖКИ
    </binary>
</FictionBook>

А теперь то, на что ОБЯЗАТЕЛЬНО следует обратить внимание:
1. кодировка должна быть utf8, причем это должно быть не только написано в первой строчке файла, но и файл должен соотвествующим образом быть закодирован.
2. кроме тега (title-info) есть еще тег (src-title-info), который полностью повторяет информацию первого, но на языке оригинала (предпочтительней язык оригинала, в крайнем случае можно на английском).
note1, будьте внимательны: некоторые fb2-редакторы стирают эту информацию, потому что не соответствуют стандарту fb2; поэтому для редактирования description советую исползовать обычный текстовый редактор (мне больше всего нравится notepad++ - попробуйте!).
note2, еще раз повторюсь: тег (src-title-info) нужен в файле обязательно. впоследствии можно будет использовать для установления alias'ов.
note3, аннотация на языке оригинала не обязательна.

3. авторов доумента может быть несколько. 4. если книга принадлежит какому нибудь циклу, лучше указать тег (sequence name="Hainish cycle" number="3"/) 5. после правки документа, следует увеличить номер версии документа. если правок было не очень много, то можно не на единицу увеличивать, а на одну десятую например: (version)1.2(/version) 6. в теге (history) обязательно указывайте: номер версии, до которого вы улучшили документ, что вы сделали и дата правки(!!). note: следите за тем, чтобы в аннотациях и истории правок абзацы выделялись тегами (p)(/p) 7. следите пож-ста за тем, чтобы тег (/date) был в актуальном состоянии. 8. чем больше информации - тем лучше. не бойтесь загромоздить дескрипшен ненужной информацией.

ps. если хоть что либо неясно - спрашивайте, оставляйте комментарии)

Комментарии

где можно их найти?

спасибо agrey. вот здесь

Цитата:
1. кодировка должна быть utf8, причем это должно быть не только написано в первой строчке файла, но и файл должен соотвествующим образом быть закодирован.

Для текста на русском кодировка должна быть "windows-1251". Зачем "вес" fb2 увеличивать?
А мунуал вот: http://www.fictionbook.org/index.php/...

везде стандарт utf, применение "местных" кодировок вообще считается плохим тоном.
Лариным было сказано, что места много, да и вообще, нафига экономить на спичках?
это же смешно: выбирать между 300 kb или 600? а как иностранцы или некоторые линуксоиды будут читать, если у них нет поддержки cp1251? это виндоузовский формат. от него надо избавляться.)

так что пусть будет стандартный utf.

soshial написал:
так что пусть будет стандартный utf

А его таки все устройства поддерживают?

каждое устройство просто обязано поддерживать utf.
только этого недостаточно, нужно чтобы и шрифты покрывали кириллический сегмент.

в этом-то cp1251 и хуже: чтобы на нем работала кириллица нужно заранее скачивать кириллическую версию каждого шрифта (а если еще есть cp1252 или cp1253, то еще придется скачивать и греческую или ивритскую версии того же шрифта - это неудобно), а для юникода - там все алфавиты в одном файле.))

ps. вроде так, но могу и ошибаться.

каждое устройство просто обязано поддерживать utf. - ничего подобного !
LBOOK V3 не поддерживает! Книги созданные с помощью EBookDownloader приходится специально ПЕРЕКОДИРОВАТЬ с помощью FictionBookDesigner в 1251 чтобы кракозябрами не отображалось.
Даже на РС Cool Reader 2 такие файлы не читает. Не надо изобретать велосипед. Зачем русский текст кодировать в универсальной кодировке?

что то мне не верится.
может ты не поставил в метаданных файла, что это utf??
по кр. мере здесь я никакой инфы по этому поводу не нашел(

Нда. Молодцы китайцы. Хуй они клали на стандарты.
Восток - дело тонкое.
Банзай! Тьху, маздай!

жжошь)))))
ps. utf разве как раз не нобходим китайцам, у которых только туда помещаются все их иероглифы?))

Хрен там.
У них свой зоопарк - GBK, Big5 и ещё туева хуча.
Иероглифика влезает, ибо кодировки не 8-битные.
Но уникодом и не пахнет.

Товарищей китайцев, кстати, UTF8 категорически не устраивает.
По вполне объективным "случайным" совпадениям.

Вот только людей обманывать не надо. Уж третий месяц читаю на нем EBookDownloader-ные киги - и все в порядке. utf-текст он поддерживает корректно, в отличие от кириллических имен файлов (если точнее - ошибку вызывает сочетание некоторых кириллических символов; подробности на форуме the-ebook.org). Так что не тратьте время на перекодировку - переименуйте транслитом fb2-файл и сам архив.

Я не обманываю - сколько книг не пробовал созданных EBookDownloader-ом ПОСЛЕДНИХ версий - ни одна не прочиталась. Про глюк с кирилическими именами я знаю и переименовывать пробовал.
Ранние версии EBookDownloader не использовали utf и все было нормально, если не считать ошибки в пути внутри zip-архива. Кстати, при глюке с именами книга вообще не открывается, а здесь ОТКРЫВАЕТСЯ с кракозябрами внутри. Прошивка установлена последняя официальная - 18.03.2008

Да ну!

alex1974 написал:
сколько книг не пробовал созданных EBookDownloader-ом ПОСЛЕДНИХ версий - ни одна не прочиталась.

Пользуюсь EBookDownloader-ом ПОСЛЕДНИХ версий - ни одной ошибки чтения. Разумеется, после переименования транслитом. Может, дело не в кодировке?
Прошивка использовалась как январская, так и мартовская.

Дезинформация!
При корректном указании lBook V.3. читает utf8 на ура.
Это с KOI8-R наблюдаются проблемы :(

Все, конечно, верно, но

Цитата:
это же смешно: выбирать между 300 kb или 600?
Нет, не смешно. В масштабах библиотеки это может оказаться в районе 100, либо 200 гиг трафика в месяц, что предполагает двойную оплату (Лариным). Утрирую немного, т.к. архивированный файл не даст такой разницы, но все-таки... Это тоже имеет значение. Не работал под Линухом, но полагаю, что любую таблицу символов можно поддерживать и там, а про иностранцев вообще молчу - задолбали своим транслитом! Если не знаешь, как писать на русском в английской винде, то куда вообще лезть читать русские книги? ;D
Шучу, конечно, но в каждой шутке...
И еще. Расширенные кодовые страницы винды (т.е. UTF) не отличаются в части отображения русского шрифта, а просто поддерживают расширенный набор символов, например, греческий алфавит и т.п. Оно часто нужно для художественной литературы? ИМХО, конечно. А вот UTF в html-формате в браузерах не читается без специальной настройки (общепринята 1251-я). Это уж точно не нужно. Столкнулся вплотную, когда EBD был автором переведен на UTF :(. После чего сохраняю только в fb2, т.к. html читать стало невозможно. Ну, конечно, оно и так лучше в fb2...

computers написал:
В масштабах библиотеки это может оказаться в районе 100, либо 200 гиг трафика в месяц, что предполагает двойную оплату (Лариным). Утрирую немного, т.к. архивированный файл не даст такой разницы

Тест на случайном файле показал увеличение размера зазипованного файла на 15%.

Ну да, я же сказал, что утрирую ;). А специальная настройка - выбор кодовой страницы браузера - действительно напрягает. Автоопределение, как правило, при этом не работает :(. Но это все мелочи. Если считаете, что UTF нужен - делайте как надо, я молчу :). Корректный fb2 важнее мелочей. Причем, ИМХО, важнее всего заголовок, а то частенько при автопереименовании получается отчество вместо фамилии или еще хуже.

а у меня в ff3 всегда работает ;)

computers написал:
А вот UTF в html-формате в браузерах не читается без специальной настройки (общепринята 1251-я).

Оно, конечно, так. Если выбор кодировки в меню браузера считать "специальной настройкой".

А что, разве EBD при сохранении в HTML не добавляет строчку <meta http-equiv="Content-Type" content="text/html; charset=utf-8">?

Цитата:
Все, конечно, верно, но

Вообще-то, наверное лучше сохранять кодировку оригинала. Нужны нам ошибки конвертирования?..

1. разница при сжатии не такая большая. не в 2 раза. это потому что архиваторы пользуются эвристическими алгоритмами, специально на это настроенными, думаю.
2. причем здесь транслит не понял, хотя я за то, чтобы в стране были официальными и кириллица и латиница)) но насчет расширенных символов. да это нужно, потому что если например в книге встретятся французские или немецкие слова с диакритикой? что тогда делать? utf)
3. на большинстве сайтов установлен utf. для того, чтобы все работало, надо в метаданных где записать utf а браузер поставить на автоматическое распознавание кодировок. и нормлаьно с юникодом все будет работать.

вотъ.)

soshial написал:
1. разница при сжатии не такая большая. не в 2 раза. это потому что архиваторы пользуются эвристическими алгоритмами, специально на это настроенными, думаю.

Практически ни в одном распространенном архиваторе специальной эвристики для этого не применяется. Среди тех, где есть такая эвристика, например - DC и Compressia, но их трудно назвать распространенными...

А хорошее сжатие utf-файлов происходит оттого, что там символы кодируются чаще всего двумя байтами и первый из них чаще всего 0xD0. Поэтому вместо повторяющихся строк типа 'abcd' имеем повторяющиеся строки типа D0'z'D0'y'D0'x'D0'w'. При кодировании повторов, таким образом, мы тратим лишний бит на хранение удвоенной длины повторов и лишний бит для хранения удвоенного расстояния между двумя одинаковыми строками.
Это в случае применения алгоритмов семейства LZ* (ZIP, RAR, 7ZIP).
Немного иная причина, но стем же результатом :) для семейства алгоритмов сжатия PPM (RAR, 7ZIP), CM (PAQ), BWT (BZIP2, 7ZIP).

При использовании специальной эвристики разница в сжатии win-1251 и utf не 10-15%, а процента два максимум.

спасибо большое - интересно...

+1 to UTF-8.

пасиба за саппорт))

ground0 написал:
+1 to UTF-8.

еще +1. на линуксе проблем особых с 1251 нет, но не кодировка ето, а гипотетический затык на содержащем ее файле на будущее.
тем не менее:
кпк у меня ютф читает(http://alreader.com/), линукс читает(http://fbreader.org/), броузеры все читают, а цитаты чужих языков тоже часто встречаются.
не вижу ни одной причины для особой любви к cp1251.

Цитата:
а как иностранцы или некоторые линуксоиды будут читать, если у них нет поддержки cp1251? это виндоузовский формат. от него надо избавляться.)

Зв cp1251 можно и морду набить :)
KOI8-R FOREVER!!!
А при использовании правильного редактора кодировка файла не важна.

про utf-8 - есть еще один нюанс
В utf-8 есть символы, которых нет в win1251 или любой другой 8-битовой кодировке, например "угловые" скобочки, неразрывный пробел, многоточие, длинное тире и пр.

Такие штуки обычно реализуются кодами html - именно для совместимости.

darkmist написал:
про utf-8 - есть еще один нюанс
В utf-8 есть символы, которых нет в win1251

Это да.

darkmist написал:
символы, которых нет в win1251 или любой другой 8-битовой кодировке, например "угловые" скобочки, неразрывный пробел, многоточие, длинное тире и пр.

Пример неудачен. Перечисленные символы в кодировке win1251 присутствуют. Длинное тире -- код 151,
многоточие -- код 133, угловые скобочки (что имелось в виду -- кавычки "«»"?. Если да, то код 171 + 187) .

А за cp1251 можно и по морде.
Правда, производители тоже хороши: делают вид, что кроме cp1251 никаких других однобайтовых кодировок кириллицы не существует.

А где-то можно найти формальное описние формата?
Примерно так же, как описываются операторы в языках программирования.

неплохая книга по созданию фб2-файлов.
Кондратович М.И.
Создание электронных книг в формате FictionBook 2.1: практическое руководство (beta 3)
есть в буклибе.
http://lib.rus.ec/booklib/KONDRM01.RAR

soshial написал:
<binary content-type="image/png" id="cover.png">
        ЗДЕСЬ ИЛЛЮСТРАЦИИ: ЧАЩЕ ВСЕГО - ОБЛОЖКИ
    </binary>

9. Предпочтительный размер обложки - 200x* (в пикселах).

Иллюстрации кодируются в BASE64, примерно так, если делать вручную в консоли:

$ uuencode -m cover.png - | tail -n +2 | head -n -1

а чем под линуксом делать фб2 ?
когда то пользовал fbtools вроде бы, но под емулятором не пашет и создавалок я пока не нашел --- одни читалки прилагаются.

Добавил бы уж ссылку на литресовский FBE для windows-пользователей. Идеология идеологией, но он на данный момент наиболее соответствует стандарту и сам всё заполняет. А тут сразу хардкорный unix-way :) так всех потенциальных добавителей распугаешь.
Ну и категоричность в отношении кодировок... Довольно труднопредставима ситуация, когда у *nix-пользователя может не оказаться кодировки cp1251 при присутствующей utf8. Сама кодовая таблица 1251 не является чем-то проприетарным. И, кстати, в некоторых дистрибутивах по-прежнему локаль в koi-8. Постепенно переходить надо, да, но не так революционно.
Единственный случай жёсткой необходимости Юникода - когда книга содержит символы на двух языках, которые используют символы из второй половины таблицы ASCII национальной кодировки - например, на русском и немецком (с умлаутами).

Жёсткой необходимости уникода безусловно нету. Пока.
Но, при возможности, желательно всё-таки использовать utf8.

слово этого человека - закон))))
ps. разобрался с отписыванием от комментов?(

спасибо. огромное - не знал, что появилась новая, НЕ глючная версия. спасибо просто пребольшущее))

Про UTF-8. Добавил я сегодня книгу на польском языке в fb2, в UTF8, сделал все как полагается. При загрузке файла название книги и автор были перенесены as is, безо всякой обработки, из-за чего: исчезли польские буквы, а имя автора было покорежено! При этом поехало и форматирование собственно текста

обращайся с багами напрямую к Ларину. он поможет и исправит)

Это куда и как? Я в библиотеке неделю, не нашел...

Все, спасибо, зашел в форум и нашел :)

полцарства за редактор тегов mp3 тьфу дескрипшена fb2 и только дескрипшена с поддержкой групповых операций на файлами одного автора одной серии и тд.

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

X