AldLit, вторая очередь заливки: EBD (11 книг) и KIT (4168 книг)

Выделил из AldLit вторую очередь заливки: EBD (11 книг) и KIT (4168 книг)

EBD = книги из AldLit, которые в Либрусеке представлены результатом eBookDownloader-а, и version-aldlit >= version-libr

KIT = книги из AldLit, которые в Либрусеке представлены результатом LibRusEc Kit-а, и version-aldlit >= version-libr

Предзаливочная обработка(в изложенном порядке):
1. Записано в custom-info (не в history) предлибрусечное происхождение - Aldebaran36163 или Litres4415 (Perl script)
2. Прогнано через FB2Fix (попутно конвертированы все файлы в кодировку UTF-8, конвертирование никуда не записывалось) (FB2Fix)
3. Инкрементирована версия на 0.001 (Perl script)

Поскольку изначально было version-aldlit >= version-libr, то приподнятие версии на 0.001 должно было, по идее, убедить либрусечный заливочный скрипт в старшинстве заливаемой версии .

В порядке эксперимента залил EBD (11 книг). Результат удручает: на 11 файлов - 6 дублей и 5 отказов. Ни один файл не был молча принят :(( Причины непонятны...

Файл Andrey_Rubanov_Sazhayte_i_vyirastet уже есть в базе. Повторы недопустимы.
Файл Andrey_Rubanov_Velikaya_Mechta уже есть в базе. Повторы недопустимы.

file:Vyacheslav_Vladimirovich_Shalyigin_Kosmos Кажется, нашли дубля. Ткните в него для разрешения конфликта. Дубль: Космос!!!
file:Vyacheslav_Vladimirovich_Shalyigin_Kreyser_Bezumnyiy Кажется, нашли дубля. Ткните в него для разрешения конфликта. Дубль: Крейсер «Безумный»
file:Vyacheslav_Vladimirovich_Shalyigin_Printsessa_pomoyki Кажется, нашли дубля. Ткните в него для разрешения конфликта. Дубль: Принцесса помойки
file:Vyacheslav_Vladimirovich_Shalyigin_Zvezda_s_odnim_luchom Кажется, нашли дубля. Ткните в него для разрешения конфликта. Дубль: Звезда с одним лучом

Файл Daliya_Meyerovna_Truskinovskaya_Bednyie_ryitsari уже есть в базе. Повторы недопустимы.
Файл Polina_Dashkova_Vechnaya_noch уже есть в базе. Повторы недопустимы.
Файл Dzhuliana_Makleyn_Prelyudiya_lyubvi уже есть в базе. Повторы недопустимы.

file:Dina_Ilinichna_Rubina_Ya_i_tyi_pod_persikovyimi_oblakami Кажется, нашли дубля. Ткните в него для разрешения конфликта. Дубль: Я и ты под персиковыми облаками
file:Vladimir_Nikolaevich_Voynovich_Delo_N_34840 Кажется, нашли дубля. Ткните в него для разрешения конфликта. Дубль: Дело № 34840

--------------------
Начало (5077 сомнений.) см. тут: http://lib.rus.ec/node/111496

Комментарии

pkn написал:

на 11 файлов - 6 дублей и 5 отказов. Ни один файл не был молча принят :(( Причины непонятны...

Чудеса... попытался сейчас, от отчаяния, залить ещё раз ровно тот же самый rar, содержащий ровно те же самые 11 файлов... результат:

-----------------------
file:Andrey_Rubanov_Sazhayte_i_vyirastet Книга добавлена Кажется, нашли дубля. Ткните в него для разрешения конфликта. Дубль: Сажайте, и вырастет http://lib.rus.ec/b/119946/join/104702
file:Andrey_Rubanov_Velikaya_Mechta Книга добавлена Кажется, нашли дубля. Ткните в него для разрешения конфликта. Дубль: Великая Мечта http://lib.rus.ec/b/119947/join/104703

Книга уже есть в библиотеке - Космос!!! http://lib.rus.ec/b/119940
Книга уже есть в библиотеке - Крейсер «Безумный» http://lib.rus.ec/b/119941
Книга уже есть в библиотеке - Принцесса помойки http://lib.rus.ec/b/119942
Книга уже есть в библиотеке - Звезда с одним лучом непонятный жанр http://lib.rus.ec/b/119943

file:Daliya_Meyerovna_Truskinovskaya_Bednyie_ryitsari Книга добавлена Кажется, нашли дубля. Ткните в него для разрешения конфликта. Дубль: Бедные рыцари http://lib.rus.ec/b/119948/join/102653
file:Polina_Dashkova_Vechnaya_noch Книга добавлена Кажется, нашли дубля. Ткните в него для разрешения конфликта. Дубль: Вечная ночь http://lib.rus.ec/b/119949/join/102646
file:Dzhuliana_Makleyn_Prelyudiya_lyubvi Книга добавлена Кажется, нашли дубля. Ткните в него для разрешения конфликта. Дубль: Прелюдия любви http://lib.rus.ec/b/119950/join/100660

Книга уже есть в библиотеке - Я и ты под персиковыми облаками http://lib.rus.ec/b/119944
Книга уже есть в библиотеке - Дело № 34840 http://lib.rus.ec/b/119945
-----------------------

То есть...
1. 6 файлов, залившихся (через дублей, но залившихся), во второй попытке получили отлуп ("Книга уже есть в библиотеке"). Что есть логично.
2. 5 файлов, в первой попытке получившие другой отлуп ("уже есть в базе. Повторы недопустимы."), во второй попытке прошли (через дублей, но прошли). Что есть непонятно.

Заметка для отметки.
Похоже, главная тут - функция AddFileToLibrusec, находится в файле author.inc. Распечатал файло, буду читать на сон грядуший...

P.S. Чтобы грепнуть сорс на моем винбоксе - пришлось его из UTF-8 перекодировываь в win-1251. И все равно не помогло - grep кириллицы не понимает хоть убей... нашел тыком.

Не используй костыли типа цыгвин, используй нативные инструменты!
vim - the best!!!

А как ты вычислял LibRusEc Kit? К примеру если книга была китом, а потом заменилась на нормальный вариант, в архивах остался кит и добавился нормальный вариант. Причем не факт что "прямо" добавился. Тоесть могут быть разночтения в тегах вида "конан" "конан(конан варвар - 3)". Теперь еще один пункт. Книги либрусека часто датированы 2011 годом, что изрядно смущает его дублеловку. Также у некоторых файлов версия не 1.0 как должна бы быть, а 1.5.

pkn написал:
попытался сейчас, от отчаяния, залить ещё раз ровно тот же самый rar

ИМХО для либрусека проще понимать зипы. На рарах периодически спотыкается.
pkn написал:
Прогнано через FB2Fix (попутно конвертированы все файлы в кодировку UTF-8, конвертирование никуда не записывалось) (FB2Fix)

*вздыхает* зря... размер увеличился, качество файлов не изменилось.

Bullfear написал:
А как ты вычислял LibRusEc Kit? К примеру если книга была китом, а потом заменилась на нормальный вариант, в архивах остался кит и добавился нормальный вариант.

Ну... логика сравнилки на данный момент примерно такая. Сравнилка берет одно файло из AldLit-а, ставит ему priority=0 (NEW), и с ним в зубах идет по всем 100+ тысячам Либрусека.

Если встретился такой-же-тайтл AND такая-же-фамилия-автора AND либр-файл имеет в program-used первым словом eBookDownloader AND version-aldlit >= version-libr, то помечаем это файло как EBD, priority=1 (EBD).

Но на этом сравнилка не останавливается, а идет, с тем же файлом, по Либрусеку дальше.

Если встретился такой-же-тайтл AND такая-же-фамилия-автора AND либр-файл имеет в program-used первым словом LibRusEc Kit AND version-aldlit >= version-libr, то помечаем это файло как KIT, priority=2 (KIT).

И идем дальше.

Если опять такой-же-тайтл AND такая-же-фамилия-автора, NO LibRusEc Kit or eBookDownloader, но выполняется version-aldlit >= version-libr, то priority=3 (REP)(значит REPlace, наш алдлитный файл лучше либрусечного)

И идем дальше.

Если опять такой-же-тайтл AND такая-же-фамилия-автора, NO LibRusEc Kit or eBookDownloader, и не выполняется version-aldlit >= version-libr, то priority=4 (OLD)(значит OLD, наш алдлитный файл хуже либрусечного)

При этом priority может только увеличиваться, не вниз, так что порядок встречи дублей не имеет значения.

В результате получаем разбивку АлдЛита на пять групп:
0 NEW - алдлитное файло новое, в Либрусеке не встречено.
1 EBD - алдлитное файло имеет в Либрусеке дубль от eBookDownloader
2 KIT - алдлитное файло имеет в Либрусеке дубль от LibRuEc Kit
3 REP - алдлитное файло имеет в Либрусеке дубль от кого-то ещё, но алдлитное файло лучше.
4 OLD - алдлитное файло хуже имеющегося в Либрусеке.

Вроде должна работать такая логика.

Bullfear написал:
Причем не факт что "прямо" добавился. Тоесть могут быть разночтения в тегах вида "конан" "конан(конан варвар - 3)".

Ну тут я бессилен. Такие книги воспринимаются как разные.

Bullfear написал:
Теперь еще один пункт. Книги либрусека часто датированы 2011 годом, что изрядно смущает его дублеловку.

Гм... мне-то это пофиг, я на дату вообще не смотрю... а вот если дублеловка смотрит... непонятно зачем бы ей это, но вдруг... надо будет на этот предмет сорсы тоже глянуть.

Bullfear написал:
Также у некоторых файлов версия не 1.0 как должна бы быть, а 1.5.

Оп-па... такого не замечал. Проверю.

Bullfear написал:
ИМХО для либрусека проще понимать зипы. На рарах периодически спотыкается.

Спасибо, учту.

Bullfear написал:
pkn написал:
Прогнано через FB2Fix (попутно конвертированы все файлы в кодировку UTF-8, конвертирование никуда не записывалось) (FB2Fix)

*вздыхает* зря... размер увеличился, качество файлов не изменилось.

Ларин сказал UTF - значит UTF.

pkn написал:
3 REP - алдлитное файло имеет в Либрусеке дубль от кого-то ещё, но алдлитное файло лучше.

Вобщем из логики скрипта что смутило: очень часто бывает что на либрусеке лежат книги одного автора(файла), а на альде - другово. Соответственно и версии отличаются. Не факт, что файл автора X, версии 1.6 будет лучше файла автора Y версии 1.4.
pkn написал:
Ну тут я бессилен. Такие книги воспринимаются как разные.

А вот либрусек понимает что это дубли :Р Для этого надо не учитывать в названии книги все, что в круглых скобках.
pkn написал:
Оп-па... такого не замечал. Проверю.

Хм... ты прав. Это глюк fb2fix. Пропускал через него весь либрусек и по какой-то загадочной причине, он решил влепить части либрусечных файлов версию 1.5. Глянул эти же файлы здесь - версия 1.0, так что вопрос снимаю.

Bullfear написал:
pkn написал:
3 REP - алдлитное файло имеет в Либрусеке дубль от кого-то ещё, но алдлитное файло лучше.

Вобщем из логики скрипта что смутило: очень часто бывает что на либрусеке лежат книги одного автора(файла), а на альде - другово. Соответственно и версии отличаются. Не факт, что файл автора X, версии 1.6 будет лучше файла автора Y версии 1.4.

Оно, конечно, не факт. Но как ещё программно решить какая из книг лучше, если не по номеру версии? Авторов-файла по ранжиру же не построишь. Конечно, можно в сравнилке учитывать не только версию, но и автора-файла. То бишь если автор-файла один и тот же, то лучше книга с большей версией. Но если авторы-файла разные, проблема остается.

Впрочем, в любом случае REP - это третья очередь заливки, и с ней, когда время придет, будем разбираться отдельно. Дай бог пока с KIT управиться.

Bullfear написал:
pkn написал:
Ну тут я бессилен. Такие книги воспринимаются как разные.

А вот либрусек понимает что это дубли :Р Для этого надо не учитывать в названии книги все, что в круглых скобках.

Гм... а ведь и правда похоже... как-то этот момент я пропустил. Попробую в сравнилке прибивать в названии все, что в круглых скобках.

pkn написал:
Оно, конечно, не факт. Но как ещё программно решить какая из книг лучше, если не по номеру версии? Авторов-файла по ранжиру же не построишь. Конечно, можно в сравнилке учитывать не только версию, но и автора-файла. То бишь если автор-файла один и тот же, то лучше книга с большей версией. Но если авторы-файла разные, проблема остается.

Надо учитывать автора. А если авторы разные - в отдельный список для ручного разгребания, и ничего не трогать. Список потом можешь опубликовать - "всем миром" будем сравнивать :) Не факт что на альде будут лучшие версии. К примеру хроники нарнии лучше на либрусеке. А пратчет был лучше на альде.

Bullfear написал:
pkn написал:
Оно, конечно, не факт. Но как ещё программно решить какая из книг лучше, если не по номеру версии? Авторов-файла по ранжиру же не построишь. Конечно, можно в сравнилке учитывать не только версию, но и автора-файла. То бишь если автор-файла один и тот же, то лучше книга с большей версией. Но если авторы-файла разные, проблема остается.

Надо учитывать автора. А если авторы разные - в отдельный список для ручного разгребания, и ничего не трогать. Список потом можешь опубликовать - "всем миром" будем сравнивать :)

OK

pkn написал:
Bullfear написал:

А вот либрусек понимает что это дубли :Р Для этого надо не учитывать в названии книги все, что в круглых скобках.

Гм... а ведь и правда похоже... как-то этот момент я пропустил. Попробую в сравнилке прибивать в названии все, что в круглых скобках.

Можно еще применить вот такой метод
http://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B5_%D0%9B%D0%B5%D0%B2%D0%B5%D0%BD%D1%88%D1%82%D0%B5%D0%B9%D0%BD%D0%B0
Но, здесь надо обязательно учитывать разницу в длине сравниваемых строк. Очепятки отлавливает аж бегом. Ну или когда в кириллицу вставляют латинские символы одинакового начертания.

Bullfear написал:
Также у некоторых файлов версия не 1.0 как должна бы быть, а 1.5.

pkn написал:
Оп-па... такого не замечал. Проверю.

Листинг показал, что таких файлов в Либрусеке всего два, оба раза версия приподнята обоснованно. Ложная тревога.

ИМХО, дубли и ошибки неизбежны. Лучше иметь сотню дублей, чем потерять одну хорошую книгу. Совершенно невозможно избавиться от ошибок, когда анализируется только заголовок. Не говоря о возможных ошибках / опечатках, там еще все зависит от того, кто его делал и как. Меня смущает другое. Когда все сомнения останутся позади, просьба не заливать все такой дикой массой, как в прошлый раз - там было около 40 страниц обновлений за день :(. Практически невозможно все просмотреть, и выбрать / скачать то, что интересно. Пожалейте сервер и наши глаза! Если можно, просьба заливать ну хотя бы произведений по 500 в день ;). Конечно, если это трудно технически, лейте как есть, переживем ;). Может, это даже к лучшему - отмучиться сразу и не растягивать удовольствие. Точно знаю только, что при прошлой заливке я пропустил много интересного, по чисто физической невозможности просмотреть и оценить все.

Лучше сразу отмучатся :) Я например когда добавлял архивы либрусека, чтобы лишний раз не перезаписывать, то, что уже есть(а альд я выкачивал полностью), не добавлял книги вообще за 18-е число. Аналогично поступлю и с этой заливкой. А вот если будет по 500 книжек в день - начнутся проблемы. Так что лучше уж кучей.

