Доска почета

Продолжаем исследовать валидность файлов в библиотеке. Три последних архива по 1000 после удаления дублей. Проверка на внутреннюю консистентность.

Сообщения об ошибках:

not linked image - в файле присутствует изображение на которое нет ссылки в тексте. Соответственно изображение показано не будет.

external image - ссылка на внешнее изображение. Не все (ни одна?) читалки умеют загружать внешние изображения.

bad internal link - внутренняя ссылка, которая никуда не ведет. Есть href="#foo", но нет тега с соответствующим id.

bad external link - неправильная внешняя ссылка. Правильная должна начинаться с "http:", "https:", "ftp:", "mailto:". Чисто теоретически возможны другие протоколы (например gopher), но они не проверяются.

external note - внешняя сноска.

empty link - пустая ссылка.

очень много ошибок - ошибок слишком много. Чтобы не мусорить в эфире они не показаны.

137573-138420.zip

Хэнкок - Следы богов bad internal link: #http://reeed.ru/, bad internal link: #http://reeed.ru/, bad internal link: #http://reeed.ru/, bad internal link: #http://reeed.ru/ (исправлено)

138421-139848.zip

Фронтин - Стратегеммы. Военные хитрости очень много ошибок
Gerritsen - Never say die очень много ошибок
Современник - Журнал Наш Современник 2001 #1 очень много ошибок
Современник - Журнал Наш Современник 2001 #3 очень много ошибок
Завтра - Газета Завтра 794 (58 2009) bad internal link: #http://zavtra.ru/cgi//veil//zavtra/sos.html
Лем - Мгновение очень много ошибок (исправлено)
НАЛИМОВ - СПОНТАННОСТЬ СОЗНАНИЯ очень много ошибок
Иванов - Тайны гибели цивилизаций bad internal link: #n_1» (книга отмечена знаком какчества) (исправлено)
Волошин - Произведения 1925-1929 годов bad internal link: #n_2 (исправлено)
Форсайт - Мститель bad internal link: #http://www.smartlib.ru/ (книга отмечена знаком какчества) (исправлено)
Прорез - Спуск клинка not linked image: i_08_01_14.jpg, not linked image: i_08_01_13.jpg
Гальего - Я сижу на берегу external image: cover.png, not linked image: cover.png (исправлено)
Артюхова - Светлана not linked image: _2.JPG, not linked image: _1.JPG
Раннамаа - КАДРИ not linked image: _01.jpg, not linked image: image028.jpg
Андрей - Быть драконом 2 очень много ошибок (это вообще финиш, в description есть только book-title, author/first-name, author/last-name, причем имя и фамилия перепутаны местами) (исправлено)
Эфрон - Письма М. И. Цветаевой bad internal link: #undefined
Жданова - Крылья Феникса bad internal link: #http://myfhology.narod.ru/monsters/demons/v/demon-velzevul.html
Жданова - Поймать Тень очень много ошибок
Koontz - Nocturno bad internal link: #F:\entaja, bad internal link: #F:\oca\izarios
Прорез - Американский танто: феномен популярности not linked image: i_06_06_3_03.png (исправлено)
Garwood - Danza de sombras очень много ошибок
Костенко - На «Орле» в Цусиме: Воспоминания участника русско-японской войны на море в 1904–1905 гг. not linked image: t1.png
Казанцев - Звездные пришельцы. (с фото) not linked image: zpfot09_.jpg_0, not linked image: zpfot17_.jpg

139850-140188.zip

Диккенс - Посмертные записки Пиквикского клуба bad internal link: #undefined (исправлено)
Правдин - Море ясности not linked image: _0.jpg_0 (книга отмечена знаком какчества) (исправлено)
Мальцев - Невидимая битва bad internal link: #_ednref1

Комментарии

lankier написал:
Вообще, если кому-нибудь надо, могу собрать пакет для windows (не будет зависеть от установленного питона). Можно даже примитивное гуи прикрутить, что-то типа: кнопка "открыть файл", а под ней текстовое поле с результатом проверки.

