Skip to content

Repository files navigation

AnyConv - offline file converter & downloader

A cross-platform GUI app that converts files between many formats — and downloads videos/audio/playlists. Conversions run 100% offline.

Built with Python + PySide6. It orchestrates proven conversion engines already installed on your system:

Engine Handles
ffmpeg images (png/jpg/webp/avif/bmp/tiff), audio (mp3/flac/wav/ogg/m4a/opus/wma), video (mp4/mkv/webm/mov/avi/gif, audio extraction)
Calibre (ebook-convert) e-books: azw3/azw/kfx/mobi/epub/fb2/cbz <-> pdf/epub/azw3/mobi/txt/docx/rtf...
LibreOffice (headless) office docs: docx/odt/xlsx/pptx/odp/csv/rtf/txt/html/pdf

Highlights: drag & drop batch queue with per-file progress, 16 famous color themes with auto-tinted vector icons everywhere, playlist downloads, one-click yt-dlp updates, activity log.

Screenshots

Converter - batch queue with per-file targets and status badges (Catppuccin Mocha)

Converter tab

Downloader - yt-dlp powered, with speed and ETA (Nord)

Downloader tab

Logs - timestamped activity trail (Gruvbox Dark)

Logs tab

All 16 themes, live-switchable:

Themes

Setup

Easy install (recommended)

Linux/macOS:

./install.sh

This single command:

  1. Installs any missing conversion engines via your package manager (prompts for your sudo password only when something is missing)
  2. Creates the Python venv and installs PySide6
  3. Adds the anyconv command to ~/.local/bin
  4. Adds "AnyConv" to your desktop applications menu

Options:

  • ./install.sh --binary — additionally build a standalone executable in dist/
  • ANYCONV_SKIP_ENGINES=1 ./install.sh — skip step 1 (no sudo)
  • Uninstall anytime: ./uninstall.sh

Windows: run install.bat (it prints winget commands for missing engines and creates a Start Menu shortcut).

Manual install

  1. Python 3.10+ required.

  2. Install the engines you need (all optional; the app shows which are missing):

    • ffmpeg
      • Arch: sudo pacman -S ffmpeg
      • Debian/Ubuntu: sudo apt install ffmpeg
      • Windows: winget install Gyan.FFmpeg (or choco/scoop)
      • macOS: brew install ffmpeg
    • Calibre (e-books)
    • LibreOffice
      • Arch: sudo pacman -S libreoffice-still
      • Debian/Ubuntu: sudo apt install libreoffice
      • Windows/macOS: installer from https://libreoffice.org
  3. Run:

./run.sh          # creates .venv, installs PySide6, launches

or manually:

python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
.venv/bin/python main.py

Usage

Converter tab

  • Drag & drop files (or "Add files...")
  • Pick a target format per file in the dropdown
  • Choose output folder ("Save next to source" by default)
  • Click Convert. Jobs run one after another with progress; Cancel stops the queue.
  • Example: drop an .azw3 book, choose "PDF document", convert.

Downloader tab

Downloads videos, audio or whole playlists via yt-dlp:

  • Paste a URL, pick a format: Best video+audio, video capped at 2160p / 1440p / 1080p / 720p / 480p / 360p, or audio-only MP3 / M4A / Opus (needs ffmpeg)
  • Tick Whole playlist for multi-item URLs; untick to grab only the linked video
  • Live progress with speed and ETA; Cancel stops the current job

This is the one online feature — conversion stays 100% offline.

Logs tab

A timestamped trail of engine detection, every conversion result, download activity and yt-dlp updates. Handy for reporting issues.

Updating yt-dlp

Click Update yt-dlp in the Downloader tab. The app downloads the newest release into its per-user data folder and prefers it over any system-wide yt-dlp, so site-breaking changes are always one click away from being fixed:

  • Linux: ~/.local/share/anyconv/bin/
  • macOS: ~/Library/Application Support/AnyConv/bin/
  • Windows: %APPDATA%\AnyConv\bin\

(Audio extraction additionally needs ffmpeg installed.)

Updating AnyConv itself

./update.sh        # Linux/macOS: git pull + refresh venv dependencies
update.bat         # Windows equivalent

Requires the app to be a git clone of this repository (which it is, if you followed the manual setup). Your settings (theme) survive updates.

Themes

Pick a color scheme from the dropdown (top right). The choice is saved and restored on next launch; switching applies instantly.

Catppuccin (Mocha, Macchiato, Frappe, Latte), Gruvbox (Dark, Light), Nord, Dracula, Tokyo Night, Solarized (Dark, Light), Rosé Pine (Main, Dawn), One Dark, Everforest Dark, GitHub Dark.

To add your own, append a palette to THEMES in anyconv/themes.py — everything else (stylesheet generation, persistence, UI) picks it up automatically.

Package as a standalone executable (optional)

.venv/bin/pip install pyinstaller
.venv/bin/pyinstaller --windowed --name AnyConv main.py

Note: this bundles the GUI only; ffmpeg/Calibre/LibreOffice stay as system dependencies (they are free to install on every platform).

Layout

main.py                entry point (--selftest for headless smoke test)
anyconv/formats.py     extension -> target formats catalog
anyconv/backends.py    engine detection + command building + progress parsing
anyconv/downloader.py  yt-dlp integration: locate, command builder, self-update
anyconv/themes.py      color schemes (Catppuccin, Gruvbox, Nord...) + icon rendering
anyconv/worker.py      QThread jobs (convert / download / yt-dlp update)
anyconv/ui.py          Qt window: tabs, drag & drop, queue, logs

install.sh|bat         first-time installer (engines + venv + menu entry)
run.sh                 quick launcher (creates venv on demand)
update.sh|bat          self-update from this git repo
uninstall.sh           remove launcher/menu entries

License

MIT — free to use, modify and share.

About

Offline GUI file converter for images, audio, video, documents and e-books. PySide6 + ffmpeg/Calibre/LibreOffice. 16 color themes.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages