|
Новая жизнь проекта. После того как он был забыт. Заброшен на сервере.
|
|
|
|
Возможно новое видиние, новые критерии, перфекционизм.
|
|
|
|
Соглашение
|
|
|
|
|
|
Новая структура файлового хранилища библиотеки:
|
|
|
|
Root
|
|
|
|
|
|-Library
|
|
| |-ru
|
|
| | |-А
|
|
| | |-Азимов Айзек
|
|
| | |-*книги
|
|
| |-en
|
|
| |-A
|
|
| |-Asimov Isaac
|
|
| |-*книги
|
|
|-Duplicate
|
|
| |-FullDuplicate
|
|
| | |-*книги
|
|
| |-ru
|
|
| | |-А
|
|
| | |-Азимов Айзек
|
|
| | |-*книги
|
|
| |-en
|
|
| |-A
|
|
| |-Asimov Isaac
|
|
| |-*книги
|
|
|-Covers
|
|
| |
|
|
| |-AA
|
|
| | |-aaaaaaaa.jpg
|
|
| |
|
|
| |-AB
|
|
| | |-abaaaaa.png
|
|
| |
|
|
| |-etc
|
|
|
|
|
|-Broken
|
|
| |-MissedTag
|
|
| | |-*книги
|
|
| |-InvalidXml
|
|
| | |-*книги
|
|
| |-ETC
|
|
|
|
|
|
Ветки библиотеки будут начинаться с различных языков.
|
|
Для каждого языка отдельный каталог по коду языка.
|
|
Книги без указания языка не попадают в библиотеку
|
|
По возможности запоминать, почему та или иная книга не попала в библиотеку.
|
|
Хранить их в отдельных каталогах, В каталоге должен быть файл с описанием проблемы книг каталога.
|
|
Для книг с неопределенной проблемой отдельный каталог
|
|
В каталоге с названием языка, например ru, хранится дерево каталогов. Каждая ветвь соответствует букве алфавита, если для данного языка есть книга автора, чья фамилия начинается на нее.
|
|
Если на русском есть книги Азимова, то в каталоге "ru" будет каталог "А".
|
|
В каталоге с буквой алфавита хранится дерево каталогов, с фамилиями и именами авторов на данную букву."Авторские" каталоги.
|
|
В каждом "авторском" каталоге хранятся АРХИВЫ(о_О внезапно)с книгами.
|
|
Название архива пишется в unicode, в таком же формате как название книги.
|
|
Название книги пишется в unicode, в формате: Фамилия Имя - Название.fb2
|
|
|
|
|
|
Критерии к книгам:
|
|
|
|
Чтобы книга попала в библиотеку, необходимо чтобы в книге ОБЯЗАТЕЛЬНО были заполнены следующие поля:
|
|
<description>
|
|
<title-info>
|
|
<book-title>Book Title</book-title>
|
|
<author>
|
|
<first-name>First author1 name</first-name>
|
|
<last-name>Last author1 name</last-name>
|
|
</author>
|
|
<genre>Book genre 1</genre>
|
|
<lang>en<lang>
|
|
</title-info>
|
|
</description>
|
|
|
|
Допуски:
|
|
-могут быть несколько авторов. Нода <author> тогда повторяется несколько раз.
|
|
-нода <author> может содержать ноду <middle-name>
|
|
-могут быть несколько жанров. Нода <genre> тогда повторяется несколько раз.
|
|
-присутствие одной/нескольких нод(ы) <sequence> с обязательным аттрибутом name и необязательным number
|
|
-нода <date>, с датой
|
|
-нода <src-lang> с языком оригинала, для переводов
|
|
-нода <translator>, с нодами <first-name>, <middle-name>, <last-name>
|
|
-нода <coverpage> с нодой image, содержащей ссылку на изображение. изображение сохраняется в отдельный каталог
|
|
*секция <publish-info>
|
|
-нода <publisher>
|
|
-нода <year>
|
|
-нода <sequence> с аттрибутами name, number
|
|
-нода <isbn>
|
|
-нода <city>
|
|
|
|
Дубликаты(по названию, автору) складываются отдельно от всех книг. В папку duplicate
|
|
Но добавляются в базу
|
|
Книги перезаписываются с параметром prettify(чертов перфекционизм)
|
|
Если дубликатов несколько, архивам добавляются цифровые индексы,в названии
|
|
При парсинге книги, она сразу добавляется в базу.
|
|
Для названий обложек используется MD5 от контента книги.
|
|
Если в базе есть книга с таким же MD5 книга попадает в папку FullDuplicity.В базу такая книга не попадает
|
|
|
|
Объекты базы:
|
|
-книга
|
|
-автор
|
|
-серия
|
|
-жанр
|
|
-издатель
|
|
-переводчик
|
|
-теги
|
|
|
|
|
|
Необходима:
|
|
-Сперва однопоточный и далее многопоточный парсер
|
|
-Очередь книг, которые будут после обработки добавляться в базу
|
|
-Новые модели django
|
|
-Работа с новым деревом каталогов
|
|
-Учет максимума ошибок
|
|
-Упаковка книг в архивы
|
|
|
|
|
|
Fbook - класс книги
|
|
Library - класс работающий с файловой системой. Ходит по каталогам, собирает книги, складывает в очередь
|
|
Queue - класс очереди. сюда помещаются книги доступные для обработки и вытаскиваются книги доступные для сохранения. Очереди будет две: в одну складываются имена файлов для обработки. в другую обработанные книги.
|
|
Dispatcher - класс диспетчер. организует работу потоков которые выполняют работу трудяг. Берет из очереди книги и отдает их трудягам для обработки
|
|
Worker - клсаа трудяга. Получает задания от диспетчера, создает книги, сохраняет их в нужное место. Трудяги работают в отдельных потоках.
|