LibRusLib
Четверг, 28.03.2024, 19:17
Приветствую Вас Гость | RSS
 
Главная ФорумРегистрацияВход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 26 из 26
  • «
  • 1
  • 2
  • 24
  • 25
  • 26
Форум » Unilib » Проектирование и разработка » Обсуждение проекта (Обсуждение проекта)
Обсуждение проекта
drserjДата: Понедельник, 31.10.2016, 21:26 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Репутация: 30
Статус: Offline
Unilib - программа для создания локальных библиотек.

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

Особенности Unilib-а:

1) Поддержка нескольких библиотек.
2) Импорт/экспорт личных данных.
3) Возможность обмена данными с другими библиотеками Unilib.

Ориентировочная структура БД

Структура модуля импорта
 
lordkorДата: Суббота, 02.03.2019, 10:27 | Сообщение # 376
Лейтенант
Группа: Друзья
Сообщений: 56
Репутация: 0
Статус: Offline
Цитата PFN ()
Но все эти "удаления" и пр. нужны на стадии предварительного отбора, а потом уже можно и в архивы и в любой формат...А дальше (если кому приспичит) то пусть сам тащит из архива что ему там мешает и вставляет то, что ему нужно... smile


Мнэ... Вообще-то, "удаления и пр." нужны как раз ПОСЛЕ предварительного и прочего отборов - когда добавляются новые книги, и возникает необходимость удалить старую версию книги напрочь. Если же поддерживается иерархическое хранение отдельных файлов вплоть до серии, то в идеале должен быть автоматический перенос уже существующего файла при изменении названия серии в свойствах книги - например, изначально вышла просто книга, а потом у нее появилось продолжение, и она стала первой книгой серии. В результате в библиотеке он а так и остается без серии, что есть бардак и ни фига не библиотека, а беспорядочный набор - то есть, не выполняется основная задача каталогизатора - собственно каталогизация и упорядочивание размещения.
 
PFNДата: Суббота, 02.03.2019, 12:30 | Сообщение # 377
Генерал-майор
Группа: Друзья
Сообщений: 206
Репутация: 0
Статус: Offline
Цитата lordkor ()
Вообще-то, "удаления и пр." нужны как раз ПОСЛЕ предварительного и прочего отборов


"Удаления" вообще-то нужны на ВСЕХ этапах жизни любой библиотеки. Это и замена имеющейся книги на более валидную или с новой обложкой, или иллюстрациями и т.п. и т.д. В этих случаях "старая" книга должна удаляться из библиотеки и с диска. Кроме того из таблиц базы должны удаляться все записи об этой книге. Только в отношении таблицы Исключений ("Стоп-листа"), хранящей коды МД5 возникает вопрос: удалять запись или нет. 
Удалить - рискуешь получить снова эту же ущербную книгу с очередным пакетом обновлений. Оставить - лишний мусор в таблице.
Должен отметить, что любой каталогизатор не может справиться со всеми пожеланиями пользователей.
В нашем конкретном случае при хранении файлов в архивах задачу чистки и изменения (редактирование метаданных книги) лучше оставить пользователю, чтобы не раздувать и не перегружать программу излишними модулями.


===============================
Приказ, который может быть понят неправильно, обязательно будет понят неправильно
 
drserjДата: Воскресенье, 03.03.2019, 15:54 | Сообщение # 378
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Репутация: 30
Статус: Offline
Вариантов действительно много, и действительно, всё предусмотреть и реализовать трудно, да и не нужно. Ибо получим неюзабельного монстра. Да, я могу удалять из многофайлового архива, но это может вылиться в многочасовую операцию. Надо ли это? Думается, нет. По этому, как по мне - при импорте копируем контент в формате %z, над которым можем производить любые операции. Остальным любителям гемора - модуль от мультилиба в помощь. Если я сейчас прогнусь под любителей экзотики - программа превратится в монстра.

drSerj
 
PFNДата: Воскресенье, 03.03.2019, 21:26 | Сообщение # 379
Генерал-майор
Группа: Друзья
Сообщений: 206
Репутация: 0
Статус: Offline
Цитата drserj ()
Если я сейчас прогнусь под любителей экзотики - программа превратится в монстра.


А вот этого нам совсем не надо!  smile


===============================
Приказ, который может быть понят неправильно, обязательно будет понят неправильно
 
drserjДата: Понедельник, 04.03.2019, 21:03 | Сообщение # 380
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Репутация: 30
Статус: Offline
и я о том же

drSerj
 
drserjДата: Воскресенье, 26.04.2020, 16:29 | Сообщение # 381
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Репутация: 30
Статус: Offline
Итак, продолжим.

Обсуждение процесса импорта.

Установка:
1. Исходные файлы при импорте не трогаем.
2. Обрабатываем ZIP, RAR архивы, одиночные файлы. Архивы: один файл, два файла (non fb2+fbd), многофайловый архив.
3. На выходе: библиотека в формате %z.
4. Фильтрация осуществляется по типу файла (расширению) и результату анализа (fb2, nonfb2+fbd, nonfb2, битый архив, копия по мд5, файл с описанием не прошедший валидацию XML - не получим данные при парсинге такого файла).
5. Действия при фильтрации - перенос в указанный для данного типа или результата каталог.

Импорт:
На входе указан каталог с контентом, указанным в п.2
Происходит поиск файлов и анализ их содержимого. 
Происходит фильтрация с разнесением файлов по каталогам, если в настройках указано.

Вопрос с фильтрацией по МД5 при поиске файлов и добавлению в обработку. Есть подозрение, что мы на пороге великого шухера smile Проблема в том, что если книг не много (тысячи) и пополнение не такое частое - то как-бы можно сохранять при поиске МД5 исходных файлов (архивов) в отдельной таблице, как это сделано в модуле private в мультилибе. Но, если таких файлов будет много, то... Таблица мд5 может разрастись до неприличных размеров и тормозить импорт. Нет, при добавлении книги естественно мд5 будет проверяться и тут отработается фильтр, но для исходного файла... Единственная ситуация, где это имеет смысл - делать импорт из одного и того же каталога, который не будет очищаться, а только пополняться, но... извращение это, однако! Обработал архивы - перенеси обработанное в другой каталог ( в конце-концов, можно автоматом обработанное перенести в указанный каталог, или наоборот, перенес архив в каталог для обработки, обработал, перенес назад или удалил). 
Если не прав, или имеются другие предложения - готов к диалогу.

Просьба, не заморачиваться вопросами программы с совсем другим концептом. Концепт выбран и изменению (без очень существенных, глобальных, не глубоко личных пожеланий, коих была масса).
Наша задача сейчас - создать программу с возможностью расширения и масштабирования без переписывания (как уже было) всего или почти всего кода. Чем проще - тем быстрее что-то получим на выходе smile


drSerj
 
PFNДата: Понедельник, 27.04.2020, 12:00 | Сообщение # 382
Генерал-майор
Группа: Друзья
Сообщений: 206
Репутация: 0
Статус: Offline
Этот вопрос уже обсуждался. Напоминаю: smile
Вопрос:
Находится коллекция на ноутбуке, свободное место на жестком диске заканчивается. Как можно удалить ненужные разделы, чтобы освободить место? Допустим, такие как поэзия, драматургия. любовные романы?

drserj:
Если коллекция из архивов-тысячников - никак sad Это будет удаление из архива с перепаковкой. Такой процесс может затянуть на десятки (а скорее сотни) часов. 
Если коллекция из единичных архивов - можно попробовать написать скрипт и использовать его в пакетных операциях.

ПФН (Уточняю с учетом сегодняшнего опыта):
В архивах полно всякого мусора и дубликатов. Поэтому чистить их нужно обязательно. И ув. drserj совершенно прав: процесс очень-очень трудоемкий.
Я поступаю так:
Прошу учесть, что использую только месячные пополнения Флибусты.
1. Все файлы из архива извлекаются в отдельную директорию.
2. Директория сканируется программой, которая в процессе сканирования:
    а) перемещает все НЕ fb2-файлы в другую папку (можно сразу и удалять, если нет желания делать из них fb2-книги)
    б) перемещает/удаляет все НЕ RU-файлы
    в) производит проверку по МД5 и сверяет с кодами в таблице отсева (Стоп-лист) и дубликаты перемещает/удаляет 
    г) информация (МД5) об оставшихся заносится в БД

А дальше отбор по Жанрам, но тут нужно смотреть, т.к. люди, создающие fb2-книги часто жанры ставят от фонаря. Вместо "Фантастики" может быть "Старинная литература" и т.п. Поэтому нужно смотреть внимательно. 
Могу сказать, что после такого просеивания количество файлов пополнения уменьшается % на 40, а иногда и больше.

И уже после этого перевод пополнения в формат %z и разнос по каталогам (Авторы или что-то другое).
Архивировать перед этим книги или нет - на усмотрение пользователя.

Цитата drserj ()
Таблица мд5 может разрастись до неприличных размеров и тормозить импорт
Да, такая опасность существует. Но... безвыходных ситуаций не бывает... smile Как вариант: несколько таблиц МД5 по жанрам: Детектив, Фэнтези и т.д.


===============================
Приказ, который может быть понят неправильно, обязательно будет понят неправильно
 
drserjДата: Понедельник, 27.04.2020, 21:00 | Сообщение # 383
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Репутация: 30
Статус: Offline
Цитата PFN ()
Этот вопрос уже обсуждался. Напоминаю:

 Сейчас только импорт. А это вопрос контента.
Цитата PFN ()
2. Директория сканируется программой, которая в процессе сканирования:
Я и предлагаю - в процессе сканирования отбрасывать (при необходимости и без, ибо будет тупо переписан) мд5 дубли, в процессе при необходимости использовать фильтрацию с возможностью разнесения разного контента в разные каталоги.

Про жанры... Я вот сегодня вспомнил, что убрал "Новинки". Сначала подумал - зачем? Потом подумал еще раз, и еще... И посоветовавшись с коллегой решил- а оно и нафиг не надо с учетом развитого поиска... Лишний дубляж функционала (хотя и приятный). А жанры... если бы они были правильны стандартны - ну да, можно... А так - не знаю.

Цитата PFN ()
Как вариант: несколько таблиц МД5 по жанрам: Детектив, Фэнтези и т.д.
Ой, а это нафиг? smile Давай еще по буквам smile 
Нет, поскольку на выходе %Z - мд5 дублей файлов не существует по определению. Поскольку в базе это поле уникально - так же дубля не должно быть.


drSerj
 
PFNДата: Понедельник, 27.04.2020, 23:33 | Сообщение # 384
Генерал-майор
Группа: Друзья
Сообщений: 206
Репутация: 0
Статус: Offline
Цитата drserj ()
Я и предлагаю - в процессе сканирования отбрасывать (при необходимости и без, ибо будет тупо переписан) мд5 дубли
Так и я о том же только другими словами... smile

Цитата drserj ()
А жанры... если бы они были правильны стандартны - ну да, можно...
В том-то и беда, что там такая мешанина... Но кое-что отсеять можно... Тут придется чистить ручками и личным контролем. Иначе есть риск вычистить и нужные книги.

Цитата drserj ()
Ой, а это нафиг?
А это ответ на жалобу о чрезмерном увеличении таблицы МД5 smile


===============================
Приказ, который может быть понят неправильно, обязательно будет понят неправильно
 
drserjДата: Вторник, 28.04.2020, 15:51 | Сообщение # 385
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Репутация: 30
Статус: Offline
Так, перейдем  конкретике. По пунктам порядок обработки:

1. Указываем каталог для импорта. Проходим по всем файлам в этом каталоге и подкаталогах.
2. Анализируем файл на наличие/отсутствие информации (fb2,fbd) и (или) принадлежность к архивам |RAR или ZIP). Имеем следующие варианты:
a) FB2 - анализируем, вытягиваем информацию (авторы, серии, жанры, издательская инфа, создательская и т д, всё что кажет стандарт FB2).
b) FBD - аналогично FB2
c) ZIP, RAR - анализируем содержимое. Варианты - однофайловый(FB2 или NonFB2), двухфайловый с NonFB2+FBD, или просто двух и беолее файловый.
d) NonFB2 или NonFB2+FBD
По итогам анализа - на выходе статус (файл с информацией (FB2), файл без информации +FBD, файл без информации, файл FBx не прошедший валидацию XML (битая книга), битый архив, информация есть, но неполная, копия МД5 (книги, не архива).

Вот тут вопрос - все ли прошедшие успешную обработку файлы пихать в основную базу, или создавать промежуточную. Вопрос имеет смысл в том, что если добавили в базу - то усё. Если же делаем промежуточную базу (а это полная структура с авторами, сериями, жанрами и всей остальной инфой) - значительно усложняем программу и работу с ней. Как вариант - можно добавлять всё, а потом, по мере надобности, из общей базы удалять ненужное вместе с файлами книг. (Щаз пришла мысль - можно пометку об утверждении добавить, типа что да, эта книга добавлена. Можно будет поиском такие файлы выбрать, пересмотреть и нужное оставить а остальное - выкосить. Но это опять-таки усложнение. Насколько оно нужно - не знаю)

3. Файлы, не прошедшие обработку (битый архив, файл без описания, файл с недостаточным описанием, не прошедший валидатор XML, копия MD5) добавляются в отсев. Очевидно с копированием этих файлов в соответствующие каталоги. Вопрос только в каком формате имени....

По интерфейсу. В отличие от мультилибовского модуля - тут только одна таблица - отсев. Удачно добавленные файлы не выводятся, в конце обработки выводится статистика с количеством, но при желании, отсортировав по дате, или поиском по дате добавления - можно всё увидеть. Просто если файлов будет много - добавлять в таблицу смысла нет - всё равно обилие информации сведет на нет ее использование.

Второе отличие - как уже говорил выше, в отличие от предыдущего модуля тут нет сохранения списка ранее обработанных файлов. От слова "совсем". Зачастую, это даже мешает. Как обойти ситуацию с пополняющимся каталогом (просто добавляем новые книги в тот же каталог) - а не надо так делать smile А если кому-то хочется извратиться - то и тут имеется выход - перенесите временно добавляемые файлы в "левый" каталог, оттуда импортируйте данные и перенесите эти файлы обратно. И овцы сыты, и волки целы smile

По поводу дубликатов МД5 - всё просто, в каталогах формата %z не может быть 2 файла с одинаковым именем. Исключение, как сейчас пришло в голову - если каталогов с библиотекой несколько. Например, отдельно FB2, отдельно другие. Но и тут это маловероятно, ибо такие файлы попадут в отсев в базе и мы их сразу увидим.

Таким образом, в итоге импорта мы имеем:
1. Конечный(е) каталог(и) с контентом. Каталоги - если мы фильтруем по типу файлов или результатов обработки.
2. Каталоги с отсевом (возможно, дать выбор не сохранять такие файлы, хотя, зачем?)
3. Таблицу с отсевом, в которой еще есть ссылка на местоположение проблемного файла. Впоследствии можно обработать этот файл и добавить в базу. Либо повторно обработать каталог с проблемными файлами, если исходные каталоги грохнем.

Напоминаю, программа не трогает исходные файлы. На базе их создается своя библиотека с именами файлов в формате %Z (MD5).

Да, фильтры можно со временем добавить - по языкам, например и т.д.

И, естественно, поскольку эта библиотека в формате %z - то над книгами можно выполнять операции удаления, переноса и т д.
Что-то забыл, вспомню - допишу.
Пока вот такая информация, которую хотелось бы обсудить и закрепить.


drSerj
 
PFNДата: Вторник, 28.04.2020, 19:21 | Сообщение # 386
Генерал-майор
Группа: Друзья
Сообщений: 206
Репутация: 0
Статус: Offline
Цитата drserj ()
Как вариант - можно добавлять всё, а потом, по мере надобности, из общей базы удалять ненужное вместе с файлами книг.
Мне этот вариант очень даже симпатичен! smile

Цитата drserj ()
Щаз пришла мысль - можно пометку об утверждении добавить, типа что да, эта книга добавлена.
А может добавлять только отмеченные из обработанного списка? Мне кажется, что это лучше, чем вычищать потом и базы...

Цитата drserj ()
Вопрос только в каком формате имени....
Думаю имя должно прочитываться, чтобы можно было легко идентифицировать книгу. Правда, я в своей программульке прочитаю любой формат имени. smile

Сегодня у меня случилась маленькая победа:
Я, наконец, доработал блок, которым в пару кликов мышки меняю в книге ФБ2 огромную обложку весом около 500  кб и шириной от 570 пикселей и больше на ту же обложку, но уже с шириной картинки 450 пикселей и весом раз в 6-7 меньше.  biggrin


===============================
Приказ, который может быть понят неправильно, обязательно будет понят неправильно
 
drserjДата: Вторник, 28.04.2020, 22:11 | Сообщение # 387
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Репутация: 30
Статус: Offline
Цитата PFN ()
А может добавлять только отмеченные из обработанного списка?

А нетути такого списка больше. Я же писал - остался только отсев. И кто меня читает (тихо бурча себе под нос..)

Цитата PFN ()
Думаю имя должно прочитываться, чтобы можно было легко идентифицировать книгу.

Я так понимаю, имя оставлять (ибо 2 варианта - оставлять старое или лепить мд5)

Цитата PFN ()
Сегодня у меня случилась маленькая победа:

Таки поздравляю smile Хотя, с учетом архивации книги - вряд ли полезная функция... Я наоборот, не хотел бы кастрированную картинку. Хотя в базу (ну тут понятно) тоже режу. Но исходя из того, что в книге останется нормальная smile

То есть, как я понял, всё писаное мною выше - утверждено? smile


drSerj
 
PFNДата: Вторник, 28.04.2020, 22:37 | Сообщение # 388
Генерал-майор
Группа: Друзья
Сообщений: 206
Репутация: 0
Статус: Offline
Цитата drserj ()
Я наоборот, не хотел бы кастрированную картинку
Она не кастрированная, а просто представлена в меньшем размере. Соответственно и вес ее меньше.
А на фига мне обложка, которая вести в 2-3 раза больше чем текст и в Ридер не умещается?

Цитата drserj ()
Но исходя из того, что в книге останется нормальная
У меня и в книге меняется. smile

Цитата drserj ()
То есть, как я понял, всё писаное мною выше - утверждено?
Лично я никаких возражений не имею! Любые узкие места себя проявят при тестировании, тогда и могут появиться какие-то предложения... smile


===============================
Приказ, который может быть понят неправильно, обязательно будет понят неправильно
 
drserjДата: Среда, 29.04.2020, 20:25 | Сообщение # 389
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Репутация: 30
Статус: Offline
Ну что ж, бум смотреть...

drSerj
 
Форум » Unilib » Проектирование и разработка » Обсуждение проекта (Обсуждение проекта)
  • Страница 26 из 26
  • «
  • 1
  • 2
  • 24
  • 25
  • 26
Поиск:

Copyright LibRusLib © 2024