master
Общее: + В "О программе" добавлен email разработчика. ~ Введена поддержка ссылок и xmlns:l="http://www.w3.org/1999/xlink" и xmlns:xlink="http://www.w3.org/1999/xlink". ~ Иправил баг: не после комплексной правки метаданных для архивов не отображалась комплексная информация описания книги для Корректора и Дубликатора. ~ Рефакторинг кода: код по корректировке fb2 структуры вынесен из основного парсера FictionBook в отдельный класс FB2Corrector. ~ Улучшена корректировка description для Жанров и Даты. + Обработана ситуация, когда в zip архиве находится не fb2 файл. Раньше в этой ситуации переставала отображаться информация по метаданным книги. + НОВЫЙ инструмент: "Автокорректировка книг". Работает ДОЛГО (регулярные выражения). По мере развития программы список поиска и замены инструмента будет расширяться. Кодировка читается из fb2 файла из строки <?xml version="1.0" encoding="utf-8" ?>, и в этой же кодировке сохраняется откорректированный файл. Если этой строки в fb2 нет, то для чтения берется кодировка UTF-8, и в ней же обработанный файл сохраняется. Что сейчас может делать: 1) Замена <i>, <I>, <em>, <EM> на <emphasis>. 2) Замена <b>, <B> на <strong>. 3) Замена жанров proce и literature19 на prose. 4) Замена языка RU-ru и Rus на ru. 5) Замена языка EN-en и Eng на en. 6) Удаление <br> <BR> <br/> <BR/> <br /> <BR /> <R> 7) Удаление <cite id="..."></cite>, <cite id="..." /> 8) Исправление невалидной стурктуры картинки вида <image l:href="#img_0.jpg"> </image> на <image l:href="#img_0.jpg" /> 9) Замена невалидных (устаревших) структур <cite> <cite> <p>Иванов</p> </cite> </cite> <epigraph> <epigraph> <p>Иванов</p> </epigraph> </epigraph> на <text-author><p>Иванов</p></<text-author> 10) Замена невалидных (устаревших) структур <strong> <strong> <p>Текст</p> </strong> </strong> <emphasis> <emphasis> <p>Текст</p> </emphasis> </emphasis> на <p><strong>Текст</strong></p> <p><emphasis>Текст</emphasis></p> 11) Замена невалидных структур <body mlns=""> <section xmlns=""> на <body> <section> 12) Замены <> вокруг русских слов и знаков пунктуации, скобок на < и > 13) Генерация id, если в fb2 файле есть "пустой" тег <id><id> или <id> <id>. 14) Генерация нового id для fb2 с Либрусековскими id, типа <id>Mon Jun 10 20:47:40 2013</id>. 15) Восстановление в книге пропущенных тегов <p> или </p>. 16) Замена пространства имен xmlns="http://www.gribuser.ru/xml/fictionbook/2.1" и xmlns="http://www.gribuser.ru/xml/fictionbook/2.2" на xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" 17) Правка языка: есть много книг на русском языке, но в теге <lang> занесен не русский язык. Для книг без раздела описания <src-title-info> язык меняется на русский. 18) Замена в некоторых случаях & на & 19) Удаление недопустимых символов: \x00-\x08, \x0B, \x0C, \x0E-\x1F 20) Завершение незавершенных открывающих тегов <p>: <p Текст... 21) Удаление тегов <DIV ...></DIV> с сохранением их содержимого (кроме аттрибутов). 22) Вставка между </epigraph> или <image ... /> (<image ... ></image>) недостающего тега <empty-line/>.
В Настройках сделана опция выбора (переключатель) варианта работы с log файлом: 1. Создание нового log файла при запуске основных инструментов. 2. Добавление отладочных данных в существующий log файл. При режиме 1) log файл всегда удаляется и создается новый при запуске основных инструментов: 1. Для Корректора: При нажатии кнопки «Перейти / Обновить», при запуске Автокорректировки, при нажатии «Возобновить Автокорректировку из xml…». 2. Для Дубликатора: При нажатии кнопки «Поиск копий», при нажатии кнопки «Возобновить поиск из файла...», при нажатии кнопки «Загрузить Группы», при запуске Автокорректировки. 3. Для обоих видов Сортировщика: При нажатии кнопки «Сортировать» и при нажатии кнопки «Возобновить из файла». 4. Для Архиватора: При нажатии кнопок «Упакова» и «Распаковать». При режиме 2) log файл никогда не удаляется и отладочная информация всегда добавляется в log.
Улучшена пакетная автокорректировака книг в случае, если встречаются книги, в которых сильно искажена структура, или же основные разделы структуры размещены не по fb2 стандарту.
Заново переписан алгоритм сохранения прерывания сравнения в файл и возобновления сравнения из файла для Дубликатора. Теперь алгоритм работает для всех режимов сравнения. Исправлены старые серьезные ошибки в коде Дубликатора. Сделан рефакторинг кода Дубликатора.
Дубликатор: 1. Перенос или удаление помеченных копий книг в режиме "Без отображения изменений (быстро)": В этом режиме книги удаляются с диска, но в списке копий они остаются. Этот режим обеспечивает более быструю обработку копий книг. Оставшиеся в списке копий книги теперь выделяются следующим образом: шрифт меняется на зачеркнутиый и фоновый цвет - на светло-серый. 2. Исправлен баг при удалении/переносе помеченных копий книг. 3. Улучшен алгоритм сохранения списка копий в xml-файл. В xml не заносятся книги, если в Группе после удаления/переноса копий осталась только одна книга. 4. НОВАЯ функция: В контекстном меню - "Удалить помеченные Группы из Списка (на диске НЕ удаляются)..."
Улучшена система отладочных сообщений
+ НОВЫЙ инструмент: Корректор в режиме Проводника. В контекстном меню – множество инструментов по правке метаданных. - Удален Валидатор. Его функции встроены в новый инструмент Корректор. Общее: + Добавлена обработка fb2 книг с xmlns=http://www.gribuser.ru/xml/fictionbook/2.2. + Для всех инструментов сделана сортировка по нажатию на колонки списка. + Для всех режимов правки метаданных сделана предварительная корректировка раздела description – к имеющимся элементам структур title-info и document-info добавляются недостающие элементы, без которых fb2 файл не будет валиден. Т.е. в title-info: теги genre, author, book-title, lang, а в document-info: id, version. Со значениями по-умолчанию. + Новые инструменты создания Нового id в контекстном меню. + Новые инструменты Правки Названия Книги в контекстном меню. ~ Исправлена неверная работа копирования/перемещения файлов. ~ Улучшено быстродействие при копировании/перемещении/удалении файлов. + Для списков инструмента «Правка метаданных» сделаны кнопки перемещения элементов вверх/вниз. + В контекстном меню Дубликатора и Корректора – новый инструмент: «Удалить все элементы Списка "без файлов" на диске...». Предназначен для очистки списка от элементов, файлы которых на жестком диске были удалены. + Для Корректора и Дубликатора на вкладке Настройки введена возможность выбора поведения программ по DblClick мышки и нажатию Enter. Варианты работы заданы в выпадающих списках. Сортировщик файлов: + Авторазмер колонок списка книг теперь производится автоматически. ~ Значительно улучшена Избранная сортировка, которая некорректно работала из-за разрывов абзацев и стартовых/конечных пробелов данных тегов. - Удалена опция в Настройках «Авторазмер колонок». - В связи с созданием удобного нового инструмента (Редактор Метаданных) все средства правки файлов и метаданных удалены из контекстного меню Сортировщика. Дубликатор Файлов: ~ Значительно улучшен алгоритм поиска дубликатов – теперь ищутся и книги, в которых отсутствуют Авторы, Названия книг, ID. ~ При поиске копий введено удаление пробелов и переноса абзаца в тегах description. Теперь поиск копий происходит более корректно: не создаются ложные группы «копий», и копии группируются правильно. ~ Исправлен баг при сохранении результата в xml файл и загрузке результата из xml файла. ~ Изменено сохранение списка копий в xml-файл. Теперь можно задать на панели инструментов сколько Групп копий нужно сохранить в файл. И весь список копий будет разбит на несколько xml-файлов при сохранении. Это обеспечивает более удобную последующую обработку копий при загрузке этих файлов и отсутствие «тормозов» из-за многотысячного списка копий. + Новые инструменты в контекстом меню. + При загрузке ранее сохраненного файла списка копий делается проверка на наличие на жестком диске файлов из этого списка. Выводятся только те, которые не были удалены на жестком диске. ~ ВНИМАНИЕ: Переделан алгоритм работы со списком. Файлы, сохраненные в предыдущих версиях SharpFBTools открываться не будут!!!
Дубликатор: ~ Изменен алгоритм удаления/перемещения помеченных книг. Теперь все элементы списка, не имеющие книг на жестком диске корректно удаляются. После удаления книг в Списке не остается элементов, для которых книг уже нет на жестком диске. Также теперь после удаления/перемещения помеченных книг корректно отображается текущее число Групп копий книг и всех книг в этих Группах.
Исправлен баг Дубликатора #8: не было соответствия между названием режима сравнения книг и алгоритмом сравнения (https://github.com/DikBSD/SharpFBTools/issues/8).
Общее: ~ Улучшение fb2-парсера: удаление стартовых и конечных пробелов в тегах. ~ Исправлена ошибка: вылет Корректора в некоторых случаях при загрузке списка файлов для Корректировки. ~ Исправлена ошибка: вылет Дубликатора в некоторых случаях при загрузке списка файлов Групп копий.
SharpFBTools-4.40 Общее + В диалогах правки метаданных добавлена возможность вызова формы правки по двойному клику мышки на соответствующую запись. + В Настройках появилась опция «Показывать сообщения при падении работы алгоритмов». ~ Улучшена валидация раздела <description> ~ Диалог «Правка Жанра»: При выборе одного из жанров в списке, автоматически отображаются его Группа и сам Жанр в выпадающий списках. Автокорректор: + Дополнен список невалидных жанров для обработки. + Обработка названий картинок в <binary>: ситуация, когда есть одинаково названные картинки (например, fb2 создан в FineReader). У копий просто к имени картинки добавляется «__copy» и порядковый номер копии основной картинки. Сами картинки не удаляются… ~ Улучшен алгоритм правки некорректных ссылок. + Обработка тега <annotation>, который содержит 1-м элементом картинку без тегов <p>: <annotation><image l:href="#ficbook_logo.png" /> => <annotation><p><image l:href="#ficbook_logo.png" /></p> ~ Улучшена корректировка раздела <description> + Обработка картинок, обрамленных тегом <subtitle>: <subtitle><image l:href="#_3.jpg" /></subtitle> => <p><image l:href="#_3.jpg" /></p> + Удаление "пустышек" типа <a id="calibre_link-0" /> + Удаление "пустышек": <title><empty-line /><empty-line /></title> + Удаление "пустышек": <section><empty-line /><empty-line /></section> + Удаление пустышек типа <body name="notes"><title><p>Примечания</p></title></body> + Обработка блоков типа <p></section> => </section> + Обработка блоков типа <title></p> => <title> + Раздел <description>: Обработка атрибута в датах типа <date value="20.09.2017" /> => <date value="2017-09-20" /> + Обработка binary, в которых отсутствует аттрибут content-type. + Обработка блоков сносок типа <section id="id20150519063123_1"><title><p>1</p></title></section> => <section id="id20150519063123_1"><title><p>1</p></title><empty-line /></section> Корректор: ~ Изменения в коде инструментов «Поиск только невалидных книг» и «Возобновления поиска невалидных книг после прерывания в xml-файл». Инструменты вынесены в выпадающий список «Все невалидные книги в папке 'Адрес'». + Инструмент «Возобновление Автокорректировки из xml файла» добавлен на панель инструментов. + В диалоге Автокорректировки книг введен контрол, переключающий отображение в логе валидности обработанного файла. Дубликатор: ~ Удалено отображение числа всех папок и книг при работе с сохраненными списками копий. Сортировщик: ~ Исправлен баг: если при сортировке файлы НЕ сжимаются в zip, то при окончании Избранной сортировки в диалоге сводной информации не отображалось число созданных файлов в папке-приемнике. Исправлено. ~ Исправлен баг для Избранной Сортировки: фоновый сбой поиска заданных критериев данных книг, если один из заданных критериев поиска в тегах fb2 файла был пустым. В этом случае после сбоя поиск прекращался, и найденных книг было меньше, чем должно было быть или же – вообще не было найдено ничего. Исправлено.
Исправлено падение Дубликатора для режимов “3. Автор(ы) и Название Книги (одна и та же книга, сделанная разными людьми - разные Id, но Автор и Название - одинаковые)” и “5. Автор(ы), Название и Одинаковый Id Книги (разделять по разным группам разные издания книг)” на файла, где нет тега id к ниги. Алгоритм поиска по Id Книги изменен так, что теперь книги, либо не имеющие тега id Книги, либо тег id есть, но он пустой, группируются в отдельную группу. Проведена оптимизация работы для остальных режимов. Проведен рефакторинг кода.
Общее: + Для Автокорректора Корректора и Дубликатора улучшен алгоритм правки языка русский, украинский и белорусский книг. Много книг на этих языках имеют тэг языка другого языка. Теперь, например, если книга – на русском языке, но тэг <lang> содержит признак белорусского языка (be), то он заменяется на русский (ru). И такая корректировка происходит для всех этих 3-х языков. + Автокорректор Корректора и Дубликатора обрабатывает «по полной программе» только невалидные файлы. Валидные же файлы просматриваются на предмет соответствия тэгов <lang> книг на русском, украинском или белорусском языках идентификаторам ru, uk и be соответственно. В случае, если идентификаторы языка для валидных книг этих 3-х языков не соответствуют языку книги, то в тэг <lang> заносится настоящий идентификатор языка книги. Вся остальная корректировка для валидных книг не производится. Автокорректор + Теперь обрабатываются только невалидные файлы. Эта проверка на валидность заметно ускорит работу Автокорректора на большом количестве книг. + Исправление неверно заданной кодировки “wutf-8” в fb2 файлах на “utf-8”. + Улучшена обработка ссылок. ~ Полностью переделаны (улучшены и оптимизированы) все функции (регулярные выражения). + Удаление <empty-line/> между </section> и <section> + Полностью переделан алгоритм корректировки Эпиграфов. Скорость обработки увеличена. + Преобразование Эпиграфа с вложенным Эпиграфом в Цитату с Автором: <subtitle>...</subtitle><cite><p><emphasis>Текст</emphasis></p><text-author>Достоевский.</text-author></cite> + Обработка Эпиграфа с вложенным Эпиграфом и Эпиграфом вместо Цитаты или стиха эпиграфа: структура вида: <subtitle>...</subtitle> <epigraph> <emphasis> <p> <emphasis>Этот стих звучит так: </emphasis> </p> <epigraph> <p><emphasis>И счастья баловень безродный </emphasis></p> <p><emphasis>Полудержавный властелин. </emphasis></p> </epigraph> </emphasis> </epigraph>