У меня все рассказы в текстовых файлах, оформленных по стандарту. Есть утилита, которая красиво перегоняет текстовые файлы в HTML для сайта. А теперь я, наконец, запилила из кода утилиты библиотеку, которая парсит текстовые файлы в кучу объектов. Типа, объект рассказа, у него свойства «Серия», «Название», коллекция строк, ну и так далее. Короче, повозилась, придумывая структуру всего этого, но результат уже налицо: все выходные курила формат FB2, а сейчас уже у меня есть работоспособный конвертер, который ещё надо допилить по мелочам, но уже делающий готовые электронные книжки. Так же библиотека поможет мне генерировать тексты для отправки на всякие пиксивы и аотри. Теперь – самое сложное: переделать утилиту, чтобы она тоже использовала библиотеку.
01 Jun
2021
а не проще было сразу за calibre схватиться? или мадам поебаться?
На выходе Сalibre даёт то ещё говнище.
Ну вот схватилась я за калибру, там список книжек, можно что-то добавить и даже почитать, текстовый файл волшебным образом не парсится и превращается в FB2 или EPub. Что дальше?
да. добавила, дальше выбираешь нужные и тыкаешь в кнопку "Конвертировать книги", при этом можно выбрать пачкой.
а дальше ебашишь по гайду.
https://manual.calibre-eboo...m/ru/conversion.html
если хочется, можно и скриптом.
https://manual.calibre-eboo...u/ebook-convert.html
Ткнула. Мне было предложено ручками заполнить данные, которые и так есть в рассказе, но это ладно – чудес не бывает. Перешла сразу к конвертации. Сначала он сказал, что не понимает, что такое «Формат ANP». Переименовала в TXT. Тогда он сказал мне, что как-то много текста для EPub. Все сообщения сопровождались стэк трейсами путона, в них было мало полезной информации, но я так поняла, что оно думает, что существует только два формата: маркдаун и неправильный. Оно взяло мой текст с красными строками и захерачило как один большой абзац. Тогда я включила эвристику. Оно пыхтело долго, догадалось, что у меня абзацы разделяются одним переносом и выдало что-то. В готовом варианте не было красных строк, зато были богомерзкие пустоты между абзацами. Там то тут то там торчали «<code>» в тексте. Все подзаголовки оно срезало, для верности склеив абзацы, которые шли до и после. Не знаю, может быть, если долго сидеть с напильником, можно это всё привести в чувства, но зачем?
anp - а чо это за хрень с ушами? откуда вообще такой стандарт взялся? просто ширнармассы про него не знают, потому и.
И оно по идее не только в epub может как dst. да и там можно сказать, какой размер текста норм для epub.
Вообще там в кишках кругом xpath примерно для вснго, так что оно скорее под разгребание html-like заточено.
"<code>" - это странно и так быть точно не должно. богомерзкие пустоты убираются буквально через чуть-чуть css, как я понимаю. дай исходник погонять, я может быстро в чувство приведу его.
ANP – это текстовый файл с расширением ANP. Так надо.
Там дело не в размере текста, а в том, как он программа его воспринимает.
Исходник:
https://www.lindachan.net/t...iwl_kiss_the_girl.7z
FB2 файл для примера:
https://public.bitch.dance/...wl_kiss_the_girl.fb2
Собственно, моя мысль такова. У меня все рассказы отформатированы по единому стандарту. У меня есть парсер, который вытаскивает максимум инфы из исходного текста. И я могу легко и просто генерировать любые файлы, используя этот парсер. Без стороннего софта, который написан не мной и действует по каким-то своим соображениям. Результат получается какой нужен сразу и без напильников.
ну хоть целевые файлы ты генеришь библиотечным кодом? тогда окей.
а то я знаю любителей бегло пролистать спеку формата и потом нагенерить щербатой и кривоватой фигни.
Я полистала спеку формата, написала программу, которая через MSXML генерирует готовый XML, а потом валидирует его через XSD схемы от авторов формата. Или для такой героической задачи тоже нужны сторонние библиотеки?
а що так?
и ещё fbreader рендерит текст странно.
а вот если просто отформатить файл через xmllint --format (тупо расставляются переводы строк и пробелы), то отображает без этих дурацких символов в конце каждого слова.
Alreader на мобилке этим вроде не страдает.
В целом fb2 формат с небольшой ебанцой как и все, что помножается на баги в других парсерах.
И меня ещё смущает ченджлог - за што повальное codeложество?
можно же просто повесить id на section и навернуть для неё один css?
также <emphasis>> - это пахнет костылём, есть <cite>.
Алсо по композиции ты уверена, что абзацы должны быть такими маленькими?
И ещё вкусовщина - раз уж у тебя длинные красивые тире, может и многоточия сделаешь типографскими?
Лень. Процесс автоматизирован, для каждой книжки придумывать жанры лень, да и инопланетные они какие-то. Гейских романов пачка, для порно в 2.0 есть жанр nonfiction_pornography, а в 2.1 – home_sex. Ну и для контекста нужно придумывать, чего бы запилить.
Но я пока это обдумываю. Разработка идёт.
Это очень странно. У меня на мобилах FBReader выводит очень красиво и без странных символов. Собственно, я на нём и тестирую в ондройде, а на десктопе – в Калибре. С другой стороны, у меня там голый UTF-8 XML в одну строку, в строках обычные пробелы, никаких особых символов нет.
Не знаю, не знаю. FB2 очень прост и заведует только структурой документа без конкретного оформления (сделаем вид, что тэга style не существует), так что рендеринг текста и то, как этот текст в итоге будет выглядеть – полностью на совести читалок. Например, читалка в итоге решает, выводить абзацы с пустотой между ними или с отступами в начале каждого.
Потому что командую читалке выводить текст моношринным шрифтом, а каким, и как именно, и выводить ли вообще – решать читалке.
cite – это немного про другое. Я подозреваю, что он решит, что это отдельный блок, а не обычный абзац, и всё посъезжает. А это именно что обычный абзац, но с неким смысловым выделением.
Да.
Нет :} Тогда мне придётся искать замену для «..?», «?..», «..!», «!..», «..?!», «?!..» и всему такому прочему. Нет никакого смысла в замене трёх точек тремя точками.
А вот я скачал файл и осуждаю вынос истории в отдельную секцию body. Для этого есть history же. И там даже есть одна запись.
Ну и «Этот рассказ посвящается Sing.» явно просится в epigraph.
Блок history – это история изменений самого FB2 файла, а не текста, который в нём содержится. В ченджлоге рассказывается о том, что происходило с оригинальными текстовыми файлами, а не с FB2, сгенерированным из них. Кроме того, блок history в читалках не показывается.
Разумеется, заполняя каждый раз этот блок одной единственной строчкой, я нарушаю его смысл, но хранить портянки на каждую автоматическую генерацию я не готова.
Не просится, поскольку из оригинального текстового файла в автоматическом режиме ты сможешь это понять только сыграв в угадайку.
не, я именно про то, что ты emphasis используешь в связке со стрелкой и по факту в этом месте цитируешь кусочек текста. это cite просто семантически.
вот так cite рендерится у Дорофеева в которого я подглядывал использование тегов.
Нет, три точки - это три точки, они у тебя могут перенестись случайно, а многоточие - это единый знак.
Думаю можно взять \u2025 для сочетаний с другим знаком препинания и \u2026 для обычного многоточия.
https://unicode-table.com/r...s/punctuation-marks/
В общем и целом, я не согласна, но надо подумать :} Я опасаюсь, что в сильно умных программах текст начнёт скакать как попало из-за этих блоков. Но тут тоже надо экспериментировать.
Считаю, что, если программа может перенести точку, следующую сразу за непробельным символом, то этой программе уже мало что поможет.
Контрпродуктивно и не даёт в итоге ничего полезного.
// Цитата – огонь!
Сделала поддержку cite. Результат оказался... странным, но ожидаемым.
Если вставляется cite, то надо бы « >» убирать.
Так надо.
Ну, теоретически надо, но практически мне кажется, что нет.
потому что у тебя на empty-line понатыкан, очевидно.
Не, я про вот этот вот резкий съезд вправо и дополнительные пустоты по вертикали вдобавок к пустым строкам.
съезд вправо - это как раз всё правильно для цитаты. и твои отбивки пустыми строками - это тоже излишний костыль в этом месте очевидно. ридер должен сам понимать, что это цитата и соотв. образом делать отбивки или не делать, смотря как там настроено в нём.
Ридер может делать отбивки, а может не делать. В этом проблема. Этот момент я предпочитаю брать в свои руки.
Вот сразу же проверила, FBReader не делает ни отбивок, ни сдвига, только делает абзац курсивом. Если не вставить пустые строки, то логические блоки текста, которые и призваны разделять пустые строки, прилипнут друг к другу.
вообще это идеальная задача для css.
Есть опасность увлечься.
новый php ты всё равно не напишешь.
Это понятно, но тут я решила, что всё форматирование – забота читалки. Я просто говорю ей, что вот этот текст – форматировать не нужно, он как код. А читалка уже рисует его моношринным.