Update: author's aliases processing

Coordinator
Oct 8, 2013 at 1:16 AM
Edited Oct 8, 2013 at 1:17 AM
Потратил сегодня часок (вкючая тестирование), и добавил в текущую версию (trunk) обработку алиасов авторов (данные взяты из базы флибусты).

Замена алиасов на имя автора проходит во время загрузки базы, и, благодаря алгоритму, обходится практически "бесплатно" - время загрузки базы увеличилось очень незначительно :)

Программы "потолстели" на пол-мегабайта из за за-gzip-ленных данных, включенных как embedded resource.

GUI и консольная версии TinyOPDS (для всего) :)

ссылка на фолдер на dropbox-е

Надеюсь, "перфекционисты" оценят это небольшое, но важное нововведение :)

При тестировании на FBReader для Android-а, не забудьте сделать OPDS странице "refresh" (она кешируется).

P.S. Прошу в этом топике обсуждать только эту "фичу".
Oct 8, 2013 at 9:30 PM
Edited Oct 8, 2013 at 10:31 PM
Сравнил бегло одну и ту же коллекцию (библиотеку Траума) новой версией TinyOPDS и предыдущей...
Новая, конечно, выглядит лучше. Нет ошибки с переменой места имени и фамилии у Абэ Кобо \ Кобо Абэ... =)
Авторы, которые имели два именования: Фамилия_Имя и Фамилия_Имя_Отчество стали иметь один вариант. (Было: "Фурсов Андрей" и "Фурсов Андрей Ильич"; стало: "Фурсов Андрей Ильич". Было: "Маркеев Олег" и "Маркеев Олег Георгиевич"; стало: "Маркеев Олег").

Но ошибки все-таки есть... В предыдущей версии было: "Панов Вадим Юрьевич" и "Панов Вадим"; в новой версии "Панов Вадим Юрьевич" пропал, но появился "второй автор" с именем "Вадим Панов" с единственной книгой (а это сборник с произведениями нескольких авторов, в том числе -- и Вадима Панова).
Осталась путанница с Энтони Берджессом. В предыдущей версии было три варианта: "Берджесс Энтони", "Берджес Энтони" и "Бёрджесс Энтони"; в новой версии "Берджес" с одной "с" на конце пропал, но "Бёрджесс" с буквой "ё" остался...

Еще в новой версии в алфавитном списке каталогов появились каталоги со строчной буквой.
Например, каталог "О"(Всего авторов на О: 823) и "о"(Всего авторов на о: 1)... если открыть оба каталога, то можно увидеть, что содержимое у них абсолютно идентично... Если поискать автора, который создал строчную букву "о", то "автор", написанный с маленькой буквы это "островов Сказки японских". В предыдущей версии есть "Земляника под снегом. Сказки японских островов (с илл.)", нашел я эту книгу в жанре "Детское/Сказки".

Новая версия, конечно, лучше, хоть и не лишена ошибок....
Главное то что? =) Возможность найти нужную книгу. Поэтому если автор имеет несколько именований, то пусть и ссылки на все его книги будут во всех вариантах его именования. А то ищу я, например, книгу Кобо Абэ... нахожу каталог с таким названием, вижу две книги авторства этого писателя и не подозреваю, что 29 книг этого автора находятся в каталоге "Абэ Кобо"... Вот такое положение было бы самым неприятным... А вообще поиск в библиотеке решил бы подобные недоразумения...
Coordinator
Oct 8, 2013 at 9:56 PM
Я могу выслать тебе отсортированный по алфавиту список (там "всего" :) 21046 строк), если будет желание подредактировать - милости прошу! На счет ошибок - не ко мне, это к библиотекарям флибусты :) Список сделан запросом к таблицам базы (не вручную, естественно).

