Вы здесь5077 сомнений.
Опубликовано пн, 18/08/2008 - 10:44 пользователем pkn
5077 сомнений. Ну вот. Начала, наконец, прожевываться перловка, скрипты хоть кое-как зафурычили, стремительным домкратом наросла библиотечка полезных сабрутинок, и в тумане перспективы стал вырисовываться первый результат: 5077. 5077 - это число книжек из AldLit (это, совместно, Альдебаран36163 и Литрес4415), которых, по нынешнему мнению скрипта-сравнилки, нет в Либрусеке. На самом деле множество из них таки в Либрусеке есть, и я хотел бы уменьшить это число 5077 - более правильным сравнением книг из AldLit и из Либрусека. Но тут я теряюсь в сомнениях. Помогите соображениями о возможных подводных камнях, братие и сестрие! По вот этим поводам. Деёфикация: Декавычкизация: Детирезация: Ещё я хочу спросить уважаемое сообщество про этавот, о книгах из AldLit, стоящих в первой очереди к заливке на Либрусек: 1. Конвертировать ли в UTF-8 те книги, которые сейчас в другой кодировке?
Updated: Предполагаемый порядок предзаливочной обработки (именно в изложенном порядке): 1. Записать в custom-info (не в history) предлибрусечное происхождение - Aldebaran36163 или Litres4415 (Perl script) 2. Инкрементировать версию на 3. Прогнать через FB2Fix (попутно конвертировать все файлы в кодировку UTF-8, конвертирование никуда не записывать) (FB2Fix) Используемая версия Fb2Fix 1.0.8. Содержимое options-файла: 4. Прогнать через fb2-renaming, по схеме: Familiya_Imya_(Serial-#)_Nazvanie_knigi.fb2 . При этом _(Serial-#) - опционально, вставляются только при наличии таковых в дескрипшне. Если авторов много, автор берется только первый. (Perl script) Updated: новое магическое число, после улучшения логики сравнивалки - 4511. Updated: Самое-самое последнее магическое число - 4509. Да и то благополучно закончилось :)) http://lib.rus.ec/sites/default/files/4509-list-by-title.txt 805.48 кб ---------------------------------
|
Вход на сайтПоиск по блогам и форумамUser menuПоследние комментарии
Larisa_F RE:Дэвид Герберт Лоуренс собрание в 7 томах том 3 19 часов
нэнси RE:Подайте бедному копеечку на книжку с литреса... 2 дня Larisa_F RE:Книжная серия "Жизнь в искусстве" издательство "Искусство"... 3 дня sem14 RE:Собираем серию: "Мастер серия", издательство "Лимбус". 4 дня Dead_Space RE:Прошу переформатировать, распознать, etc... 6 дней sibkron RE:«Словенский глагол» 1 неделя Tramell RE:Литературная премия имени И.А. Ефремова 1 неделя sem14 RE:Серия "Что есть что" издательства "Слово"(чего не хватает) 2 недели larin RE:Оплатил, но абонемент не отображается 2 недели Larisa_F RE:Беляевская премия 3 недели epoost RE:Чарльз Брокден Браун - Wieland 1 месяц nehug@cheaphub.net RE:Ответственность. 1 месяц nehug@cheaphub.net RE:Доступ 1 месяц Larisa_F RE:Принцесса-бродяжка 1 месяц Larisa_F RE:Серия "Очень прикольная книга", издательство Азбука-классика 1 месяц Tramell RE:Серия "Символы времени" издательства "Аграф" 1 месяц Tramell RE:Серия книг «Судьбы книг» издательства «Книга» 1 месяц Tramell RE:Современная корейская литература. Книжная серия... 1 месяц Впечатления о книгах
Dead_Space про Гуха: Незалеченные раны. Как травмированные люди становятся теми, кто причиняет боль (Психология, Самосовершенствование)
30 08 ."Отношенческие травмы специфичны для людей. Ни одно другое живое существо не причиняет вред своим сородичам намеренно, разве что при охоте или в период спаривания." При таком уровне экспертизы, проявленном вначале, дальше можно не читать. Оценка: нечитаемо
RamirezElDemoni про Ра   : Задолбанец (Героическая фантастика, Фэнтези, Самиздат, сетевая литература)
30 08 Эксперимент не удался. Вернуть главгера домой в процессе - так себе концовка. Оценка: плохо
Barbud про Тамбовский: Кто остался на трубе [СИ] (Альтернативная история, Социальная фантастика, Попаданцы, Самиздат, сетевая литература)
30 08 Глупость какая-то. Советские школьники в США оставлены почти без присмотра, они там воюют с мафией, охаивают комсомол в разговорах с американцами, живут отдельно в одном доме мальчик с девочкой безо всякого контроля. Не верю. Оценка: нечитаемо
decim про Лукьяненко: Новая фантастика 2026. Антология №10 [сборник litres] (Социальная фантастика, Научная фантастика)
30 08 Легально и бесплатно в количествах на любом самиздатовском сайте. Изводить лес ради тщеславия дебютантов("меня издали на бумаге!") - ну такое. Оценка: плохо
xZiminxx про Мазин: Князь плесковский [АТ] (Альтернативная история, Боевая фантастика, Исторические приключения, Самиздат, сетевая литература)
27 08 На Мазина непохоже вообще . Непонятно кто написал. Оценка: плохо
mysevra про Майер: Eclipse [en] (Любовная фантастика)
27 08 Не понимаю, почему так романтизируют эту историю. Это же так практично: лучше выбрать бессмертное существо, которое обеспечит тебе и здоровье, и богатство, и красоту, чем ютиться с полуживотным в индейской резервации, работая ……… Оценка: плохо
mysevra про Хрущов-Сокольников: Петербургские крокодилы (Полицейский детектив, Крутой детектив)
27 08 Интересный стиль. Да и сама книга – замечательный приключенческий криминальный роман, живой, лёгкий и какой-то не совсем серьёзный. Оценка: хорошо
tvv про Зубков: Дипломат и его конфиденты (Боевая фантастика, Фэнтези, Самиздат, сетевая литература)
26 08 Продолжение цикла есть на Ф., но файлы слишком тяжелые, более 10 мегабайт.
Никос Костакис про Ланцов: Вираж бытия [СИ] (Альтернативная история, Исторические приключения, Попаданцы, Самиздат, сетевая литература)
25 08 Уникальное претенциозное производство. ____________________ Постарался представить себе производство, поглядывающее свысока, разговаривающее через губу - кароч, такое всё из себя, шо пиззец! А прецизионное производство горестно разводит руками и обтекает.
Dead_Space про Триана: Королева склепа [litres] [The Prettiest Girl in the Grave ru] (Ужасы, Триллер)
25 08 Иллюстрации внутри, как и в предыдущей книге «Кровавые реки, мясные берега», очень отдают ИИ. По аннотации, мне казалось что это будет что-то более драйвовое, а-ля фильм «Спуск», не дотягивает, обычный хоррор в стиле ……… Оценка: неплохо
Лысенко Владимир Андреевич про Беломестнова: Седые мальчики (Современная проза, О войне)
24 08 Это так класно защищать Родину в чужой стране, в Украине, Грузии, Сирии. Это они не такие, нужно их заставить, это не они пришли к нам, а мы к ним. Только для читателей Раши. Оценка: нечитаемо
Paul von Sokolovski про Ветров: Девятиэтажка. Часть 3 (Альтернативная история, Боевая фантастика, Попаданцы, Самиздат, сетевая литература)
23 08 Интересно. Читается с удовольствием. Хочется продолжения. |
||||||||||
Комментарии
Отв: 5077 сомнений.
4509 благополучно кончились :))
Отв: 5077 сомнений.
Интересный глюк случился при заливке этой коллекции.
У книги Меня зовут "Бендер" аннотация от Наполеон. Последняя любовь
При попытке исправить аннотацию, оказалась, что она общая для обеих книг, изменения происходят сразу и в той и в другой! Как случилось такое объединение и как его отменить?
Удалось исправить: скачал, удалил из библиотеки, залил по-новой.
Отв: 5077 сомнений.
Пока я дрых уже исправили... а глюк и правда интересный, я такого и не припомню.
Отв: 5077 сомнений.
На "Списке проектов" появилось сообщение еще об одном таком баге. Исправлять не стал, посмотрите в чем там дело.
(http://lib.rus.ec/b/117281) получтил аннотацию от (http://lib.rus.ec/b/117183)
Отв: 5077 сомнений.
> На "Списке проектов" появилось сообщение еще об одном таком баге. Исправлять не стал, посмотрите в чем там дело.
Сначала подумал, что заблуждаетесь. Но оказались правы. Кусочки для прояснения (комментарии мои):
Возможно, повторяю возможно, поможет простое unset в parsefb2. Нужно обращаться к создателю.
Я правильно понимаю, что ошибка появляется при закачке сразу нескольких книг, в некоторых из которых нет annotation?
Отв: 5077 сомнений.
Нет, промах. Действительно одна аннотация на две книги. Я пас.
Отв: 5077 сомнений.
Если книгу с бОльшим номером удалить, а потом залить ее по новой, то ошибка исчезает и у книги появляется аннотация выдернутая из описания. Если востановить удаленную - ошибка появляется вновь. Т.е. ошибка привязана к определенному номеру файла.
Отв: 5077 сомнений.
Внутри parsefb2 нельзя делать unset. В $PD передаются некоторые параметры для парсера.
Отв: 5077 сомнений.
Ковыряясь в результатах заливки, кажется, понял поведение Либрусека при разметке сериалов. В fb2-схеме тег sequence может присутствовать аж в трех местах: в title-info, в src-title-info и в publish-info.
Пример: http://lib.rus.ec/b/114885 (Азимов, Логика есть логика)
1. В title-info <sequence name="Рассказы о демоне Азазеле" />
2. src-title-info отсутствут целиком
3. В publish-info <sequence name="Миры Айзека Азимова" number="12" />
При заливке победил sequence из publish-info, что, в общем, логично. А я при fb2-переименовании ориентировался только на sequence из title-info. Надо будет сделать учет всех трех, с приоритетом publish-info - старший, title-info - самый младший.
Кстати, в Либрусеке на страничке редактирования книги теги sequence не показываются (баг?).
Отв: 5077 сомнений.
Серия к которой относится произведение автора это одно, а издательская серия - это совсем другое :-)
И они вполне могут быть разными
Отв: 5077 сомнений.
> При заливке победил sequence из publish-info, что, в общем, логично.
Баг из той же серии, что и этот. Толко хуже - одно строчкой не обойтись уже. Не предусмотрено было несколько sequence изначально. Вот отрывок из того же parse.inc:
Т.е. здесь используется не массив, как в случае с авторами, а строка. Но я плохо знаю как устроены внутренности lib.rus.ec, и вообще ничего не знаю про Drupal. Но полагаю, что нужно сделать по образу и подобию с author, типа так:
Естественно, нужна новая функция AddSeqId, кою ещё нужно встроить в двух-трех местах, убрать лишнее. Много кода перетрясти придеться - новые глюки вылезти могут.
Где багтрекер?
Отв: 5077 сомнений.
Багтрекер нашел, вот:
http://lib.rus.ec/forums-6
Отв: 5077 сомнений.
Кода перетрясти придётся пол библиотеки.
SeqId сидит в libbook, отдельной таблицы нет. На наличии нескольких сериалов у одной книги совершенно не расчитано. Придётся пересматривать все места где есть SELECT FROM libbook, заменяя на libbook LEFT JOIN libseq USING(BookId), их сотни, перепрограммировать все списки книг с учётом многосериальности. Да и скорости лишний JOIN не добавит.
Не уверен, что оно того стоит. Несколько авторов бывает часто, а вот несколько сериалов - это уже редкость.
Отв: 5077 сомнений.
> Кода перетрясти придётся пол библиотеки.
Хорошо, тогда следует вставить костыли в парсере. Как уже говорили - выставить приоритеты. Серия книги приоритетней серии бумажного издания (автор для нас важнее издательских крыс!). Все просто думаю - если уже есть - не переписывать (if(empty($seria)) $seria=$tomy_to). Ведь вначале идет именно серия книги.
> Внутри parsefb2 нельзя делать unset.
Хорошо, но можно удалить тот же annotation ($PD['ann']). И по возможности удалить все, что относиться к книге. Иначе, если в последующей книжке в цикле чего-то не хватает, то копируется из предыдущей. Конечно, опять костыль, не совсем верно. Ох уж эти глобальные переменные.
Но не понятно мне, почему одна аннотация на две книги? Связанно ли это с тем, что "случайно" оказались одинаковые аннотации. Магия друпала?
Нужно разговор на форум перенести. Уже несколько подобных багов поднакопилось.
Отв: 5077 сомнений.
Bullfear, тут готовятся к заливке вторая и третья очереди из AldLit - подтверди, пожалуйста, что версию нужно приподнимать на 0.001, а не 0.01. Спрашиваю на всякий случай, а то может ты передумал. А то меня немножко сомнения берут что 0.001 будет достаточно чтобы заливочный скрипт убедить в старшинстве заливаемой версии.
Отв: 5077 сомнений.
Подтверждаю :) Кстати все равно я отсеивал книги в архивах либрусека по дате. За 18-е число добавлять не стал.
Скрипт железный. Сравнивает больше\меньше. Для такого сравнения даже 0.00000001 достаточно будет, чтобы его убедить. В принципе можно проверить :)
Отв: 5077 сомнений.
Это я тоже так думал, пока не начал в Перле версии сравнивать... ну будем надеяться, что php (Либрусек вроде на php написан) поумнее Перла в этом деле. Все таки следующее поколение. ОК, 0.001 it is.
Баг в kop-fb2-split-copy-by-lang.pl_.txt ... точнее в File::Find
Заметка для отметки.
В процессе ковыряния нащупал баг в скриптах (включая kop-fb2-split-copy-by-lang.pl_.txt)... точнее, в модуле File::Find. (ActivePerl perl, v5.8.7 built for MSWin32-x86-multi-thread)
Перловый модуль File::Find не находит файлы, у которых в имени есть кириллические буквы. Например:
Vonnegut_Kurt__Dolgaya_progulka_тАФ_navsegda.fb2
С одной стороны - это хорошо, я теперь понимаю почему у меня из сравнилки и вылезает постоянно так много "отсутствующих на Либрусеке" книг.
С другой - плохо: я как-то не могу придумать как этот баг обойти. DIR в cmd.exe тоже выдает ??? вместо кириллицы...
Отв: Баг в kop-fb2-split-copy-by-lang.pl_.txt ... точнее в File
В конечном счете "и одолел" ©. Как обычно (гребаный перл!) действовать пришлось через ухо.
Сначала, после долгих мытарств с unzip-режимом 7zip-а и попыток (безуспешных) припахать умный UnRar, пришлось таки научиться залезать в зипы из перла. Оказалось, что оно того стоило - перловый unzip неплох.
Затем пришлось вплотную познакомиться со структурой fb2-файлов (якобы fb2), залитых на Либрусек на ранних этапах. Тут я обрел понимание отчего и почему хлипкий перловый модулёк XML::Parser падал в обморок от одного вида этих файлов. Заодно очередной раз приподнялся мой градус уважения к Ларину, но это мы спишем на подхалимаж.
В общем, процедура такова:
use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
- и все мои проблемы с Compress::Zlib отпадают. Оно таки работает, просто я не тот модуль пытался подключить.
Затем собираем в список все либрусечьи зипы, извлекаем списки мемберов, отсекаем (по расширению, увы) не-fb2, и начинаем их распаковывать... в память, только в память! Если распаковка не произошла - безжалостно бросаем, это файло безнадежно.
А вот если произошла... тут начинаем пытаться создать ASCII-валидное имя файла извлекая из у неё внутре fb2-шные теги. Именно так, и никак иначе - проверено Электроником. Ларин при этом, если я правильно понимаю, если в кривом дескрипшне вообще отсутствует book-title и/или author, идёт в body и берет нужное прямо оттуда. А то и тег FictionBook парсит на предмет наличия... (см. Hitman: Enemy Within ) ...но у меня, слава богам задача попроще: если из fb2-файла нельзя извлечь имя, то это не fb2-файл, и пусть его автор повесится.
Теперь, если удалось извлечь из (якобы) fb2 имя-файла (пусть сто раз корявое, но валидное) - сплёвываем память в это имя-файла (естественно, проверившись и обезопасившись на предмет дупликатов), и весело насвистывая, переходим к следующему. Если не удалось (что-то около 80 файлов из 103202) - рапортуем файл как извлекаемый, но fb2-безнадежный. Сравнилка сочтет его несуществующим, но, может, где-то потом пригодится.
Собствено, все. Таким макаром удалось извлечь из librusec-zips-original 102431 файла (из 103202) - тысячи на три больше, чем удавалось многомудрому WinRar-у, кстати.
Теперь зарядить изготовление хешей, и завтра, с новыми силами - уля-улю! - сравнилку гонять во все гривы.
Страницы