https://github.com/demartini/videotagger.fish
Smart Video Tagger and Renamer.
https://github.com/demartini/videotagger.fish
fish fish-plugin fish-shell fisher video-renamer video-tagging
Last synced: 4 months ago
JSON representation
Smart Video Tagger and Renamer.
- Host: GitHub
- URL: https://github.com/demartini/videotagger.fish
- Owner: demartini
- License: mit
- Created: 2025-04-26T06:11:50.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-05-25T02:37:54.000Z (5 months ago)
- Last Synced: 2025-05-25T03:29:05.819Z (5 months ago)
- Topics: fish, fish-plugin, fish-shell, fisher, video-renamer, video-tagging
- Language: Shell
- Homepage:
- Size: 237 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
![]()
videotagger.fish
Smart Video Tagger and Renamer.
[![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Stargazers][stars-shield]][stars-url]
[![Issues][issues-shield]][issues-url]
[![License][license-shield]][license-url]## Table of Contents
- [About](#about)
- [Features](#features)
- [Requirements](#requirements)
- [Installation](#installation)
- [Usage](#usage)
- [Example output](#example-output)
- [Contributing](#contributing)
- [Changelog](#changelog)
- [License](#license)## About
If you run a media server (Plex, Radarr, Sonarr, etc), you know how important it is to keep your library clean and consistent.
But when downloading video files manually, filenames often come messy, inconsistent, and break automation โ or just clutter your collection.
`videotagger` helps fix that.
It intelligently analyzes your video files (using `ffprobe`) and generates new, standardized filenames that reflect each file's resolution, codec, audio layout, and subtitles โ all without requiring any manual tagging.
It's built for speed, flexibility, and everyday use.
## Features
- ๐บ Detects and tags resolution (e.g. `720p`, `1080p`)
- ๐ฅ Detects video codec (`H264`, `HEVC`, etc.)
- ๐ Tags audio tracks by codec, channel layout and language (`AAC2.0 (ENG)`)
- ๐ฌ Includes subtitle info (e.g. `MSubs`, `ENGSub`)
- ๐ Renames files using a consistent `scene-style` format
- ๐ฆ Pre-processes filenames to avoid duplicate tags
- ๐ณ Fallback to `UND` for undefined language streams
- ๐ซ Skips files with missing resolution or invalid metadata
- ๐งช Dry-run mode for safe previews
- ๐ Undo feature with log tracking
- ๐ Recursive support for batch folders
- ๐ Native Fish Shell script โ no external dependencies (besides `ffmpeg`)## Requirements
- [Fish Shell][fishshell-url] v3.0+
- [ffmpeg][ffmpeg-url] (which includes `ffprobe`, required for media analysis)You can install `ffmpeg` via:
```console
brew install ffmpeg # macOS (Homebrew)
sudo apt install ffmpeg # Debian/Ubuntu
```## Installation
Install with [Fisher][fisher-url]:
```console
fisher install demartini/videotagger.fish
```## Usage
| Command | Description |
| ------------------------------- | ------------------------------------- |
| `videotagger` | Preview all videos in current folder |
| `videotagger -d`, `--dry-run` | Show only files that would be renamed |
| `videotagger -r`, `--rename` | Rename files and save a log |
| `videotagger -u`, `--undo` | Undo last renaming |
| `videotagger -R`, `--recursive` | Recursively scan subfolders |
| `videotagger -v`, `--version` | Show version |
| `videotagger -h`, `--help` | Display help message |> ๐ก Tip: You can also use `vt` as a shortcut alias for `videotagger`.
### Example output
```console
๐ฌ File: Some.Movie.2023.mp4
๐บ Resolution: 1080p
๐ฅ Video: H264
๐ Audio: AAC2.0 (ENG)
๐ฌ Subtitle: Multiple languages (2)
๐ New name: Some.Movie.2023.1080p.WEB-DL.ENG-AAC2.0.H264.MSubs.mp4
```## Contributing
If you are interested in helping contribute, please take a look at our [contribution guidelines][contributing-url] and open an [issue][issues-url] or [pull request][pull-request-url].
## Changelog
See [CHANGELOG][changelog-url] for a human-readable history of changes.
## License
Distributed under the MIT License. See [LICENSE][license-url] for more information.
[changelog-url]: https://github.com/demartini/videotagger.fish/blob/main/CHANGELOG.md
[contributing-url]: https://github.com/demartini/.github/blob/main/CONTRIBUTING.md
[pull-request-url]: https://github.com/demartini/videotagger.fish/pulls[contributors-shield]: https://img.shields.io/github/contributors/demartini/videotagger.fish.svg?style=for-the-badge&color=8bd5ca&labelColor=181926
[contributors-url]: https://github.com/demartini/videotagger.fish/graphs/contributors
[forks-shield]: https://img.shields.io/github/forks/demartini/videotagger.fish.svg?style=for-the-badge&color=8bd5ca&labelColor=181926
[forks-url]: https://github.com/demartini/videotagger.fish/network/members
[issues-shield]: https://img.shields.io/github/issues/demartini/videotagger.fish.svg?style=for-the-badge&color=8bd5ca&labelColor=181926
[issues-url]: https://github.com/demartini/videotagger.fish/issues
[license-shield]: https://img.shields.io/github/license/demartini/videotagger.fish.svg?style=for-the-badge&color=8bd5ca&labelColor=181926
[license-url]: https://github.com/demartini/videotagger.fish/blob/main/LICENSE
[stars-shield]: https://img.shields.io/github/stars/demartini/videotagger.fish.svg?style=for-the-badge&color=8bd5ca&labelColor=181926
[stars-url]: https://github.com/demartini/videotagger.fish/stargazers[fishshell-url]: https://fishshell.com
[ffmpeg-url]: https://www.ffmpeg.org
[fisher-url]: https://github.com/jorgebucaran/fisher