Name | perdoo JSON |
Version |
0.5.0
JSON |
| download |
home_page | None |
Summary | Unify and organize your comic collection. |
upload_time | 2025-02-01 02:15:33 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.10 |
license | MIT |
keywords |
comic
comics
metadata
tagger
tagging
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# Perdoo
[![PyPI - Python](https://img.shields.io/pypi/pyversions/Perdoo.svg?logo=PyPI&label=Python&style=flat-square)](https://pypi.python.org/pypi/Perdoo/)
[![PyPI - Status](https://img.shields.io/pypi/status/Perdoo.svg?logo=PyPI&label=Status&style=flat-square)](https://pypi.python.org/pypi/Perdoo/)
[![PyPI - Version](https://img.shields.io/pypi/v/Perdoo.svg?logo=PyPI&label=Version&style=flat-square)](https://pypi.python.org/pypi/Perdoo/)
[![PyPI - License](https://img.shields.io/pypi/l/Perdoo.svg?logo=PyPI&label=License&style=flat-square)](https://opensource.org/licenses/MIT)
[![Pre-Commit](https://img.shields.io/badge/pre--commit-enabled-informational?logo=pre-commit&style=flat-square)](https://github.com/pre-commit/pre-commit)
[![Ruff](https://img.shields.io/badge/ruff-enabled-informational?logo=ruff&style=flat-square)](https://github.com/astral-sh/ruff)
[![Github - Contributors](https://img.shields.io/github/contributors/Buried-In-Code/Perdoo.svg?logo=Github&label=Contributors&style=flat-square)](https://github.com/Buried-In-Code/Perdoo/graphs/contributors)
[![Github Action - Testing](https://img.shields.io/github/actions/workflow/status/Buried-In-Code/Perdoo/testing.yaml?branch=main&logo=Github&label=Testing&style=flat-square)](https://github.com/Buried-In-Code/Perdoo/actions/workflows/testing.yaml)
[![Github Action - Publishing](https://img.shields.io/github/actions/workflow/status/Buried-In-Code/Perdoo/publishing.yaml?branch=main&logo=Github&label=Publishing&style=flat-square)](https://github.com/Buried-In-Code/Perdoo/actions/workflows/publishing.yaml)
Perdoo is designed to assist in sorting and organizing your comic collection by utilizing metadata files stored within comic archives.\
Perdoo standardizes all your digital comics into a unified format (cb7, cbt, or cbz).\
It adds and/or updates metadata files using supported services.\
Unlike other tagging tools, Perdoo employs a manual approach when metadata files are absent, prompting users to enter the necessary Publisher/Series/Issue details for search purposes.
## Installation
### Pipx
1. Ensure you have [Pipx](https://pipx.pypa.io/stable/) installed: `pipx --version`
2. Install the project: `pipx install perdoo`
## Usage
<details><summary>Perdoo Commands</summary>
<!-- RICH-CODEX hide_command: true -->
![`uv run Perdoo --help`](docs/img/perdoo-commands.svg)
</details>
<details><summary>Perdoo import</summary>
<!-- RICH-CODEX hide_command: true -->
![`uv run Perdoo import --help`](docs/img/perdoo-import.svg)
</details>
### Perdoo archive Commands
<details><summary>Perdoo archive view</summary>
<!-- RICH-CODEX hide_command: true -->
![`uv run Perdoo archive view --help`](docs/img/perdoo-archive-view.svg)
</details>
### Perdoo settings Commands
<details><summary>Perdoo settings view</summary>
<!-- RICH-CODEX hide_command: true -->
![`uv run Perdoo settings view --help`](docs/img/perdoo-settings-view.svg)
</details>
<details><summary>Perdoo settings locate</summary>
<!-- RICH-CODEX hide_command: true -->
![`uv run Perdoo settings locate --help`](docs/img/perdoo-settings-locate.svg)
</details>
<details><summary>Perdoo settings update</summary>
<!-- RICH-CODEX hide_command: true -->
![`uv run Perdoo settings update --help`](docs/img/perdoo-settings-update.svg)
</details>
## Supported Formats
### Input Extensions
- .cbr
- .cbt
- .cbz
- .cb7 _(Requires installing `cb7` dependencies: `pipx install perdoo[cb7]`)_
### Output Extensions
- .cbt
- .cbz _(Default)_
- .cb7 _(Requires installing `cb7` dependencies: `pipx install perdoo[cb7]`)_
### Metadata Files
- [MetronInfo.xml](https://github.com/Metron-Project/metroninfo)
- Perdoo supports a slightly modified [ComicInfo.xml](https://github.com/anansi-project/comicinfo) to ignore field ordering.
## Services
- [Comicvine](https://comicvine.gamespot.com) using the [Simyan](https://github.com/Metron-Project/Simyan) library.
- [Marvel](https://www.marvel.com/comics) using the [Esak](https://github.com/Metron-Project/Esak) library.
- [Metron](https://metron.cloud) using the [Mokkari](https://github.com/Metron-Project/Mokkari) library.
## File Renaming and Organization
File naming and organization uses a pattern-based approach, it tries to name based on the MetronInfo data with a fallback to ComicInfo.
Naming is done based on the Comic Format, set the value to `""` and it will fallback to the default setting.
- **_Default_**: `{publisher-name}/{series-name}-v{volume}/{series-name}-v{volume}_#{number:3}`
- **Annual**: `{publisher-name}/{series-name}-v{volume}/{series-name}-v{volume}_Annual_#{number:2}`
- **Digital Chapter**: `{publisher-name}/{series-name}-v{volume}/{series-name}-v{volume}_Chapter_#{number:3}`
- **Graphic Novel**: `{publisher-name}/{series-name}-v{volume}/{series-name}-v{volume}_GN_#{number:2}`
- **Hardcover**: `{publisher-name}/{series-name}-v{volume}/{series-name}-v{volume}_HC_#{number:2}`
- **Limited Series**: `""` _Falls back to Default_
- **Omnibus**: `{publisher-name}/{series-name}-v{volume}/{series-name}-v{volume}_OB_#{number:2}`
- **One-Shot**: `""` _Falls back to Default_
- **Single Issue**: `""` _Falls back to Default_
- **Trade Paperback**: `{publisher-name}/{series-name}-v{volume}/{series-name}-v{volume}_TPB_#{number:2}`
### Options
- **Padding**: Int and Int-like fields, such as `{number}`, can include optional zero-padding by specifying the length (e.g. `{number:3}` will pad 0's to be atleast 3 digits long, `12` => `012`).
- **Sanitization**: All metadata values are sanitized to remove characters outside the set `0-9a-zA-Z&!-`. Custom characters can still be added directly to patterns.
| Pattern Key | Description |
| -------------------- | ------------------------------------------------------ |
| `{cover-date}` | The issue cover date in `yyyy-mm-dd` format. |
| `{cover-day}` | The day from the issue cover date. |
| `{cover-month}` | The month from the issue cover date. |
| `{cover-year}` | The year from the issue cover date. |
| `{format}` | The full format name of the series. |
| `{id}` | The primary id of the issue. |
| `{imprint}` | The publisher's imprint. |
| `{isbn}` | The issue's ISBN. |
| `{issue-count}` | The total number of issues in the series. |
| `{lang}` | The issue's language. |
| `{number}` | The issue number. |
| `{publisher-id}` | The publisher's unique id. |
| `{publisher-name}` | The full name of the publisher. |
| `{series-id}` | The series' unique id. |
| `{series-name}` | The full name of the series. |
| `{series-sort-name}` | Sort-friendly name (omits leading "The", "A", etc...). |
| `{series-year}` | The year the series started. |
| `{store-date}` | The store date of the issue in `yyyy-mm-dd` format. |
| `{store-day}` | The day from the issue store date. |
| `{store-month}` | The month from the issue store date. |
| `{store-year}` | The year from the issue store date. |
| `{title}` | The issue title. |
| `{upc}` | The issue's UPC. |
| `{volume}` | The volume of the series. |
## Socials
[![Social - Fosstodon](https://img.shields.io/badge/%40BuriedInCode-teal?label=Fosstodon&logo=mastodon&style=for-the-badge)](https://fosstodon.org/@BuriedInCode)\
[![Social - Matrix](https://img.shields.io/matrix/The-Dev-Environment:matrix.org?label=The-Dev-Environment&logo=matrix&style=for-the-badge)](https://matrix.to/#/#The-Dev-Environment:matrix.org)
Raw data
{
"_id": null,
"home_page": null,
"name": "perdoo",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "comic, comics, metadata, tagger, tagging",
"author": null,
"author_email": "BuriedInCode <BuriedInCode@tuta.io>",
"download_url": "https://files.pythonhosted.org/packages/ca/60/a0f01f3c2e8572f91aafc44d37c579a6ff08164f1c11ec10c1fec88aa49c/perdoo-0.5.0.tar.gz",
"platform": null,
"description": "# Perdoo\n\n[![PyPI - Python](https://img.shields.io/pypi/pyversions/Perdoo.svg?logo=PyPI&label=Python&style=flat-square)](https://pypi.python.org/pypi/Perdoo/)\n[![PyPI - Status](https://img.shields.io/pypi/status/Perdoo.svg?logo=PyPI&label=Status&style=flat-square)](https://pypi.python.org/pypi/Perdoo/)\n[![PyPI - Version](https://img.shields.io/pypi/v/Perdoo.svg?logo=PyPI&label=Version&style=flat-square)](https://pypi.python.org/pypi/Perdoo/)\n[![PyPI - License](https://img.shields.io/pypi/l/Perdoo.svg?logo=PyPI&label=License&style=flat-square)](https://opensource.org/licenses/MIT)\n\n[![Pre-Commit](https://img.shields.io/badge/pre--commit-enabled-informational?logo=pre-commit&style=flat-square)](https://github.com/pre-commit/pre-commit)\n[![Ruff](https://img.shields.io/badge/ruff-enabled-informational?logo=ruff&style=flat-square)](https://github.com/astral-sh/ruff)\n\n[![Github - Contributors](https://img.shields.io/github/contributors/Buried-In-Code/Perdoo.svg?logo=Github&label=Contributors&style=flat-square)](https://github.com/Buried-In-Code/Perdoo/graphs/contributors)\n[![Github Action - Testing](https://img.shields.io/github/actions/workflow/status/Buried-In-Code/Perdoo/testing.yaml?branch=main&logo=Github&label=Testing&style=flat-square)](https://github.com/Buried-In-Code/Perdoo/actions/workflows/testing.yaml)\n[![Github Action - Publishing](https://img.shields.io/github/actions/workflow/status/Buried-In-Code/Perdoo/publishing.yaml?branch=main&logo=Github&label=Publishing&style=flat-square)](https://github.com/Buried-In-Code/Perdoo/actions/workflows/publishing.yaml)\n\n\nPerdoo is designed to assist in sorting and organizing your comic collection by utilizing metadata files stored within comic archives.\\\nPerdoo standardizes all your digital comics into a unified format (cb7, cbt, or cbz).\\\nIt adds and/or updates metadata files using supported services.\\\nUnlike other tagging tools, Perdoo employs a manual approach when metadata files are absent, prompting users to enter the necessary Publisher/Series/Issue details for search purposes.\n\n## Installation\n\n### Pipx\n\n1. Ensure you have [Pipx](https://pipx.pypa.io/stable/) installed: `pipx --version`\n2. Install the project: `pipx install perdoo`\n\n## Usage\n\n<details><summary>Perdoo Commands</summary>\n\n <!-- RICH-CODEX hide_command: true -->\n ![`uv run Perdoo --help`](docs/img/perdoo-commands.svg)\n\n</details>\n<details><summary>Perdoo import</summary>\n\n <!-- RICH-CODEX hide_command: true -->\n ![`uv run Perdoo import --help`](docs/img/perdoo-import.svg)\n\n</details>\n\n### Perdoo archive Commands\n\n<details><summary>Perdoo archive view</summary>\n\n <!-- RICH-CODEX hide_command: true -->\n ![`uv run Perdoo archive view --help`](docs/img/perdoo-archive-view.svg)\n\n</details>\n\n### Perdoo settings Commands\n\n<details><summary>Perdoo settings view</summary>\n\n <!-- RICH-CODEX hide_command: true -->\n ![`uv run Perdoo settings view --help`](docs/img/perdoo-settings-view.svg)\n\n</details>\n<details><summary>Perdoo settings locate</summary>\n\n <!-- RICH-CODEX hide_command: true -->\n ![`uv run Perdoo settings locate --help`](docs/img/perdoo-settings-locate.svg)\n\n</details>\n<details><summary>Perdoo settings update</summary>\n\n <!-- RICH-CODEX hide_command: true -->\n ![`uv run Perdoo settings update --help`](docs/img/perdoo-settings-update.svg)\n\n</details>\n\n## Supported Formats\n\n### Input Extensions\n\n- .cbr\n- .cbt\n- .cbz\n- .cb7 _(Requires installing `cb7` dependencies: `pipx install perdoo[cb7]`)_\n\n### Output Extensions\n\n- .cbt\n- .cbz _(Default)_\n- .cb7 _(Requires installing `cb7` dependencies: `pipx install perdoo[cb7]`)_\n\n### Metadata Files\n\n- [MetronInfo.xml](https://github.com/Metron-Project/metroninfo)\n- Perdoo supports a slightly modified [ComicInfo.xml](https://github.com/anansi-project/comicinfo) to ignore field ordering.\n\n## Services\n\n- [Comicvine](https://comicvine.gamespot.com) using the [Simyan](https://github.com/Metron-Project/Simyan) library.\n- [Marvel](https://www.marvel.com/comics) using the [Esak](https://github.com/Metron-Project/Esak) library.\n- [Metron](https://metron.cloud) using the [Mokkari](https://github.com/Metron-Project/Mokkari) library.\n\n## File Renaming and Organization\n\nFile naming and organization uses a pattern-based approach, it tries to name based on the MetronInfo data with a fallback to ComicInfo.\nNaming is done based on the Comic Format, set the value to `\"\"` and it will fallback to the default setting.\n\n- **_Default_**: `{publisher-name}/{series-name}-v{volume}/{series-name}-v{volume}_#{number:3}`\n- **Annual**: `{publisher-name}/{series-name}-v{volume}/{series-name}-v{volume}_Annual_#{number:2}`\n- **Digital Chapter**: `{publisher-name}/{series-name}-v{volume}/{series-name}-v{volume}_Chapter_#{number:3}`\n- **Graphic Novel**: `{publisher-name}/{series-name}-v{volume}/{series-name}-v{volume}_GN_#{number:2}`\n- **Hardcover**: `{publisher-name}/{series-name}-v{volume}/{series-name}-v{volume}_HC_#{number:2}`\n- **Limited Series**: `\"\"` _Falls back to Default_\n- **Omnibus**: `{publisher-name}/{series-name}-v{volume}/{series-name}-v{volume}_OB_#{number:2}`\n- **One-Shot**: `\"\"` _Falls back to Default_\n- **Single Issue**: `\"\"` _Falls back to Default_\n- **Trade Paperback**: `{publisher-name}/{series-name}-v{volume}/{series-name}-v{volume}_TPB_#{number:2}`\n\n### Options\n\n- **Padding**: Int and Int-like fields, such as `{number}`, can include optional zero-padding by specifying the length (e.g. `{number:3}` will pad 0's to be atleast 3 digits long, `12` => `012`).\n- **Sanitization**: All metadata values are sanitized to remove characters outside the set `0-9a-zA-Z&!-`. Custom characters can still be added directly to patterns.\n\n| Pattern Key | Description |\n| -------------------- | ------------------------------------------------------ |\n| `{cover-date}` | The issue cover date in `yyyy-mm-dd` format. |\n| `{cover-day}` | The day from the issue cover date. |\n| `{cover-month}` | The month from the issue cover date. |\n| `{cover-year}` | The year from the issue cover date. |\n| `{format}` | The full format name of the series. |\n| `{id}` | The primary id of the issue. |\n| `{imprint}` | The publisher's imprint. |\n| `{isbn}` | The issue's ISBN. |\n| `{issue-count}` | The total number of issues in the series. |\n| `{lang}` | The issue's language. |\n| `{number}` | The issue number. |\n| `{publisher-id}` | The publisher's unique id. |\n| `{publisher-name}` | The full name of the publisher. |\n| `{series-id}` | The series' unique id. |\n| `{series-name}` | The full name of the series. |\n| `{series-sort-name}` | Sort-friendly name (omits leading \"The\", \"A\", etc...). |\n| `{series-year}` | The year the series started. |\n| `{store-date}` | The store date of the issue in `yyyy-mm-dd` format. |\n| `{store-day}` | The day from the issue store date. |\n| `{store-month}` | The month from the issue store date. |\n| `{store-year}` | The year from the issue store date. |\n| `{title}` | The issue title. |\n| `{upc}` | The issue's UPC. |\n| `{volume}` | The volume of the series. |\n\n## Socials\n\n[![Social - Fosstodon](https://img.shields.io/badge/%40BuriedInCode-teal?label=Fosstodon&logo=mastodon&style=for-the-badge)](https://fosstodon.org/@BuriedInCode)\\\n[![Social - Matrix](https://img.shields.io/matrix/The-Dev-Environment:matrix.org?label=The-Dev-Environment&logo=matrix&style=for-the-badge)](https://matrix.to/#/#The-Dev-Environment:matrix.org)\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Unify and organize your comic collection.",
"version": "0.5.0",
"project_urls": {
"Homepage": "https://pypi.org/project/Perdoo",
"Issues": "https://github.com/Buried-In-Code/Perdoo/issues",
"Source": "https://github.com/Buried-In-Code/Perdoo"
},
"split_keywords": [
"comic",
" comics",
" metadata",
" tagger",
" tagging"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "8d4f9280626ebe6adf5799410fe475225ce58a1d3a179c8fe133f4895d7ba065",
"md5": "3c7714a892ce36505001c1c6764e608b",
"sha256": "f6c93af95aaf14513a7f049ac940539b70b3b6bf9cff10257f3ef9b0aca787dc"
},
"downloads": -1,
"filename": "perdoo-0.5.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3c7714a892ce36505001c1c6764e608b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 39155,
"upload_time": "2025-02-01T02:15:31",
"upload_time_iso_8601": "2025-02-01T02:15:31.266114Z",
"url": "https://files.pythonhosted.org/packages/8d/4f/9280626ebe6adf5799410fe475225ce58a1d3a179c8fe133f4895d7ba065/perdoo-0.5.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ca60a0f01f3c2e8572f91aafc44d37c579a6ff08164f1c11ec10c1fec88aa49c",
"md5": "a9f70ed98a214ce953f756b2efd68742",
"sha256": "ad958748d098152474e1bee7f3b1c2a512e5c25bdfaf127edca0107e14623c6b"
},
"downloads": -1,
"filename": "perdoo-0.5.0.tar.gz",
"has_sig": false,
"md5_digest": "a9f70ed98a214ce953f756b2efd68742",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 34429,
"upload_time": "2025-02-01T02:15:33",
"upload_time_iso_8601": "2025-02-01T02:15:33.435445Z",
"url": "https://files.pythonhosted.org/packages/ca/60/a0f01f3c2e8572f91aafc44d37c579a6ff08164f1c11ec10c1fec88aa49c/perdoo-0.5.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-02-01 02:15:33",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Buried-In-Code",
"github_project": "Perdoo",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "perdoo"
}