# Plexer
Normalize media files for use with Plex Media Server.
![GitHub License](https://img.shields.io/github/license/magneticstain/plexer)
![Supported Python Versions](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2Fmagneticstain%2Fplexer%2Frefs%2Fheads%2Fmain%2Fpyproject.toml)
[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/magneticstain/plexer/badge)](https://scorecard.dev/viewer/?uri=github.com/magneticstain/plexer)
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/38b2a65ed9ac4c85afc98e259d73474f)](https://app.codacy.com/gh/magneticstain/plexer/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
[![Run Full Suite of Checks and Tests](https://github.com/magneticstain/plexer/actions/workflows/run_full_test_suite.yml/badge.svg)](https://github.com/magneticstain/plexer/actions/workflows/run_full_test_suite.yml)
![GitHub Issues or Pull Requests](https://img.shields.io/github/issues/magneticstain/plexer)
![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/magneticstain/plexer/total)
[![Hatch project](https://img.shields.io/badge/%F0%9F%A5%9A-Hatch-4051b5.svg)](https://github.com/pypa/hatch)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
## Requirements
### Software Dependencies
Start by creating a virtual environment and installing the required packages. Typically that looks something like:
```bash
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```
### Media Metadata
The biggest requirement before running plexer is to ensure that you've created a `.plexer` file in each of your target directories.
This is a JSON-formatted file that includes the movie metadata required by Plexer to perform its jobs.
#### Plexer File Generator
To easily create the `.plexer` file, you can use the one-liner below while in the movie's directory:
```bash
echo -n "Media Name: ";read MEDIA_NAME;echo -n "Release Year (YYYY): ";read RELEASE_YEAR;echo "{\"name\": \"${MEDIA_NAME}\", \"release_year\": \"${RELEASE_YEAR}\"}" > .plexer
```
It can be modified to support different types of media as well.
## Usage
The source directory is the directory containing the raw media. The destination is where you'd like to save the processed media to.
```text
usage: plexer.py [-h] [-v] [--version] -s SOURCE_DIR -d DESTINATION_DIR
options:
-h, --help show this help message and exit
-v, --verbose Verbosity (-v, -vv, etc)
--version show program's version number and exit
-s SOURCE_DIR, --source-dir SOURCE_DIR
-d DESTINATION_DIR, --destination-dir DESTINATION_DIR
```
## Development
### Software Stack
For developing with Plexer, there are several tools that are in use:
1. Build Backend, Packaging, and Dependency Management:
1. [Hatch](https://hatch.pypa.io/1.12/)
1. Analysis Tools:
1. [Ruff](https://docs.astral.sh/ruff/)
1. [Codacy](https://app.codacy.com/gh/magneticstain/plexer/dashboard)
1. Testing:
1. [Pytest](https://docs.pytest.org/en/latest/)
1. [Tox](https://tox.wiki/en/stable/)
Raw data
{
"_id": null,
"home_page": null,
"name": "plexer-cli",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "catagorization, formatting, media, organization, plex",
"author": null,
"author_email": "Josh Carlson <837837+magneticstain@users.noreply.github.com>",
"download_url": "https://files.pythonhosted.org/packages/42/38/95fe03e3961d0f9c870ceea9148bda71efee9199c4643c43e90fba97a535/plexer_cli-0.0.1a0.tar.gz",
"platform": null,
"description": "# Plexer\n\nNormalize media files for use with Plex Media Server.\n\n![GitHub License](https://img.shields.io/github/license/magneticstain/plexer)\n![Supported Python Versions](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2Fmagneticstain%2Fplexer%2Frefs%2Fheads%2Fmain%2Fpyproject.toml)\n\n[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/magneticstain/plexer/badge)](https://scorecard.dev/viewer/?uri=github.com/magneticstain/plexer)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/38b2a65ed9ac4c85afc98e259d73474f)](https://app.codacy.com/gh/magneticstain/plexer/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)\n[![Run Full Suite of Checks and Tests](https://github.com/magneticstain/plexer/actions/workflows/run_full_test_suite.yml/badge.svg)](https://github.com/magneticstain/plexer/actions/workflows/run_full_test_suite.yml)\n\n![GitHub Issues or Pull Requests](https://img.shields.io/github/issues/magneticstain/plexer)\n![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/magneticstain/plexer/total)\n\n[![Hatch project](https://img.shields.io/badge/%F0%9F%A5%9A-Hatch-4051b5.svg)](https://github.com/pypa/hatch)\n[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n\n## Requirements\n\n### Software Dependencies\n\nStart by creating a virtual environment and installing the required packages. Typically that looks something like:\n\n```bash\npython -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt\n```\n\n### Media Metadata\n\nThe biggest requirement before running plexer is to ensure that you've created a `.plexer` file in each of your target directories.\n\nThis is a JSON-formatted file that includes the movie metadata required by Plexer to perform its jobs.\n\n#### Plexer File Generator\n\nTo easily create the `.plexer` file, you can use the one-liner below while in the movie's directory:\n\n```bash\necho -n \"Media Name: \";read MEDIA_NAME;echo -n \"Release Year (YYYY): \";read RELEASE_YEAR;echo \"{\\\"name\\\": \\\"${MEDIA_NAME}\\\", \\\"release_year\\\": \\\"${RELEASE_YEAR}\\\"}\" > .plexer\n```\n\nIt can be modified to support different types of media as well.\n\n## Usage\n\nThe source directory is the directory containing the raw media. The destination is where you'd like to save the processed media to.\n\n```text\nusage: plexer.py [-h] [-v] [--version] -s SOURCE_DIR -d DESTINATION_DIR\n\noptions:\n -h, --help show this help message and exit\n -v, --verbose Verbosity (-v, -vv, etc)\n --version show program's version number and exit\n -s SOURCE_DIR, --source-dir SOURCE_DIR\n -d DESTINATION_DIR, --destination-dir DESTINATION_DIR\n```\n\n## Development\n\n### Software Stack\n\nFor developing with Plexer, there are several tools that are in use:\n\n1. Build Backend, Packaging, and Dependency Management:\n 1. [Hatch](https://hatch.pypa.io/1.12/)\n1. Analysis Tools:\n 1. [Ruff](https://docs.astral.sh/ruff/)\n 1. [Codacy](https://app.codacy.com/gh/magneticstain/plexer/dashboard)\n1. Testing:\n 1. [Pytest](https://docs.pytest.org/en/latest/)\n 1. [Tox](https://tox.wiki/en/stable/)\n",
"bugtrack_url": null,
"license": null,
"summary": "Normalize media files for use with Plex Media Server",
"version": "0.0.1a0",
"project_urls": {
"Documentation": "https://github.com/magneticstain/plexer#readme",
"Issues": "https://github.com/magneticstain/plexer/issues",
"Repository": "https://github.com/magneticstain/plexer.git",
"Source": "https://github.com/magneticstain/plexer"
},
"split_keywords": [
"catagorization",
" formatting",
" media",
" organization",
" plex"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "283d0c660f21bc9f0076dbaaf7ddb5179237a4eb9ccd50e772408779129722d2",
"md5": "430efc7ecd60fdc59f8ea83750a1bd05",
"sha256": "df11356a6685d51d58b83521bcf61a039fbeae1c910a4ae587dcc7dc2185381d"
},
"downloads": -1,
"filename": "plexer_cli-0.0.1a0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "430efc7ecd60fdc59f8ea83750a1bd05",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 6460,
"upload_time": "2024-09-29T17:04:04",
"upload_time_iso_8601": "2024-09-29T17:04:04.594839Z",
"url": "https://files.pythonhosted.org/packages/28/3d/0c660f21bc9f0076dbaaf7ddb5179237a4eb9ccd50e772408779129722d2/plexer_cli-0.0.1a0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "423895fe03e3961d0f9c870ceea9148bda71efee9199c4643c43e90fba97a535",
"md5": "142df39711d343a3f1b453f0d889bd0f",
"sha256": "90a3ef896e83f9eea103951cc7dbee6b87f51edba25cb81746168b96683080dd"
},
"downloads": -1,
"filename": "plexer_cli-0.0.1a0.tar.gz",
"has_sig": false,
"md5_digest": "142df39711d343a3f1b453f0d889bd0f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 13996,
"upload_time": "2024-09-29T17:04:06",
"upload_time_iso_8601": "2024-09-29T17:04:06.279705Z",
"url": "https://files.pythonhosted.org/packages/42/38/95fe03e3961d0f9c870ceea9148bda71efee9199c4643c43e90fba97a535/plexer_cli-0.0.1a0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-29 17:04:06",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "magneticstain",
"github_project": "plexer#readme",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"tox": true,
"lcname": "plexer-cli"
}