С Берджессом история такая. Есть следующие записи (формат такой - сначала автор, затем - алиас, то-бишь как обзывали Берджесса создатели документов):
1128 Энтони Берджесс 17535 Энтони Берджес
1128 Энтони Берджесс 27954 Anthony Burgess
1128 Энтони Берджесс 49491 Энтони Берджес
1128 Энтони Берджесс 49492 Энтони Берджесс
1128 Энтони Берджесс 63027 Antony Burgess
1128 Энтони Берджесс 103676 Энтони Бeрджесс
1128 Энтони Берджесс 118976 Ентоні Берджес

Касательно буквы ё: для компьютера е и ё - абсолютно разные буквы, и программе искренне плевать на то, что ныне ё используется редко (кроме фанатов). Т.е. если есть "Бёрджесс" с буквой "ё", то нужно добавить алиас (сейчас такого алиаса нет).

Что я могу легко добавить: при наличии файла a_aliases.txt (он лежит в trunk-е, но могу и по почте выслать) TinyOPDS может использовать для алиасов именно этот файл, а не встроенный (оригинальный). Но! Файл должен быть в строго определенном формате: UTF8, количество записей - строго 8 на строку, записи разделены табуляцией, строки - переводом строки (символ 0x0A), т.е. unix-формат текстового файла.
Oct 8, 2013 at 10:16 PM
SeNS, ты меня извиини, у меня претензий к тебе никаких... а то показалось, что ты обиделся. Я же просто сравниваю: что было и что стало...
Стало лучше! Это бесспорно. Спасибо! =)

Хоть ты и просил тут не отвлекаться на другие вопросы, но обязан сказать тебе, что TinyOPDS кроме своего основного предназначения -- предоставления удаленного доступа к домашней коллекции, становится хорошим каталогизатором... (а отсюда следует один вывод... который тебе не понравится...).
Да, и еще респект за функцию "новые книги" -- то, что я хотел, когда ты ответил, что "подобная функциональность никогда не будет добавлена" в TinyOPDS... Тем не менее она добавлена, только иным методом... =)
Coordinator
Oct 9, 2013 at 12:39 AM
Edited Oct 9, 2013 at 12:42 AM
Еще раз повторюсь: я не буду добавлять никаких функций ручного редактирования и ведения коллекции. Того, что нельзя сделать "на автомате" (базируясь на данных файлов и/или базе флибусты), делаться не будет. Максимум, как я уже писал, я могу оставить/добавить (для любителей повозиться) поддержку загрузки внешних файлов (тех-же алиасов, конвертера xml в html).

"Каталогизатор" будет развиваться только в плане развития функциональности OPDS/web доступа.

На счет обиделся: фраза (цитирую дословно) "но ошибки все-таки есть" - абсолютно лишняя. Я нигде и никогда не писал, что "ошибок больше нет", или что "TinyOPDS волшебным образом автоматически распознает всех авторов, как-бы создатели документов их не обозвали". Я все-лишь добавил ту функциональность, которая реализована в движке флибусты, не более того! Проверять же "правильность" файла алиасов на соответствие тех алиасов файлам коллекции Траума я не собирался и не собираюсь.

Констатация факта "ошибки есть" не конструктивна: я не буду ни редактировать этот файл, ни устранять ошибки библиотекарей флибусты - это точно также не входит в мои задачи, как и "ведение библиотеки" - в задачи TinyOPDS :)

Если у тебя есть желание подкорректировать ошибки и неточности в файле алиасов, то вот простая инструкция:
  1. Скачиваешь архив сорцов: https://tinyopds.codeplex.com/SourceControl/latest#
  2. Распаковываешь файл a_aliases.txt.gz (два раза) в a_aliases.txt
  3. Редактируешь этот файл в Notepad+ (он поддерживает Linux-style строки. Новые записи можно добавлять в конец, путем копирования существующих - чтобы не напутать с символами табуляции. Индексы не важны - не используются)
  4. Присылаешь мне зазипованный отредактированный файл, я включаю его в релиз :)
