Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Gremlin2 Новенький участник форума
Зарегистрирован: 06.04.2008 Сообщения: 70
|
Добавлено: Вт Апр 08, 2008 21:31 Заголовок сообщения: Обсуждение Fb2Fix |
|
|
Программа предназначена для пакетной обработки и правки fb2 документов.
Для работы требуется .NET Framework 2.0
Что умеет:
Обрабатывать как одиночные файлы, так и каталоги. Работает с архивами, а так же с вложенными в них архивами (пока только zip) Читает невалидные XML-файлы Пытается исправлять структуру fb2. Удаляет невалидные символы [� - f]. Заменяет <> на < и > в тексте документа. Правит структуру <title-info>, <document-info>, <src-title-info>. Если в <program-used> находит "LibRusEc kit", создаёт новый Id, а старый сохраняет в поле <custom-info inфo-type="librusec-id"/> Транслитеризирует имена файлов Может содержать и содержит ошибки
Краткую справку можно получить запустив программу без параметров. Пожелания, предложения и сообщения об ошибках будут выслушаны и возможно исправлены. И последние: Автор не несёт никакой ответственности за возможные проблемы - делайте backup.
Текущую и предыдущие версии можно скачать тут:
http://www.assembla.com/wiki/show/fb2fix
На там же, в скором времени, будет расположена новая версия (следите за новостями), а также будут выложены исходники (C#).
Последняя версия 1.0.8 от 22.05.2008:
Ваш Гремлин II
Последний раз редактировалось: Gremlin2 (Чт Май 22, 2008 21:48), всего редактировалось 4 раз(а) |
|
Вернуться к началу |
|
|
Mar00k Новенький участник форума
Зарегистрирован: 16.11.2007 Сообщения: 32 Откуда: Минск
|
Добавлено: Ср Апр 09, 2008 11:15 Заголовок сообщения: |
|
|
Программа полезная, спасибо. Посмотрим как работает. |
|
Вернуться к началу |
|
|
Cd_spb Зрелый участник форума
Зарегистрирован: 28.06.2006 Сообщения: 189
|
Добавлено: Ср Апр 09, 2008 11:47 Заголовок сообщения: Re: Обсуждение Fb2Fix |
|
|
Gremlin2 писал(а): | Если в <program-used> находит "LibRusEc kit", создаёт новый Id, а старый сохраняет в поле <custom-info inфo-type="librusec-id"/> |
Надеюсь обработка проходит "условно", т.е. если Код: | instring("program-used")="LibRusEc kit"
AND
("ID"="... ... .. ..:..:.. 2013" OR "ID"="... ... .. ..:..:.. 2007")
например "Mon Jun 10 19:57:46 2013" "Tue Jun 12 03:34:15 2007" |
Потому что в противном случае нельзя пропускать через программу уже исправленный документ. |
|
Вернуться к началу |
|
|
Stepochka Зрелый участник форума
Зарегистрирован: 11.08.2005 Сообщения: 206 Откуда: Москва
|
Добавлено: Ср Апр 09, 2008 15:15 Заголовок сообщения: |
|
|
Гремлин II огромное спасибо!
Очень актуально для книг с либрус |
|
Вернуться к началу |
|
|
Gremlin2 Новенький участник форума
Зарегистрирован: 06.04.2008 Сообщения: 70
|
Добавлено: Пт Апр 11, 2008 13:28 Заголовок сообщения: |
|
|
Cd_spb писал(а): | Надеюсь обработка проходит "условно", т.е. если
Код:
Код: | instring("program-used")="LibRusEc kit"
AND
("ID"="... ... .. ..:..:.. 2013" OR "ID"="... ... .. ..:..:.. 2007")
например "Mon Jun 10 19:57:46 2013" "Tue Jun 12 03:34:15 2007" |
Потому что в противном случае нельзя пропускать через программу уже исправленный документ. |
1. После успешной обработки, в обработанный файл добавляется tag <custom-info info-type="fb2fix-status"/>, при нахождении которого, программа просто игнорирует данный документ. Для повторной обработки таких файлов в новой версии будет добавлен новый параметр "/force"
2. Перед принятием решения о создании нового ID, проверяется наличие <custom-info info-type="librusec-id">, и в случае нахождения новый ID не создаётся. |
|
Вернуться к началу |
|
|
Cd_spb Зрелый участник форума
Зарегистрирован: 28.06.2006 Сообщения: 189
|
Добавлено: Пт Апр 11, 2008 15:42 Заголовок сообщения: |
|
|
Gremlin2, не совсем корректно, так как предусматривает только вариант, когда fb2fix генерила id. А если он был исправлен руками? |
|
Вернуться к началу |
|
|
Gremlin2 Новенький участник форума
Зарегистрирован: 06.04.2008 Сообщения: 70
|
Добавлено: Пт Апр 11, 2008 15:57 Заголовок сообщения: |
|
|
Cd_spb писал(а): | не совсем корректно, так как предусматривает только вариант, когда fb2fix генерила id. А если он был исправлен руками? |
Ok, теперь я понял, что имелось ввиду. Можно добавить проверку на совпадение по шаблону. Только вот по какому? |
|
Вернуться к началу |
|
|
Cd_spb Зрелый участник форума
Зарегистрирован: 28.06.2006 Сообщения: 189
|
Добавлено: Пт Апр 11, 2008 16:13 Заголовок сообщения: |
|
|
Вот по этому:
Код: | ("ID"="... ... .. ..:..:.. 2013" OR "ID"="... ... .. ..:..:.. 2007") |
Где "." - любой символ. Проверено
У либрусека два типа id - "Tue Jun 12 03:34:15 2007" и "Mon Jun 10 19:57:46 2013" Ключевое - пробелы с годом. Пробелов в id я, кажется, болеше ни у кого не видел. |
|
Вернуться к началу |
|
|
Gremlin2 Новенький участник форума
Зарегистрирован: 06.04.2008 Сообщения: 70
|
Добавлено: Пт Апр 11, 2008 16:52 Заголовок сообщения: |
|
|
Cd_spb писал(а): | У либрусека два типа id - "Tue Jun 12 03:34:15 2007" и "Mon Jun 10 19:57:46 2013" Ключевое - пробелы с годом. Пробелов в id я, кажется, болеше ни у кого не видел. |
т.е. только те книги, которые были добавлены в 2007 и 2013 году? |
|
Вернуться к началу |
|
|
Cd_spb Зрелый участник форума
Зарегистрирован: 28.06.2006 Сообщения: 189
|
Добавлено: Пт Апр 11, 2008 17:42 Заголовок сообщения: |
|
|
У него, по крайне мере был дурацкий алгоритм - id генерилось из времени с точностью до минуты. Именно это и нужно заменять, так как может у десяти книг быть одинаковый id.
Если не в курсе, то изначально либрусек был заполнен документами автоматически сгенеренными из либ.ру. Отсюда все проблемы. |
|
Вернуться к началу |
|
|
Gremlin2 Новенький участник форума
Зарегистрирован: 06.04.2008 Сообщения: 70
|
Добавлено: Пт Апр 11, 2008 21:47 Заголовок сообщения: |
|
|
Cd_spb писал(а): | Код: | ("ID"="... ... .. ..:..:.. 2013" OR "ID"="... ... .. ..:..:.. 2007") |
|
Код: | ^\w{3}\s\w{3}\s\d{1,2}\s\d{2}:\d{2}:\d{2}\s\d{4}$ |
Подойдёт такой Regex для проверки? |
|
Вернуться к началу |
|
|
Ghost mail Новенький участник форума
Зарегистрирован: 04.06.2007 Сообщения: 16
|
Добавлено: Сб Апр 12, 2008 9:25 Заголовок сообщения: |
|
|
Gremlin2 писал(а): | Cd_spb писал(а): | Код: | ("ID"="... ... .. ..:..:.. 2013" OR "ID"="... ... .. ..:..:.. 2007") |
|
Код: | ^\w{3}\s\w{3}\s\d{1,2}\s\d{2}:\d{2}:\d{2}\s\d{4}$ | Подойдёт такой Regex для проверки? | Зачем мудрствовать лукаво, если все можно (проверка на наличие "неправильных" символов) : [: ]+
ну или от обратного, то есть если не выполняется условие (с включенным "без учета регистра") : ([0-9a-f-]*?) |
|
Вернуться к началу |
|
|
Gremlin2 Новенький участник форума
Зарегистрирован: 06.04.2008 Сообщения: 70
|
Добавлено: Сб Апр 12, 2008 14:09 Заголовок сообщения: |
|
|
Нашёл другую проблему, часто встречаются в разметке документа тэги:
Код: | <h2 xmlns="">Taken: , 1</h2> |
Что делать и кто виноват? |
|
Вернуться к началу |
|
|
Cd_spb Зрелый участник форума
Зарегистрирован: 28.06.2006 Сообщения: 189
|
Добавлено: Сб Апр 12, 2008 22:11 Заголовок сообщения: |
|
|
Ghost mail писал(а): | Gremlin2 писал(а): | Cd_spb писал(а): | Код: | ("ID"="... ... .. ..:..:.. 2013" OR "ID"="... ... .. ..:..:.. 2007") |
|
Код: | ^\w{3}\s\w{3}\s\d{1,2}\s\d{2}:\d{2}:\d{2}\s\d{4}$ | Подойдёт такой Regex для проверки? | Зачем мудрствовать лукаво, если все можно (проверка на наличие "неправильных" символов) : [: ]+
ну или от обратного, то есть если не выполняется условие (с включенным "без учета регистра") : ([0-9a-f-]*?) |
Если мне не изменяет память - стандарт fb2 не регламентирует диапазон символов, сл-но Ваш шаблон не подходит. Я точно помню id LX-43...
Gremlin2, я не понимаю Вашей формы записи regexpa, но Вы же проверете "на кошках" |
|
Вернуться к началу |
|
|
AlexArh Новенький участник форума
Зарегистрирован: 24.11.2006 Сообщения: 21
|
Добавлено: Сб Апр 12, 2008 22:59 Заголовок сообщения: |
|
|
А можно доделать прогу так, чтобы она генерировала ID если его нет воо бще (тег <id> пропущен) или ID пустой? |
|
Вернуться к началу |
|
|
|