Skip to content

Terminal-based file converter built with Go

License

Notifications You must be signed in to change notification settings

sametcn99/golter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Golter

Logo

Terminal-based file converter built with Go. It provides a modern, user-friendly Terminal User Interface (TUI) for batch converting images, videos, audio, and documents between various formats.

Table of Contents

Features

  • Modern TUI Interface: Beautiful terminal interface with smooth animations and visual feedback.
  • Batch Conversion: Select multiple files and convert them all at once with concurrent processing.
  • Image Conversion: Native Go implementation for high-performance image processing with quality control.
  • Video Conversion: Leverages ffmpeg for robust video format support with optimized encoding presets.
  • Audio Conversion: Convert between various audio formats using ffmpeg with bitrate control.
  • Document Conversion: Support for PDF, Markdown, HTML, EPUB, and doc data conversions (JSON/YAML/XML/TOML/CSV/Excel).
  • Keyboard Navigation: Full keyboard support with Vim-like keybindings (j/k, h/l).
  • Cross-Platform: Works on Linux, macOS, and Windows.
  • Compression Options: Choose from High, Balanced, or Compact quality levels.
  • Real-time Progress: Visual progress indicators during conversion.
  • Smart File Selection: Only files of the same type can be selected together for consistent conversions.

Supported Formats

Images

Input Output
.jpg, .jpeg, .png, .webp .jpg, .png, .webp

Features:

  • Quality-based compression (92% High, 75% Balanced, 55% Compact)
  • WebP lossless mode for highest quality
  • Optimized PNG compression levels

Videos

Input Output
.mp4, .avi, .mkv, .webm, .gif, .mov .mp4, .avi, .mkv, .webm, .gif, .mov

Features:

  • H.264/H.265 encoding for MP4/MKV
  • VP9 encoding for WebM
  • Optimized GIF creation with palette generation
  • Multi-threaded encoding
  • Fast-start enabled for MP4 streaming

Audio

Input Output
.mp3, .wav, .ogg, .flac, .m4a, .aac .mp3, .wav, .ogg, .flac, .m4a, .aac

Features:

  • Bitrate control (320k High, 192k Balanced, 128k Compact)
  • FLAC lossless support
  • Opus/Vorbis encoding for OGG

Note: Video and audio conversion requires ffmpeg. Ebook conversions beyond EPUB require Calibre's ebook-convert. DOCX conversions require Pandoc.

Documents

Input Output
.pdf, .md, .html .pdf, .md, .html, .docx, .epub, .mobi, .azw, .azw3, .fb2
.docx .md, .html, .txt
.epub, .mobi, .azw, .azw3, .fb2 .epub, .mobi, .azw, .azw3, .fb2, .pdf, .html, .txt, .md
.csv .xlsx
.xlsx, .xls .csv
.json .yaml, .yml, .xml, .csv, .xlsx, .xls
.yaml, .yml .json, .toml
.toml .yaml, .yml
.xml .json
.csv .json
.xlsx, .xls .json

Features:

  • PDF text extraction to Markdown
  • Markdown to styled HTML with responsive design
  • Markdown/HTML to EPUB conversion
  • EPUB/MOBI/AZW/AZW3/FB2 conversions via Calibre (if installed)
  • DOCX conversions via Pandoc (if installed)
  • PDF compression/optimization
  • CSV to Excel conversion with styled headers and auto-fit columns
  • Excel to CSV export (exports first sheet)
  • JSON ↔ YAML conversion (preserves nested data)
  • JSON ↔ XML conversion with automatic root wrapping
  • JSON ↔ CSV / Excel (first sheet) conversions
  • YAML ↔ TOML conversion

Installation

Prerequisites

  • Go 1.21+
  • ffmpeg (required for video/audio conversion)
  • Calibre (ebook-convert) (required for ebook conversions beyond EPUB)
  • Pandoc (required for DOCX conversions)

Quick Install

go install github.com/sametcn99/golter@latest

Build from Source

Using Taskfile (Recommended)

# Install task if not already installed
go install github.com/go-task/task/v3/cmd/task@latest

# Build and run
task build
./bin/golter
Command Description
task build Compiles to bin/golter
task run Runs the application
task clean Removes build artifacts
task test Runs the test suite
task fmt Formats the code
task build-all Cross-compiles for all platforms
task install Installs to GOPATH/bin
task test Runs tests

Platform-Specific Setup

Linux
# Ubuntu/Debian
sudo apt update && sudo apt install ffmpeg calibre pandoc

# Fedora
sudo dnf install ffmpeg calibre pandoc

# Arch Linux
sudo pacman -S ffmpeg calibre pandoc

# Build
go build -o golter main.go

# Run
./golter
macOS
# Install ffmpeg
brew install ffmpeg

# Install Calibre (ebook-convert)
brew install --cask calibre

# Install Pandoc
brew install pandoc

# Build
go build -o golter main.go

# Run
./golter
Windows
# Using winget
winget install ffmpeg

# Calibre (ebook-convert)
winget install calibre.calibre

# Pandoc
winget install --id JohnMacFarlane.Pandoc

# Or using chocolatey
choco install ffmpeg

# Calibre (ebook-convert)
choco install calibre

# Pandoc
choco install pandoc

# Build
go build -o golter.exe main.go

# Run
.\golter.exe

Usage

Start in current directory:

./golter

Start in a specific directory:

./golter /path/to/your/media

Keyboard Controls

Key Action
/ k Move cursor up
/ j Move cursor down
/ h Go to parent directory
/ l Enter directory
Space Select/Deselect file
a Select all files of same type
d Deselect all files
Enter Open directory
c Confirm selection and proceed
/ Filter files
g Go to top
G Go to bottom
Esc Go back / Cancel
q Quit application

Notes

PATH Note (ebook-convert):

  • Linux: Typically available at /usr/bin/ebook-convert (or /snap/bin/ebook-convert). Ensure the directory is on PATH.
  • macOS (Homebrew): /opt/homebrew/bin/ebook-convert (Apple Silicon) or /usr/local/bin/ebook-convert (Intel).
  • Windows: C:\Program Files\Calibre2\ebook-convert.exe (or C:\Program Files (x86)\Calibre2\ebook-convert.exe). Add the folder to PATH if not detected.

PATH Note (pandoc):

  • Linux: Typically available at /usr/bin/pandoc or /usr/local/bin/pandoc.
  • macOS (Homebrew): /opt/homebrew/bin/pandoc (Apple Silicon) or /usr/local/bin/pandoc (Intel).
  • Windows: C:\Program Files\Pandoc\pandoc.exe (or C:\Program Files (x86)\Pandoc\pandoc.exe). Add the folder to PATH if not detected.

License

GPL-3.0

About

Terminal-based file converter built with Go

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  

Languages