Skip to main content

Unify and organize your comic collection.

Project description

Perdoo

PyPI - Python PyPI - Status PyPI - Version PyPI - License

prek Ruff Ty

Linting Testing Publishing

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 (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 installed: pipx --version
  2. Install the project: pipx install perdoo

Usage

perdoo Commands

uv run perdoo

perdoo process

uv run perdoo process --help

perdoo archive

uv run perdoo archive --help

perdoo settings

uv run perdoo settings --help

Supported Formats

Input Extensions

  • .cbr
  • .cbt
  • .cbz
  • .cb7 (Requires installing cb7 dependencies: pipx install perdoo[cb7])

Output Extensions

  • .cbz
  • .cbt
  • .cb7 (Requires installing cb7 dependencies: pipx install perdoo[cb7])

Metadata Files

Services

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.

Settings

To set Perdoo setting details, update the file: ~/.config/perdoo/settings.toml. File will be created on first run.

Example File

[output]
folder = "~/.local/share/perdoo"
format = "cbz"
image_extensions = [".png", ".jpg", ".jpeg", ".webp", ".jxl"]

[output.comic_info]
create = true
handle_pages = true

[output.metron_info]
create = true

[output.naming]
seperator = "-"
default = "{publisher-name}/{series-name}-v{volume}/{series-name}-v{volume}_#{number:3}"
annual = ""
digital_chapter = ""
graphic_novel = ""
hardcover = ""
limited_series = ""
omnibus = ""
one_shot = ""
single_issue = ""
trade_paperback = ""

[services]
order = ["Metron", "Comicvine"]

[services.comicvine]
api_key = "<Comicvine API Key>"

[services.metron]
username = "<Metron Username>"
password = "<Metron Password>"

Details

  • output.folder The folder where the output files will be stored. Defaults to ~/.local/share/perdoo.

  • output.format The output file format for the comic archives. Defaults to cbz. Options are cbz, cbt or cb7

  • output.image_extensions The list of extensions perdoo determines to be images as part of the cleanup step. Defaults to [".png", ".jpg", ".jpeg", ".webp", ".jxl"]

  • output.comic_info.create Whether to create a ComicInfo.xml file in the output archive. Defaults to true.

  • output.comic_info.handle_pages Whether to handle page data in the ComicInfo.xml file. Defaults to true.

  • output.metron_info.create Whether to create a MetronInfo.xml file in the output archive. Defaults to true.

  • output.naming.seperator The word separator used in the output file names. Defaults to -. Options are -, _, ., or (space).

  • output.naming.* The naming patterns for different comic formats. Each pattern can be customized or left empty to use the default setting. The patterns support various metadata fields as described in the above "File Renaming and Organization" section.

  • services.order The order in which the services will be used for metadata retrieval. Metadata will be fetched from the first service that returns a result. Don't include the service name in the list if you don't want to use it. Defaults to ["Metron", "Comicvine"]. Options are Metron or Comicvine.

Socials

Social - Fosstodon
Social - Matrix

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

perdoo-0.9.2.tar.gz (153.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

perdoo-0.9.2-py3-none-any.whl (39.1 kB view details)

Uploaded Python 3

File details

Details for the file perdoo-0.9.2.tar.gz.

File metadata

  • Download URL: perdoo-0.9.2.tar.gz
  • Upload date:
  • Size: 153.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for perdoo-0.9.2.tar.gz
Algorithm Hash digest
SHA256 31040cb5ab48ff15b73e3e201b897715741bd5d6b9cb517e33612c1cabe8f660
MD5 387cb87ad938274a6be7030fe1ecf191
BLAKE2b-256 cf90a08dd3c915dcf69f0afcf640eea0963e236452b1b53cb11073a1d7201cea

See more details on using hashes here.

Provenance

The following attestation bundles were made for perdoo-0.9.2.tar.gz:

Publisher: publishing.yaml on Buried-In-Code/Perdoo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file perdoo-0.9.2-py3-none-any.whl.

File metadata

  • Download URL: perdoo-0.9.2-py3-none-any.whl
  • Upload date:
  • Size: 39.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for perdoo-0.9.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d623a68baed197462ad0f3fca21a165a28bac848971841668fdee9daeaa6885d
MD5 004c70b5ca040eee436be99734aed7d3
BLAKE2b-256 a522942486f23416cab6ab0ab851c1f11b79502b5d3abfc72c7ce27a6fd2f7b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for perdoo-0.9.2-py3-none-any.whl:

Publisher: publishing.yaml on Buried-In-Code/Perdoo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page