Skip to main content

Book Strands

Current version Downloads

Build status codecov

A powerful CLI tool for managing e-book metadata and organizing your digital library.

Overview

Book Strands is designed to help you manage your e-book collection by providing tools to read, modify, and organize e-book metadata. It supports popular e-book formats and can automatically organize your files based on author, series, and other metadata.

Features

  • Read metadata from e-books including title, author, series info, and ISBN
  • Write/modify metadata in your e-books
  • Organize your library by automatically renaming and moving files based on customizable patterns
  • Support for multiple formats: EPUB, MOBI, AZW and AZW3
  • Intelligent processing using AI-powered tools to manage your collection

Installation

# Install from PyPI
pip install book-strands

Requirements

  • Python 3.12 or higher
  • Calibre installed

Usage

book-strands run /path/to/your/ebooks /path/to/organized/library \
  --output-format "{{author}}/{{series}}/{{title}}.{{extension}}"

Output format can be described in plain language as it is an interpreted format.

You can also import and organize existing e-book files:

book-strands import-local-books /path/to/existing/books /path/to/organized/library

Configuration

Book Strands uses a configuration file located at ~/.config/book-strands.conf. Here's an example configuration:

[zlib-logins]
user1@example.com = password1
user2@example.com = password2

The zlib-logins section contains email and password pairs for Z-Library accounts used for downloading books.

Local LLMs

You can also use any local (or remote) Ollama-hosted LLM by setting --ollama and configuring it with the below parameters:

--ollama-model TEXT   Ollama model to use  [default: qwen3:8b]
--ollama-url TEXT     Ollama server URL  [default: http://localhost:11434]

Development

To enable tracing of agent requests, start a Jaeger instance and set the below environment variable, then access Jaeger on http://localhost:16686

docker run -d --name jaeger \
  -e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \
  -e COLLECTOR_OTLP_ENABLED=true \
  -p 6831:6831/udp \
  -p 6832:6832/udp \
  -p 5778:5778 \
  -p 16686:16686 \
  -p 4317:4317 \
  -p 4318:4318 \
  -p 14250:14250 \
  -p 14268:14268 \
  -p 14269:14269 \
  -p 9411:9411 \
  jaegertracing/all-in-one:latest

export OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4318"

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Metadata

Release files for book-strands 0.7.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for book-strands 0.7.6
File Size Uploaded Provenance Actions
book_strands-0.7.6.tar.gz 193.1 kB Without provenance Details for book_strands-0.7.6.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for book-strands 0.7.6
File Interpreter ABI Platform Actions
book_strands-0.7.6-py3-none-any.whl Python 3 none any Details for book_strands-0.7.6-py3-none-any.whl

Total release size: 211.3 kB

Release files / book_strands-0.7.6.tar.gz

Download URL book_strands-0.7.6.tar.gz
Size 193.1 kB
Tags Source
SHA-256 checksum
How to use checksums
a494ce796e1b8db49a03b495f833dae71de517af4cdcfb8eb47b3c4bb37cbdae
BLAKE2b-256 checksum
How to use checksums
cbb9356724f0f96d402cf32fec9a162868b96814b4c75176c14d8ab0be54308f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.7

Release files / book_strands-0.7.6-py3-none-any.whl

Download URL book_strands-0.7.6-py3-none-any.whl
Size 18.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9d9699ee0f84a159a4b209cb369f9694785c49fa677edada499a8d218b2b9ae2
BLAKE2b-256 checksum
How to use checksums
d706ada346e16f00a67125abaac39139892ad7cb3b037b95cdf33204864ac7be
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.7

Security for book-strands 0.7.6

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page