Вы здесь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Последние комментарии
нэнси RE:Подайте бедному копеечку на книжку с литреса... 1 день
kopak RE:Таинственная личность админа Флибусты 3 дня Isais RE:Не тот автор 4 дня xieergai60 RE:Продление подписки 6 дней TaKir RE:Валерия Сергеевна Черепенчук А. Н. Николаева - Мифы... 1 неделя Isais RE:Древняя Греция. Читаем... 1 неделя laurentina1 RE:Ирина Александровна Велембовская - Немцы 1 неделя Саша из Киева RE:Кто сможет раздобыть и оцифровать нужные мне книги? 2 недели Саша из Киева RE:Избранное 2 недели Alligatoreader RE:Багрепорт - 2 2 недели fedor.de RE:Отображение страницы Librusek 3 недели Isais RE:Чиполь Сергеевич Наглецов - Огненный дракон [СИ] 3 недели blahblahblah2024 RE:Беженцы с Флибусты 3 недели sem14 RE:Что читать о блокаде Ленинграда. Подборка книг 3 недели sem14 RE:Михаил Юрьевич Берг - Андеграунд. Итоги. Ревизия_5 1 месяц Oleg V.Cat RE:B343695 Александр. Книга 1 1 месяц Isais RE:Калибрятина/Самиздатина 1 месяц md2k15 RE:Относительно Вархаммер 40 000 1 месяц Впечатления о книгах
udrees про Бубновский: Мифы о здоровье. Откуда берутся болезни (Здоровье, Альтернативная медицина)
09 12 Когда я начал читать книгу, то был немного разочарован тем, что она написана при поддержке и содействии канала «Военная тайна» и Игоря Прокопенко. Уже одно это говорит о «качестве» материала. Не знаю, уж знал Бубновский о ……… Оценка: плохо
udrees про Бубновский: Здоровье позвоночника. Упражнения от болей в шее и спине при остеохондрозе и межпозвоночных грыжах. Золотая книга [litres] (Медицина, Здоровье)
09 12 Хорошая очередная книга от Бубновского. Узнал кое-что новое, даже в дополнение после прочитанных его других книг. Например, про грыжу много написано. Есть иллюстрации и описания упражнений. Будет полезно прочитать всем, кто страдает от болей в спине. Оценка: хорошо
udrees про Бубновский: Заговор фармацевтов (Альтернативные науки и научные теории)
09 12 Книга, сочетания которой я не понимаю. С одной стороны Бубновский, серьезный доктор, лечащий болезни спины у людей, методику и советы которого лично я тоже использую, и которая помогла мне избавиться от сильных болей в шее. ……… Оценка: плохо
udrees про Бубновский: Колени и стопы без боли. Как сохранить и восстановить подвижность суставов в домашних условиях [litres] (Здоровье)
09 12 Все правильно описано, подробно, с изложением анатомии простым языком, примерами из жизни. Приведены упражнения с иллюстрациями. Их правда не так много, как обычно в других его книгах по кинезитерапии. Прочитать будет полезно, ……… Оценка: отлично!
Maxxim про Терентьев: Точка невозврата (Боевик)
08 12 началось живенько и идея ничего, но потом.... вдаваться смысла нет ,в общем - автор дурак.
Sello про Розенблат: Рассказы [СИ] (Проза, Эссе, очерк, этюд, набросок)
08 12 Я не знаю, где живет сейчас этот товарищ, но, по указанной дате под рассказиками, в 2016г. он пребывал в Израиле. Вот проблема. "Писатель" выставляет перед некоторыми текстами эпиграфы из Набокова, а собственно само написанное ……… Оценка: нечитаемо
Dongel про Шалашов: Господин следователь 1 [СИ] (Альтернативная история, Исторический детектив, Попаданцы, Самиздат, сетевая литература)
07 12 Дочитал четвертую книгу цикла. Мне очень понравилось! Во-первых, автор проделал колоссальную работу, собирая исторические и архивные материалы. Во-вторых, все повествование очень увлекательно, почти нигде нет "провисающих" ……… Оценка: отлично!
Саша из Киева про Шатирян: Музыкантская команда (Детская проза)
07 12 Кто-нибудь сможет преобразовать эту книгу из djvu в fb2?
Олег Макаров. про Мусаниф: Во имя рейтинга (Юмористическая фантастика)
07 12 Великолепная книга. Как, в общем-то и все остальные у Мусанифа. Что касается мнения уважаемой Vetrenitsa «я категорически не согласна с тем, что, что по телевизору покажут, в то люди и поверят» — думаю, последние три ……… Оценка: отлично!
Isais про Велипольский: Три «Остапа» [СИ] (Научная фантастика, Самиздат, сетевая литература)
06 12 Это, надо заметить, очень редкая птица — научная фантастика, которую следовало бы написать и издать в 1924-м. Или, по крайней мере, в 1956-м. А она каким-то странным образом залетела в 2016-й... Выходит, и среди рассказов бывают «попаданцы».
Mila_48 про Сорока: Чорна Рада, 1663 [uk] (История)
06 12 С благодарностью верстальщику за возможность прочитать эту книгу. Удачи! Оценка: отлично!
дядя_Андрей про Горбатенко: Диверсант. Искусство активной разведки (Публицистика, Спецслужбы)
06 12 kyns71, ну, можете не друг друга. Можете на "куклах" учиться |
||||||||||
Комментарии
Отв: 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-у, кстати.
Теперь зарядить изготовление хешей, и завтра, с новыми силами - уля-улю! - сравнилку гонять во все гривы.
Страницы