Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works

Random project

MyHomeLib

MyHomeLib – комп'ютерна програма для керування домашньою бібліотекою електронних книг. MyHomeLib може використовуватися не тільки для каталогізації колекції файлів з електронними книгами, але і як клієнт для роботи з бібліотекою Лібрусек та іншими бібліотеками на движку Лібрусек (Флібуста та іншими подібними).

View on GitHub

Anyone may press Interesting, signed in or not. It helps others find this project.

Member rating

No ratings yet.

Sign in to rate this project.

README

MyHomeLib

Українська · English · Български

Керування домашньою бібліотекою електронних книг: каталогізація власної колекції файлів і робота як клієнт бібліотек на движку Лібрусек.

Що це таке

MyHomeLib — настільна програма для Windows, яка дає змогу каталогізувати власну колекцію файлів електронних книг: книги розкладаються по авторах, серіях і жанрах, шукаються за довільним набором умов і відкриваються в тій програмі для читання, яку ви налаштували.

Окрім власних колекцій, MyHomeLib працює як клієнт бібліотек на движку Лібрусек — зокрема Флібусти та подібних сайтів. Каталог такої бібліотеки підключається з файлу INPX, після чого книги можна шукати й переглядати локально, а завантажувати з сервера лише ті, які справді потрібні.

Книги зберігаються у форматах FB2 (окремі файли або zip-архіви), FBD та будь-яких інших; метадані колекції — у базі SQLite.

Можливості

Колекції

  • Кілька колекцій одночасно з миттєвим перемиканням між ними.
  • Типи колекцій: локальна чи мережева, власна чи підключена зовнішня бібліотека, FB2 чи не-FB2.
  • Майстер створення колекції: порожня колекція, побудова з файлу INPX або підключення наявного файлу .hlc2.
  • Оновлення колекції з мережі та вручну, синхронізація тек і файлів, обслуговування бази даних.
  • Копіювання книг між FB2-колекціями, експорт колекції у формат INPX.
  • Експорт групи у переносну колекцію metabib. Група може містити книги з кількох колекцій; фільтри перегляду та позначки книг не обмежують експорт.

