cbz


Namecbz JSON
Version 3.3.6 PyPI version JSON
download
home_pageNone
SummaryCBZ simplifies creating, managing, and viewing comic book files in CBZ format, offering seamless packaging, metadata handling, and built-in viewing capabilities
upload_time2024-12-22 11:06:09
maintainerNone
docs_urlNone
authorhyugogirubato
requires_python>=3.8
licenseMIT
keywords python cbz ebooks manga comics webtoons
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # CBZ

CBZ is a Python library designed for creating, manipulating, and viewing comic book files in CBZ format. It offers a straightforward interface to pack comic pages into CBZ archives, extract metadata, and display comics using a built-in player.

## Features

- 🚀 Seamless Installation via [pip](#installation)
- 📚 Pack images into CBZ format for comics and manga
- 📝 Extract and manage title, series, format, and more
- 🖼️ Handle comic pages with attributes like type and format
- 📦 Unpack CBZ files to retrieve comic information
- 🛠️ Built-in player for viewing CBZ comics
- ❤️ Fully Open-Source! Pull Requests Welcome

## Installation

Install KeyDive from PyPI using Poetry:

```shell
pip install cbz
```

## Quick Start

Here's a quick example of how to create a CBZ file from a series of images:

````python
from pathlib import Path

from cbz.comic import ComicInfo
from cbz.constants import PageType, YesNo, Manga, AgeRating, Format
from cbz.page import PageInfo

PARENT = Path(__file__).parent

if __name__ == '__main__':
    paths = list(Path('path/to/your/images').iterdir())

    # Load each page from the 'images' folder into a list of PageInfo objects
    pages = [
        PageInfo.load(
            path=path,
            type=PageType.FRONT_COVER if i == 0 else PageType.BACK_COVER if i == len(paths) - 1 else PageType.STORY
        )
        for i, path in enumerate(paths)
    ]

    # Create a ComicInfo object using ComicInfo.from_pages() method
    comic = ComicInfo.from_pages(
        pages=pages,
        title='Your Comic Title',
        series='Your Comic Series',
        number=1,
        language_iso='en',
        format=Format.WEB_COMIC,
        black_white=YesNo.NO,
        manga=Manga.NO,
        age_rating=AgeRating.PENDING
    )

    # Show the comic using the show()
    comic.show()

    # Pack the comic book content into a CBZ file format
    cbz_content = comic.pack()

    # Define the path where the CBZ file will be saved
    cbz_path = PARENT / 'your_comic.cbz'

    # Write the CBZ content to the specified path
    cbz_path.write_bytes(cbz_content)
````

## Player

CBZ includes a command-line player for viewing CBZ comic book files. Simply run cbzplayer <file> to launch the player with the specified CBZ file.

````shell
usage: cbzplayer [-h] <file>

Launch CBZ player with a comic book file

positional arguments:
  <file>      Path to the CBZ comic book file.

options:
  -h, --help  show this help message and exit

````

## Detailed Usage

### Creating a ComicInfo Object

The `ComicInfo` class represents a comic book with metadata and pages. It supports initialization from a list of `PageInfo` objects:

```python
from cbz.comic import ComicInfo
from cbz.page import PageInfo

# Example usage:
pages = [
    PageInfo.load(path='/path/to/page1.jpg', type=PageType.FRONT_COVER),
    PageInfo.load(path='/path/to/page2.jpg', type=PageType.STORY),
    PageInfo.load(path='/path/to/page3.jpg', type=PageType.BACK_COVER),
]

comic = ComicInfo.from_pages(
    pages=pages,
    title='My Comic',
    series='Comic Series',
    number=1,
    language_iso='en',
    format=Format.WEB_COMIC,
    black_white=YesNo.NO,
    manga=Manga.NO,
    age_rating=AgeRating.PENDING
)
```

### Extracting Metadata

Retrieve comic information as a dictionary using `get_info()`:

```python
info = comic.get_info()
print(info)
```

### Packing into CBZ Format

Pack the comic into a CBZ file format:

```python
cbz_content = comic.pack()
```

### Unpacking from CBZ

Load a comic from an existing CBZ file:

```python
comic_from_cbz = ComicInfo.from_cbz('/path/to/your_comic.cbz')
```

## Contributors

<a href="https://github.com/hyugogirubato"><img src="https://images.weserv.nl/?url=avatars.githubusercontent.com/u/65763543?v=4&h=25&w=25&fit=cover&mask=circle&maxage=7d" alt="hyugogirubato"/></a>
<a href="https://github.com/piskunqa"><img src="https://images.weserv.nl/?url=avatars.githubusercontent.com/u/38443069?v=4&h=25&w=25&fit=cover&mask=circle&maxage=7d" alt="piskunqa"/></a>
<a href="https://github.com/OleskiiPyskun"><img src="https://images.weserv.nl/?url=avatars.githubusercontent.com/u/75667382?v=4&h=25&w=25&fit=cover&mask=circle&maxage=7d" alt="OleskiiPyskun"/></a>
<a href="https://github.com/domenicoblanco"><img src="https://images.weserv.nl/?url=avatars.githubusercontent.com/u/9018104?v=4&h=25&w=25&fit=cover&mask=circle&maxage=7d" alt="domenicoblanco"/></a>
<a href="https://github.com/RivMt"><img src="https://images.weserv.nl/?url=avatars.githubusercontent.com/u/40086827?v=4&h=25&w=25&fit=cover&mask=circle&maxage=7d" alt="RivMt"/></a>
<a href="https://github.com/flolep2607"><img src="https://images.weserv.nl/?url=avatars.githubusercontent.com/u/24566964?v=4&h=25&w=25&fit=cover&mask=circle&maxage=7d" alt="flolep2607"/></a>
<a href="https://github.com/gokender"><img src="https://images.weserv.nl/?url=avatars.githubusercontent.com/u/3709740?v=4&h=25&w=25&fit=cover&mask=circle&maxage=7d" alt="gokender"/></a>


## Licensing

This software is licensed under the terms of [MIT License](https://github.com/hyugogirubato/cbz/blob/main/LICENSE).  
You can find a copy of the license in the LICENSE file in the root folder.

* * * 

© hyugogirubato 2024
            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "cbz",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "python, cbz, ebooks, manga, comics, webtoons",
    "author": "hyugogirubato",
    "author_email": "65763543+hyugogirubato@users.noreply.github.com",
    "download_url": "https://files.pythonhosted.org/packages/78/e9/7bcb51a2b6ff9547bd2ddc8d82e2e01746624448d17592f81bc586278541/cbz-3.3.6.tar.gz",
    "platform": null,
    "description": "# CBZ\n\nCBZ is a Python library designed for creating, manipulating, and viewing comic book files in CBZ format. It offers a straightforward interface to pack comic pages into CBZ archives, extract metadata, and display comics using a built-in player.\n\n## Features\n\n- \ud83d\ude80 Seamless Installation via [pip](#installation)\n- \ud83d\udcda Pack images into CBZ format for comics and manga\n- \ud83d\udcdd Extract and manage title, series, format, and more\n- \ud83d\uddbc\ufe0f Handle comic pages with attributes like type and format\n- \ud83d\udce6 Unpack CBZ files to retrieve comic information\n- \ud83d\udee0\ufe0f Built-in player for viewing CBZ comics\n- \u2764\ufe0f Fully Open-Source! Pull Requests Welcome\n\n## Installation\n\nInstall KeyDive from PyPI using Poetry:\n\n```shell\npip install cbz\n```\n\n## Quick Start\n\nHere's a quick example of how to create a CBZ file from a series of images:\n\n````python\nfrom pathlib import Path\n\nfrom cbz.comic import ComicInfo\nfrom cbz.constants import PageType, YesNo, Manga, AgeRating, Format\nfrom cbz.page import PageInfo\n\nPARENT = Path(__file__).parent\n\nif __name__ == '__main__':\n    paths = list(Path('path/to/your/images').iterdir())\n\n    # Load each page from the 'images' folder into a list of PageInfo objects\n    pages = [\n        PageInfo.load(\n            path=path,\n            type=PageType.FRONT_COVER if i == 0 else PageType.BACK_COVER if i == len(paths) - 1 else PageType.STORY\n        )\n        for i, path in enumerate(paths)\n    ]\n\n    # Create a ComicInfo object using ComicInfo.from_pages() method\n    comic = ComicInfo.from_pages(\n        pages=pages,\n        title='Your Comic Title',\n        series='Your Comic Series',\n        number=1,\n        language_iso='en',\n        format=Format.WEB_COMIC,\n        black_white=YesNo.NO,\n        manga=Manga.NO,\n        age_rating=AgeRating.PENDING\n    )\n\n    # Show the comic using the show()\n    comic.show()\n\n    # Pack the comic book content into a CBZ file format\n    cbz_content = comic.pack()\n\n    # Define the path where the CBZ file will be saved\n    cbz_path = PARENT / 'your_comic.cbz'\n\n    # Write the CBZ content to the specified path\n    cbz_path.write_bytes(cbz_content)\n````\n\n## Player\n\nCBZ includes a command-line player for viewing CBZ comic book files. Simply run cbzplayer <file> to launch the player with the specified CBZ file.\n\n````shell\nusage: cbzplayer [-h] <file>\n\nLaunch CBZ player with a comic book file\n\npositional arguments:\n  <file>      Path to the CBZ comic book file.\n\noptions:\n  -h, --help  show this help message and exit\n\n````\n\n## Detailed Usage\n\n### Creating a ComicInfo Object\n\nThe `ComicInfo` class represents a comic book with metadata and pages. It supports initialization from a list of `PageInfo` objects:\n\n```python\nfrom cbz.comic import ComicInfo\nfrom cbz.page import PageInfo\n\n# Example usage:\npages = [\n    PageInfo.load(path='/path/to/page1.jpg', type=PageType.FRONT_COVER),\n    PageInfo.load(path='/path/to/page2.jpg', type=PageType.STORY),\n    PageInfo.load(path='/path/to/page3.jpg', type=PageType.BACK_COVER),\n]\n\ncomic = ComicInfo.from_pages(\n    pages=pages,\n    title='My Comic',\n    series='Comic Series',\n    number=1,\n    language_iso='en',\n    format=Format.WEB_COMIC,\n    black_white=YesNo.NO,\n    manga=Manga.NO,\n    age_rating=AgeRating.PENDING\n)\n```\n\n### Extracting Metadata\n\nRetrieve comic information as a dictionary using `get_info()`:\n\n```python\ninfo = comic.get_info()\nprint(info)\n```\n\n### Packing into CBZ Format\n\nPack the comic into a CBZ file format:\n\n```python\ncbz_content = comic.pack()\n```\n\n### Unpacking from CBZ\n\nLoad a comic from an existing CBZ file:\n\n```python\ncomic_from_cbz = ComicInfo.from_cbz('/path/to/your_comic.cbz')\n```\n\n## Contributors\n\n<a href=\"https://github.com/hyugogirubato\"><img src=\"https://images.weserv.nl/?url=avatars.githubusercontent.com/u/65763543?v=4&h=25&w=25&fit=cover&mask=circle&maxage=7d\" alt=\"hyugogirubato\"/></a>\n<a href=\"https://github.com/piskunqa\"><img src=\"https://images.weserv.nl/?url=avatars.githubusercontent.com/u/38443069?v=4&h=25&w=25&fit=cover&mask=circle&maxage=7d\" alt=\"piskunqa\"/></a>\n<a href=\"https://github.com/OleskiiPyskun\"><img src=\"https://images.weserv.nl/?url=avatars.githubusercontent.com/u/75667382?v=4&h=25&w=25&fit=cover&mask=circle&maxage=7d\" alt=\"OleskiiPyskun\"/></a>\n<a href=\"https://github.com/domenicoblanco\"><img src=\"https://images.weserv.nl/?url=avatars.githubusercontent.com/u/9018104?v=4&h=25&w=25&fit=cover&mask=circle&maxage=7d\" alt=\"domenicoblanco\"/></a>\n<a href=\"https://github.com/RivMt\"><img src=\"https://images.weserv.nl/?url=avatars.githubusercontent.com/u/40086827?v=4&h=25&w=25&fit=cover&mask=circle&maxage=7d\" alt=\"RivMt\"/></a>\n<a href=\"https://github.com/flolep2607\"><img src=\"https://images.weserv.nl/?url=avatars.githubusercontent.com/u/24566964?v=4&h=25&w=25&fit=cover&mask=circle&maxage=7d\" alt=\"flolep2607\"/></a>\n<a href=\"https://github.com/gokender\"><img src=\"https://images.weserv.nl/?url=avatars.githubusercontent.com/u/3709740?v=4&h=25&w=25&fit=cover&mask=circle&maxage=7d\" alt=\"gokender\"/></a>\n\n\n## Licensing\n\nThis software is licensed under the terms of [MIT License](https://github.com/hyugogirubato/cbz/blob/main/LICENSE).  \nYou can find a copy of the license in the LICENSE file in the root folder.\n\n* * * \n\n\u00a9 hyugogirubato 2024",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "CBZ simplifies creating, managing, and viewing comic book files in CBZ format, offering seamless packaging, metadata handling, and built-in viewing capabilities",
    "version": "3.3.6",
    "project_urls": {
        "Changelog": "https://github.com/hyugogirubato/cbz/blob/main/CHANGELOG.md",
        "Issues": "https://github.com/hyugogirubato/cbz/issues"
    },
    "split_keywords": [
        "python",
        " cbz",
        " ebooks",
        " manga",
        " comics",
        " webtoons"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fb9f4df5d0591b869e3f9633ab2fc84c66d315fd967236d19216d37fba114fb3",
                "md5": "ad1e86d5b1a575c91a4359254d6efb7e",
                "sha256": "2834519a862a8398a107713a9e7ca484023e37ab77fa87af814e3fb3215b650c"
            },
            "downloads": -1,
            "filename": "cbz-3.3.6-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "ad1e86d5b1a575c91a4359254d6efb7e",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 66998,
            "upload_time": "2024-12-22T11:06:07",
            "upload_time_iso_8601": "2024-12-22T11:06:07.744942Z",
            "url": "https://files.pythonhosted.org/packages/fb/9f/4df5d0591b869e3f9633ab2fc84c66d315fd967236d19216d37fba114fb3/cbz-3.3.6-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "78e97bcb51a2b6ff9547bd2ddc8d82e2e01746624448d17592f81bc586278541",
                "md5": "7ca166efef0dc33db1182642a9db8820",
                "sha256": "069cbf9eaeac08cfc87778587aaa7d097da1c50fe521eb7ae72d8d844ff2b288"
            },
            "downloads": -1,
            "filename": "cbz-3.3.6.tar.gz",
            "has_sig": false,
            "md5_digest": "7ca166efef0dc33db1182642a9db8820",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 66919,
            "upload_time": "2024-12-22T11:06:09",
            "upload_time_iso_8601": "2024-12-22T11:06:09.670757Z",
            "url": "https://files.pythonhosted.org/packages/78/e9/7bcb51a2b6ff9547bd2ddc8d82e2e01746624448d17592f81bc586278541/cbz-3.3.6.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-22 11:06:09",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "hyugogirubato",
    "github_project": "cbz",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "cbz"
}
        
Elapsed time: 5.05349s