Вы здесьСтатистика валидности fb2 файлов в библиотеках
Опубликовано вт, 07/04/2009 - 13:04 пользователем lankier
Выкладываю статистику по пяти коллекциям книг в формате fb2. Пояснения к статистикеnot an xml file - вообще не xml[*]. sax parsing error - проверка на возможность парсинга sax-пасером (здесь используется expat). Самый простой и быстрый парсер xml. Ест всё, что дают. Если файл не парсится sax-парсером вероятность обработки этого файла в какой-либо программе близка к нулю. dom parsing error - более продвинутый и более строгий dom-парсер (здесь используется libxml2). Применяется во многих программах. fb2 schema violation - проверка на соответствие схеме fb2. Большинство программ смогут обработать файл нарушающий схему, однако возможны проблемы при автоматической конвертации в другие форматы. inconsistent fb2 file - проверка на консистентность. Ссылки в никуда, отсутствующие сноски, отсутствующие изображения и наоборот неприлинкованные изображения. Проверка на консистентность производится если файл прошел проверку dom-парсером. good files - файл прошедший все тесты. [*] xml файл должен начинаться со строки "<?xml" (плюс BOM). Если это не так, то файл скорее всего вообще не xml. Также возможно это проблемы с zip архивами. СтатистикаЛибрусек после удаления дублей (убитых книг). 87141 файл.not an xml file: 2 (0%) Либрусек полностью. 115603 файла.not an xml file: 173 (0%) Библиотека Траума v.2.9. 78329 файлов.not an xml file: 0 (0%) Библиотека Траума v.2.5. Файлы обработаны утилитой fb2fix. 75200 файлов.not an xml file: 0 (0%) И на закуску файлы из магазина Литрес. 5524 файла.not an xml file: 0 (0%) (У них там что, другая схема? Или они файлы перед продажей даже на соответствие схеме не проверяют?) --
|
Вход на сайтПоиск по блогам и форумамUser menuПоследние комментарии
Aliki RE:Подайте бедному копеечку на книжку с литреса... 1 день
weis RE:Прошу переформатировать, распознать, etc... 2 недели larin RE:Заплатила, а абонемента нет и скачать ничего не могу! 4 недели sibkron RE:Серия "Библиотека французской литературы" (Макбел) 1 месяц akorish RE:Регистрация 1 месяц Tramell RE:Серия "Очень прикольная книга", издательство Азбука-классика 1 месяц Larisa_F RE:Серия "Я познаю мир" издательства "АСТ, Астрель, Олимп",... 1 месяц konst1 RE:Ух, как я не люблю спамеров! 2 месяца tvv RE:DNS 2 месяца sem14 RE:«Не забыть бы тогда, не простить бы и не потерять!»-2 ... 2 месяца larin RE:Заблокирован 2 месяца konst1 RE:Серия «Интеллектуальный детектив» изд-ва АСТ 3 месяца Larisa_F RE:Серия книг «Судьбы книг» издательства «Книга» 3 месяца fixel RE:Пропал абонемент 3 месяца sem14 RE:Книжная серия "Жизнь в искусстве" издательство "Искусство"... 4 месяца sibkron RE:"100 славянских романов", серия изд.-ва "Центр книги... 4 месяца Larisa_F RE:Серия "Новые сказочные повести" издательство "Самовар" ... 5 месяцев sem14 RE:Серия "Символы времени" издательства "Аграф" 5 месяцев Впечатления о книгах
Isais про Белов: Заступа [СИ] (Боевая фантастика, Ужасы, Самиздат, сетевая литература, Славянское фэнтези)
28 06 Думал, добавлю недостающее и быстренько сверстаю, не глядя на текст, и... зачитался!!! И по дороге вычитал вчерне, поправил много пунктуационных и чуток орфографических ошибок. Правда, это хорошо и хорошо весьма! И не ……… Оценка: хорошо
mysevra про Игнатова: Волчья верность (Боевая фантастика)
28 06 Очень нравятся истории автора и её стиль изложения. И отношение не поменялось со временем, как это часто бывает. Жаль, что ничего нового нет, во всяком случае, мне не попадалось. Оценка: отлично!
mysevra про Игнатова: Пыль небес (Боевая фантастика)
28 06 Да я бы перечитывала за один только эпизод с фильмами о Яледской битве. «Мне не понравилось то, что они сделали. Без этих людей Новый год будет лучше» - по-моему, самая лучшая форма справедливости. Оценка: отлично!
mysevra про Игнатова: Последнее небо (Боевая фантастика, Научная фантастика)
28 06 Красивая история. Баланс на лезвии между милота и жуть. Яркий мир. Персонаж, который по-хорошему должен вызывать ужас и отвращение как потенциальный враг, но ему сопереживаешь, и во многих ситуациях он оказывается человечнее праведников. Оценка: отлично!
udrees про Михайлов: Пепел доверия-3 (Боевая фантастика, Ужасы, Постапокалипсис, Самиздат, сетевая литература)
28 06 Отличная третья книга из серии про зомбиапокалипсис, хотя конечно там не совсем зомби. Но такого описания конца света в стиле «зомби» и таких противников мне еще не встречалось. Слишком сильных, быстрых, пока не умных и многочисленных. ……… Оценка: отлично!
udrees про Атаманов: Стратег из ниоткуда. Книга третья (Героическая фантастика, Фэнтези, Самиздат, сетевая литература)
28 06 Все отлично. Написано просто, живо, увлекательно. Персонажи тоже яркие и уникальные, как люди, так и нелюди. Предоставленные герою умения оказываются очень полезными в схватке с главными противниками, фактически, помогают ……… Оценка: отлично!
udrees про Каменистый: Рунный практик (Боевая фантастика, Фэнтези, Попаданцы, ЛитРПГ)
28 06 Прекрасное продолжение. Конечно это приключение, где у главного героя все получается, все срабатывает в нужный момент, и как у Бэтмена, для подходящего случая всегда припасен нужный гаджет в кармане, очень кстати оказавшийся ……… Оценка: отлично!
udrees про Мантикор: Тьма в отражении (Боевая фантастика, Технофэнтези, ЛитРПГ, Самиздат, сетевая литература)
28 06 Автор продолжает свое повествование, правда вся книга будет скорее не про путь вниз, а наверх и вбок. Все написано в том же стиле, увлекательно с описанием новых мест и монстров. Глав с перечислением характеристик всех героев ……… Оценка: отлично!
udrees про Мантикор: Истинный враг (Боевая фантастика, Технофэнтези, ЛитРПГ, Самиздат, сетевая литература)
28 06 Продолжение увлекательное, стиль повествования все такой же, но на сей раз действий больше, чем разговоров. Отряд героя продолжает спуск по Стене, и сейчас каждый уровень является обиталищем самых опасных монстров. Но как ……… Оценка: отлично!
trampak про Мясников: Великая Отечественная. 10 000 фактов о войне (История)
27 06 Россия никогда не начинает войн, она их завершает."- эта лживая фраза ставит под сомнение , что автор историк. А кто соврал однажды... Оценка: нечитаемо
Paul von Sokolovski про Логинов: Свет в окошке (Социальная фантастика)
27 06 Очень хорошая, тяжёлая и светлая книжка. То, что все знают - мы живы, пока о нас помнят... у Логинова получает некоторое материальное (?) воплощение. Как быстро мы развеемся? И кто будет помнить нас? Читать, или хотя бы пробовать - всем, всем, всем.
Олег Макаров. про Борчанинов: Лейтенант космического флота [СИ] (Боевая фантастика, Космическая фантастика, Самиздат, сетевая литература)
26 06 Написано хорошо, но не захватывает. Шаблонное космооперное начало. Бросил Оценка: плохо |
Комментарии
Отв: Статистика валидности fb2 файлов в библиотеках
А можно списки файлов (по пунктам)?
Отв: Статистика валидности fb2 файлов в библиотеках
Интересно было бы посмотреть разбивку по "fb2 schema violation" - какие именно нарушения. Если это возможно, конечно. У меня интуитивное ощущение, что большинство нарушений будет из-за жанров. Если не ошибаюсь, в схеме нет жанров "other" и "prose".
Отв: Статистика валидности fb2 файлов в библиотеках
Из без дублей? Или из всех?
Где-то примерно 7598.
Это не значит, что в этих файлах нет других ошибок.
Отв: Статистика валидности fb2 файлов в библиотеках
Лучше всех, желательно с ID
Ещё скрипт, который это всё насчитал - запустить его прям на сервере.
Отв: Статистика валидности fb2 файлов в библиотеках
id - это fb2 id?
Скрипт fb2stat из fb2utils
Нужен питон :) + python-lxml + BeautifulSoup (BeautifulSoup - это один файл BeautifulSoup.py, его можно кинуть в каталог fb2utils.
Запускать python fb2stat.py dirs|files 2>log
Отв: Статистика валидности fb2 файлов в библиотеках
Спасибо, поиграюсь.
Отв: Статистика валидности fb2 файлов в библиотеках
Копипаст - рулит. :)
Я имел в виду: 7598 файлов нарушают жанры. Это не значит, что в этих файлах нет других ошибок.
Отв: Статистика валидности fb2 файлов в библиотеках
Можно оторвать проверку жанров?
Не такое уж это и нарушение, с учётом того что у Грибова список и названия жанров постоянно меняются, да и не все нужные жанры у него есть.
Отв: Статистика валидности fb2 файлов в библиотеках
Я сайчас поменял схему в соответствии с жанрами на либрусеке. Если этого жанра нет в библиотеке - будет не соответствовать схеме. По-моему так правильно.
Я тут еще переписал валидатор на php. Сейчас работает из ком. строки. Где-то так:
php validator.php b/a.fb2<b>Найдены ошибки!</b><br />
<b>Error 1871</b>: Element '{http://www.gribuser.ru/xml/fictionbook/2.0}src-lang': This element is not expected. Expected is one of ( {http://www.gribuser.ru/xml/fictionbook/2.0}author, {http://www.gribuser.ru/xml/fictionbook/2.0}book-title ). in <b>/home/con/Projects/fb2ut/b/a.fb2</b> on line <b>10</b><br />
<b style="color:red">Плохой файл</b><br />
Отв: Статистика валидности fb2 файлов в библиотеках
Да, вот еще. У меня работает с этим:
$ php -i | egrep 'libxml2|Schema|XPath'
XPath Support => enabled
Schema Support => enabled
Schema support => enabled
libxml2 Version => 2.6.32
Файлы схемы можно взять в fb2utils в каталоге fb2utils/fb221schema/
Отв: Статистика валидности fb2 файлов в библиотеках
У меня:
php -i | egrep 'libxml2|Schema|XPath'
Schema support => enabled
libxml2 Version => 2.6.32
чего-то не хватает?
Апач говорит
PHP Fatal error: Class 'DOMDocument' not found in /www/modules/librusec/validator.inc on line 53
Отв: Статистика валидности fb2 файлов в библиотеках
yum install php-xml ?
или php5-xml
Я там ещё в скрипте ошибку нашел: в начале функции xml_validate вместо "global $errors;" следует читать "global $errors, $xsd_path;"
Отв: Статистика валидности fb2 файлов в библиотеках
Оно, спасибо.
global $errors; в больших проектах не бывает.
du -c includes/ modules/*/*inc modules/*/*module - 5348 total
стрёмное название, нет уверенности что ни с чем не пересечётся в 5 метрах пыха.
я все глобалы собрал в одну переменную и обозвал её $validate_errors, во избежание.
Отв: Статистика валидности fb2 файлов в библиотеках
Ну этот скрипт скорее не догма, а руководство к действию. Там можно еще сообщения об ошибках подправить/перевести, или формат вывода.
Отв: Статистика валидности fb2 файлов в библиотеках
Вот такую штуку бы прикрутить к добавлению книги... и чтобы выдавала что за ошибка - было бы просто замечательно!
Отв: Статистика валидности fb2 файлов в библиотеках
Там в комплект входит скрипт fb2validator. Вот он выводит подробный разбор ошибок.
Типа:
*** Validation of file b/a.fb2 **** Try the DOM parser *
xml validity check passed
* Schema validation *
Schemas validity ERROR: <string>:10:0:ERROR:SCHEMASV:SCHEMAV_ELEMENT_CONTENT: Element '{http://www.gribuser.ru/xml/fictionbook/2.0}src-lang': This element is not expected. Expected is one of ( {http://www.gribuser.ru/xml/fictionbook/2.0}author, {http://www.gribuser.ru/xml/fictionbook/2.0}book-title ).
fb2 validity check failed
> Some errors found <
----
*** Validation of file b/example.fb2 ***
* Try the DOM parser *
xml validity check passed
* Schema validation *
fb2 validity check passed
* Extra FB2 checkup *
ERROR: external note: bad
ERROR: local external link: bad
ERROR: not linked image: tolstoy_port.jpeg
> Some errors found <
Если его запустить с ключом -m, выводит рапорт в html.
Отв: Статистика валидности fb2 файлов в библиотеках
А с жанрами в схеме вообще какая-то фигня.
Вот жанры, которые есть на либрусеке, но нет в схеме:
comp_dsplove
notes
other
prose
religion_budda
sci_anachem
sci_biochem
sci_biophys
sci_build
sci_business
sci_cosmos
sci_economy
sci_geo
sci_metal
sci_orgchem
sci_physchem
sci_radio
sci_state
sci_transport
sf_fantasy_city
sf_postapocalyptic
А вот наоборот, есть в схеме, но нет на либрусеке:
accountingbanking
economics
economics_ref
global_economy
industries
job_hunting
love_sf
management
marketing
org_behavior
paper_work
personal_finance
popular_business
real_estate
small_business
stock
Отв: Статистика валидности fb2 файлов в библиотеках
http://robot.litres.ru/pages/catalit_genres/
Отв: Статистика валидности fb2 файлов в библиотеках
Добавил в схему жанры, которые есть на либрусеке. Но я вам скажу, что вот это не есть хорошо:
prose_rus_classicprose_su_classics
Почему rus а не ru? Почему в одном случае с s на конце, а в другом без?
Прогнал весь либрусек (с удаленными) с новыми жанрами. Результат:
total files: 115603not an xml file: 173 (0%)
sax parsing error: 7335 (6%)
dom parsing error: 1 (0%)
fb2 schema violation: 32363 (28%)
inconsistent fb2 file: 1454 (1%)
good files: 74793 (65%)
Минус 5756 файлов.
Отв: Статистика валидности fb2 файлов в библиотеках
От Грибова консистентности захотел ? Он формат делал по принципу "что маю то и несу" , начинание вообще то было благое и к месту пришлось но систематизации там почти нет, чего стоят одни ID которые как GUID но не все :) , а даты где DATE а где текстом? А непродуманость вообще самой системы ID книгам ? ...
Отв: Статистика валидности fb2 файлов в библиотеках
Гм... я правильно понимаю, что только 5756 файлов нарушают жанры, а 32363 файла нарушают в fb2-схеме что-то другое? Мне казалось что нарушений жанров будет больше, а других - меньше...
Отв: Статистика валидности fb2 файлов в библиотеках
Минус 5756 файлов - это по сравнению с предыдущим тестом.
Сейчас в схеме указаны все жанры, которые есть на либрусеке. В предыдущем тесте в схеме были только жанры от ГрибЮзера.
Я не думаю, что основное нарушение схемы это жанры. Там много чего разного - отсутствующие обязательные теги, неправильная последовательность (например по схеме в "author" строгая последовательность "first-name" - "middle-name" - "last-name" - и т.д.)
В последнем тесте неправильная последовательность (grep 'This element is not expected') встречается 78765 раз (не файлов). Ошибка жанров (grep 'The value .* is not an element of the set') - 3466 раз.
Ошибки в файлах литреса в основном из-за пустого "body type="note"" (комментариев нет, а соответствующее "body" - есть).
Отв: Статистика валидности fb2 файлов в библиотеках
Понял, спасибо.
Отв: Статистика валидности fb2 файлов в библиотеках
С жанрами есть вот еще какая проблема. Список жанров в fb-2.1 изменился по сравнению с fb-2.0. (На fictionbook.org есть спец таблица для конвертации.) А во многих старых файлах остались старые жанры.
Дейсвительно неправильных жанров не так уж много. Я тут составил список таких жанров и их соответствие правильным:
105 otherProse prose
adv_history_avant adv_history
fictionbook.cs other
literature_japan prose
proce prose
prose_root prose
prose_rus_classics prose_rus_classic
prose_su_classic prose_su_classics
rel_boddizm religion_budda
sf_fantasy_humor sf_fantasy
sf_history_avant sf_history
Encyclopaedia ref_encyc
SF sf
Warhammer 40k sf
Отв: Статистика валидности fb2 файлов в библиотеках
Вот ещё пример невалидности: файл, пришедший с литреса http://lib.rus.ec/b/144439 - Испанский поход (Легион-5)- Алексей Миронов (А.Я.Живой) - Александр Прозоров.
FB Editor 2.0 ругается на автора А.Я.Живого, у которого указаны тэги id.../id и home-page.../home-page. Если же поменять их местами или удалить любой из них, то всё становится вполне валидным.
Отв: Статистика валидности fb2 файлов в библиотеках
На литресе щас новая версия FBE. Соответственно с новой схемой. Думаю там все валидно :)