{"id":46378736,"url":"https://github.com/jamerst/autotag","last_synced_at":"2026-04-16T22:01:18.555Z","repository":{"id":128628119,"uuid":"143313034","full_name":"jamerst/AutoTag","owner":"jamerst","description":"Automatic tagging and renaming of TV show episodes and movies","archived":false,"fork":false,"pushed_at":"2026-04-16T20:13:32.000Z","size":754,"stargazers_count":52,"open_issues_count":2,"forks_count":7,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-04-16T21:29:18.123Z","etag":null,"topics":["automatic","c-sharp","metadata","mkv","mp4","rename","taglib-sharp","tags","tv","tv-episodes","tvdb-api"],"latest_commit_sha":null,"homepage":"","language":"C#","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/jamerst.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-08-02T15:26:45.000Z","updated_at":"2026-04-03T23:10:00.000Z","dependencies_parsed_at":"2024-12-01T15:20:25.851Z","dependency_job_id":"74b203d3-fb37-4a2e-93dd-06bff611f870","html_url":"https://github.com/jamerst/AutoTag","commit_stats":null,"previous_names":[],"tags_count":40,"template":false,"template_full_name":null,"purl":"pkg:github/jamerst/AutoTag","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamerst%2FAutoTag","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamerst%2FAutoTag/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamerst%2FAutoTag/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamerst%2FAutoTag/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jamerst","download_url":"https://codeload.github.com/jamerst/AutoTag/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamerst%2FAutoTag/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31905895,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"ssl_error","status_checked_at":"2026-04-16T18:21:47.142Z","response_time":69,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["automatic","c-sharp","metadata","mkv","mp4","rename","taglib-sharp","tags","tv","tv-episodes","tvdb-api"],"created_at":"2026-03-05T05:34:03.964Z","updated_at":"2026-04-16T22:01:18.549Z","avatar_url":"https://github.com/jamerst.png","language":"C#","readme":"# AutoTag \u003cbr/\u003e[![GitHub release](https://img.shields.io/github/release/jamerst/AutoTag.svg)](https://github.com/jamerst/AutoTag/releases) [![GitHub release](https://img.shields.io/github/downloads/jamerst/AutoTag/total.svg)](https://github.com/jamerst/AutoTag/releases) [![GitHub issues](https://img.shields.io/github/issues/jamerst/AutoTag.svg)](https://github.com/jamerst/AutoTag/issues)\n\n### Automatic tagging and renaming of TV show episodes and movies\n\nInspired by [Auto TV Tagger](https://sourceforge.net/projects/autotvtagger/), AutoTag is a command-line utility to make it very easy to organise your \u003csup\u003ecompletely legitimate\u003c/sup\u003e TV show and movie collection.\n\nAutoTag interprets the file name to find the specific series, season and episode, or movie title, then fetches the relevant information from TheMovieDB, adds the information to the file and renames it to a set format.\n\nAutoTag v3 is a rewrite of v2 in .NET Core. This means that binaries can now be run natively on Linux without Mono! It also has a proper fully-functional command-line interface, however, **v3 is currently a command-line only application**.\n\nThis is because building cross-platform user interfaces with .NET Core is still quite difficult, and the documentation of current frameworks for this leave *a lot* to be desired. I personally use AutoTag over SSH to my server, so I have little motivation to develop a GUI that I will never use.\n\n## Features\n- Information fetched from [themoviedb.org](https://www.themoviedb.org/)\n- Configurable renaming and full metadata tagging, including cover art\n- Manual tagging mode\n- Full Linux support (and presumably macOS?)\n- Supports mp4 and mkv containers\n- Subtitle file renaming\n\n## Usage\n```\nUSAGE:\n  autotag [paths] [OPTIONS]\n\nARGUMENTS:\n  [paths]    Files or directories to process\n\nOPTIONS:\n  -h, --help                             Prints help information\n  -c, --config \u003cPATH\u003e                    Config file path\n  -p, --pattern \u003cPATTERN\u003e                Custom regex to parse TV episode information\n  -v, --verbose                          Enable verbose output mode\n      --set-default                      Set the current arguments as the default\n      --print-config                     Print loaded configuration and exit\n      --version                          Print version and exit\n      --no-rename                        Disable file and subtitle renaming\n      --tv-pattern \u003cPATTERN\u003e             Rename pattern for TV episodes\n      --movie-pattern \u003cPATTERN\u003e          Rename pattern for movies\n      --windows-safe                     Remove invalid Windows file name characters when renaming\n      --rename-subs                      Rename subtitle files\n      --replace \u003cREPLACE=REPLACEMENT\u003e    Replace \u003cREPLACE\u003e with \u003cREPLACEMENT\u003e in file names\n  -t, --tv                               TV tagging mode\n  -m, --movie                            Movie tagging mode\n      --no-tag                           Disable file tagging\n      --no-cover                         Disable cover art tagging\n      --manual                           Manually choose the TV series/movie for a file from search results\n      --extended-tagging                 Add more information to Matroska file tags. Reduces tagging speed\n      --apple-tagging                    Add extra tags to mp4 files for use with Apple devices and software\n  -l, --language \u003cLANGUAGE\u003e              Metadata language (default: en)\n  -g, --episode-group                    Manually choose alternate episode orderings for a TV show\n\n```\n\n### Rename Patterns\nThe TV and movie rename patterns are strings used to create the new file name when renaming is enabled. They can use the following variables:\n\n- `%1`: TV Series Name/Movie Title\n- `%2`: TV Season Number/Movie Year\n- `%3`: TV Episode Number\n- `%4`: TV Episode Title\n\n#### Numeric Format Strings\nNumeric variables (TV season/episode and movie year) also support a format string to specify the format of the number. They support the standard numeric format specifiers of `0` and `#`.\n\nExample: to get the name \"Series S01E01 Title.mkv\", use the format `%1 S%2:00E%3:00 %4`.\n\n### Regex Pattern\nThe custom regex pattern is used on the full file path, not just the file name. This allows AutoTag to tag file structures where the series name is not in the file name, e.g. for the structure `Series/Season 1/S01E01 Title.mkv`.\n\nThe regex pattern should have 3 named capturing groups: `SeriesName`, `Season` and `Episode`. For the example given above, a pattern could be `.*/(?\u003cSeriesName\u003e.+)/Season (?\u003cSeason\u003e\\d+)/S\\d+E(?\u003cEpisode\u003e\\d+)`.\n\nNote that on Windows all directory separators (`\\`) must be escaped as `\\\\`.\n\n### Windows Safe\nThe `--windows-safe` option is for use on Linux/macOS where the files written may be accessed by a Windows host, or are being written to an NTFS filesystem. It automatically removes any invalid NTFS file name characters.\n\n### File Name Replacements\nThe `--replace` option allows specific characters or strings in a file name to be replaced, e.g. `--replace a=b` will replace all the `a` characters in the file name with `b`. This option can be used multiple times for multiple replacements, e.g. `--replace a=b --replace foo=bar --replace c=''`. **Note: the arguments for this option are case sensitive.**\n\nAny values for the replace option containing an equals (`=`) cannot be set via command line arguments currently. To use such values you can add them to the config file manually using a text editor.\n\n### Extended Tagging\nThe `--extended-tagging` option adds additional information to Matroska video files such as actors and their characters. This option is not enabled by default because it may reduce tagging speed significantly due to the additional API requests needed.\n\n### Language\nThe language of the metadata can be set using the `-l` or `--language` option. This accepts a [ISO 639-1 language code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) with optional [ISO 3166 alpha-2 country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) for regional variants. E.g., to get metadata in German use `-l de`, or for Brazilian Portuguese use `-l pt-BR`. Note that the data for other languages is probably less complete than it is for English. If data in a given language is not available it will fall back to some alternative, likely English.\n\n### Alternate Episode Orderings (Episode Groups)\nThe `--episode-group` option allows you to choose one of the additional episodes group collections created on TMDB as source for the episode ordering. All contained episode groups must follow the naming scheme `\u003cNAME\u003e XX`. Episode groups whose names begin with `special` in their names are also valid and will be treated as `Season 0`.\n\nEnabling this option will prompt you to select the episode ordering for each show manually.\n\n| Group Name      | Valid  |\n|-----------------|--------|\n| Season 01       | ✅     |\n| Staffel 02      | ✅     |\n| Volume 9        | ✅     |\n| Special         | ✅     |\n| Season 3 Part 1 | ❌     |\n| Volume Part 1   | ❌     |\n\n## Config\nAutoTag creates a config file to store default preferences at `~/.config/autotag/conf.json` or `%APPDATA%\\Roaming\\autotag\\conf.json`. A different config file can be specified using the `-c` option. If the file does not exist, a file will be created with the default settings:\n```\n\"configVer\": 9,                           // Internal use\n\"mode\": 0,                                // Default tagging mode, 0 = TV, 1 = Movie\n\"manualMode\": false,                      // Manual tagging mode\n\"verbose\": false,                         // Verbose output\n\"addCoverArt\": true,                      // Add cover art to files\n\"tagFiles\": true,                         // Write tags to files\n\"renameFiles\": true,                      // Rename files\n\"tvRenamePattern\": \"%1 - %2x%3:00 - %4\",  // Pattern to rename TV files, %1 = Series Name, %2 = Season, %3 = Episode, %4 = Episode Title\n\"movieRenamePattern\": \"%1 (%2)\",          // Pattern to rename movie files, %1 = Title, %2 = Year\n\"parsePattern\": \"\",                       // Custom regex to parse TV episode information\n\"windowsSafe\": false,                     // Remove any invalid Windows file name characters\n\"extendedTagging\": false,                 // Add more information to Matroska file tags\n\"appleTagging\": false,                    // Add extra tags to mp4 files for use with Apple devices and software\n\"renameSubtitles\": false,                 // Rename subtitle files\n\"language\": \"en\",                         // Metadata language,\n\"episodeGroup\": false,                    // Enable alternate episode ordering selection\n\"fileNameReplaces\": []                    // File name character replacements. Array of objects of the form { \"replace\": \"\", \"replacement\": \"\" }\n```\n\n## Moving away from TheTVDB\n**v3.1.0 and above use TheMovieDB as the TV metadata source instead of TheTVDB.** This is due to the declining quality of metadata, and TheTVDB's free API being deprecated in favour of a paid model.\n\nUnfortunately there are many differences in the episode numbering between TheTVDB and TheMovieDB, so you may have to manually rename some files in order for them to be found on TheMovieDB. In the long term this is a good thing as the numbering on TheMovieDB generally makes much more sense than TheTVDB, and is a much friendlier community.\n\n## Known Issues\n- Some files will refuse to tag with an error such as \"File not writeable\" or \"Invalid EBML format read\". This is caused by the tagging library taglib-sharp, which sometimes refuses to tag certain files. The cause of this isn't immediately clear, but a workaround is to simply remux the file using ffmpeg (`ffmepg -i in.mkv -c copy out.mkv`), after which the file should tag successfully.\n\n## Download\nDownloads for Linux, macOS and Windows can be found [here](https://github.com/jamerst/AutoTag/releases).\n\nThe macOS build is untested, I don't own any Apple devices so I can't easily test it. Please report any issues and I'll try to investigate them.\n\nBuild file sizes are quite large due to bundled .NET runtimes.\n\n## Attributions\n- TV filename parsing based on [SubtitleFetcher](https://github.com/pheiberg/SubtitleFetcher)\n- File tagging provided by [taglib-sharp](https://github.com/mono/taglib-sharp)\n- TheMovieDB API support provided by [TMDbLib](https://github.com/LordMike/TMDbLib)\n- Data sourced from [themoviedb.org](https://www.themoviedb.org/) using their free API\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamerst%2Fautotag","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjamerst%2Fautotag","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamerst%2Fautotag/lists"}