Skip to content

CLI application that allows you to quickly and comfortably parse metadata from several e-book formats.

Notifications You must be signed in to change notification settings

cyrillus31/metabook-cli-ebook-metadata-parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

METABOOK

(CLI e-book metadata parser)

Реализовал CLI инструмент metabook для парсинга электронных книг форматов epub и fb2, с удобной архитектурой под расширение.

Использованы только встроенные библиотеки: argparse, xml.


Описание функцианла иструмента:

usage: E-book metadata parser [-h] [-v] filename [filename ...]

Returns title, author, publisher and date published from a specified EPUB or FB2

positional arguments:
  filename       insert a relative or absolute filepaths

options:
  -h, --help     show this help message and exit
  -v, --verbose  display additional information

Архитектура

Я поставил себе целью разработать поддерживаемое, тестируемое и удобно расширяемое приложение, соблюдая принципы SOLID, DRY, KISS.
Класс EbookParser работает с интерфейсом абстрактного класса, представляющего электронную книгу, который требует реализации менеджера контекста (т.к. зачастую для парсинга книги ее требуется распаковать, а после парсинга почистить распакованные файлы) и метода get_metadata(), осуществляющего сам парсинг и возвращающего необходимые данные в датаклассе с модифицированным методом __str__ для удобства вывода в stdout. В свою очередь, строчная репрезентация датакласса зависит от наличия флага --verbose, который добавляет к выводу информацию о языкe книги и ее описание.

От абстрактного класса Ebook наследуются классы, соответствующие поддерживаемым форматам электронных книг: EPUB_book и FB2_book. За создание объектов этих классов отвечает фабрика. В случае с EPUB форматом, метод __enter__ распаковывает файлы книги во временную папку, где метод _find_opf найдет файл с расширением .opf, содержащий метаданные книги для последующего парсинга, после чего метод __exit__ удалит временную папку. В случае с форматом FB2, который не требует разархивации, метод __enter__ просто возвращает self.


Запуск

git clone https://github.com/cyrillus31/metabook-cli-ebook-metadata-parser.git
cd metabook-cli-ebook-metadata-parser/metabook/

К проекту прилагаются файлы для проверки работы программы:

python main.py ../Books_examples/* --verbose

CLI инструмент может работать с абсолютными и относительными путями файлов и любым количеством аргументов.

About

CLI application that allows you to quickly and comfortably parse metadata from several e-book formats.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages