Всем привет!
Когда-то, как и многие пользователи интернета, я начал собирать электронные книги в свою локальную библиотеку. Но, в отличии от большинства, не смог вовремя остановиться, и она разрослась до весьма неприличных размеров. Чистить и удалять было жалко, поэтому пришлось навести какой-никакой порядок, чтобы папка с книгами не была совсем уж неподъёмной помойкой. После этого оказалось, что в такую библиотеку можно добавить ещё книг, за чем неизбежно последовала необходимость снова проводить ревизию. После нескольких таких циклов библиотека разрослась до более чем 37000 книг, разложенных по почти 7000 директориям и более 50Гб на диске. Тематика самая разнообразная, упор сделан больше на "серьёзную" литературу, но и жанрово-развлекательной тоже немало.
В процессе создания библиотеки я подумал, что было бы очень обидно потерять её при каком-нибудь техническом сбое, и что для меня одного это она явно избыточна, и здорово бы научиться ей делиться со всеми желающими. Однако, когда я представил себе необходимость загружать всё это на какое-нибудь облако или трекер и синхронизировать при каждом обновлении, меня охватила тоска и уныние. Вдобавок, любое приличное облако за такие дела быстро забанит. Кроме того, сами книги найти не проблема - почти все это fb2 с флибусты - так что основная ценность - это структура. Да и сама структура не есть что-то окончательное; я, конечно, попытался честно разобраться во многих жанрах и категориях, но всё же я лишь дилетант и наверняка многое можно сделать лучше. В общем, нужна не рыба а удочка.
Так что я пошёл другим путём. За основу был взято то, что почти все мои книги были с флибусты, а там у каждой книги есть свой уникальный номер. Поэтому, чтобы сохранить структуру, достаточно записать, в какой директории лежит какая книга, а по номеру можно получить как ссылку на страницу этой книги, так и саму книгу в архиве флибусты, который можно скачать на торрентах. Немного умея программировать, я написал набор скриптов для работы с такими библиотеками. Поддерживаются три основных действия: 1) создание дамп-файла из файловой директории, 2) восстановление директории из дамп-файла и архива флибусты, 3) создание из дамп-файла html-каталога библиотеки.
Скрипты лежат в репозитории:
https://github.com/flibrarian/flibrary
Там же находится детальное README, и тестовая коллекция из нескольких книг, для проверки настроек перед использованием основной.
Скрипты написаны на python2 (он, увы, успел за это время устареть, и как-нибудь надо будет переписать это на третьем), но для удобства три основных скрипта скомпилированы под windows:
https://github.com/flibrarian/flibrary/releases
Сама библиотека лежит отдельно в:
https://github.com/flibrarian/flibrary-main-collection
и иногда обновляется.
Альтернативно всё есть на меге:
https://mega.nz/folder/QJpGXRjb#1HftyMZtcSzBUh0omTHUsQ
Вкратце, для построения html-каталога надо положить в одну папку flibhtml.exe (или flibhtml.py с зависимостями), flibconfig.ini и library.dump, и запустить первый. Чтобы ссылки были куда надо, надо во flibconfig.ini записать адрес флибусты или рабочего зеркала в параметр FLIB_URL.
Для восстановления полной библиотеки надо скачать полный (только fb2 достаточно) архив флибусты с торрентов (есть на rutracker и booktracker). Занимает он около 300Гб, но хорошо сидируется (кроме того, он весьма полезен в быту и без моих скриптов). Дальше нужны flibextract.exe (или flibextract.py с зависимостями), flibconfig.ini и library.dump. Во flibconfig.ini надо заполнить ARCHIVE_PATH - путь к загруженному архиву (обычно заканчивается на fb2.Flibusta.Net) и EXTRACT_TO_PATH - путь к пустой директории, где будет создана библиотека. (Для windows обязательно надо сохранить 4 волшебных символа перед именем диска, иначе длинные пути могут не обработаться) Полная распаковка занимает около 3-х часов на HDD.
Дополнительно есть flibdump.exe (flibdump.py), позволяющий создавать свои библиотеки, и flibsqlupdate.py, при помощи которого можно обновить описание книг из sql-дампов флибусты. (flibsqlupdate не скомпилирован, потому что тот, кто может поднять локальную БД и импортировать sql-дампы, и с питоном разберётся без проблем.)
PS: Я понимаю, что всё это на грани, поэтому нисколько не призываю к пиратству. Скачивание пиратских книг - личный выбор и личная ответственная каждого. Библиотекой можно пользоваться и в ознакомительных целях с целью поиска книг для последующего легального приобретения. Например, построение и использование html-каталога не требует никаких противоправных действий (но без доступа к пиратским книгам составить его я бы не смог). Кроме того, лично я не имею от этого ни малейшей выгоды (и даже не узнаю, если кто-нибудь этим пользоваться).