Менеджер записей ELibrary



    Наверное у каждого на винчестере скапливается огромное количество всевозможных книжек, записей, заметок и так далее. Конечно же все это в различных форматах fb2, pdf, doc, а может быть, что к одной логической записи относится несколько файлов или серия книг. Как все это хранить?


    Одним прекрасным утром передо мной возник именно такой вопрос, так как я уже не мог нормально ориентироваться по массивам директорий и файлов. Решив для себя как-то упорядочить хаос я установил менеджер электронных книг (название давать не буду, вариантов много, всем в помощь гугл).

    К сожалению менеджер меня не устроил, так как при формировании библиотек менеджер оперирует путями до файлов. Кажется ничего критического в этом нет, но если мы перемещаем/копируем/удаляем файл, то соответственно сконфигурированная библиотека летит ко всем чертям. Ах да, плюс ко всему, вам приходилось копировать 100500+ файлов на съемный носитель? Во избежании данного удовольствия приходиться все складывать в архив, что также занимает время.

    Пришлось выдумывать велосипед под себя. Во-первых, было решено, что все файлы будут храниться в базе данных, а во-вторых, что будет использоваться встраиваемая база данных FireBird 2.5. Ну и конечно все это на православном С++/Qt 5.3.0

    Через несколько дней я заполучил простейший менеджер библиотек, который хранит файлы в базе данных и осуществляет поиск по фильтрам.



    Запись можно добавить, либо из меню, либо Ctrl+N, либо перетаскиванием файлов на главное окно. Сначала необходимо выбрать один или несколько файлов, которые будут соотноситься с записью. Далее необходимо заполнить несколько полей: «название», «автор», «тема», «теги» и «описание». Причем если поля «название», «автор» и «описание» всегда придется заполнять руками, то поля тема и описание выбираются из справочника базы, если значение для заполнения не находится, то добавляется новое. По желанию можно еще докинуть файлов в запись кнопкой "+файлы". Файлы при добавлении жмутся методом qCompress, с уровнем 6.



    Кнопкой «Найти» грид заполняется в соответствии с выбранными фильтрами. Двойным нажатием по записи или из меню открывается директория со всеми присутствующими в ней файлами. Если двойным щелчком клацнуть по строке с информацией по файлу, то распакуется и откроется соответствующий файл. Файлы распаковываются в temp директорию ELibrary, после закрытия директория со всеми файлами удаляется.

    Ну вот и все, пост не претендует на выход в топ, но надеюсь кому-нибудь пригодится. А если заинтересует могу и продолжить расширять функционал.
    Ах да ссылка на GitHub
    src — директория с исходниками и «чистой» базой ELIBRARY_clean.FDB
    build_mingw_win32 — директория с билдом под винду. В файле settings хранятся настройки подключения к БД.
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 20

      0
      Спасибо, но есть пара моментов:
      — записи после добавления менять как-то можно? Вот если я хочу в уже созданную запись ещё файлов добавить или описание изменить?
      — сразу после старта или добавления записи имеет смысл их показывать, а то надо постоянно кнопку Ctrl+F давить
      — поиск работает только если поля задавать абсолютно точно. Если я автора как «Лев Толстой» указал, то по фильтру "*Толстой*" ничего не находит.
      — при поиске хочется указать несколько тэгов или тем.
        0
        -возможность добавления или редактирования записей смогу добавить в следующем билде.
        -вопрос спорный, если их более 1000, смысл их отображать при запуске?
        -найдет по «Лев», т.е. поиск идет по левой части. Думаю, да, стоит сделать, чтобы искал по обоим частям.
        -скорее всего тоже в следующем билде.
        Спасибо за комментарий
          0
          Помимо выше перечисленного.
          сразу после старта или добавления записи имеет смысл их показывать, а то надо постоянно кнопку Ctrl+F давить
          -вопрос спорный, если их более 1000, смысл их отображать при запуске?

          Плюс в версию того, что не нужно их показывать. Для этого можно иметь отдельную «страничку» с областями, содержащими «самое популярное», «недавно добавленное», «недавно просмотренное». Плюс, если включить в покрываемые файлы документы, то нужен поиск по датам. Для книг, возможно, что достаточно только тегов.
        0
        Не обнаружил фичу добавления md5 от файла книги. Дело в том что одна и та же книга может быть добавлена под разными именами. В таком случае я бы ожидал окно с сообщением о том что такая книга уже имеется с приведенным файловым путем.
          0
          Я подумаю над этим + главная фича в том, что файловые пути отсутствуют, все файлы сохраняются в бд в поля типа BLOB. БД — это файл ELIBRARY.FDB
          P.S.: ребят, я очень рад, что появляются такие конструктивные комментарии :)
            +3
            А зачем непосредственно в БД? Вы могли бы по другому:
            1) Выделить спец. директорию где будут храниться книги
            2) При добавлении книги считать md5 и переименовывать добавляемую книгу .djvu, к примеру, а в записи к книги добавить md5

            Преимущества:
            1) Таким образом сама БД будет содержать строго данные о книгах. И ее будет проще передавать друзьям, для того чтобы те посмотрели что им надо от Вас;
            2) Проще бэкапить, на внешнем диске ВСЯ коллекция, а на жестком встроенный в ноут строго то что в данный момент читаете!
          +1
          Calibre же
          И несколько файлов к одной логической книге можно прицепить, и пустую книгу добавить и еще 100500 фич.
            0
            Calibre действительно многое умеет, но увы далеко не идеален. Тоже подумывал и подумываю написать менеджер для книг, потому что все, что написано, неудобно или некрасиво или просто криво. Calibre, к примеру, имеет уродливый интерфейс, стремный и тормозной поиск, с читалкой дружба тоже еле-еле, плюсов только два — кроссплатформенная и ISBN экстрактор.
            0
            В случае если книга в fb2 формате, не проще ли извлекать Название, Имя автора и Аннотацию из самой книги если они там присутствуют?
              0
              И не могли бы всеже подсказать название того менеджера? Вполне возможно
              то именно то, что мне и надо.
              +1
              Ребят пишите больше, чтобы вы исправили/добавили, когда наберется достаточно материала, буду работать дальше, кстати может мне кто-нибудь помочь с дизайном?
                0
                Обладателем OS X больше повезло, там есть прекрасный Day One.
                  0
                  Обновил версию)) Теперь, я думаю, этим даже можно пользоваться))
                  -Изменен поиск по фильтрам. Теперь можно фильтровать по нескольким тэгам и дате добавления.
                  -Появилась возможность редактировать запись. Добавлять, удалять файлы.
                  -Добавлены список «Избранное» и список «ТОП».
                  -Поиск файлов по md5
                  -Добавлена фича слежения за файлом. Т.е. если распакованный файл изменяется, то изменения будут зафиксированы в БД.
                  -Добавлено преобразование html (htmls) в pdf и последующее добавление файла в БД. (модуль wkhtmltopdf)
                  -Реализован трассировщик.


                    0
                    Как хранятся сами файлы книг? Кладете непосредственно в базу?
                      0
                      Как хранились, так и хранятся в базе
                        +1
                        Ясно. Программу использовать не имеет смысла
                          0
                          Ваше право
                            0
                            Я не понимаю Вашей логики. Зачем Вам надо было выкладывать Вашу программу на всеобщее обозрение? Какую цель Вы преследуете? Вы хотите показать что Вы крут и что-то можете или же Вы хотите чтобы Вашей программой не только Вы, но и другие пользователи пользовались? Я не стремлюсь обидеть или задеть Вас, но в мой комментарий получил три голоса на момент 2014-07-23, другими словами 3 человека захотели тоже что и я, т.е. 4 человека просят о функциональности.

                            И тут Вы
                            >>Ваше право

                            А не проще ли программу не выкладывать на публику? Тогда никто ничего просить не будет. ;)
                              0
                              То что файлы, хранятся именно в БД и является основной концепцией приложения, почитайте внимательно пост. И от комментариев о полезности или бесполезности чего либо впредь воздержитесь, они не очень приятны и граничат с хамством.

                  Only users with full accounts can post comments. Log in, please.