Oct 9, 2013 at 9:45 AM
Edited Oct 9, 2013 at 9:49 AM
SeNS wrote:
Еще раз повторюсь: я не буду добавлять никаких функций ручного редактирования и ведения коллекции. Того, что нельзя сделать "на автомате" (базируясь на данных файлов и/или базе флибусты), делаться не будет.
Чьорд. Ну, почему сразу "функции ручного редактирования"? Речь совершенно о другом. Вот смотри. TinyOPDS умеет сканировать книжную директорию и выводить коллекцию в OPDS- и HTML-виде... Прикрученные тобой алиасы делают этот вывод еще корректнее... С одной стороны огромный плюс TinyOPDS это то, что программа не изменяет оригинальную структуру библиотеки -- есть близкая к идеальной по организации и структуре библиотека Траума -- она и останется на диске в первоначальном виде, неизмененной. Но с другой стороны, может быть противоположная ситуация -- книги свалены в одной директории "навалом", без всякой системы -- для TinyOPDS это не имеет значения -- программа все равно создаст красивую, строго упорядоченную библиотеку на выходе в OPDS и HTML. Но на диске так и останется неструктурированная свалка книг. Я вот об этом. Глупо не использовать такие замечательные возможности программы для структурирования файлов в книжной директории. Можно (да и нужно) сделать включаемую (по необходимости) функцию "упорядочить коллекцию" -- файлы будут разложены по каталогам и подкаталогам в том виде, в котором сейчас TinyOPDS выводит их в OPDS. Это не ручное редактирование, а наоборот -- супер автоматизирование рутинного и крайне трудоемкого процесса.
Констатация факта "ошибки есть" не конструктивна: я не буду ни редактировать этот файл, ни устранять ошибки библиотекарей флибусты - это точно также не входит в мои задачи, как и "ведение библиотеки" - в задачи TinyOPDS :)
Мне подумалось, что сравнение того, как было до подключения алиасов и того, как стало после -- это то, что тебе хотелось знать. Ну, нет, так нет... =)
Максимум, как я уже писал, я могу оставить/добавить (для любителей повозиться) поддержку загрузки внешних файлов (тех-же алиасов, конвертера xml в html).
Да, сделай, пожалуйста, внешний файлик. Большинство пользователей, конечно, ничего не будет редактировать: ни в списке синонимов авторов, ни в дизайне вебморды, но кому-то эта возможность точно понадобится.

По поводу редактирования a_aliases.txt скажу, что не возьму на себя смелость определять правильность именования конкретного автора для всеобщего последующего применения этого именования... как называть в библиотеке Достоевского, например: Фёдор Достоевский или Фёдор Михайлович Достоевский... =)
Но лично для себя режущие мой глаз и противоречащие моим личным понятиям о "прекрасном" неправильные (с моей точки зрения) именования некоторых авторов я бы исправил. Найдутся и другие желающие что-то поправить в_своей_личной_коллекции -- и лучше, чтобы эта функция была, тем более, что возможность ее задействования (по желанию пользователя) есть.
Coordinator
Oct 9, 2013 at 2:54 PM
Перевыложил файлы с поддержкой загрузки внешнего файла алиасов, и сам файл алиасов (отсортировал его по last name). Для удобства редактирования, записи теперь можно разделять и запятыми (см. последнюю запись: 1128,Энтони,,Берджесс,17535,Энтони,,Бёрджес), но количество полей должно быть фиксированным и равно 8.

Пожалуйста, редактируй ошибки и неточности; потом пришли мне отредактированный файл и я включу его в релиз.

Переименовывать авторов и определять правильность не надо; как ты знаешь, файл взят не с кондачка, а библиотекари флибусты свое дело знают. Просто добавляй записи в конец файла; номера в записи не имеют значения. Если удалишь что-то - то запиши в отдельный файл.

За упорядочиваением коллекции на диске - это не ко мне, это в TinyOPDS не будет реализовано никогда :)
Oct 9, 2013 at 6:07 PM
Edited Oct 9, 2013 at 6:14 PM
SeNS wrote:
Пожалуйста, редактируй ошибки и неточности; потом пришли мне отредактированный файл и я включу его в релиз.
Ну, ты ж понимаешь, что взяться за редактирование имен авторов как за сиюминутную задачу, кторую следует выполнить к установленному сроку -- это сумасшествие в чистом виде. =)

