Обсуждение Fb2Fix

Программы, утилиты

Обсуждение Fb2Fix

Сообщение Gremlin2 » Вт апр 08, 2008 21:31

Программа предназначена для пакетной обработки и правки fb2 документов.
Для работы требуется .NET Framework 2.0

Что умеет:
    Обрабатывать как одиночные файлы, так и каталоги.
    Работает с архивами, а так же с вложенными в них архивами (пока только zip)
    Читает невалидные XML-файлы
    Пытается исправлять структуру fb2. Удаляет невалидные символы [&#00 - &#1f]. Заменяет <> на &lt; и &gt; в тексте документа.
    Правит структуру <title-info>, <document-info>, <src-title-info>.
    Если в <program-used> находит "LibRusEc kit", создаёт новый Id, а старый сохраняет в поле <custom-info inфo-type="librusec-id"/>
    Транслитеризирует имена файлов
    Может содержать и содержит ошибки :oops:

Краткую справку можно получить запустив программу без параметров. Пожелания, предложения и сообщения об ошибках будут выслушаны и возможно исправлены. И последние: Автор не несёт никакой ответственности за возможные проблемы - делайте backup.

Текущую и предыдущие версии можно скачать тут:
http://www.assembla.com/wiki/show/fb2fix
На там же, в скором времени, будет расположена новая версия (следите за новостями), а также будут выложены исходники (C#).

Последняя версия 1.0.8 от 22.05.2008:

Ваш Гремлин II
Последний раз редактировалось Gremlin2 Чт май 22, 2008 21:48, всего редактировалось 4 раз(а).
Аватар пользователя
Gremlin2
Зрелый участник форума
Зрелый участник форума
 
Сообщений: 150
Зарегистрирован: Вс апр 06, 2008 15:51
Откуда: Altenstadt, Germany

Сообщение Mar00k » Ср апр 09, 2008 11:15

Программа полезная, спасибо. Посмотрим как работает.
Аватар пользователя
Mar00k
Новенький участник форума
Новенький участник форума
 
Сообщений: 32
Зарегистрирован: Пт ноя 16, 2007 17:45
Откуда: Минск

Re: Обсуждение Fb2Fix

Сообщение Cd_spb » Ср апр 09, 2008 11:47

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"

Потому что в противном случае нельзя пропускать через программу уже исправленный документ.
Cd_spb
Зрелый участник форума
Зрелый участник форума
 
Сообщений: 238
Зарегистрирован: Ср июн 28, 2006 15:56

Сообщение Stepochka » Ср апр 09, 2008 15:15

Гремлин II огромное спасибо!
Очень актуально для книг с либрус
Stepochka
Зрелый участник форума
Зрелый участник форума
 
Сообщений: 358
Зарегистрирован: Чт авг 11, 2005 11:35
Откуда: Москва

Сообщение Gremlin2 » Пт апр 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 не создаётся.
Аватар пользователя
Gremlin2
Зрелый участник форума
Зрелый участник форума
 
Сообщений: 150
Зарегистрирован: Вс апр 06, 2008 15:51
Откуда: Altenstadt, Germany

Сообщение Cd_spb » Пт апр 11, 2008 15:42

Gremlin2, не совсем корректно, так как предусматривает только вариант, когда fb2fix генерила id. А если он был исправлен руками?
Cd_spb
Зрелый участник форума
Зрелый участник форума
 
Сообщений: 238
Зарегистрирован: Ср июн 28, 2006 15:56

Сообщение Gremlin2 » Пт апр 11, 2008 15:57

Cd_spb писал(а):не совсем корректно, так как предусматривает только вариант, когда fb2fix генерила id. А если он был исправлен руками?

Ok, теперь я понял, что имелось ввиду. Можно добавить проверку на совпадение по шаблону. Только вот по какому?
Аватар пользователя
Gremlin2
Зрелый участник форума
Зрелый участник форума
 
Сообщений: 150
Зарегистрирован: Вс апр 06, 2008 15:51
Откуда: Altenstadt, Germany

Сообщение Cd_spb » Пт апр 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 я, кажется, болеше ни у кого не видел.
Cd_spb
Зрелый участник форума
Зрелый участник форума
 
Сообщений: 238
Зарегистрирован: Ср июн 28, 2006 15:56

Сообщение Gremlin2 » Пт апр 11, 2008 16:52

Cd_spb писал(а):У либрусека два типа id - "Tue Jun 12 03:34:15 2007" и "Mon Jun 10 19:57:46 2013" Ключевое - пробелы с годом. Пробелов в id я, кажется, болеше ни у кого не видел.


т.е. только те книги, которые были добавлены в 2007 и 2013 :shock: году?
Аватар пользователя
Gremlin2
Зрелый участник форума
Зрелый участник форума
 
Сообщений: 150
Зарегистрирован: Вс апр 06, 2008 15:51
Откуда: Altenstadt, Germany

Сообщение Cd_spb » Пт апр 11, 2008 17:42

У него, по крайне мере был дурацкий алгоритм - id генерилось из времени с точностью до минуты. Именно это и нужно заменять, так как может у десяти книг быть одинаковый id.
Если не в курсе, то изначально либрусек был заполнен документами автоматически сгенеренными из либ.ру. Отсюда все проблемы.
Cd_spb
Зрелый участник форума
Зрелый участник форума
 
Сообщений: 238
Зарегистрирован: Ср июн 28, 2006 15:56

Сообщение Gremlin2 » Пт апр 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 для проверки?
Аватар пользователя
Gremlin2
Зрелый участник форума
Зрелый участник форума
 
Сообщений: 150
Зарегистрирован: Вс апр 06, 2008 15:51
Откуда: Altenstadt, Germany

Сообщение Ghost mail » Сб апр 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-]*?)
Ghost mail
Новенький участник форума
Новенький участник форума
 
Сообщений: 16
Зарегистрирован: Пн июн 04, 2007 11:14

Сообщение Gremlin2 » Сб апр 12, 2008 14:09

Нашёл другую проблему, часто встречаются в разметке документа тэги:
Код: выделить все
<h2 xmlns="">Taken: , 1</h2>


Что делать и кто виноват? :)
Аватар пользователя
Gremlin2
Зрелый участник форума
Зрелый участник форума
 
Сообщений: 150
Зарегистрирован: Вс апр 06, 2008 15:51
Откуда: Altenstadt, Germany

Сообщение Cd_spb » Сб апр 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, но Вы же проверете "на кошках" ;-)
Cd_spb
Зрелый участник форума
Зрелый участник форума
 
Сообщений: 238
Зарегистрирован: Ср июн 28, 2006 15:56

Сообщение AlexArh » Сб апр 12, 2008 22:59

А можно доделать прогу так, чтобы она генерировала ID если его нет воо бще (тег <id> пропущен) или ID пустой?
AlexArh
Новенький участник форума
Новенький участник форума
 
Сообщений: 21
Зарегистрирован: Пт ноя 24, 2006 15:53

След.

Вернуться в Сделано для FB

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1