Skip to content

paranoidi/langfilter

Repository files navigation

LangFilter

Command-line tool to remove unwanted audio language tracks from MKV files.

Overview

LangFilter helps you clean up MKV video files by removing audio tracks in unwanted languages. It provides both interactive and automated modes, with configuration file support for batch processing.

Features

  • Interactive mode: Choose which audio tracks to keep from a visual menu
  • Non-interactive mode: Apply predefined rules from configuration files
  • Batch processing: Process multiple MKV files at once
  • Flexible configuration: Remove specific languages or keep only desired ones
  • Safe operations: Replaces original files with filtered versions, creates backups with _original prefix
  • Track analysis: Uses mkvinfo to analyze audio tracks before processing

Installation

Prerequisites

LangFilter requires mkvtoolnix for MKV file processing:

Ubuntu/Debian:

sudo apt install mkvtoolnix

macOS (Homebrew):

brew install mkvtoolnix

Arch Linux:

sudo pacman -S mkvtoolnix-cli

Other platforms: Download from mkvtoolnix.download

Install LangFilter

This project uses uv for dependency management.

  1. Install uv:

    curl -LsSf https://astral.sh/uv/install.sh | sh
  2. Install the project:

    uv sync
  3. The langfilter command will be available after installation.

Quick Start

Interactive Mode

langfilter movie.mkv

Non-Interactive Mode with Configuration

langfilter --non-interactive *.mkv

Process Files (replaces originals with backup)

langfilter movie.mkv

Process Without Creating Backup

langfilter --no-backup movie.mkv

Configuration

Create a configuration file to automate track selection. LangFilter looks for config files in:

  • ./langfilter.ini (current directory)
  • ./.langfilter.ini (current directory, hidden)
  • ~/.config/langfilter/config.ini (user config directory)
  • ~/.langfilter.ini (user home directory)

Example Configuration

[DEFAULT]
# Remove Russian and Ukrainian tracks
remove=rus,ukr

# Or keep only English and unknown tracks
# keep=eng,unknown

Usage

langfilter [OPTIONS] FILES...

Options:
  -o, --output PATH       Output file path (single file only)
  -n, --non-interactive   Non-interactive mode using config rules
  --no-backup            Don't create backup (default: creates backup with _original prefix)
  -c, --config PATH      Path to configuration file
  --version              Show version

Development

For development setup:

make install  # Install dependencies
make lint     # Run linting and formatting
make test     # Run tests
make          # Run all checks

Dependencies

  • Python 3.13+
  • mkvtoolnix (for mkvinfo and mkvmerge commands)

License

See LICENSE file for details.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published