Делаю для себя, вдруг кому тоже полезно будет, плюс пожелания/критику собрать.
Вот допустим ты из тех людей которые скачали себе на комп архив пиратской библиотеки Флибуста. Многие, конечно, спросят "нафига", но это другой разговор :)
Ну пусть не прям всю Флибусту, а архив только с FB2 книгами (который на май 2022 года занимает под 330 Гб).
Но вот лично тебе, допустим, интересны только детективы, или эротика, ну или вообще только книги по высшей математике. И тебе остальное просто не надо.
Или вот картинки в книгах. На Флибусте есть как иллюстрированные справочники, так и фантастика где разве что постер из картинок и тот как бы не особо нужен. А тебе нужны только книги где картинки не важны, то может ну их нафик, эти картинки, только место занимают!
Вот исходя из этого я сначала захотел просто поудалять картинки из книг, т.к. лично мне интересно только художественная литература где картинок и нет. Потом подумал добавить фильтр по жанрам и наглядно увидел сколько всего в архиве Флибусты разного, чего мне совсем, в общем то, и не надо.
Можете тоже оценить списочек.
Непосредственно о программе.
Написано быдлокодером-любителем (т.е. мной) на языке Python.
Что реализовано: удаление картинок (опционально), возможность добавления черного списка жанров, и многопоточность. Написана типа справка по программе.
Правда, в Python родные библиотеки для ZIP не умеют в многопоточность, поэтому вместо многопоточного сжатия одного архива запускается одновременная работа с несколькими архивами (чтение старого и запись в новый), что сами понимаете, не очень хорошо дружит с HDD при множестве одновременных операций записи и чтения. Рекомендую писать репак на другой HDD, а лучше SSD.
Также репакер можно использовать на раздачах других библиотек (например Либрусека) если они организованы точно также (zip архивы и индекс-файл inpx)
Чего надо бы сделать, но пока не сделал:
создание нового индекс-файла чтобы в MyHomeLib загружалась информация только об оставшихся в репаке книгах (если вы использовали фильтр по жанрам). Может переписать на другом языке, могу в Golang.
Но лень :)
Результаты работы:
Оригинальный архив только FB2 Флибуста к маю 2022 - 337 Гб.
Репак с удалением картинок - 94 Гб.
(если пережать zip через 7-Zip, то лишь чуть-чуть улучшить результат, можно сжать другим сжатием и довольно сильно, но тогда MyHomeLib не сможет с ними работать, так что смысл от этого пропадает)
Только книги с жанром "юмористическая фантастика" - 2.7 Гб
Только "юмористическая фантастика" и с удалением картинок - 1.3 Гб
P.S. Была еще мысль "примотать синей изолентой" сюда сжатие PPMd (в который не умеет MyHomelib) которое сжимает текст значительно лучше чем ZIP Deflate, но тогда пришлось бы делать шаманство чтобы и MyHomeLib работало, и правильную книгу отдельно вытаскивать уже своей программкой.
Исходники программы здесь https://gist.github.com/Filarius/684a053ca1395e30f0db18842fe...
Готовую к употреблению программу с попыткой написать справку положил на Я.Диск https://disk.yandex.ru/d/kt89jYCOzVy4Qw (надеюсь должна запустится на вин 7).
Апдейт:
Добавил фильтр по языкам, упростил работу с фильтром жанров.