Обсуждение проекта
| |
drserj | Дата: Понедельник, 31.10.2016, 21:26 | Сообщение # 1 |
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Статус: Offline
| Unilib - программа для создания локальных библиотек.
Unilib представляет собой развитый офлайновый каталогизатор локальной библиотеки с автоматизированной пакетной обработкой импортируемых книг. Программа позволяет производить автоматический отбор книг по критериям, заданным пользователем, отсеивать дубликаты и.т.д.
Особенности Unilib-а:
1) Поддержка нескольких библиотек. 2) Импорт/экспорт личных данных. 3) Возможность обмена данными с другими библиотеками Unilib.
Ориентировочная структура БД
Структура модуля импорта
|
|
| |
lordkor | Дата: Суббота, 02.03.2019, 10:27 | Сообщение # 376 |
Лейтенант
Группа: Друзья
Сообщений: 56
Статус: Offline
| Цитата PFN ( ) Но все эти "удаления" и пр. нужны на стадии предварительного отбора, а потом уже можно и в архивы и в любой формат...А дальше (если кому приспичит) то пусть сам тащит из архива что ему там мешает и вставляет то, что ему нужно... smile
Мнэ... Вообще-то, "удаления и пр." нужны как раз ПОСЛЕ предварительного и прочего отборов - когда добавляются новые книги, и возникает необходимость удалить старую версию книги напрочь. Если же поддерживается иерархическое хранение отдельных файлов вплоть до серии, то в идеале должен быть автоматический перенос уже существующего файла при изменении названия серии в свойствах книги - например, изначально вышла просто книга, а потом у нее появилось продолжение, и она стала первой книгой серии. В результате в библиотеке он а так и остается без серии, что есть бардак и ни фига не библиотека, а беспорядочный набор - то есть, не выполняется основная задача каталогизатора - собственно каталогизация и упорядочивание размещения.
|
|
| |
PFN | Дата: Суббота, 02.03.2019, 12:30 | Сообщение # 377 |
Генерал-майор
Группа: Друзья
Сообщений: 206
Статус: Offline
| Цитата lordkor ( ) Вообще-то, "удаления и пр." нужны как раз ПОСЛЕ предварительного и прочего отборов
"Удаления" вообще-то нужны на ВСЕХ этапах жизни любой библиотеки. Это и замена имеющейся книги на более валидную или с новой обложкой, или иллюстрациями и т.п. и т.д. В этих случаях "старая" книга должна удаляться из библиотеки и с диска. Кроме того из таблиц базы должны удаляться все записи об этой книге. Только в отношении таблицы Исключений ("Стоп-листа"), хранящей коды МД5 возникает вопрос: удалять запись или нет. Удалить - рискуешь получить снова эту же ущербную книгу с очередным пакетом обновлений. Оставить - лишний мусор в таблице. Должен отметить, что любой каталогизатор не может справиться со всеми пожеланиями пользователей. В нашем конкретном случае при хранении файлов в архивах задачу чистки и изменения (редактирование метаданных книги) лучше оставить пользователю, чтобы не раздувать и не перегружать программу излишними модулями.
=============================== Приказ, который может быть понят неправильно, обязательно будет понят неправильно
|
|
| |
drserj | Дата: Воскресенье, 03.03.2019, 15:54 | Сообщение # 378 |
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Статус: Offline
| Вариантов действительно много, и действительно, всё предусмотреть и реализовать трудно, да и не нужно. Ибо получим неюзабельного монстра. Да, я могу удалять из многофайлового архива, но это может вылиться в многочасовую операцию. Надо ли это? Думается, нет. По этому, как по мне - при импорте копируем контент в формате %z, над которым можем производить любые операции. Остальным любителям гемора - модуль от мультилиба в помощь. Если я сейчас прогнусь под любителей экзотики - программа превратится в монстра.
drSerj
|
|
| |
PFN | Дата: Воскресенье, 03.03.2019, 21:26 | Сообщение # 379 |
Генерал-майор
Группа: Друзья
Сообщений: 206
Статус: Offline
| Цитата drserj ( ) Если я сейчас прогнусь под любителей экзотики - программа превратится в монстра.
А вот этого нам совсем не надо!
=============================== Приказ, который может быть понят неправильно, обязательно будет понят неправильно
|
|
| |
drserj | Дата: Понедельник, 04.03.2019, 21:03 | Сообщение # 380 |
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Статус: Offline
| и я о том же
drSerj
|
|
| |
drserj | Дата: Воскресенье, 26.04.2020, 16:29 | Сообщение # 381 |
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Статус: Offline
| Итак, продолжим.
Обсуждение процесса импорта.
Установка: 1. Исходные файлы при импорте не трогаем. 2. Обрабатываем ZIP, RAR архивы, одиночные файлы. Архивы: один файл, два файла (non fb2+fbd), многофайловый архив. 3. На выходе: библиотека в формате %z. 4. Фильтрация осуществляется по типу файла (расширению) и результату анализа (fb2, nonfb2+fbd, nonfb2, битый архив, копия по мд5, файл с описанием не прошедший валидацию XML - не получим данные при парсинге такого файла). 5. Действия при фильтрации - перенос в указанный для данного типа или результата каталог.
Импорт: На входе указан каталог с контентом, указанным в п.2 Происходит поиск файлов и анализ их содержимого. Происходит фильтрация с разнесением файлов по каталогам, если в настройках указано.
Вопрос с фильтрацией по МД5 при поиске файлов и добавлению в обработку. Есть подозрение, что мы на пороге великого шухера Проблема в том, что если книг не много (тысячи) и пополнение не такое частое - то как-бы можно сохранять при поиске МД5 исходных файлов (архивов) в отдельной таблице, как это сделано в модуле private в мультилибе. Но, если таких файлов будет много, то... Таблица мд5 может разрастись до неприличных размеров и тормозить импорт. Нет, при добавлении книги естественно мд5 будет проверяться и тут отработается фильтр, но для исходного файла... Единственная ситуация, где это имеет смысл - делать импорт из одного и того же каталога, который не будет очищаться, а только пополняться, но... извращение это, однако! Обработал архивы - перенеси обработанное в другой каталог ( в конце-концов, можно автоматом обработанное перенести в указанный каталог, или наоборот, перенес архив в каталог для обработки, обработал, перенес назад или удалил). Если не прав, или имеются другие предложения - готов к диалогу.
Просьба, не заморачиваться вопросами программы с совсем другим концептом. Концепт выбран и изменению (без очень существенных, глобальных, не глубоко личных пожеланий, коих была масса). Наша задача сейчас - создать программу с возможностью расширения и масштабирования без переписывания (как уже было) всего или почти всего кода. Чем проще - тем быстрее что-то получим на выходе
drSerj
|
|
| |
PFN | Дата: Понедельник, 27.04.2020, 12:00 | Сообщение # 382 |
Генерал-майор
Группа: Друзья
Сообщений: 206
Статус: Offline
| Этот вопрос уже обсуждался. Напоминаю: Вопрос: Находится коллекция на ноутбуке, свободное место на жестком диске заканчивается. Как можно удалить ненужные разделы, чтобы освободить место? Допустим, такие как поэзия, драматургия. любовные романы?
drserj: Если коллекция из архивов-тысячников - никак sad Это будет удаление из архива с перепаковкой. Такой процесс может затянуть на десятки (а скорее сотни) часов. Если коллекция из единичных архивов - можно попробовать написать скрипт и использовать его в пакетных операциях.
ПФН (Уточняю с учетом сегодняшнего опыта): В архивах полно всякого мусора и дубликатов. Поэтому чистить их нужно обязательно. И ув. drserj совершенно прав: процесс очень-очень трудоемкий. Я поступаю так: Прошу учесть, что использую только месячные пополнения Флибусты. 1. Все файлы из архива извлекаются в отдельную директорию. 2. Директория сканируется программой, которая в процессе сканирования: а) перемещает все НЕ fb2-файлы в другую папку (можно сразу и удалять, если нет желания делать из них fb2-книги) б) перемещает/удаляет все НЕ RU-файлы в) производит проверку по МД5 и сверяет с кодами в таблице отсева (Стоп-лист) и дубликаты перемещает/удаляет г) информация (МД5) об оставшихся заносится в БД
А дальше отбор по Жанрам, но тут нужно смотреть, т.к. люди, создающие fb2-книги часто жанры ставят от фонаря. Вместо "Фантастики" может быть "Старинная литература" и т.п. Поэтому нужно смотреть внимательно. Могу сказать, что после такого просеивания количество файлов пополнения уменьшается % на 40, а иногда и больше.
И уже после этого перевод пополнения в формат %z и разнос по каталогам (Авторы или что-то другое). Архивировать перед этим книги или нет - на усмотрение пользователя.
Цитата drserj ( ) Таблица мд5 может разрастись до неприличных размеров и тормозить импорт Да, такая опасность существует. Но... безвыходных ситуаций не бывает... Как вариант: несколько таблиц МД5 по жанрам: Детектив, Фэнтези и т.д.
=============================== Приказ, который может быть понят неправильно, обязательно будет понят неправильно
|
|
| |
drserj | Дата: Понедельник, 27.04.2020, 21:00 | Сообщение # 383 |
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Статус: Offline
| Цитата PFN ( ) Этот вопрос уже обсуждался. Напоминаю: Сейчас только импорт. А это вопрос контента.Цитата PFN ( ) 2. Директория сканируется программой, которая в процессе сканирования: Я и предлагаю - в процессе сканирования отбрасывать (при необходимости и без, ибо будет тупо переписан) мд5 дубли, в процессе при необходимости использовать фильтрацию с возможностью разнесения разного контента в разные каталоги.
Про жанры... Я вот сегодня вспомнил, что убрал "Новинки". Сначала подумал - зачем? Потом подумал еще раз, и еще... И посоветовавшись с коллегой решил- а оно и нафиг не надо с учетом развитого поиска... Лишний дубляж функционала (хотя и приятный). А жанры... если бы они были правильны стандартны - ну да, можно... А так - не знаю.
Цитата PFN ( ) Как вариант: несколько таблиц МД5 по жанрам: Детектив, Фэнтези и т.д. Ой, а это нафиг? Давай еще по буквам Нет, поскольку на выходе %Z - мд5 дублей файлов не существует по определению. Поскольку в базе это поле уникально - так же дубля не должно быть.
drSerj
|
|
| |
PFN | Дата: Понедельник, 27.04.2020, 23:33 | Сообщение # 384 |
Генерал-майор
Группа: Друзья
Сообщений: 206
Статус: Offline
| Цитата drserj ( ) Я и предлагаю - в процессе сканирования отбрасывать (при необходимости и без, ибо будет тупо переписан) мд5 дубли Так и я о том же только другими словами...
Цитата drserj ( ) А жанры... если бы они были правильны стандартны - ну да, можно... В том-то и беда, что там такая мешанина... Но кое-что отсеять можно... Тут придется чистить ручками и личным контролем. Иначе есть риск вычистить и нужные книги.
Цитата drserj ( ) Ой, а это нафиг? А это ответ на жалобу о чрезмерном увеличении таблицы МД5
=============================== Приказ, который может быть понят неправильно, обязательно будет понят неправильно
|
|
| |
drserj | Дата: Вторник, 28.04.2020, 15:51 | Сообщение # 385 |
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Статус: 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) добавляются в отсев. Очевидно с копированием этих файлов в соответствующие каталоги. Вопрос только в каком формате имени....
По интерфейсу. В отличие от мультилибовского модуля - тут только одна таблица - отсев. Удачно добавленные файлы не выводятся, в конце обработки выводится статистика с количеством, но при желании, отсортировав по дате, или поиском по дате добавления - можно всё увидеть. Просто если файлов будет много - добавлять в таблицу смысла нет - всё равно обилие информации сведет на нет ее использование.
Второе отличие - как уже говорил выше, в отличие от предыдущего модуля тут нет сохранения списка ранее обработанных файлов. От слова "совсем". Зачастую, это даже мешает. Как обойти ситуацию с пополняющимся каталогом (просто добавляем новые книги в тот же каталог) - а не надо так делать А если кому-то хочется извратиться - то и тут имеется выход - перенесите временно добавляемые файлы в "левый" каталог, оттуда импортируйте данные и перенесите эти файлы обратно. И овцы сыты, и волки целы
По поводу дубликатов МД5 - всё просто, в каталогах формата %z не может быть 2 файла с одинаковым именем. Исключение, как сейчас пришло в голову - если каталогов с библиотекой несколько. Например, отдельно FB2, отдельно другие. Но и тут это маловероятно, ибо такие файлы попадут в отсев в базе и мы их сразу увидим.
Таким образом, в итоге импорта мы имеем: 1. Конечный(е) каталог(и) с контентом. Каталоги - если мы фильтруем по типу файлов или результатов обработки. 2. Каталоги с отсевом (возможно, дать выбор не сохранять такие файлы, хотя, зачем?) 3. Таблицу с отсевом, в которой еще есть ссылка на местоположение проблемного файла. Впоследствии можно обработать этот файл и добавить в базу. Либо повторно обработать каталог с проблемными файлами, если исходные каталоги грохнем.
Напоминаю, программа не трогает исходные файлы. На базе их создается своя библиотека с именами файлов в формате %Z (MD5).
Да, фильтры можно со временем добавить - по языкам, например и т.д.
И, естественно, поскольку эта библиотека в формате %z - то над книгами можно выполнять операции удаления, переноса и т д. Что-то забыл, вспомню - допишу. Пока вот такая информация, которую хотелось бы обсудить и закрепить.
drSerj
|
|
| |
PFN | Дата: Вторник, 28.04.2020, 19:21 | Сообщение # 386 |
Генерал-майор
Группа: Друзья
Сообщений: 206
Статус: Offline
| Цитата drserj ( ) Как вариант - можно добавлять всё, а потом, по мере надобности, из общей базы удалять ненужное вместе с файлами книг. Мне этот вариант очень даже симпатичен!
Цитата drserj ( ) Щаз пришла мысль - можно пометку об утверждении добавить, типа что да, эта книга добавлена. А может добавлять только отмеченные из обработанного списка? Мне кажется, что это лучше, чем вычищать потом и базы...
Цитата drserj ( ) Вопрос только в каком формате имени.... Думаю имя должно прочитываться, чтобы можно было легко идентифицировать книгу. Правда, я в своей программульке прочитаю любой формат имени.
Сегодня у меня случилась маленькая победа: Я, наконец, доработал блок, которым в пару кликов мышки меняю в книге ФБ2 огромную обложку весом около 500 кб и шириной от 570 пикселей и больше на ту же обложку, но уже с шириной картинки 450 пикселей и весом раз в 6-7 меньше.
=============================== Приказ, который может быть понят неправильно, обязательно будет понят неправильно
|
|
| |
drserj | Дата: Вторник, 28.04.2020, 22:11 | Сообщение # 387 |
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Статус: Offline
| Цитата PFN ( ) А может добавлять только отмеченные из обработанного списка? А нетути такого списка больше. Я же писал - остался только отсев. И кто меня читает (тихо бурча себе под нос..)
Цитата PFN ( ) Думаю имя должно прочитываться, чтобы можно было легко идентифицировать книгу. Я так понимаю, имя оставлять (ибо 2 варианта - оставлять старое или лепить мд5)
Цитата PFN ( ) Сегодня у меня случилась маленькая победа: Таки поздравляю Хотя, с учетом архивации книги - вряд ли полезная функция... Я наоборот, не хотел бы кастрированную картинку. Хотя в базу (ну тут понятно) тоже режу. Но исходя из того, что в книге останется нормальная
То есть, как я понял, всё писаное мною выше - утверждено?
drSerj
|
|
| |
PFN | Дата: Вторник, 28.04.2020, 22:37 | Сообщение # 388 |
Генерал-майор
Группа: Друзья
Сообщений: 206
Статус: Offline
| Цитата drserj ( ) Я наоборот, не хотел бы кастрированную картинку Она не кастрированная, а просто представлена в меньшем размере. Соответственно и вес ее меньше. А на фига мне обложка, которая вести в 2-3 раза больше чем текст и в Ридер не умещается?
Цитата drserj ( ) Но исходя из того, что в книге останется нормальная У меня и в книге меняется.
Цитата drserj ( ) То есть, как я понял, всё писаное мною выше - утверждено? Лично я никаких возражений не имею! Любые узкие места себя проявят при тестировании, тогда и могут появиться какие-то предложения...
=============================== Приказ, который может быть понят неправильно, обязательно будет понят неправильно
|
|
| |
drserj | Дата: Среда, 29.04.2020, 20:25 | Сообщение # 389 |
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Статус: Offline
| Ну что ж, бум смотреть...
drSerj
|
|
| |
|