Домашняя электронная библиотека: MyHomeLib + FBD

    Думаю, практически каждый любитель электронного чтения сталкивался с ситуацией, когда объем скачанных из сети книг увеличивается настолько, что найти в папке с ними нужную книгу становится сложнее, чем скачать ее заново. В этом случае многие пытаются систематизировать коллекцию, некоторые оставляют все как есть и продолжают скачивать все подряд в надежде когда–нибудь привести все в порядок, другие же просто перестают скачивать книги в надежде на то, что при необходимости все нужное найдется в интернете.


    В итоге, первые рано или поздно забрасывают неблагодарный труд по поддержанию коллекции книг в порядке, вторые имеют огромную кучу книг, с которыми практически невозможно работать, а третьи рискуют в один прекрасный момент обнаружить любимый книжный сайт закрытым или переведенным на коммерческую основу.
    В любом случае, вопрос организации домашней библиотеки и поиск в ней нужной книги является довольно актуальным.
    Когда речи идет о файлах в формате fb2, то вопрос каталогизации решается весьма просто — устанавливаем бесплатную программу MyHomeLib, создаем пустую коллекцию, запускаем импорт и… вуаля! Через несколько минут имеем всю свою коллекцию отсортированную по авторам, сериям и жанрам. Выглядит это примерно так:

    В части работы с файлами fb2, возможности программы весьма обширны. Изначально MyHomeLib создавалась для работы с архивами on-line библиотеки Либрусек и от отпочковавшейся от него Флибусты.
    Перечислю лишь основные из них с некоторыми пояснениями:
    Основные возможности

    • неограниченное количество коллекций — например, можно одновременно работать с архивами либрусека, с библиоткекой Флибуста в режиме on-line и собственными коллекциями файлов в форматах fb2 и fbd.
    • удобный просмотр коллекций книг в виде древовидного списка с группировкой по автору/серии
    • возможность работы со списками книг в табличном режиме с сортировкой по любому столбцу
    • отображение обложки и аннотации при просмотре списка книг
    • чтение эл. книг в форматах fb2, html, doc, txt без установки дополнительных программ (используется AlReader 2)
    • автоматический импорт fb2 из папок и zip-архивов
    • не-fb2 коллекции, возможность работать с любыми типами файлов (в этом режиме книги в базу нужно вносить в ручную или используя список в формате inpx)
    • Полноценна поддержка формата FBD (импорт, конвертация, редактирование)
    • быстрый поиск по автору, названию книги
    • полный поиск по автору, названию, серии, жанру и т.п.
    • обмен пользовательскими коллекциями с помощью файлов inpx
    • настраиваемые шаблоны имен папок и файлов при экспорте книг из коллекций
    • экспорт fb2-книг в формате fb2.zip, txt, lrf (используется конвертор fb2lrf)
    • быстрое подключение конвертеров e-pub и pdf
    • импорт/экспорт пользовательских коллекций в формате xml и inpx
    • подключение пользовательских скриптов для обработки книг (создание сборников, конвертация)
    • редактируемые индивидуальные списки жанров любого уровня вложенности
    • рейтинги и отзывы о книгах, отметки о прочтении
    • работа с группами книг (Избранное, К прочтению и т.п.)
    • возможность «в два клика» подключать другие коллекции (Библиотека Траума и др.)

    Работа с архивами библиотеки Lib.rus.ec:

    • поддержка fb2- и usr- архивов библиотеки Lib.rus.ec
    • автоматическое обновление списков книг для архивов Lib.rus.ec
    • загрузка рецензий с сайта Lib.rus.ec

    Работа с библиотеками на движке Lib.rus.ec (Флибуста и т.п.) в режиме on-line

    • менеджер закачек
    • загрузка книг в фоновом режиме
    • автоматическое обновление on-line коллекций
    • загрузка рецензий с сайта

    Интерфейс программы представляет собой несколько листков-закладок. Первые три закладки позволяют работать со списками книг, отсортированными по авторам, сериям и жанрам. Закладка «Поиск» позволяет быстро отыскать нужную книгу. В ранних версиях MHL существовал упрощенный поиск по слову или фрагменту слова. В нынешних релизах используются исключительно квази-SQL запросы.

    Допустим, вам требуется найти книгу, о которой вы помните лишь то, что в ее названии было слово «каникулы». Щелкаем на кнопке «многоточие» рядом с полем «Название». Откроется редактор запросов. Теперь нужно кликнуть по надписи «LIKE» (поиск подобия).
    В поле ввода запроса появится
    LIKE "%%"
    Между знаками «%» вводим искомое слово, лучше без окончания. Закрываем окно. Формируется запрос:
    LIKE "%каникул%"
    Жмите кнопку «Применить» и спустя секунду-другую можете перебирать список результатов. А если вы вдруг еще вспомнили, что в начале названия искомой книги было что-то летнее, вновь открываем конструктор запросов и добавляем это условие. Должно получиться что-то вроде:
    LIKE "%каникул%" AND LIKE «летн%»
    Сформулированные условия поиска можно сохранять для последующего использования, как пресеты.
    MyHomeLib позволяет разделять книги на группы. Две из них предусмотрены по умолчанию, это «Избранное» и «К прочтению», но никто не мешает пользователю создавать собственные группы. Для просмотра списков отобранных книг существует закладка, которая так и называется «Группы». В случае выбора онлайн-коллекции Либрусек будет еще закладка менеджера закачек.
    Основной рабочей закладкой будут, конечно же, «Авторы». По умолчанию перечень авторов разбит по буквам алфавита, но, если потребуется, можно вызвать и полный список.
    Произведения текущего автора выводятся в виде удобной древовидной структуры с разбиением по сериям, но можно переключиться в плоски режим (таблица).
    Почти все действия с книгами осуществляются посредством контекстного меню. Кроме разделения по группам, MyHomeLib позволяет выделять книги для массового копирования, переноса или удаления, оценивать их по пятибалльной системе, помечать уже прочитанные.
    Команда контекстного меню «Информация о книге» позволяет не только просмотреть аннотацию FB2, но и добавлять рецензии. Для «либрусечных» книг можно даже скачивать отзывы пользователей с основного сайта.
    Все эти пометки, рейтинги, рецензии, как «надстройки» над основной базой, можно проэкспортировать в XML-файл, чтобы, допустим, после обновления базы вернуть пользовательские данные обратно.
    Файлы баз данных MHL компактностью не отличаются. Однако предусмотрена возможность их экспорта в XML-файл или же в формат inpx, что дает выигрыш по объему в десятки раз. Полученный файл можно без проблем выложить в Сеть или же послать по электронной почте. Развертывание inpx обратно в рабочую базу не отнимает много времени.
    Для чтения txt, html, doc и FB2-книг в комплект MyHomeLib входит продвинутая читалка AlReader. Но если вы привыкли к другой «смотрелке», например, CoolReader, ее без проблем можно подключить через настройки.
    Чтобы извлечь отдельные FB-шки из архивов Либрусека, нужно воспользоваться функцией «Отправить на устройство». Книга будет сохранена в предварительно указанную папку. При этом она может быть упакована в архив zip и переименована согласно настройкам в разделе «Папки/Устройства» функции «Настройки программы». Например: Автор – Название (Серия). Там же можно установить опцию, чтобы программа каждый раз запрашивала, куда же следует положить файл.Есть возможность использовать транслитерацию как всего имени файла/папки, так и отдельных частей (удобно для старых ридеров Sony).

    Формат FBD


    К сожалению, все, сказанное выше насчет легкости удобства каталогизации относится далеко не ко всем форматам книг. Книги в формате FB2 содержат всю необходимую для каталогизации информацию и их легко обрабатывать с помощью программ-каталогизаторов. Достаточно нажать пару кнопок и из десятков тысяч книг будет извлечена вся необходимая информация, включая обложки и аннотации, файлы будут переименованы и разложены по папкам в соответствии с заданным шаблоном.
    Решить проблему с обработкой других форматов электронных книг и призван формат FBD, предложенный авторами программы Fb2Librarian
    По сути, FBD — это обычный пустой файл в формате FB2 с заполненным дескрипшеном, имеющим то же имя, что и сама книга.
    Таким образом, мы имеем саму книгу в любом из распространенных форматов (PDF, DjVu, CHM, TXT, DOC, etc.) и файл-спутник в формате FBD, содержащий всю необходимую информацию о книге, включая обложку и аннотацию, упакованные а один архив.
    Достоинства такого подхода к хранению информации о книге:

    1. Вся информация хранится и передается вместе с книгой
    2. Формат позволяет хранить всю возможную информацию о книге
    3. Книги могут быть обработаны программами-каталогизаторами и онлайн-библиотеками в автоматическом режиме.
    4. Файл описания может быть создан в любом редакторе FB2-книг.

    Недостаток (а вернее – теоретически разрешимая проблема), на мой взгляд, только один – стандартные жанры FB2 не подходят для нехудожественной литературы.

    Поддержка формата


    На данный момент FBD поддерживается библиотекой Либрусек и каталогизаторами MyHomeLib и Fb2Librarian. Насколько я знаю, Поддержка в MyRuLib — в планах.
    В настоящее время ведется работа над редактором FBD Maker. Интерфейс редактора строился на подобие интерфейсов редакторов mp3-тэгов, с учетом специфики задач. Он больше подходит для массовой конвертации книг — например, подшивок журналов (в этом случае удобно использовать маски и шаблоны) или архивов библиотеки Генезис (можно получать информацию прямо из нее).


    Что он умеет на данный момент:
    • заполнять поля по маске данными из имени файла
    • автоматически загружать информацию из базы библиотеки Генезис, используя md5-хеш
    • автоматически конвертировать все отмеченные файлы
    • автоматически вставлять обложку из файла jpg
    • редактировать одиночные файла
    • перезаписывать отдельные поля у групп файлов
    • автоматическая конвертация и переименование файлов с генезиса
    • импорт обложек из DjVu

    Конвертацию отдельных книг можно осуществлять непосредственно в MyHomeLib в момент добавления в коллекцию.
    Оба проекта (MyHomeLib и FBD Maker) написаны на Delphi. В качестве движка БД используется SQLite. В довесок имеется небольшая утилита для редактирования списка жанров.
    Домашняя страница
    Исходники открыты и доступны на Assembla:
    MyHomeLib
    FBD Maker
    Приглашаются все желающие принять участие в обсуждении, тестировании и разработке.
    Поделиться публикацией

    Комментарии 44

      0
      Оо, супер! Ато уже на внешнем диске понапридумывал структуру папок и текстовый файлик с описание всего )

      Планируете сделать приложение для Mac?
        0
        Мы не планируем, но есть кросс-платформенный аналог — MyRuLib. Для него заявлена работа на MacOS
          0
          Спасибо. Собрал под ubuntu, работает.
        0
        спасибо, интересно.
          0
          Библиографию для bibtex генерит?
            0
            Нет, но можно сделать, если будет востребовано.
              0
              Востребовано.
                0
                И автоматическое вытягивание авторов/названия из pdf…
                  0
                  Тут все неоднозначно. В теории, такая возможность есть, но до ума не довели по причине отсутствия тегов в большинстве pdf. Может быть к этому вопросу и вернемся.
                    0
                    А может из он-лайн вытягивать информацию, допустим есть в книге упоминание об ISBN — парсим и делаем свое дело =)
                      0
                      Для большинства нехудожественных книг, которые есть в рунете, намного лучше работает упоминавшееся в тексте получение данных из Библиотеки Генезис. У них уже 800 тыс. томов в базе, так что можно практически все найти.
            0
            Спасибо за программу, регулярно пользуюсь
              0
              Если есть возможность, то может не выводить в древе жанров жанры, книг которых у меня библиотеке нет.

              Если же по логике нельзя не показывать жанры в которых у меня отсутствуют книги, то может хоть у тех жанров в которых у меня есть книги выводить счетчик книг, как-то так:
              "

              Это только мое имхо по первому впечатлению от запуска.
                0
                еще,
                если в древе жанров я выбрал «Фантастика», то почему список книг пустой? По логике же должны быть показаны все книги из «под-жанров».
                  0
                  Это в настройках включается. По-умолчанию, вывод поджанров отключен из-забольшого объема в Либрусековских коллекциях.
                  Насчет количества в списке — не стали этого делать, что бы не было лишних тормозов при формировании списка.
                0
                с сайте мусорку от SMI2 убрали бы
                  0
                  Это единственный работающий способ насобирать денег на оплату хостинга. Донейты — это капля в море, так что увы (не потому, что хостинг такой дорогой, а потому, что донейтов — практически ноль).
                  0
                  Спасибо что вы есть. Недавно наткулся на архив книг либрусека и вашу прогу вместе с ним. Я счастлив )
                    0
                    Нет ли чего подобного для mobi?
                      0
                      Мне не известно. В MyHomeLib конвертер fb2mobi работает «прозрачно», поэтом самый простой способ — хранить книги в fb2 и конвертировать «на лету» по мере необходимости.
                        0
                        Все конвертеры что я видел — работали, мягко говоря, неудачно. Но я обязательно посмотрю, спасибо
                          0
                          Так сказать «рекомендованные» конвертеры для MyHomeLib, подключение которых сводится к копированию в папку: Fb2PDF и Fb2Mobi
                    • НЛО прилетело и опубликовало эту надпись здесь
                        0
                        При отправке на устройство (или в другую папку) теги fb2 перезаписываются информацией из базы, если это включено в настройках. С перезаписью заголовков в момент редактирования не все так просто — если это отдельный файл или один файл в архиве — то проблем нет. А вот когда файлов в архиве несколько — начинаются всякие непредвиденные трудности.
                        Так что правильная и универсальная стратегия — после наведения порядка экспортировать всю коллекцию в отдельную папку, а потом из этой папки создать уже новую.
                        0
                        Ребят, ну зачем же пытаться хранить базу в папке приложения? Все данные программы в Windows, должны хранится в %AppData%
                        screencast.com/t/xSZbJs9A
                          0
                          Если приложение ставится в Program Files, то согласен, но в осталных случаях мне кажеться когда «все яйца в одной корзине»… А есть у меня папка с портабельными программами, захотел я винду переставить, глянул, папка с приложениями ок, сношу… и всё, ушла база.
                            0
                            darked, если каждый будет делать как он считает нужным, то ОС превратиться в мусорную корзину. Есть guidlines, и им нужно следовать.
                            Для того, о чём Вы говорите, обычно, есть специальная portable сборка. Я скачал не portable сборку, и она должна работать в program files.
                              0
                              Ну, как бы, согласен, тогда предусматреть экспорт и импорт базы, что многие забывают…
                              А в идеале, под юзерспейс чтобы винда сама создавала отдельный раздел, как в никсах.
                                0
                                никсы засраны не хуже винды, о каком отдельном разделе речь?
                                0
                                Вот как раз portable-сборку вы и скачали. Инсталлятор делает все в соответствии с guidlines.
                              0
                              Поддерживаются оба варианта. В папке приложения база хранится в portable -режиме (если вы скачали архив, то это режим по-умолчанию). Если использовать инсталлятор, то все будет как положено в Windows.
                                0
                                я установил инсталлятором
                                  0
                                  Удалите файл uselocaldata в папке с программой. Он отвечает за включение portable-mode.
                                    0
                                    Нет такого файла
                                      0
                                      Тогда не понятно. Винда у вас какая?
                                        0
                                        win7
                                          0
                                          Вы лучше покажите код как Вы определяете путь, по которому писать базу в папке пользователя
                                            0
                                              0
                                              В методе TMHLSettings.Create;
                                                0
                                                Вот у вас в коде:
                                                GlobalAppDataDir := GetSpecialPath(CSIDL_APPDATA) + APPDATA_DIR_NAME;
                                                ...
                                                UseLocalData := UseLocalData or FileExists(FAppPath + STR_USELOCALDATA) or not DirectoryExists(GlobalAppDataDir);
                                                

                                                И между этими строчками нет создания директории, в APP_DATA.
                                                К сожалению, я совсем не знаю Delphi, и, поэтому не могу сказать, что GetSpecialPath работает правильно. Но предположим, что это так. Остается не создание папки, видимо.
                                                  0
                                                  Папку создает инсталлятор. Туда же при инсталляции пишутся дефолтные файлы настроек (collections.ini). Так что если папка не создалась, значит проинсталлировалось криво.
                                                    0
                                                    Ну тогда проблема ясна. Если устанавливать в program files, то пользователь должен обладать правами туда писать. Как правило это может только админ. Я, же, под админом не сижу, и делаю всё из под UAC. Поэтому она благополучно установилась и создала директорию в APP_DATA админа. Я, же, запускаю её из под аккаунта простого смертного, для которого не создана такая папка.
                                                    Так, что добавьте создание папки, если её нет.
                                                      0
                                                      Создание папки при запуске не поможет, потому как там не будет упомянутых ini-файлов. Это нужно с инсталлятором разбираться, что бы в юзерскую папку писал, а не в админскую.
                                                        0
                                                        Этого вы сделать не сможете. Т.к. инсталлятор запускается из-под админа. Т.е. либо «пихать» настройки всем пользователям, без исключения, либо в public, либо просто поменять алгоритм создания ini файла и директории. Вовсе не обязательно это делать в инсталляторе.

                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                              Самое читаемое