Книги

  • Імпорт FB2 (файли й архіви), FBD та книг у інших форматах; пакетний імпорт з INPX.
  • Дерева перегляду за авторами, серіями та жанрами з алфавітними фільтрами (кирилиця й латиниця).
  • Пошук за автором, назвою, серією, жанром, ключовими словами, анотацією, ім'ям файлу, датою додавання, мовою та оцінкою бібліотеки — з умовами виду %текст%, ="точне значення", <, >, <>, OR — і збереженням наборів умов у пресети.
  • Групи та обране, рейтинг, прогрес читання й рецензії; експорт та імпорт цих даних користувача окремо від каталогу (прив'язка за LibID).
  • Завантаження книг з онлайн-бібліотеки, читання у зовнішніх програмах за типом файлу.
  • Надсилання книг на пристрій з конвертацією: fb2mobi, fb2epub, fb2lrf, fb2pdf; шаблони імен файлів і підтек.
  • Користувацькі скрипти після надсилання на пристрій з підстановками %DEST%, %TMP%, %FILENAME% та іншими.
  • Редагування описів книг і авторів, експорт списку книг у HTML.

Експорт групи: Створіть групу, додайте книги й виберіть Група → Експортувати групу (metabib) або цю команду в контекстному меню групи. Під час першого експорту виберіть теку; наступні експорти використовують збережену теку. Команда Тека експорту груп… змінює її. Кожен запуск створює нову теку MHL-<GUID> з catalog.jsonl та ZIP-архівами, які містять до 1000 книг. Експортуються лише доступні файли, без завантаження та конвертації. Журнал показує пропущені книги й підсумкові кількості. Скасування не публікує неповну колекцію.

Для імпорту залиште ZIP-архіви поруч із catalog.jsonl, виберіть каталог у майстрі створення колекції та вкажіть теку пакета як кореневу теку книг. Пакет має власний ідентифікатор бібліотеки та нові ідентифікатори книг; вихідні LibID зберігаються як походження даних каталогу. Особисті групи, оцінки, рецензії та прогрес читання не включаються. Текст перекладачів зберігається спеціально позначеним твердженням; відновити структуровані імена та початкові спостереження джерел зі збереженого каталогу неможливо. Інші читачі metabib можуть не підтримувати це представлення перекладачів.

Якщо жанр із таким кодом уже є в цільовій колекції, імпорт зберігає його визначення. Каталог експорту містить назву й категорію джерела. Суперечливі визначення з різних вихідних колекцій отримують окремі коди. Ідентифікатор похідної бібліотеки придатний для імені файлу, тому майстер може використати запропоноване ім'я бази даних.

AI-асистенти

  • Разом з програмою встановлюється MCP-сервер (MHLMcpServer.exe), який відкриває колекцію асистентам на кшталт Claude: пошук книг, перегляд авторів, серій і жанрів, зміст і текст книги, пошук усередині книги. Працює лише на читання й не потребує запущеної MyHomeLib. Як підключити — у довідці, розділ «MCP-сервер для AI-асистентів».

Мова інтерфейсу

Інтерфейс доступний українською, англійською та болгарською. Мова перемикається в меню Вигляд → Мова інтерфейсу і застосовується після перезапуску програми. Усі три мови вбудовані у виконуваний файл, тож жоден зовнішній файл не може їх замінити чи прибрати. Довідка також перекладена всіма трьома мовами й перемикається разом з інтерфейсом.

Дерево жанрів теж підлаштовується під мову інтерфейсу. Для наявних колекцій назви жанрів оновлюються самі — вони зберігаються в базі колекції, тож раніше залишалися мовою, якою колекцію було створено.

Болгарський переклад машинний і не вичитаний носієм мови — у меню вибору мови він так і підписаний. Якщо якийсь рядок звучить неправильно, напишіть на сторінці Issues: наведіть рядок і запропонуйте заміну.

Інші мови підключаються каталогами перекладу поруч із програмою (Lang\<код>.json). Програма завантажує тільки каталоги, підписані ключем проєкту: непідписаний файл не завантажується й не з'являється в меню. Якщо ви хочете перекласти інтерфейс своєю мовою, напишіть на сторінці Issues — готовий переклад буде підписано й повернуто вам разом з файлом підпису.

Російськомовного інтерфейсу проєкт не постачає і каталогів російською не підписує. Це свідоме рішення.

Встановлення

Готові інсталятори для 64- та 32-розрядної Windows публікуються на сторінці Releases. Якщо потрібного файлу там немає, інсталятор можна зібрати самостійно — див. Installer/build_installer.cmd (потрібен Inno Setup).

Вимоги: Windows 10 або новіша. Місце на диску визначається переважно розміром колекцій книг, а не самою програмою.

Програма підтримує portable-режим: якщо поруч із виконуваним файлом лежить myhomelib2.ini, налаштування читаються з нього, а не з %APPDATA%. Це дає змогу тримати програму разом з колекцією на зовнішньому носії.

Швидкий старт

  1. Встановіть програму й запустіть її.
  2. Колекція → Створити — майстер запитає тип колекції, теку з книгами й формат файлів.
  3. Наповніть колекцію: імпортуйте наявні файли книг з диска або побудуйте каталог з файлу INPX онлайн-бібліотеки.
  4. Переглядайте дерева авторів, серій і жанрів, шукайте книги на вкладці «Пошук», відкривайте їх у своїй програмі для читання або надсилайте на пристрій.

Докладніше — у вбудованій довідці.

Довідка

Повна довідка (55 сторінок, українською, англійською та болгарською) постачається разом з програмою. Клавіша F1 контекстно-залежна — відкриває у браузері саме ту сторінку, яка відповідає активному вікну чи вкладці. Вихідні файли довідки — у теці Program/Help/; index.html є змістом і точкою входу.

Збірка з вихідного коду

Потрібно:

  • Delphi 13 (RAD Studio 37.0);
  • VirtualTreeView (встановлюється через GetIt);
  • Konopka Signature VCL Controls (BonusKSVC 8.0.2, теж через GetIt);
  • C:\Windows\System32 у змінній PATH — подія after-build викликає robocopy, і без цього збірка падає на copy_help.cmd;
  • Node.js — необов'язковий. Подія before-build викликає Program\embed_lang.cmd, який вбудовує каталоги перекладу у виконуваний файл. Без Node.js збірка не падає, але ви отримаєте програму лише українською.

Каталоги перекладу (Program/Lang/) не входять до цього репозиторію. Без них збірка успішна й дає програму українською; як їх отримати — див. tools/lang/README.md.

Збирайте лише через груповий проєкт Program\MHL.groupproj — він містить пакет компонентів, DLL з іконками, головну програму та MCP-сервер у правильному порядку:

pascal
cmd.exe /c "set BDS=C:\Program Files (x86)\Embarcadero\Studio\37.0&& set BDSCOMMONDIR=C:\Users\Public\Documents\Embarcadero\Studio\37.0&& C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe Program\MHL.groupproj /t:Build /p:Config=Release /p:Platform=Win64 /nologo /v:minimal"

Для 32-розрядної збірки замініть /p:Platform=Win64 на /p:Platform=Win32. Основна платформа — Win64; збирайте її першою, але перед випуском мають проходити обидві.

Не запускайте msbuild безпосередньо на Program\MyhomeLib.dproj. Це переписує файл проєкту й піднімає імпорт CodeGear.Delphi.Targets вище груп конфігурації, після чого будь-яка наступна збірка — зокрема й групова — падає з F2613 Unit 'SysUtils' not found. Груповий проєкт файл не переписує.

Результат збірки: Program/OUT/Bin64/ та Program/OUT/BIN/ (виконувані файли), Program/OUT/Units/ (DCU). Подія after-build кладе поруч з exe теку довідки та Resources\Icons\<платформа>\MHLIcons.dll — усі іконки програма завантажує з цієї DLL під час виконання.

Структура репозиторію

pascal
Program/
  MyHomeLib.dpr        ???????????????? ????????????
  MHL.groupproj        ???????????????? ???????????? (???????????????????? + ???????????? + ???????????????? + MCP-????????????)
  Forms/               ?????????? VCL (frm_*.pas), Forms/Editors/ ??? ?????????????? ??????????????????????
  DataModules/         dm_user.pas ??? ???????????????????? ???????????? ?????????? (????????????????????????, ???????????????? ????)
  Units/               ????????: ?????????????????? ????????, ????????????????????????, ????????????????????, ??????????????????
  DAO/                 ?????? ?????????????? ???? ?????????? (???????????????????? ??????????), DAO/SQLite/ ??? ????????????????????
  ImportImpl/          ???????????? ?????????????? ???????? (FB2, FBD, INPX) ?? ?????????? ????????????????
  DwnldImpl/           ???????????? ???????????????????????? ????????
  UtilsImpl/           ??????????????????????????, ?????????????? ???? ????????????????, ?????????????????? ????????????????
  Wizards/             ?????????????? ?????????????????? ????????????????
  Help/                ?????????????? ?????????????????????? (HTML)
  Resources/           ????????????, ????????????????????
Components/
  MHLComponents/       ?????????? ?????????????????????? ???????? ???????????????? (BookTreeView, ???????????? FB2, ????????????)
Utils/                 ?????????????????? ?????????????? (??????. ??????????)
Installer/             ?????????????? Inno Setup
tools/                 ?????????????????? ?????????????? ???????????????? (??????????????, ???????????????? ??????????????????)

Утиліти

  • Utils/MHLMcpServer — MCP-сервер (Model Context Protocol) лише для читання, який відкриває колекцію MyHomeLib клієнтам на кшталт Claude: пошук книг, перегляд авторів, серій і жанрів, зміст і текст книги, пошук усередині книги. Лінкується з тим самим шаром DAO, що й програма, тож бачить ті самі колекції. На відміну від решти утиліт, постачається інсталятором і лягає поруч з MyHomeLib.exe. Опис для користувачів — у довідці (mcp_server.html), технічний — у Utils/MHLMcpServer/README.md.
  • Utils/MHLSQLiteConsole — окрема консоль SQLite для роботи з базами колекцій напряму.
  • Utils/MHLSQLiteExt — розширення SQLite мовою C++ з користувацькими функціями, які використовує програма.

Ліцензія

MIT — див. LICENSE. © 2008–2026 Олексій Пеньков.

Ліцензія поширюється на код, але не на назву. Форк, який розповсюджує збірки, має випускати їх під власною назвою — див. NOTICE.

Автори

Програмування: Олексій Пеньков, Николай Рыманов, eg.

Тестування: eg, Evgeniy_V, albert, AlbanSpy, kaznelson, Olega.

Зворотний зв'язок

Про помилки й пропозиції пишіть на сторінці Issues.