Book Strands
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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.