Name | ebk JSON |
Version |
0.1.0
JSON |
| download |
home_page | https://github.com/yourusername/ebk |
Summary | A lightweight tool for managing eBook metadata |
upload_time | 2025-01-22 11:36:38 |
maintainer | None |
docs_url | None |
author | Alex Towell |
requires_python | >=3.7 |
license | None |
keywords |
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# ebk

**ebk** is a lightweight and versatile tool for managing eBook metadata. It provides a rich Typer-based CLI (with colorized output courtesy of [Rich](https://github.com/Textualize/rich)), supports import/export of libraries from multiple sources (Calibre, raw ebooks, ZIP archives), enables advanced set-theoretic merges, and offers an interactive Streamlit web dashboard.
> **Note**: We have future plans to integrate Large Language Model (LLM) features for automated tagging, summarization, and metadata generation—stay tuned!
---
## Table of Contents
- [Features](#features)
- [Installation](#installation)
- [Configuration](#configuration)
- [CLI Usage](#cli-usage)
- [General CLI Structure](#general-cli-structure)
- [Importing Libraries](#importing-libraries)
- [Import from Zip (`import-zip`)](#import-from-zip-import-zip)
- [Import Calibre Library (`import-calibre`)](#import-calibre-library-import-calibre)
- [Import Raw Ebooks (`import-ebooks`)](#import-raw-ebooks-import-ebooks)
- [Exporting Libraries](#exporting-libraries)
- [Merging Libraries](#merging-libraries)
- [Searching](#searching)
- [Regex Search](#regex-search)
- [JMESPath Search](#jmespath-search)
- [Listing, Adding, Updating, and Removing Entries](#listing-adding-updating-and-removing-entries)
- [Launch Streamlit Dashboard](#launch-streamlit-dashboard)
- [Streamlit Dashboard Usage](#streamlit-dashboard-usage)
- [Library Management Class (Python API)](#library-management-class-python-api)
- [Future LLM Integration](#future-llm-integration)
- [Contributing](#contributing)
- [License](#license)
- [Known Issues & TODOs](#known-issues--todos)
- [Stay Updated](#stay-updated)
- [Support](#support)
---
## Features
- **Typer + Rich CLI**: A colorized, easy-to-use, and extensible command-line interface.
- **Multiple Import Paths**:
- Calibre libraries → JSON-based ebk library
- Raw eBook folders → Basic metadata inference (cover extraction, PDF metadata)
- Existing ebk libraries in `.zip` format
- **Advanced Metadata**:
- Set-theoretic merges (union, intersect, diff, symdiff)
- Unique entry identification (hash-based)
- Automatic cover image extraction
- **Flexible Exports**:
- Export to ZIP
- Hugo-compatible Markdown for static site integration
- **Streamlit Dashboard**:
- Interactive web interface for browsing, filtering, and managing your eBook library
- Search by title, author, subjects, language, etc.
- Download eBooks from the dashboard
- **Regex & JMESPath Searching**: Perform advanced queries on your metadata (CLI + Streamlit).
- **(Planned) LLM Extensions**: Automatic summarization, tagging, or classification using large language models.
---
## Installation
1. **Clone the Repository**
```bash
git clone https://github.com/queelius/ebk.git
cd ebk
```
2. **(Optional) Create a Virtual Environment**
Using `venv`:
```bash
python -m venv venv
source venv/bin/activate # (On Windows: venv\Scripts\activate)
```
Using `conda`:
```bash
conda create -n ebk python=3.8
conda activate ebk
```
3. **Install Dependencies & `ebk`**
```bash
pip install -r requirements.txt
pip install .
```
> **Note**: You need Python 3.8+.
---
## Configuration
The primary configuration file should be placed in `~/.ebkrc`.
Here’s a sample configuration:
```
[llm]
endpoint = <your_llm_endpoint>
api_key = <your_llm_api_key>
model = <your_llm_model>
[streamlit]
port = 8501
host = "0.0.0.0" # this allows external access
[export]
hugo = "/path/to/hugo_site"
```
## CLI Usage
ebk uses [Typer](https://typer.tiangolo.com/) under the hood, providing subcommands for imports, exports, merges, searches, listing, updates, etc. The CLI also leverages [Rich](https://github.com/Textualize/rich) for colorized/logging output.
### General CLI Structure
```
ebk --help
ebk <command> --help # see specific usage, options
```
The primary commands include:
- `import-zip`
- `import-calibre`
- `import-ebooks`
- `export`
- `merge`
- `search`
- `stats`
- `list`
- `add`
- `remove`
- `remove-index`
- `update-index`
- `update-id`
- `dash`
- …and more!
---
### Importing Libraries
#### Import from Zip (`import-zip`)
Load an existing ebk library archive (which has a `metadata.json` plus eBook/cover files) into a folder:
```bash
ebk import-zip /path/to/ebk_library.zip --output-dir /path/to/output
```
- If `--output-dir` is omitted, the default will be derived from the zip filename.
- This unpacks the ZIP while retaining the `metadata.json` structure.
#### Import Calibre Library (`import-calibre`)
Convert your [Calibre](https://calibre-ebook.com/) library into an ebk JSON library:
```bash
ebk import-calibre /path/to/calibre/library --output-dir /path/to/output
```
- Extracts metadata from `metadata.opf` files (if present) or from PDF/EPUB fallback.
- Copies ebook files + covers into the output directory, producing a consolidated `metadata.json`.
#### Import Raw Ebooks (`import-ebooks`)
Import a folder of eBooks (PDF, EPUB, etc.) by inferring minimal metadata:
```bash
ebk import-ebooks /path/to/raw/ebooks --output-dir /path/to/output
```
- Uses PyPDF2 for PDF metadata and attempts a best-effort cover extraction (first page → thumbnail).
- Creates `metadata.json` and copies files + covers to `/path/to/output`.
---
### Exporting Libraries
Available formats:
- **Hugo**:
```bash
ebk export hugo /path/to/ebk_library /path/to/hugo_site
```
This writes Hugo-compatible Markdown files (and copies covers/ebooks) into your Hugo `content` + `static` folders.
- **Zip**:
```bash
ebk export zip /path/to/ebk_library /path/to/export.zip
```
Creates a `.zip` archive containing the entire library.
---
### Merging Libraries
Use set-theoretic operations to combine multiple ebk libraries:
```bash
ebk merge <operation> /path/to/merged_dir [libs...]
```
Where `<operation>` can be:
- `union`: Combine all unique entries
- `intersect`: Keep only entries common to all libraries
- `diff`: Keep entries present in the first library but not others
- `symdiff`: Entries in exactly one library (exclusive-or)
**Example**:
```bash
ebk merge union /path/to/merged_lib /path/to/lib1 /path/to/lib2
```
---
### Searching
#### Regex Search
```bash
ebk search <regex> /path/to/ebk_library
```
By default, it searches the `title` field. You can specify additional fields:
```bash
ebk search "Python" /path/to/lib --regex-fields title creators
```
#### JMESPath Search
For more powerful, structured searches:
```bash
ebk search "[?language=='en']" /path/to/lib --jmespath
```
JMESPath expressions allow you to filter, project fields, etc. If you want to see these results as JSON:
```bash
ebk search "[?language=='en']" /path/to/lib --jmespath --json
```
---
### Listing, Adding, Updating, and Removing Entries
- **List**:
```bash
ebk list /path/to/lib
```
Prints all ebooks with indexes, clickable file links (via Rich).
- **Add**:
```bash
ebk add /path/to/lib --title "My Book" --creators "Alice" --ebooks "/path/to/book.pdf"
```
or
```bash
ebk add /path/to/lib --json /path/to/new_entries.json
```
to bulk-add entries from a JSON file.
- **Update**:
- By index:
```bash
ebk update-index /path/to/lib 12 --title "New Title"
```
- By unique ID:
```bash
ebk update-id /path/to/lib <unique_id> --cover /path/to/new_cover.jpg
```
- **Remove**:
- By regex in `title`, `creators`, or `identifiers`:
```bash
ebk remove /path/to/lib "SomeRegex" --apply-to title creators
```
- By index:
```bash
ebk remove-index /path/to/lib 3 4 5
```
- By unique ID:
```bash
ebk remove-id /path/to/lib <unique_id>
```
- **Stats**:
```bash
ebk stats /path/to/lib --keywords python data "machine learning"
```
Returns aggregated statistics (common languages, top creators, subject frequency, etc.).
---
### Launch Streamlit Dashboard
```bash
ebk dash --port 8501
```
- By default, the dashboard runs at `http://localhost:8501`.
---
## Streamlit Dashboard Usage
1. **Prepare a ZIP Archive**
From any ebk library folder (containing `metadata.json`), compress the entire folder into a `.zip`. Or use:
```bash
ebk export zip /path/to/lib /path/to/lib.zip
```
2. **Upload it** via the Streamlit interface (`ebk dash`).
3. **Browse & Filter** your library:
- Advanced filtering (author, subject, language, year, etc.).
- View cover images, descriptions, and download eBooks.
- JMESPath-based advanced search in the “Advanced Search” tab.
4. **Enjoy** a modern, interactive interface for eBook exploration.
---
## Library Management Class (Python API)
For programmatic usage, `ebk` includes a simple `LibraryManager` class:
```python
from ebk.manager import LibraryManager
manager = LibraryManager("metadata.json")
# List all books
all_books = manager.list_books()
# Add a book
manager.add_book({
"Title": "Example Book",
"Author": "Alice",
"Tags": "fiction"
})
# Delete or update
manager.delete_book("Old Title")
manager.update_book("Example Book", {"Tags": "fiction, fantasy"})
```
---
## LLM Integration
The ebk library may be queried using a natural language interface using the
streamlit dashboard's chat interface or the command line. For the comamnd line
interface, the `llm` subcommand is used:
```bash
ebk llm <ebklib> "What are the books about Python and machine learning published after 2020?"
```
The `llm` subcommand uses the `ebk` library to answer questions about the library
using a large language model. The configuration file should contain the endpoint
of the LLM server, the API key, and the model to use. Either an Ollama compatible
endpoint or an OpenAI compatible endpoint can be used.
---
## Contributing
Contributions are welcome! Here’s how to get involved:
1. **Fork the Repo**
2. **Create a Branch** for your feature or fix
3. **Commit & Push** your changes
4. **Open a Pull Request** describing the changes
We appreciate code contributions, bug reports, and doc improvements alike.
---
## License
Distributed under the [MIT License](https://github.com/queelius/ebk/blob/main/LICENSE).
---
## Known Issues & TODOs
1. **Exporter Module**:
- Switch from `os.system` to `shutil` for safer file operations
- Expand supported eBook formats & metadata fields
2. **Merger Module**:
- Resolve conflicts automatically or allow user-specified conflict resolution
- Performance optimization for large libraries
3. **Consistent Entry Identification**:
- Support multiple eBook files per entry seamlessly
- Improve hash-based deduplication for large files
4. **LLM-Based Metadata** _(Planned)_:
- Summaries or tags automatically generated via language models
- Potential GPU/accelerator support for on-device inference
---
## Stay Updated
- **GitHub**: [https://github.com/queelius/ebk](https://github.com/queelius/ebk)
- **Website**: [https://metafunctor.com](https://metafunctor.com)
---
## Support
- **Issues**: [Open an Issue](https://github.com/queelius/ebk/issues) on GitHub
- **Contact**: <lex@metafunctor.com>
---
Happy eBook managing! 📚✨
Raw data
{
"_id": null,
"home_page": "https://github.com/yourusername/ebk",
"name": "ebk",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": null,
"author": "Alex Towell",
"author_email": "lex@metafunctor.com",
"download_url": "https://files.pythonhosted.org/packages/e8/3a/afd4d76f81cb0147337897f4b4568de61330f884fa2c4eefc6cf3c82425d/ebk-0.1.0.tar.gz",
"platform": null,
"description": "# ebk\n\n\n\n**ebk** is a lightweight and versatile tool for managing eBook metadata. It provides a rich Typer-based CLI (with colorized output courtesy of [Rich](https://github.com/Textualize/rich)), supports import/export of libraries from multiple sources (Calibre, raw ebooks, ZIP archives), enables advanced set-theoretic merges, and offers an interactive Streamlit web dashboard. \n\n> **Note**: We have future plans to integrate Large Language Model (LLM) features for automated tagging, summarization, and metadata generation\u2014stay tuned!\n\n---\n\n## Table of Contents\n\n- [Features](#features)\n- [Installation](#installation)\n- [Configuration](#configuration)\n- [CLI Usage](#cli-usage)\n - [General CLI Structure](#general-cli-structure)\n - [Importing Libraries](#importing-libraries)\n - [Import from Zip (`import-zip`)](#import-from-zip-import-zip)\n - [Import Calibre Library (`import-calibre`)](#import-calibre-library-import-calibre)\n - [Import Raw Ebooks (`import-ebooks`)](#import-raw-ebooks-import-ebooks)\n - [Exporting Libraries](#exporting-libraries)\n - [Merging Libraries](#merging-libraries)\n - [Searching](#searching)\n - [Regex Search](#regex-search)\n - [JMESPath Search](#jmespath-search)\n - [Listing, Adding, Updating, and Removing Entries](#listing-adding-updating-and-removing-entries)\n - [Launch Streamlit Dashboard](#launch-streamlit-dashboard)\n- [Streamlit Dashboard Usage](#streamlit-dashboard-usage)\n- [Library Management Class (Python API)](#library-management-class-python-api)\n- [Future LLM Integration](#future-llm-integration)\n- [Contributing](#contributing)\n- [License](#license)\n- [Known Issues & TODOs](#known-issues--todos)\n- [Stay Updated](#stay-updated)\n- [Support](#support)\n\n---\n\n## Features\n\n- **Typer + Rich CLI**: A colorized, easy-to-use, and extensible command-line interface.\n- **Multiple Import Paths**:\n - Calibre libraries \u2192 JSON-based ebk library\n - Raw eBook folders \u2192 Basic metadata inference (cover extraction, PDF metadata)\n - Existing ebk libraries in `.zip` format\n- **Advanced Metadata**:\n - Set-theoretic merges (union, intersect, diff, symdiff)\n - Unique entry identification (hash-based)\n - Automatic cover image extraction\n- **Flexible Exports**:\n - Export to ZIP\n - Hugo-compatible Markdown for static site integration\n- **Streamlit Dashboard**:\n - Interactive web interface for browsing, filtering, and managing your eBook library\n - Search by title, author, subjects, language, etc.\n - Download eBooks from the dashboard\n- **Regex & JMESPath Searching**: Perform advanced queries on your metadata (CLI + Streamlit).\n- **(Planned) LLM Extensions**: Automatic summarization, tagging, or classification using large language models.\n\n---\n\n## Installation\n\n1. **Clone the Repository**\n\n ```bash\n git clone https://github.com/queelius/ebk.git\n cd ebk\n ```\n\n2. **(Optional) Create a Virtual Environment**\n\n Using `venv`:\n\n ```bash\n python -m venv venv\n source venv/bin/activate # (On Windows: venv\\Scripts\\activate)\n ```\n\n Using `conda`:\n\n ```bash\n conda create -n ebk python=3.8\n conda activate ebk\n ```\n\n3. **Install Dependencies & `ebk`**\n\n ```bash\n pip install -r requirements.txt\n pip install .\n ```\n\n> **Note**: You need Python 3.8+.\n\n---\n\n## Configuration\n\nThe primary configuration file should be placed in `~/.ebkrc`.\nHere\u2019s a sample configuration:\n\n```\n[llm]\nendpoint = <your_llm_endpoint>\napi_key = <your_llm_api_key>\nmodel = <your_llm_model>\n\n[streamlit]\nport = 8501\nhost = \"0.0.0.0\" # this allows external access\n\n[export]\nhugo = \"/path/to/hugo_site\"\n\n\n```\n\n## CLI Usage\n\nebk uses [Typer](https://typer.tiangolo.com/) under the hood, providing subcommands for imports, exports, merges, searches, listing, updates, etc. The CLI also leverages [Rich](https://github.com/Textualize/rich) for colorized/logging output.\n\n### General CLI Structure\n\n```\nebk --help\nebk <command> --help # see specific usage, options\n```\n\nThe primary commands include:\n- `import-zip`\n- `import-calibre`\n- `import-ebooks`\n- `export`\n- `merge`\n- `search`\n- `stats`\n- `list`\n- `add`\n- `remove`\n- `remove-index`\n- `update-index`\n- `update-id`\n- `dash`\n- \u2026and more!\n\n---\n\n### Importing Libraries\n\n#### Import from Zip (`import-zip`)\n\nLoad an existing ebk library archive (which has a `metadata.json` plus eBook/cover files) into a folder:\n\n```bash\nebk import-zip /path/to/ebk_library.zip --output-dir /path/to/output\n```\n\n- If `--output-dir` is omitted, the default will be derived from the zip filename. \n- This unpacks the ZIP while retaining the `metadata.json` structure.\n\n#### Import Calibre Library (`import-calibre`)\n\nConvert your [Calibre](https://calibre-ebook.com/) library into an ebk JSON library:\n\n```bash\nebk import-calibre /path/to/calibre/library --output-dir /path/to/output\n```\n\n- Extracts metadata from `metadata.opf` files (if present) or from PDF/EPUB fallback.\n- Copies ebook files + covers into the output directory, producing a consolidated `metadata.json`.\n\n#### Import Raw Ebooks (`import-ebooks`)\n\nImport a folder of eBooks (PDF, EPUB, etc.) by inferring minimal metadata:\n\n```bash\nebk import-ebooks /path/to/raw/ebooks --output-dir /path/to/output\n```\n\n- Uses PyPDF2 for PDF metadata and attempts a best-effort cover extraction (first page \u2192 thumbnail).\n- Creates `metadata.json` and copies files + covers to `/path/to/output`.\n\n---\n\n### Exporting Libraries\n\nAvailable formats:\n- **Hugo**: \n ```bash\n ebk export hugo /path/to/ebk_library /path/to/hugo_site\n ```\n This writes Hugo-compatible Markdown files (and copies covers/ebooks) into your Hugo `content` + `static` folders.\n\n- **Zip**: \n ```bash\n ebk export zip /path/to/ebk_library /path/to/export.zip\n ```\n Creates a `.zip` archive containing the entire library.\n\n---\n\n### Merging Libraries\n\nUse set-theoretic operations to combine multiple ebk libraries:\n\n```bash\nebk merge <operation> /path/to/merged_dir [libs...]\n```\n\nWhere `<operation>` can be:\n- `union`: Combine all unique entries\n- `intersect`: Keep only entries common to all libraries\n- `diff`: Keep entries present in the first library but not others\n- `symdiff`: Entries in exactly one library (exclusive-or)\n\n**Example**:\n\n```bash\nebk merge union /path/to/merged_lib /path/to/lib1 /path/to/lib2\n```\n\n---\n\n### Searching\n\n#### Regex Search\n\n```bash\nebk search <regex> /path/to/ebk_library\n```\n\nBy default, it searches the `title` field. You can specify additional fields:\n\n```bash\nebk search \"Python\" /path/to/lib --regex-fields title creators\n```\n\n#### JMESPath Search\n\nFor more powerful, structured searches:\n\n```bash\nebk search \"[?language=='en']\" /path/to/lib --jmespath\n```\n\nJMESPath expressions allow you to filter, project fields, etc. If you want to see these results as JSON:\n\n```bash\nebk search \"[?language=='en']\" /path/to/lib --jmespath --json\n```\n\n---\n\n### Listing, Adding, Updating, and Removing Entries\n\n- **List**:\n ```bash\n ebk list /path/to/lib\n ```\n Prints all ebooks with indexes, clickable file links (via Rich).\n\n- **Add**:\n ```bash\n ebk add /path/to/lib --title \"My Book\" --creators \"Alice\" --ebooks \"/path/to/book.pdf\"\n ```\n or\n ```bash\n ebk add /path/to/lib --json /path/to/new_entries.json\n ```\n to bulk-add entries from a JSON file.\n\n- **Update**:\n - By index: \n ```bash\n ebk update-index /path/to/lib 12 --title \"New Title\"\n ```\n - By unique ID: \n ```bash\n ebk update-id /path/to/lib <unique_id> --cover /path/to/new_cover.jpg\n ```\n\n- **Remove**:\n - By regex in `title`, `creators`, or `identifiers`:\n ```bash\n ebk remove /path/to/lib \"SomeRegex\" --apply-to title creators\n ```\n - By index:\n ```bash\n ebk remove-index /path/to/lib 3 4 5\n ```\n - By unique ID:\n ```bash\n ebk remove-id /path/to/lib <unique_id>\n ```\n\n- **Stats**:\n ```bash\n ebk stats /path/to/lib --keywords python data \"machine learning\"\n ```\n Returns aggregated statistics (common languages, top creators, subject frequency, etc.).\n\n---\n\n### Launch Streamlit Dashboard\n\n```bash\nebk dash --port 8501\n```\n\n- By default, the dashboard runs at `http://localhost:8501`.\n\n---\n\n## Streamlit Dashboard Usage\n\n1. **Prepare a ZIP Archive** \n From any ebk library folder (containing `metadata.json`), compress the entire folder into a `.zip`. Or use:\n ```bash\n ebk export zip /path/to/lib /path/to/lib.zip\n ```\n\n2. **Upload it** via the Streamlit interface (`ebk dash`).\n3. **Browse & Filter** your library:\n - Advanced filtering (author, subject, language, year, etc.).\n - View cover images, descriptions, and download eBooks.\n - JMESPath-based advanced search in the \u201cAdvanced Search\u201d tab.\n4. **Enjoy** a modern, interactive interface for eBook exploration.\n\n---\n\n## Library Management Class (Python API)\n\nFor programmatic usage, `ebk` includes a simple `LibraryManager` class:\n\n```python\nfrom ebk.manager import LibraryManager\n\nmanager = LibraryManager(\"metadata.json\")\n\n# List all books\nall_books = manager.list_books()\n\n# Add a book\nmanager.add_book({\n \"Title\": \"Example Book\",\n \"Author\": \"Alice\",\n \"Tags\": \"fiction\"\n})\n\n# Delete or update\nmanager.delete_book(\"Old Title\")\nmanager.update_book(\"Example Book\", {\"Tags\": \"fiction, fantasy\"})\n```\n\n---\n\n## LLM Integration\n\nThe ebk library may be queried using a natural language interface using the\nstreamlit dashboard's chat interface or the command line. For the comamnd line\ninterface, the `llm` subcommand is used:\n\n```bash\nebk llm <ebklib> \"What are the books about Python and machine learning published after 2020?\"\n```\n\nThe `llm` subcommand uses the `ebk` library to answer questions about the library\nusing a large language model. The configuration file should contain the endpoint\nof the LLM server, the API key, and the model to use. Either an Ollama compatible\nendpoint or an OpenAI compatible endpoint can be used.\n\n---\n\n## Contributing\n\nContributions are welcome! Here\u2019s how to get involved:\n\n1. **Fork the Repo** \n2. **Create a Branch** for your feature or fix\n3. **Commit & Push** your changes\n4. **Open a Pull Request** describing the changes\n\nWe appreciate code contributions, bug reports, and doc improvements alike.\n\n---\n\n## License\n\nDistributed under the [MIT License](https://github.com/queelius/ebk/blob/main/LICENSE).\n\n---\n\n## Known Issues & TODOs\n\n1. **Exporter Module**:\n - Switch from `os.system` to `shutil` for safer file operations\n - Expand supported eBook formats & metadata fields\n2. **Merger Module**:\n - Resolve conflicts automatically or allow user-specified conflict resolution\n - Performance optimization for large libraries\n3. **Consistent Entry Identification**:\n - Support multiple eBook files per entry seamlessly\n - Improve hash-based deduplication for large files\n4. **LLM-Based Metadata** _(Planned)_:\n - Summaries or tags automatically generated via language models\n - Potential GPU/accelerator support for on-device inference\n\n---\n\n## Stay Updated\n\n- **GitHub**: [https://github.com/queelius/ebk](https://github.com/queelius/ebk)\n- **Website**: [https://metafunctor.com](https://metafunctor.com)\n\n---\n\n## Support\n\n- **Issues**: [Open an Issue](https://github.com/queelius/ebk/issues) on GitHub\n- **Contact**: <lex@metafunctor.com>\n\n---\n\nHappy eBook managing! \ud83d\udcda\u2728\n",
"bugtrack_url": null,
"license": null,
"summary": "A lightweight tool for managing eBook metadata",
"version": "0.1.0",
"project_urls": {
"Homepage": "https://github.com/yourusername/ebk"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "079cd601eda0b1ab81620a451c92ea8c1bc590b63b5015fcc148e4481b64b9fc",
"md5": "92bdf967a9d72d6080ff7dc24fae7b48",
"sha256": "0cafecc07e2f44f52f462337c9cb169992b748070b18fb0270f90d6fca5529d4"
},
"downloads": -1,
"filename": "ebk-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "92bdf967a9d72d6080ff7dc24fae7b48",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 46170,
"upload_time": "2025-01-22T11:36:37",
"upload_time_iso_8601": "2025-01-22T11:36:37.409553Z",
"url": "https://files.pythonhosted.org/packages/07/9c/d601eda0b1ab81620a451c92ea8c1bc590b63b5015fcc148e4481b64b9fc/ebk-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e83aafd4d76f81cb0147337897f4b4568de61330f884fa2c4eefc6cf3c82425d",
"md5": "aed737f2e7982c8c81b7b006bfc0fb92",
"sha256": "faffe395250781f2a4b3209919c69e51ddbbcb57344419d6ed677c77bd0a749f"
},
"downloads": -1,
"filename": "ebk-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "aed737f2e7982c8c81b7b006bfc0fb92",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 44307,
"upload_time": "2025-01-22T11:36:38",
"upload_time_iso_8601": "2025-01-22T11:36:38.638264Z",
"url": "https://files.pythonhosted.org/packages/e8/3a/afd4d76f81cb0147337897f4b4568de61330f884fa2c4eefc6cf3c82425d/ebk-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-22 11:36:38",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "yourusername",
"github_project": "ebk",
"github_not_found": true,
"lcname": "ebk"
}