Metadata-Version: 2.3
Name: ffmpeg-update
Version: 2.0.1
Summary: Package manager for FFmpeg, FFprobe, and FFplay static binaries
Keywords: updater,installer,downloader,binary,program,executable,command,line,cli,tool
Author: Asadullah Shaikh
Classifier: Topic :: Utilities
Classifier: Topic :: Terminals
Classifier: Topic :: Multimedia
Classifier: Topic :: System :: Installation/Setup
Classifier: Topic :: System :: Software Distribution
Classifier: Topic :: Software Development :: Build Tools
Classifier: Environment :: Console
Classifier: Operating System :: Unix
Classifier: Operating System :: MacOS
Classifier: Operating System :: POSIX
Classifier: Operating System :: POSIX :: Linux
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: End Users/Desktop
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Information Technology
Classifier: Development Status :: 5 - Production/Stable
Classifier: Programming Language :: Python :: 3
Requires-Dist: fire>=0.7.1,<0.8.0
Requires-Dist: niquests>=3.15.2,<4.0.0
Requires-Dist: tqdm>=4.67.1,<5.0.0
Requires-Python: >=3.9
Project-URL: Repository, https://github.com/pantheraleo-7/ffmpeg-update
Description-Content-Type: text/markdown

# FFUp

A CLI package manager for the FFmpeg suite. It supports installation, updating, and management of pre-built static binaries published by [Martin Riedl](https://ffmpeg.martin-riedl.de/).

## Features

- Install [pre-built static binaries of] FFmpeg, FFprobe, and/or FFplay
- Fetch latest `release` or `snapshot` builds
- Configure custom installation location
- Update to latest version
- Check for updates
- Uninstall from system
- Smart permission handling
- Atomic file system operations
- Progress bar with ETA and download speed
- Automatic operating system and machine architecture detection

> **Supported Platforms (Upstream):** Linux amd64, Linux arm64v8, macOS Intel (Deprecated), Apple Silicon

## Installation

FFUp is available in and as `ffmpeg-update` python package on PyPI.

```bash
pip install ffmpeg-update
```

> **Note:** you may have to activate the virtual environment or put the `bin` directory in `$PATH`

## CLI Reference

### Usage

The installation provides the `ffup` executable.

```bash
ffup [OPTIONS] <install|update|check|uninstall> [ffpmeg] [ffprobe] [ffplay]
```

> **Hint:** you can pass multiple names to the commands, e.g. `ffup install ffmpeg ffprobe`

Alternatively, it can also be invoked using `python -m`.

```bash
python -m ffup [OPTIONS] <install|update|check|uninstall>
```

### Commands

- **Install**:
  ```bash
  ffup install [ffpmeg] [ffprobe] [ffplay]
  ```
- **Update**:
  ```bash
  ffup update [--dry-run] [ffpmeg] [ffprobe] [ffplay]
  ```
- **Check**:
  ```bash
  ffup check [ffpmeg] [ffprobe] [ffplay]
  ```
- **Uninstall**:
  ```bash
  ffup uninstall [ffpmeg] [ffprobe] [ffplay]
  ```

> **Note:** if you do not pass any name, e.g. `ffup install`, all commands will default to `ffmpeg`

## Documentation

### Syntax

```bash
ffup [--dir <PATH>] [--os <linux|macos>] [--arch <arm64|amd64>] [--build <snapshot|release>] <install|update [--dry-run]|check|uninstall> [ffpmeg] [ffprobe] [ffplay]
```

### Global Options and Environment Variables

> **Note:** the environment variables and defaults are listed in order of precedence

```bash
ffup [--dir <PATH>]
```

- Specifies the installation directory
  - `$FFUP_DIR`
  - `$XDG_BIN_HOME`
  - Defaults to `~/.local/bin`

```bash
ffup [--build <snapshot|release>]
```

- Specifies the build type
  - `$FFUP_BUILD`
  - Defaults to `snapshot`.

```bash
ffup [--os <linux|macos>]
```

- Specifies the operating system
  - `$FFUP_OS`
  - Defaults to auto-detection using `platform` stdlib

```bash
ffup [--arch <arm64|amd64>]
```

- Specifies the machine architecture
  - `$FFUP_ARCH`
  - Defaults to auto-detection using `platform` stdlib

### Command Flags

```bash
ffup update [--dry-run]
```

- Checks for updates but stops before downloading and installing
- `ffup check` is an alias for `ffup update --dry-run`

### Error Handling

- `PermissionError`
  - Triggers automatic escalation via `sudo`
  - The user is prompted for a password at `stdin`
- `FileNotFoundError`
  - By design, all commands will fail if the path in question does not exist
  - If the error occurs in the `ffup install` command, use `mkdir -p <PATH>` to create the installation directory
  - If the error occurs in any other command, ensure the path points to the installed binary
- `requests.exceptions.HTTPError`
  - `404 Client Error: Not Found for url: ...`
    - Caused by invalid input value for an option or argument
    - Ensure the values are correct