Редактирование можно (и возможно) осуществлять по ходу пользования библиотекой... для этого и нужна возможность править список синонимов авторов. Заметил неточность -- открыл текстовый файлик, добавил запись с уточняющей информацией. Так что внешний файл с алиасами -- это правильно. Спасибо!

Вот попробовал сделать исправление. В алфавитном списке каталогов перед буквой "А" откуда-то взялась, стоящая первой в списке, буква "Н".... Открываю -- один автор: "Н.О. Лосский"..

Добавляю в a_aliases.txt запись: 53177,Николай,Онуфриевич,Лосский,94056,Н.,О.,Лосский
Сохраняю, перезапускаю сервер... буква "Н", в самом начале списка каталогов пропадает. Ищу в каталогах фамилию автора "Лосский". К существующему ранее "Лосский Николай Онуфриевич" с семью книгами добавляется клон, т.е. "Лосский Николай Онуфриевич" с одной книгой (это исправленный мной "Н.О. Лосский". Теперь одному автору соответсвуют два каталога с одним и тем же названием... ((
В чем моя ошибка?
Oct 9, 2013 at 6:31 PM
Теперь одному автору соответсвуют два каталога с одним и тем же названием... ((
В чем моя ошибка?
Разобрался. =) Банальная опечатка -- "клон" вовсе не клон, а отчество, написанное с ошибкой. Добавил еще одну исправляющую запись в файл -- теперь "Лосский Николай Онуфриевич" имеет восемь книг, как ему и положено. =)

Исправить можно явные, бросающиеся в глаа неточности... Сейчас в моей библиотеке (от комрада Траума) есть каталоги, начинающиеся на спецсимовлы, на строчные буквы и т.п. Вот в них можно поискать ошибки.
А все остальное -- "по ходу пьесы"...
Oct 9, 2013 at 6:32 PM
Krok_us wrote:
Теперь одному автору соответствуют два каталога с одним и тем же названием... ((
В чем моя ошибка?
Разобрался. =) Банальная опечатка -- "клон" вовсе не клон, а отчество, написанное с ошибкой. Добавил еще одну исправляющую запись в файл -- теперь "Лосский Николай Онуфриевич" имеет восемь книг, как ему и положено. =)

Исправить можно явные, бросающиеся в глаза неточности... Сейчас в моей библиотеке (от комрада Траума) есть каталоги, начинающиеся на спецсимволы, на строчные буквы и т.п. Вот в них можно поискать ошибки.
А все остальное -- "по ходу пьесы"...
Coordinator
Oct 9, 2013 at 7:11 PM
А никто и не говорит про "сиюминутную задачу", и сроки никто не устанавливает... И даже "идеальный каталог, которому Ленинка позавидует", тоже не имеется ввиду :)

Сделал одну правку - неплохо, десять - хорошо, сто - тоже отлично, ни одной - и так тоже сойдет ;) Можно начать с каталога верхнего уровня - устранить то, что бросается в глаза, потом потихоньку "переползти" на уровни поглубже (второй уровень тоже не слишком велик - максимум (33+26)^2). Потом посмотреть, как любимые авторы выглядят - нет-ли двойников. А, например, если будет несколько каких-нибудь "лукьяненков" - так и Бог с ними :D
Dec 3, 2013 at 3:26 AM
Такая проблема. У вас тут иностранные имена систематически заменяются на русские. Для русского читателя это сравнительно нормально, но вы же и на иностранных пользователей расчитываете, как я понимаю. А им не понравится, если у них вместо какого-нибудь George R. R. Martin будет Джордж Мартин. Они это и прочитать не смогут.
Coordinator
Dec 3, 2013 at 3:37 AM
Согласен, хорошее замечание. Добавлю дополнительную опцию для включения/отключения обработки алиасов.
Coordinator
Dec 3, 2013 at 3:38 AM
This discussion has been copied to a work item. Click here to go to the work item and continue the discussion.