Skip to main content

A command-line utility for organizing media files.

Project description

PyPI Tests Coverage Licence Ruff

mnamer

mnamer (media renamer) is an intelligent and highly configurable media organization utility. It parses media filenames for metadata, searches the web to fill in the blanks, and then renames and moves them.

Currently it has integration support with TVDb and TvMaze for television episodes and TMDb and OMDb for movies.

Documentation

Check out the wiki page for more details.

💾 Installation

$ uv tool install mnamer or $ pip3 install --user mnamer

🤖 Automation

$ docker pull jkwill87/mnamer

✍️ Formatting

Using the episode-directory, episode-format, movie-directory, or movie-format settings you customize how your files are renamed. Variables wrapped in braces {} get substituted with of parsed values of template field variables.

🌐 Internationalization

Language is supported by the default TMDb and TVDb providers. You can use the --language setting to set the language used for templating.

mnamer also supports subtitle files (.srt, .idx, .sub). It will use the format pattern used for movie or episode media files with its extension prefixed by its 2-letter language code.

🧰 Settings

USAGE: mnamer [preferences] [directives] target [targets ...]

POSITIONAL:
  [TARGET,...]: media file file path(s) to process

PARAMETERS:
  The following flags can be used to customize mnamer's behaviour. Their long
  forms may also be set in a '.mnamer-v2.json' config file, in which case cli
  arguments will take precedence.

  -b, --batch: process automatically without interactive prompts
  -l, --lower: rename files using lowercase characters
  -r, --recurse: search for files within nested directories
  -s, --scene: use dots in place of alphanumeric chars
  -v, --verbose: increase output verbosity
  --hits=<NUMBER>: limit the maximum number of hits for each query
  --ignore=<PATTERN,...>: ignore files matching these regular expressions
  --language=<LANG>: specify the search language
  --mask=<EXTENSION,...>: only process given file types
  --no-guess: disable best guess; e.g. when no matches or network down
  --no-overwrite: prevent relocation if it would overwrite a file
  --no-style: print to stdout without using colour or unicode chars
  --movie-api={*tmdb,omdb}: set movie api provider
  --movie-directory: set movie relocation directory
  --movie-format: set movie renaming format specification
  --episode-api={tvdb,*tvmaze}: set episode api provider
  --episode-directory: set episode relocation directory
  --episode-format: set episode renaming format specification

DIRECTIVES:
  Directives are one-off arguments that are used to perform secondary tasks
  like overriding media detection. They can't be used in '.mnamer-v2.json'.

  -V, --version: display the running mnamer version number
  --clear-cache: clear request cache
  --config-dump: prints current config JSON to stdout then exits
  --config-ignore: skips loading config file for session
  --config-path=<PATH>: specifies configuration path to load
  --id-imdb=<ID>: specify an IMDb movie id override
  --id-tmdb=<ID>: specify a TMDb movie id override
  --id-tvdb=<ID>: specify a TVDb series id override
  --id-tvmaze=<ID>: specify a TvMaze series id override
  --no-cache: disable request cache
  --media={movie,episode}: override media detection
  --test: mocks the renaming and moving of files

Parameters can either by entered as command line arguments or from a config file named .mnamer-v2.json.

Contributions

Community contributions are a welcome addition to the project. In order to be merged upstream any additions will need to be formatted with ruff for consistency with the rest of the project and pass the continuous integration tests run against each PR. Before introducing any major features or changes to the configuration api please consider opening an issue to outline your proposal.

Bug reports are also welcome on the issue page. Please include any generated crash reports if applicable. Feature requests are welcome but consider checking out if it is in the works first to avoid duplication.

Star History

Star History Chart

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

mnamer-2.7.1.dev26.tar.gz (5.3 MB view details)

Uploaded Source

Built Distribution

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

mnamer-2.7.1.dev26-py3-none-any.whl (35.8 kB view details)

Uploaded Python 3

File details

Details for the file mnamer-2.7.1.dev26.tar.gz.

File metadata

  • Download URL: mnamer-2.7.1.dev26.tar.gz
  • Upload date:
  • Size: 5.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for mnamer-2.7.1.dev26.tar.gz
Algorithm Hash digest
SHA256 263bc19cb8c7168fda267e84a9ab79af2ed7ed0e2566a26bcc30331055c80abc
MD5 0aa087fd01ea25c89ee1148b7dd68767
BLAKE2b-256 cb53c25acac7045ada99d407aba72fa18f113a7c7c113f0e5d84d73daf443146

See more details on using hashes here.

File details

Details for the file mnamer-2.7.1.dev26-py3-none-any.whl.

File metadata

  • Download URL: mnamer-2.7.1.dev26-py3-none-any.whl
  • Upload date:
  • Size: 35.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for mnamer-2.7.1.dev26-py3-none-any.whl
Algorithm Hash digest
SHA256 0af655951e57ee6863237b58bb42d8f36909f7c27e61daebe95fcfc29a620d9a
MD5 bff5dd7d4e7d64d45f265aeb1c4d2957
BLAKE2b-256 e27e6541f34d273c21e45712ff4f6dfa8b0a4faa031006cca7e055284479a318

See more details on using hashes here.

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