Ошибочные книги

Jul 2, 2013 at 1:40 PM
Доброго времени суток.
Спасибоза за программу.
Вот возник вопрос, по поводу пункта "Ошибочные книги", каким образом программа выясняет ошибочна книга или нет, и нельзя ли в следующих версиях программы добавить возможность просмотреть какие книги ошибочны, и собственно в чем заключается их ошибочность....
Собственно то же самое и с дубликатами.
Кстати, о дубликатах программа только уведомляет, или не добавляет их в базу?
Coordinator
Jul 2, 2013 at 2:40 PM
Edited Jul 2, 2013 at 6:56 PM
Пожалуйста (не забываем, впрочем, рейтить и писать отзывы).

"Ошибочной" книга считается при невалидном XML (в случае fb2) или же невозможности парсинга по каким-то причинам. Информация об ошибке помещается в лог-файл (должен быть включен уровень "Info, warnings and errors"). Впрочем, некоторые ошибки xml программа пытается "пофиксить" сама. Проверить валидность fb2 можно, например, через https://code.google.com/p/fictionbookeditor/

Дубликатами считаются книги с одним и тем-же ID (как и задумано в FB2 стандарте); если версия дубликата выше, чем та, что уже есть в базе, то дубликат замещает книгу, если меньше или равна - не добавляется.
Jul 2, 2013 at 3:52 PM
Хм... В общем и целом понял.
Только вот к моему глубочайшему сожалению, получается что зачастую разные книги имеют один и тотже id, я с таким уже не однократно сталкивался...
Можно ли в программу добавить диалоговое окно со сравнением книг, которое выводится после того как уже отсканирована вся библиотека, сделать можно на подобии Fb2Library, что бы все таки пользователь принимал решение о том дубликаты это или нет, если это конечно не сильно сложно в реализации, в принципе можно прожить и без этого, я так к примеру всю свою библиотеку перед тем как загонять в TinyOPDS прошерстил средствами fb2fix и fb2move.
Coordinator
Jul 2, 2013 at 4:42 PM
Нет, этого (диалогового окна) я делать не буду, потому, что это не входит в функционал программы (а то, что у разных книг один и тот-же ID - ну, по рукам за такое нужно давать). Могу лишь посоветовать обрабатывать лог-файл после сканирования библиотеки - вся информация об ошибочных книгах там есть, т.е. обработка их - дело техники.

P.S. Кстати (посмотрел сейчас), workaround для подобных книг уже есть в программе ;) Вот этот код сверяет также названия книг, и при несовпадении, генерирует новый ID.
if (_books.ContainsKey(book.ID) && !book.Title.Equals(_books[book.ID].Title))
{
    book.ID = Utils.CreateGuid(Utils.IsoOidNamespace, book.FileName).ToString();
}
Jul 5, 2013 at 8:07 PM
Edited Jul 5, 2013 at 8:08 PM
В общем и целом согласен, а то что есть код которые генерит новые id так это вообще замечательно.
Осталось только добавить возможность сортировки (буква/несколько букв/..../автор/серия (если есть)/книга) на усмотрение пользователя и будет вообще шикарно (надеюсь это в планах все таки есть)...
В общем спасибо за хорошую программу
Coordinator
Jul 6, 2013 at 6:51 PM
Сортировка по алфавиту и так есть; первоочередность сортировки зависит от интерфейса программы (т.е. если выбран русский UI, то русские названия будут впереди английских, и наоборот). Может, это не слишком очевидно, но я жутко не люблю загромождать интерфейс.