{"id":13437168,"url":"https://github.com/mmstick/tv-renamer","last_synced_at":"2025-04-07T18:14:53.733Z","repository":{"id":57670806,"uuid":"58283239","full_name":"mmstick/tv-renamer","owner":"mmstick","description":"Mirror of https://gitlab.com/mmstick/tv-renamer","archived":false,"fork":false,"pushed_at":"2018-10-28T07:48:23.000Z","size":897,"stargazers_count":150,"open_issues_count":4,"forks_count":11,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-04-04T20:57:13.453Z","etag":null,"topics":["gtk","linux","rust","tv-renamer","tvdb"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mmstick.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-05-07T20:29:15.000Z","updated_at":"2025-02-20T20:32:05.000Z","dependencies_parsed_at":"2022-09-26T20:41:19.560Z","dependency_job_id":null,"html_url":"https://github.com/mmstick/tv-renamer","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmstick%2Ftv-renamer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmstick%2Ftv-renamer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmstick%2Ftv-renamer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmstick%2Ftv-renamer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mmstick","download_url":"https://codeload.github.com/mmstick/tv-renamer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247704571,"owners_count":20982298,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gtk","linux","rust","tv-renamer","tvdb"],"created_at":"2024-07-31T03:00:54.798Z","updated_at":"2025-04-07T18:14:53.712Z","avatar_url":"https://github.com/mmstick.png","language":"Rust","funding_links":[],"categories":["Applications","应用程序 Applications","Applications written in Rust","应用","应用 Applications","Productivity"],"sub_categories":["System tools","系统工具 System tools","系统工具","Desktop Productivity"],"readme":"**Build Status:** [![Build Status](https://travis-ci.org/mmstick/tv-renamer.png?branch=master)](https://travis-ci.org/mmstick/tv-renamer)\n\n# Features\n\n- Written safely in the Rust programming language\n- Features both a command-line and GTK3 interface\n- Support for Templates to define custom naming schemes\n- TVDB Support for obtaining episode titles from TheTVDB\n- Automatically infers whether the input directory contains seasons or episodes\n- Only renames videos whose extensions can be found in /etc/mime.types\n\n# Installation Instructions\n\nThis project is using a Makefile for generating a busybox-style binary, named **tv-renamer**, which provides two options: **cli** and **gtk**. Ensure that you have a modern stable version of Rust installed via [rustup](https://www.rustup.rs/). If you are packaging for Debian, ensure that you have [cargo deb](https://github.com/mmstick/cargo-deb) installed.\n\n```sh\nmake \u0026\u0026 sudo make install\n```\n\n# GTK3 Manual\n\n![GTK3 Screenshot](screenshot-gtk3.png)\n\nThe use of this application should be fairly straightforward. The program uses the /etc/mime.types file to only detect videos in a given directory, and does not make a distinction between what is or is not part of the series, so ensure that the only video files in the directory that you are renaming contains the episodes that you are wanting to rename, and ensure that the episodes are in alphabetical order. The application does not derive the episode number from the episode name, but by their alphabetical order in the directory.\n\n- **Season Name**: The name of the TV series to be renamed.\n  - This will be automatically inferred from the directory path if no name is set.\n\n\n- **Season Directory**: The location of the base directory where the season folders or episodes are stored.\n\n\n- **Template**: Defines the naming scheme to use when renaming episodes.\n\n\n- **Season Number** and **Episode Number**: Defines what index to start counting from.\n\n\nThe directory structure for base directories with season folders should be as follows:\n\n\u003e Series Title/Specials/{Episodes...}\n\n\u003e Series Title/Season 1/{Episodes...}\n\n\u003e Series Title/Season 2/{Episodes...}\n\n# CLI Manual\n\nIf you need help with the usage of the CLI application, this manual page is also included in the program and is invokable with the -h and --help flags. The CLI interface is invoked by executing `tv-renamer cli` or `tv-renamer`, followed by your arguments of choice.\n\n![CLI Screenshot](screenshot-cli.png)\n\n## NAME:\n\n**tv-renamer** - rename TV series and movies\n\n## DESCRIPTION:\n\nRenames all videos in a directory according to their season and episode. If the given DIRECTORY contains season directories, it will automatically rename episodes in each season. If no DIRECTORY is given, the default path will be the current working directory. It is recommended to use the dry-run option first before committing any changes. If a target file already exists, the command will ask if it is okay to overwrite the file. Please ensure that all of the files in the directory are video files that you want renamed.\n\n## OPTIONS:\n\n**-d, --dry-run:** Runs through all of the files and prints what would happen without doing anything.\n\n**-n, --series-name:** Sets the name of the series to be renamed. [not optional]\n\n**-s, --season-number:** Sets the season number to use when renaming a file. [default: 1]\n\n**-t, --template:** Sets the template that will define the naming scheme. [default: \"${Series} ${Season}x${Episode} ${TVDB_Title}\"]\n\n**-e, --episode-start:** Sets the episode number to start counting from. [default: 1]\n\n**-p, --pad-length:** Sets the number of digits to pad the episode count for. [default: 2]\n\n**-v, --verbose:** Print the changes that are occurring.\n\n### Template Tokens:\n  - **${Series}**: Name of the TV Series\n  - **${Season}**: Season of the TV Series\n  - **${Episode}**: Current Episode Number\n  - **${TVDB_Title}**: Title of the current episode from TVDB\n  - **${TVDB_First_Aired}**: The first airing date of the episode from TVDB\n\n## EXAMPLE:\n\nWhen executed inside of a directory with the name of the TV Series\n\n```\none.mkv two.mkv three.mkv\n\u003e tv-renamer -n \"series name\"\n\"TV Series 1x01 Episode Title.mkv\"\n\"TV Series 1x02 Episode Title.mkv\"\n\"TV Series 1x03 Episode Title.mkv\"\n```\n\nYou can define your own naming scheme with --template:\n\n```\n\u003e one.mkv two.mkv three.mkv\n\u003e tv-renamer -t \"${Series} S${Season}E${Episode} - ${TVDB_Title}\"\n\u003e \"TV Series S1E01 - Episode Title.mkv\" \"TV Series S1E02 - Episode Title.mkv\" \"TV Series S1E03 - Episode Title.mkv\"\n```\n\nThe season name can also be automatically inferred:\n\n```\n\"$series/Season1\" \"$series/Season2\"\n\u003e tv-renamer \"$series\" OR cd $series \u0026\u0026 tv-renamer\n\"TV Series/Season1/TV Series 1x01.mkv\"\n\"TV Series/Season1/TV Series 1x02.mkv\"\n...\n\"TV Series/Season2/TV Series 2x01.mkv\"\n\"TV Series/Season2/TV Series 2x02.mkv\"\n...\n```\n\nEpisode titles can also be pulled from the TVDB and added to the filenames.\n\n```\n\u003e tv-renamer -t \"${Series} ${Season}x${Episode} ${TVDB_Title}\"\n\"TV Series/Season1/TV Series 1x01 Episode Title.mkv\"\n```\n\n## AUTHOR:\n\nWritten by Michael Aaron Murphy.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmmstick%2Ftv-renamer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmmstick%2Ftv-renamer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmmstick%2Ftv-renamer/lists"}