Project

Profile

Help

HostedRedmine.com has moved to the Planio platform. All logins and passwords remained the same. All users will be able to login and use Redmine just as before. Read more...

Task #462624 » read.me

Andrey Dyatlov, 2015-08-11 05:36 AM

 
Новая жизнь проекта. После того как он был забыт. Заброшен на сервере.

Возможно новое видиние, новые критерии, перфекционизм.

Соглашение


Новая структура файлового хранилища библиотеки:

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 - клсаа трудяга. Получает задания от диспетчера, создает книги, сохраняет их в нужное место. Трудяги работают в отдельных потоках.
    (1-1/1)