Ой, пожалуйста, пожалуйста! Ведь большинство читателей все же не любят делать плохие файлы. И если люди у себя смогут проверить книжку перед заливкой, и получить ясный ответ - что, черт возьми, не так с этим файлом, это же здорово. Какой Вы молодец!

Сделал. 6.8 MB, извините. 8) Зато больше ничего не надо (по крайней мере в теории).

В архиве:
одна програмка с GUI:
validator-gui.exe - обертка для валидатора (примитивная)
три коммандно-сточных:
fb2stat.exe - для сбора статистики
fb2validator.exe - валидатор
fb2recovery.exe - недоделано (должен быть аналог fb2fix)

Использовать.
validator-gui.exe - просто запустить, и дальше Open files|Open dir - указать файл(ы) или каталог.

fb2stat.exe - запускать лучше всего так: fb2stat dirs|files 2>log.txt
fb2validator.exe - собственно валидатор: fb2validator files|dirs.

Если указан каталог - программы будут обходить все вложенные каталоги рекурсивно и искать файлы (поэтому указывать C:\ - лучше не надо :). Файлы могут быть в zip-архивах.

lankier написал:
Сделал. 6.8 MB, извините. 8) Зато больше ничего не надо (по крайней мере в теории).
Использовать.
validator-gui.exe - просто запустить, и дальше Open files|Open dir - указать файл(ы) или каталог.

Проверило 1 файл распакованный, 5 выбранных архивов, 1 папку с файлами и... упало:(. На прощанье в логе трижды записало вот такую красоту:
Цитата:
Exception in Tkinter callback
Traceback (most recent call last):
File "Tkinter.pyc", line 1403, in __call__
File "validator-gui.py", line 39, in open_file
File "validator-gui.py", line 27, in run
File "fb2utils\validation.pyc", line 224, in process_file
File "fb2utils\utils.pyc", line 99, in read_file
File "zipfile.pyc", line 471, in read
File "zipfile.pyc", line 462, in getinfo
KeyError: u'\u0413\u043e\u0440\u0435\u043b\u0438\u043a \u0415\u043b\u0435\u043d\u0430. \u0417\u0430\u043a\u0430\u0442 \u0438\u043c\u043f\u0435\u0440\u0438\u0438. 1. \u041b\u0435\u0432 \u0438 \u044f\u0433\u0443\u0430\u0440.doc'

И как это я этого достигла? А, главное, что теперь с этим делать?

validator написал:
File "zipfile.pyc", line 462, in getinfo
KeyError:

Это похоже какой-то архив неправильный. Оказался не по зубам питону. Можно, конечно, распаковать какой-то внешней программой и подсунуть в распакованном виде. Я еще подумаю.

lankier написал:

Это похоже какой-то архив неправильный. Оказался не по зубам питону. Можно, конечно, распаковать какой-то внешней программой и подсунуть в распакованном виде. Я еще подумаю.

Вся беда в том, что змейка подавилась и умерла совсем. После этого сообщения не ест даже распакованные файлы. Т.е. если ей попадется что-либо в этом роде один раз - она сломается бесповоротно. ИМХО, средний юзер пользоваться не сможет из-за уязвимости. Или сразу надо наложить запрет на архивы.

А всё-таки это не питон виноват, зубов у него хватает. Это была моя ошибка. Выложил исправленную версию. Теперь должно нормально кушать русские файлы в архивах.

lankier написал:
Выложил исправленную версию. Теперь должно нормально кушать русские файлы в архивах.

Спасибо! Здорово.
Все работает, на кривых архивах не валится. Немного эту программку погоняем и запишем в темы конвертация, вычитка и рек.стандарты и FB2-софт, если Вы не против. Хотя в софт, наверное и сейчас надо внести - пусть народ потестирует.
Еще раз огромное спасибо!

lankier написал:
Сделал. 6.8 MB, извините. 8) Зато больше ничего не надо (по крайней мере в теории).