computers написал:
ИМХО, дубли и ошибки неизбежны.

Это-то да... проблема в том, что если не удается убедить дублеловку принять новый файл молча, то приходится каждую пару дублей разрешать вручную, кликая. При заливке нескольких тысяч книг это становится, мягко говоря, проблематично.
computers написал:
Когда все сомнения останутся позади, просьба не заливать все такой дикой массой, как в прошлый раз

Я думал на этим вопросом... по-моему, все-таки лучше рубить кошке хвост разом, а не по частям...

Заметка для отметки.
Гы... на 250-гиговом диске, выделенном под эти игры, осталось 25 гиг места. Пришлось кое-что постирать к бубеням...

Кстати, та кошмарная) заливка уже отразилась в Дайли и можно ли её уже скачать одним файлом обновлений?

arteume написал:
Кстати, та кошмарная) заливка уже отразилась в Дайли и можно ли её уже скачать одним файлом обновлений?

Да, только не одним, Илья на два разбил (слишком большой файл?).

ОК, спасибо! Попробую найти.

arteume написал:
ОК, спасибо! Попробую найти.

Если именно те два файла в Дейли, то на http://lib.rus.ec/all/daily/ они под (ошибочно одним и тем же) именем 114698-119287.zip 114698-119287.zip
Линки там под этими именами на самом деле на два разных файла:
http://lib.rus.ec/all/daily/114698-117000.zip
http://lib.rus.ec/all/daily/117001-119287.zip

