Metadata-Version: 2.4
Name: steam-game-recording-exporter
Version: 1.3.0
Summary: Export Steam game recordings to MP4 format
Author: yb-yu
Project-URL: Homepage, https://github.com/yb-yu/steam-game-recording-exporter
Project-URL: Repository, https://github.com/yb-yu/steam-game-recording-exporter
Project-URL: Issues, https://github.com/yb-yu/steam-game-recording-exporter/issues
Project-URL: Changelog, https://github.com/yb-yu/steam-game-recording-exporter/releases
Keywords: steam,recording,video,exporter
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: imageio-ffmpeg
Requires-Dist: requests
Requires-Dist: typer>=0.12
Requires-Dist: rich>=13.7
Requires-Dist: questionary>=2.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Dynamic: license-file

# Steam Game Recording Exporter

[![PyPI](https://img.shields.io/pypi/v/steam-game-recording-exporter)](https://pypi.org/project/steam-game-recording-exporter/)

Export Steam's fragmented game recordings (`.m4s` + `.mpd`) as standard MP4
files without re-encoding. Choose recordings from an interactive terminal menu
or use command-line options for batch exports.

- Windows, Linux and macOS with automatic Steam path detection
- Background recordings and saved clips, filtered by game or Steam account
- Parallel exports with per-worker and overall progress
- Original timestamps preserved, with optional folders per game

Original recordings are kept unless you explicitly choose source deletion or
cleanup mode.

## Quick start

We recommend [uv](https://docs.astral.sh/uv/getting-started/installation/), which also installs Python for you.

1. Install uv, unless you already have it:

   ```powershell
   # Windows (PowerShell)
   powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
   ```

   ```sh
   # macOS and Linux
   curl -LsSf https://astral.sh/uv/install.sh | sh
   ```

2. Open a new terminal, then install and run the exporter:

   ```sh
   uv tool install steam-game-recording-exporter
   steamexporter
   ```

Update with `uv tool upgrade steam-game-recording-exporter`.

Already using Python 3.11+? `pipx install steam-game-recording-exporter` or
`pip install steam-game-recording-exporter` also works.

## Interactive mode

Run `steamexporter` in an interactive terminal.
Use arrow keys and Enter to select, `Esc` to go back, and `Ctrl+C` to cancel.

```text
? What do you want to do?
❯ Export recordings to MP4
  List recordings
  Clean up sources of already-exported recordings
  Show detected Steam paths

? Which Steam recordings?
❯ Background recordings (default)
  Everything Steam has stored
  Saved clips (manually created)

? Which game?
❯ All games (21 clips)
  Counter-Strike 2 (14 clips)
  Factorio (7 clips)

? Which of the 21 clips? All of them
? Output directory /home/you/Videos
? Group exported videos into game folders? No
? How many parallel workers? (HDD source: 1-2, SSD source: 2-4) 2
? Delete the original Steam folders after a successful export? No
? Export 21 clips to /home/you/Videos with 2 workers? Yes
```

The menu remembers the output folder and worker count. Game grouping and source
deletion are off by default each run.

## Command line mode

Pass the same recording filters and export settings directly:

```sh
steamexporter --list-clips
steamexporter --process-all --group-by-game --output ~/Videos
steamexporter --help
```

Both modes detect existing exports in flat and game-folder layouts without
moving them. Active background recordings are skipped; stop the game and wait
up to a minute before retrying. Saved clips are unaffected.

## Logs and disk space

Allow space for temporary streams as well as the final MP4 for each worker.
Temporary files are removed on success or failure.

Logs include runtime versions, fragment counts and FFmpeg diagnostics:

- Windows: `%LOCALAPPDATA%\SteamGameRecordingExporter\logs\`
- macOS/Linux: `~/SteamGameRecordingExporter/logs/`

`--verbose` also prints debug logs to the console.

## Development

Requires Python 3.11+; uv can install it automatically.

```sh
git clone https://github.com/yb-yu/steam-game-recording-exporter.git
cd steam-game-recording-exporter
uv sync --extra dev
uv run steamexporter
uv run pytest -q
uv build
```

CI tests Python 3.11 and 3.14 on Linux, and 3.14 on macOS and Windows, including
large recordings, concurrent exports and cleanup. Package checks run the built
CLI without a source checkout.

Use the Git-ignored `scratchpad/` for local experiments and `tests/` for
regression tests.

## License

MIT License
