A Docker-based Python application that transfers completed recordings from TVHeadend to Jellyfin media storage via SCP. Features: - Monitors TVHeadend for completed recordings via JSON API - Transfers files via SCP with SSH key authentication - Organizes files by show name - Deletes recordings from TVHeadend after successful transfer - Tracks transferred files to avoid duplicates - Dry run mode for testing without making changes
29 lines
964 B
YAML
29 lines
964 B
YAML
services:
|
|
tvh2jellyfin:
|
|
user: "1000:1000"
|
|
build: .
|
|
container_name: tvh2jellyfin
|
|
environment:
|
|
# TVHeadend connection (API)
|
|
- TVH_HOST=${TVH_HOST:-192.168.1.100}
|
|
- TVH_PORT=${TVH_PORT:-9981}
|
|
- TVH_USER=${TVH_USER}
|
|
- TVH_PASS=${TVH_PASS}
|
|
# TVHeadend SSH access (for file transfer)
|
|
- TVH_SSH_USER=${TVH_SSH_USER:-${TVH_USER}}
|
|
- SSH_KEY_PATH=/app/.ssh/id_rsa
|
|
# Local destination path (inside container)
|
|
- DEST_PATH=/media/tv
|
|
# Application settings
|
|
- POLL_INTERVAL=${POLL_INTERVAL:-300}
|
|
- LOG_LEVEL=${LOG_LEVEL:-INFO}
|
|
- DRY_RUN=${DRY_RUN:-false}
|
|
volumes:
|
|
# State persistence
|
|
- ./data:/app/data
|
|
# SSH key for SCP from TVHeadend (host path, read-only)
|
|
- ${SSH_KEY_HOST_PATH:-~/.ssh/id_rsa}:/app/.ssh/id_rsa:ro
|
|
# Jellyfin media library (destination)
|
|
- ${JELLYFIN_MEDIA_PATH:-/mnt/jellyfin/tv}:/media/tv
|
|
restart: unless-stopped
|