#!/bin/bash

set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
VENV_PYTHON="$SCRIPT_DIR/.venv/bin/python3"
EXTRACT_SCRIPT="$SCRIPT_DIR/extract_yt_cookies.py"
LOCAL_COOKIE_FILE="${TMPDIR:-/tmp}/yt_cookies.txt"
SERVER="homeserverbeaver"
REMOTE_COOKIE_FILE="/etc/podsync/youtube-cookies.txt"
REMOTE_COOKIE_BAK="/etc/podsync/youtube-cookies.txt.bak"
LOG_FILE="${TMPDIR:-/tmp}/yt_cookies_sync.log"

log() { printf '[%s] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$1" | tee -a "$LOG_FILE"; }
die() { log "ERROR: $1"; exit 1; }
cleanup() { rm -f "$LOCAL_COOKIE_FILE"; }

trap cleanup EXIT INT TERM
umask 077

[[ -x "$VENV_PYTHON" ]] || die "Environment missing. Run: $SCRIPT_DIR/setup.sh"
[[ -f "$EXTRACT_SCRIPT" ]] || die "Extractor not found: $EXTRACT_SCRIPT"
command -v scp >/dev/null 2>&1 || die "scp not found"
command -v ssh >/dev/null 2>&1 || die "ssh not found"

log "Starting YouTube cookie sync..."
log "Extracting cookies from Firefox..."
"$VENV_PYTHON" "$EXTRACT_SCRIPT" "$LOCAL_COOKIE_FILE" || die "Failed to extract cookies"

[[ -s "$LOCAL_COOKIE_FILE" ]] || die "Cookie file not created"

log "Uploading to $SERVER..."
scp "$LOCAL_COOKIE_FILE" "$SERVER:/tmp/yt_cookies_new.txt" || die "SCP failed"

log "Installing on server..."
ssh "$SERVER" "if [ -f '$REMOTE_COOKIE_FILE' ]; then cp '$REMOTE_COOKIE_FILE' '$REMOTE_COOKIE_BAK'; fi; mv /tmp/yt_cookies_new.txt '$REMOTE_COOKIE_FILE' && chmod 600 '$REMOTE_COOKIE_FILE' && systemctl restart podsync" || die "Remote install failed"

log "Done. Cookies synced and podsync restarted."
