Skip to main content

jellyplex-gen

Generate plausible test media libraries in Plex or Jellyfin format.

A sibling project to jellyplex-sync: where jellyplex-sync converts between media library formats, jellyplex-gen produces realistic-looking source material to test it (or anything else that operates on Plex/Jellyfin libraries) against.

Generated libraries consist of placeholder files (0-byte by default, or pseudorandom bytes up to a configurable per-file maximum) arranged according to the chosen format's naming conventions. A format-neutral JSON manifest is written alongside, describing the logical content of the library.

Status

Early. Plex format only, flat hierarchy, single resolution variant per movie. Designed so other formats and structures can be added without touching the existing code paths.

Quick start

uv run jellyplex-gen plex --seed=hello --movies=50 --out=./testlib

The same --seed always produces the same library. Seeds are arbitrary alphanumeric strings — they get hashed to an integer internally, so reproducibility doesn't depend on Python's PYTHONHASHSEED.

To get just the manifest (no files written):

uv run jellyplex-gen manifest --seed=hello --movies=50

For copy-semantics or content-aware testing, fill files with up to N bytes of pseudorandom content (default is 0, i.e. empty files):

uv run jellyplex-gen plex --seed=hello --movies=20 --max-content-size=4096 --out=./testlib

File contents are seeded per-file from the manifest seed and the file's relative path, so the same --seed + same --max-content-size always yield byte-identical libraries.

Architecture

The generator is built around three swappable abstractions:

  • TitleSource — supplies movie titles. The default CuratedTitleSource mixes word pools and hand-crafted titles. The protocol leaves room for other sources without touching anything else.
  • NamingConvention — format-specific: turns a logical movie into directory and file names. Currently only PlexNamingConvention.
  • LibraryStructure — orthogonal to format: decides the parent path of each movie directory. Currently only FlatLibraryStructure.

Generation is two-phase: build_manifest() produces a format-neutral description, materialize() writes the actual filesystem layout. The manifest can be saved, loaded, and diffed independently of any concrete layout.

License

BSD-3-Clause. See LICENSE.

Metadata

Release files for jellyplex-gen 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jellyplex-gen 0.1.1
File Size Uploaded Provenance
jellyplex_gen-0.1.1.tar.gz 10.9 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for jellyplex-gen 0.1.1
File Interpreter ABI Platform
jellyplex_gen-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 26.2 kB

Release files / jellyplex_gen-0.1.1.tar.gz

Download URL jellyplex_gen-0.1.1.tar.gz
Size 10.9 kB
Tags Source
SHA-256 checksum
How to use checksums
2701033cddfd3b5d7a11b3dd0eb83d7332477c8fe25377848a6ad224a94da75e
BLAKE2b-256 checksum
How to use checksums
9285a0e9fa3818d59b73c1338fdfdc46b77bbd97f44f2b0d65dbc65566d51cca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / jellyplex_gen-0.1.1-py3-none-any.whl

Download URL jellyplex_gen-0.1.1-py3-none-any.whl
Size 15.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
250f9d176a0e34ecbd671804b8aac1c3c0ce8c170547c01676723a0d9a44d88c
BLAKE2b-256 checksum
How to use checksums
2b90ddf5ee4528991cb75999bed4f88a97fd789750d7c80c000c45928f484cac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for jellyplex-gen 0.1.1

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.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page