Вы здесь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Последние комментарии
konst1 RE:Переименовать ник (имя учетки) 6 часов
sem14 RE:Книжная серия "Жизнь в искусстве" издательство "Искусство"... 20 часов sem14 RE:Серия «Интеллектуальный детектив» изд-ва АСТ 3 дня Океана RE:Подайте бедному копеечку на книжку с литреса... 2 дня Larisa_F RE:Современная корейская литература. Книжная серия... 2 недели Larisa_F RE:Таррин Фишер 2 недели Aleks_Sim RE:Беженцы с Флибусты 2 недели Саша из Киева RE:Как приобретать друзей и оказывать влияние на людей 2 недели Isais RE:Семейственность в литературе 3 недели miri.ness_ RE:Доступ 27 3 недели bmusanov Оплатил, но абонемент не отображается 3 недели holla RE:Багрепорт - 2 3 недели konst1 RE:Файнридер для Win11 1 месяц larin RE:Оплатил, но абонемент не отображается 1 месяц sem14 RE:Книжная серия «Сlio» издательства "Евразия" 1 месяц Isais RE:Национальный конкурс на лучшее литературное произведение... 1 месяц Isais RE:Детство, опаленное войной (Вторая мировая 1939-1945 и ВОВ) 1 месяц sem14 RE:«Морской роман» — книжная серия Калининградского книжного... 1 месяц Впечатления о книгах
udrees про Каку: Физика невозможного [Physics of the Impossible: A Scientific Exploration into the World of Phasers, Force Fields, Teleportation, and Time Travel ru] (Физика, Научпоп)
31 08 Увлекательно прочитать про возможности и открытия, которые могут быть доступны в ближайшие сотню лет или больше. Книга немного уже устарела, информация базируется видимо на сведениях 2006-2007 годов. Сейчас в 2025 году часть ……… Оценка: хорошо
udrees про Роузвуд: Джеффри Дамер. Ужасающая история одного из самых известных маньяков в мире [litres] [Jeffrey Dahmer: A Terrifying True Story of Rape, Murder & Cannibalism ru] (Биографии и Мемуары, Публицистика, Документальная литература)
31 08 Кому интересно почитать про историю ужасных преступлений Джеффри Дамера – почитайте книгу. Она достаточно подробно на 50 страницах описывает его похождения и убийства мужчин, без особых кровавых подробностей, хотя описания ……… Оценка: неплохо
udrees про Мантикор: Зеркало Мисы (Боевая фантастика, ЛитРПГ, Самиздат, сетевая литература)
31 08 Как увлекательно становится читать долгую историю приключений друида, который по силе невероятно прокачался по ветке РПГ, что практически стал богом, когда он натыкается на препятствия и противников, которые сводят на нет ……… Оценка: отлично!
Stager про Дроздов: Зубных дел мастер (Космическая фантастика, Попаданцы, Самиздат, сетевая литература)
31 08 Ну это даже не третьесортная литература. Это вообще не литература. Ещё это редкое говно по содержанию. Неожиданно для Дроздова. У них там в Белоруссии так плохо? Оценка: плохо
Amfortas про Бачигалупи: Навола (Социальная фантастика, Городское фэнтези, Историческое фэнтези)
30 08 Скучно. Невыносимо скучно. Не одолел, бросил на половине. Слащавый "роман воспитания" с кучей банальных деталей. Повествование, ведущее в никуда. Не спасает даже стилизация под итальянское Возрождение. Лучше почитать словарь. Веселее и более интригующе. Оценка: плохо
Олег Макаров. про Юдковски: Гарри Поттер и методы рационального мышления [Harry Potter and the Methods of Rationality ru] (Фэнтези, Фанфик)
30 08 Один из лучших в мире специалистов по критическому мышлению написал фанфик по Гарри Поттеру для того, чтобы большее количество людей заинтересовались критическим мышлением. Представляете, что получилось? Оценка "отлично". ……… Оценка: отлично!
Олег Макаров. про Капба: На золотом крыльце - 2 (Киберпанк, Городское фэнтези, Самиздат, сетевая литература)
30 08 Капба это Капба. К его книгам не читайте аннотаций, читайте сами книги. 5 баллов это недостаточное количество баллов. Оценка: отлично!
Sello про Мережковский: Петр и Алексей (Историческая проза)
30 08 Поздновато, конечно, я разобрался, почему "не прет" мне Мережковский - лишь с третьей попытки, на третьем романе серии. Потому что там, где религия перетягивает на себя одеяло в ущерб историческому повествованию, истина, всегда, ……… Оценка: неплохо
mysevra про Эйрес: Оззи. Автобиография без цензуры [I Am Ozzy ru] (Биографии и Мемуары)
29 08 Несмотря на множество грустных моментов, книга просто пропитана оптимизмом и юмором. Возможно, местами позитив слишком уж натужный, но по-другому никак не выжить в некоторых обстоятельствах, тут тянешь себя за волосы как Мюнхгаузен. Оценка: отлично!
mysevra про Тюльбашева: Лес (Ужасы, Триллер, Мистика)
29 08 Слишком "мыльный" привкус. Где, собственно, события? Заблудились, пропали, шли, шли, поели макарон, шли, шли, совсем пропали. Часть вторая… Оценка: плохо
mysevra про Васильев: Легкий заказ [СИ] (Городское фэнтези, Самиздат, сетевая литература)
29 08 Мило, но слишком кустарно. Продолжение читать не хочется. Оценка: неплохо
Barbud про Демин: 3 книга. 1 глава. Одна планета одно правительство, основной язык общения русский. 15 письмо проекта Главам государств, от 07.12.2023 года [СИ] (Публицистика, Ненаучная фантастика, Самиздат, сетевая литература)
28 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-у, кстати.
Теперь зарядить изготовление хешей, и завтра, с новыми силами - уля-улю! - сравнилку гонять во все гривы.
Страницы