# Livestream Archiver A Rust application that monitors a directory for livestream recordings, processes them, and syncs them to a PC. ## Features - **File Detection**: Monitors `/home/rockvilleav/Sync/Livestreams` for new MP4 files - **Readiness Check**: Waits for files to be completely written before processing - **PC Sync**: Uses rsync to send files to your PC immediately after detection - **Caching & Retry**: Caches failed syncs and retries them on subsequent runs - **Processing**: Converts files to AV1 using QSV hardware acceleration - **Organization**: Creates date-based directory structure in Jellyfin format - **Cleanup**: Deletes original files after successful processing and sync ## Configuration Set the `PC_SYNC_TARGET` environment variable to configure where files are synced: ```bash export PC_SYNC_TARGET="user@192.168.1.100:/path/to/destination/" ``` If not set, defaults to: `user@192.168.1.100:/path/to/destination/` ## Usage ```bash cargo run ``` The application will: 1. Check for existing unprocessed files 2. Start monitoring for new files 3. For each detected file: - Wait for it to be ready (stable size/modification time) - Sync to PC using rsync - Convert to AV1 format - Create NFO metadata file - Delete original file ## Dependencies - `rsync` must be installed and accessible in PATH - `ffmpeg` with QSV support for hardware acceleration - SSH key authentication should be set up for passwordless rsync ## Directory Structure Output files are organized as: ``` /media/archive/jellyfin/livestreams/ ├── 2024/ │ ├── 01-January/ │ │ ├── Divine Worship Service - RTSDA | January 01 2024.mp4 │ │ ├── Divine Worship Service - RTSDA | January 01 2024.nfo │ │ └── ... │ └── ... └── ... ```