Огромное спасибо! Работает )
А можно сделать возможность копирования текста из окна лога под виндой? А то выделить можно, а скопировать не получается ((

И нумерацию файлов в логе очень желательно, для поиска ошибок.
А в идеале галочку (и ключ для команд лайн) - не писать в лог файлы без ошибок ))

TaKir написал:
А можно сделать возможность копирования текста из окна лога под виндой? А то выделить можно, а скопировать не получается

Там используется очень простой тулкит - Tk (Tkinter). Далеко не всё там делается просто, если делается вообще. Я там сделал кнопочку "save log" именно поэтому, чтобы потом лог можно было открыть в текстовом редакторе. Но я подумаю, что там можно сделать.

TaKir написал:
И нумерацию файлов в логе очень желательно, для поиска ошибок.

Это можно. Попозже сделаю.

TaKir написал:
А в идеале галочку (и ключ для команд лайн) - не писать в лог файлы без ошибок

Хорошая идея. Почему она мне самому в голову не пришла? :)

upd: Оказыватся копирование и так работает. Выделить -> нажать ctrl-c.

lankier написал:

upd: Оказыватся копирование и так работает. Выделить -> нажать ctrl-c.

Не удалось воспроизвести (в режиме оболочки для винды).
На обеих версиях проги.

Из хотелок:
1) Результаты проверки бы еще в конец лога можно?
Типа проверено 400 файлов,
невалидных 10,
минор еррорз - 20
и т.п.?

2) Выводить в лог (как опция с ключом-галочкой) только список файлов с грубыми ошибками, когда невалидный файл.
3) "Лишние" строки не писать в лог (как опция с ключом-галочкой):
(как опция с ключом-галочкой).
*** Validation of file ......***
* Try the DOM parser *
xml validity check passed
* Schema validation *
fb2 validity check passed
* Extra FB2 checkup *
ERROR: not linked image: _003.jpg
> Some errors found <

Т.е. записывать именно только про ошибки в файле. Если xml validity check passed и fb2 validity check passed, то и накой они нам в отчете? ))

Выложил новую версию. Добавлена опция --quiet и одноименная кнопка. Копирование - в меню по правой кнопке мыши. Туда же (в меню) убрал "save log". Подсветка результата проверки. Всякие мелкие улучшения. Надеюсь ничего не сломал.

TaKir написал:
Результаты проверки бы еще в конец лога можно?

Честно говоря не хочется дублировать функциональность. fb2stat это уже делает.

TaKir написал:
Т.е. записывать именно только про ошибки в файле.

Ну да. Теперь так и работает. С опцией quiet пишет только имена плохих файлов и только ошибки. Если файл хороший, вообще ничего не выведет.

Цитата:
Не удалось воспроизвести

В русской раскладке у меня тоже не работает. А в английской всё нормально.

"Фронтин - Стратегеммы. Военные хитрости http://lib.rus.ec/b/138462 очень много ошибок" если честно не пойму в чем дело... файл валидацию проходит везде где только можно кроме Вашего скрипта... может быть из-за гиперссылок!?

Ну не очень много, но есть. :)

* Extra FB2 checkup *
ERROR: bad internal link: #c_1.5.5
ERROR: bad internal link: #c_1.5.28
ERROR: bad internal link: #c_1.7.6
ERROR: bad internal link: #c_2.5.13
ERROR: bad internal link: #c_2.8.14
ERROR: bad internal link: #c_3.13.1
ERROR: bad internal link: #c_4.2.4
ERROR: bad internal link: #c_4.3.7
ERROR: bad internal link: #c_4.3.10
ERROR: bad internal link: #c_4.5.6
ERROR: bad internal link: #c_4.7.1
ERROR: bad internal link: #c_14.7.14
ERROR: empty link

empty link это href=""

Гм, и правда... подглючило меня;)
Большое спасибо!
Исправил!

Страницы

X