Rename TV show Media files with Respective episode Titles/Names.
Project description
Shownamer - Media Renamer
A lightweight Python CLI tool that renames TV show episode video files by fetching their actual episode titles. Movies are not supported, All TV Shows and Sitcoms are supported.
[!NOTE] Fetches details and Names from TVmaze.
Features
-
Automatically detects and renames files like:
Before: Malcolm in the Middle S01E10.mkv After: Malcolm in the Middle S01E10 - Stock Car Races.mkv -
Fetches episode titles using the free TVmaze API.
-
Cleans illegal filename characters automatically.
-
CLI flags for:
- Custom directory
- File extension filter
- Available Show Names
- Dry-run mode
- Verbose logging
Usage
Requirements
- Python 3.6+
Install requirements:
pip install shownamer
Run the script
shownamer --help
Available Flags
| Flag | Description |
|---|---|
--dir |
Directory to scan for files (default: current working directory) |
--ext |
File extensions to consider (default: .mkv, .mp4, .avi, .mov, .flv) |
--dry-run |
Show what would be renamed, without actually renaming any files |
--verbose |
Show skipped files, errors, and debug output |
--name |
List detected show names along with season and episode counts |
--format FORMAT |
Custom rename format using placeholders: {name}, {season}, {episode}, {title} |
--subst REPLACEMENT |
Replace illegal characters with a specific character (excl: \ / : * ? " < > | \0) |
--version |
Print the tool version and exit |
Example Usage
# Rename all valid video files in the current directory
shownamer
# Specify a custom directory
shownamer --dir "/path/to/your/episodes"
# Preview changes without renaming files
shownamer --dry-run
# Show detected show names with season/episode stats
shownamer --name
# Limit to specific extensions
shownamer --ext mkv mp4 avi
# Verbose mode (shows skipped files, debug info)
shownamer --verbose
# Replace an illegal character
shownamer --subst "_" # replaces illegal characters with _
shownamer --subst "'" # replaces illegal characters with '
Filename Formats
{name} # show name
{season} # season number (as integer)
{episode} # episode number (as integer)
{title} # episode title (sanitized for filesystem)
shownamer --format "{name} - S{season:02}E{episode:02} - {title}" # Default Format
# Other Examples
shownamer --format "{title} [{name} S{season:02}E{episode:02}]" # Title-first format
shownamer --format "E{episode:02} - {title}" # Episode code only
shownamer --format "{name} - {title}" # Name only
The script supports the following file name pattern:
Malcolm in the Middle S01E10.mkv
Malcolm_in_the_Middle_S01E10.avi
Malcolm-in-the-Middle-E10.mp4
Malcolm.in.the.Middle.S02E03.mkv
TheOffice_E05.avi # No Season Specified, Defaults to Season One
All of the following are supported:
- Spaces, dots, underscores, dashes
- Optional season (defaults to season 1 if not found)
FAQ
Will this overwrite existing files?
No. The script does not overwrite files. It renames only when the target filename does not exist. You can use --dry-run to preview the result first.
Does it fetch subtitles or cover images?
No. This tool only renames the video files with accurate episode titles.
Contributions
Pull requests, suggestions, and issues are welcome! Let's make it smarter and broader (e.g., subtitle renaming, fuzzy matching, show aliases, etc.).
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file shownamer-1.4.0.tar.gz.
File metadata
- Download URL: shownamer-1.4.0.tar.gz
- Upload date:
- Size: 6.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b87b1868db1659533ff494f847750491c4ea45f5a109d3a133086d89538a4c5
|
|
| MD5 |
cb2c5d93052724eaa5ec095ba86e3790
|
|
| BLAKE2b-256 |
1a526469ad67938be64c81592e75de91eacaa2dae0e9c652e5f60e8f535b0cc8
|
File details
Details for the file shownamer-1.4.0-py3-none-any.whl.
File metadata
- Download URL: shownamer-1.4.0-py3-none-any.whl
- Upload date:
- Size: 6.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8318473ca83353b82ae8090065b808fad9944dc85681747708e727b76106805d
|
|
| MD5 |
3716c27331d8be5606a77f61f2cccf18
|
|
| BLAKE2b-256 |
b591b9859467ad127b87e65663a94a399ecf5e7f66c1631a60b2352b4419d9c1
|