Вы здесьСтатистика валидности 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Последние комментарии
monochka RE:Подайте бедному копеечку на книжку с литреса... 18 часов
weis RE:Прошу переформатировать, распознать, etc... 3 дня Larisa_F RE:Национальный бестселлер (лауреаты и финалисты) 1 неделя sem14 RE:Премия «Фемина» 2 недели tvv RE:Багрепорт - 2 2 недели sem14 RE:Беляевская премия 2 недели sem14 RE:Серия "Очень прикольная книга", издательство Азбука-классика 2 недели Larisa_F RE:Что читать о блокаде Ленинграда. Подборка книг 1 день sem14 RE:Книжная серия "Жизнь в искусстве" издательство "Искусство"... 1 месяц Larisa_F RE:Дэвид Герберт Лоуренс собрание в 7 томах том 3 1 месяц sem14 RE:Собираем серию: "Мастер серия", издательство "Лимбус". 1 месяц sibkron RE:«Словенский глагол» 1 месяц Tramell RE:Литературная премия имени И.А. Ефремова 1 месяц sem14 RE:Серия "Что есть что" издательства "Слово"(чего не хватает) 1 месяц larin RE:Оплатил, но абонемент не отображается 1 месяц epoost RE:Чарльз Брокден Браун - Wieland 2 месяца nehug@cheaphub.net RE:Ответственность. 2 месяца nehug@cheaphub.net RE:Доступ 2 месяца Впечатления о книгах
udrees про Шиленко: Смотритель маяка (Фэнтези, ЛитРПГ, Самиздат, сетевая литература)
03 10 Простая приятная книга про «жизнь» попаданца на какой-то маяк в каком-то потустороннем мире, где ночью туман сжирает все живое, а днем в океане плавают монстры, которые запросто перекусывают корабли. В общем написано доступным ……… Оценка: неплохо
udrees про Вальтер: Гниль (Боевая фантастика, Приключения: прочее, Постапокалипсис, Самиздат, сетевая литература)
03 10 Ужасная книга про ужасных персонажей, продолжение их похождений. Кто читал две предыдущие книги, знает что за психопаты – главные герои, и какие они отморозки и маньяки, любящие убивать, пытать, расчленять и поедать людей, ……… Оценка: неплохо
udrees про Каменистый: Не триумфатор (Боевая фантастика, Фэнтези, Попаданцы, ЛитРПГ)
03 10 Продолжение не скучное, хотя больших битв в этой книге нет. Понравится любителям серии, главный герой наконец-то покидает степную страну и направляется на настоящую большую войну. Снова интриги, козни, наемные убийцы. Все ……… Оценка: отлично!
udrees про Дорничев: Дворник 25-го уровня. Том 10 (Юмор: прочее, Городское фэнтези, Самиздат, сетевая литература)
03 10 Сляпанный на скорую руку высер незрелого ума. Ничего нового не придумано, сказка для взрослых. В книге полно цветных картинок, сделанных нейросетью по сюжету. Рассматривать их прикольно, как детскую книжку листаешь. Книга ……… Оценка: плохо
udrees про Дорничев: Дворник 22-го уровня. Том 9 (Юмор: прочее, Городское фэнтези, ЛитРПГ, Самиздат, сетевая литература)
03 10 Слишком простая книга, которая была совсем проходной, если бы не обилие цветных картинок, иногда по 2 на одну страницу. Они превращают книгу в детскую сказку для взрослых, листаешь себе книжку и рассматриваешь веселые картинки, ……… Оценка: неплохо
udrees про Дорничев: Дворник 20-го уровня. Том 8 (Юмор: прочее, Городское фэнтези, ЛитРПГ, Самиздат, сетевая литература)
03 10 Такая простая и наивная детская книжка, наполненная сказочными зверями, феями и призраками. Кажется с первой книги вся история сильно деградировала, как главный герой стал слишком сильным. Книга напоминает детскую также обилием ……… Оценка: плохо
udrees про Михайлов: Пепел доверия 4 (Боевая фантастика, Социальная фантастика, Постапокалипсис, Самиздат, сетевая литература)
03 10 Невероятно продолжение истории выживания в зомби-апокалипсисе. Мало того, сама концепция зомби совершенно новая, я такой не встречал ранее у других. Разные были зомби, но таких, в которых можешь обратиться сам и любой человек ……… Оценка: отлично!
udrees про Атаманов: Стратег из ниоткуда. Книга четвёртая (Боевая фантастика, Героическая фантастика, Фэнтези, Самиздат, сетевая литература)
03 10 Достойная книга, написана живо, интересно, с юмором. Конечно как взрослая сказка – кругом орки, огры, великаны, эльфы. Главный герой в основном стратег, чем боевой герой, хотя в сражениях тоже принимает участие. Но по-моему ……… Оценка: отлично!
udrees про Карелин: Имперский повар [СИ] (Боевая фантастика, Фэнтези, Попаданцы, Самиздат, сетевая литература)
03 10 Достаточно легко читаемые приключения попаданца-повара в тело другого повара в другом мире, где конечно же никто не в курсе наших блюд. Все у героя получается с пол-тычка, даже умения повара в уличной драке оказывается пригодились, ……… Оценка: неплохо
udrees про Сугралинов: Голодные звёзды (Боевая фантастика, Постапокалипсис, ЛитРПГ, Самиздат, сетевая литература)
03 10 Продолжение понравилось. Автор не дает передохнуть, битвы идут одни за другими. Все как в компьютерной игре, где надо отстроить базу, развиться, подмять ресурсы, раскидать характеристики и начать побеждать противников. Герой ……… Оценка: отлично!
udrees про Сугралинов: Ночь хищников (Боевая фантастика, Постапокалипсис, ЛитРПГ, Самиздат, сетевая литература)
03 10 Книга написана динамично, бои идут одни за другими. Зомби уже практически отошли на задний план, как водится в таком жанре, теперь оставшиеся люди сцепились друг с другом за остатки мира и бонусы от кукловодов. Написано в ……… Оценка: отлично!
Barbud про Шмараков: Немного чумы (Ужасы, Современная проза, Юмористическая проза)
02 10 Не осилил, сдался уже на третьей странице.Может быть, там дальше и есть какие-нибудь художественные достоинства, но читать текст, наполовину состоящий из громоздких предложений в полусотню, а то и в сотню слов длиной, у меня не хватило духу. Оценка: нечитаемо |
Комментарии
Отв: Статистика валидности 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. Соответственно с новой схемой. Думаю там все валидно :)