Но в принципе основная разбивка "по тысяче" http://lib.rus.ec/allbooks уже тоже добралась до этих номеров и даже дальше.

Заметка для отметки. Понял про Либрусек пару вещей, заслуживающих записи.

1. Приподнимание версии не заставит дублеловку молча принять файл. Потому что:

  LogAction ("INSERT INTO libbook (FileName, FileSize, FileType, Title, Year, SeqId, SeqNumb, Id, Ver, Lang, FileAuthor) VALUES ("$nn", '$fs', '$filetype','$title','$year', '$SeqId', '$sequencei','$id', '$ver', '$lang', '$nick')", "Add book","");
  $b = Sel("BookId FROM libbook WHERE FileName = "$nn"");
  if (!$b) return $r. "Что-то не получилось. Свяжитесь с администрацией";
  if ($actionid = Sel ("ActionId FROM libactions WHERE ActionDesc = 'Add book'
     AND BookId = 0 AND ActionSQL LIKE "($nn," LIMIT 1"))
      Update (libactions, "BookId=$b", "ActionId=$actionid");
  $r .= "<p><a href=/b/$b/edit target=_blank>Книга добавлена</a><br>";
  system ("chmod a+r $nn1");
  foreach ($GenreIds as $gid) Insert ('libgenre', 'BookId, GenreId', "$b, $gid");
  foreach ($PD->AvtorIds as $aid) {if ($aid && $la != $aid) Insert ('libavtor', 'BookId, AvtorId', "$b, $aid"); $la = $aid;}
  if ($dublid = Sel ("BookId FROM libbook JOIN libavtor USING (BookId) WHERE Title="$title" AND AvtorId = $a AND BookID != $b AND NOT Deleted"))
    $r .= "<p>Кажется, нашли дубля. Ткните в него для разрешения конфликта. <a href=/b/$b/join/$dublid  target=_blank>Дубль: $title</a>";

(file author.inc lines 599-610)
Здесь $b это АйДи (либрусечный номер) свежедобавленной книги, $dublid - АйДи (либрусечный номер) найденного дубля. Версия не учитывается совсем. Надо искать другие пути обхода дублеловилки.

2. В Либрусеке много книжек, в которых:

# fictionbook/description/document-info/author/nickname rusec
# fictionbook/description/document-info/author/email lib_at_rus.ec
# fictionbook/description/document-info/program-used LibRusEc kit, Fiction Book Designer, Fiction Book Investigator, FB Editor v2.0
# fictionbook/description/document-info/date 29.11.2007
# fictionbook/description/document-info/id 283111f6-feec-102a-9d2a-1f07c3bd69d8
# fictionbook/description/document-info/version 1.0
# fictionbook/description/publish-info/book-name Поэтический побег

То бишь, после LibRusEc kit был и FBD, и множество всякого, но версия так и осталась 1.0
Мне надо в сравнилке сильно ужесточить критерии для зачисления в категорию KIT.
Вероятно, по ID, см. тут: http://www.fictionbook.org/forum/viewtopic.php?p=34606&sid=ce80b4a0e032856378070ac1bcf5dfd6#34606
X