#!/usr/bin/env bash
# tv-screenshot.sh – Bildschirmfoto oder Bildschirmaufnahme vom Fernseher holen
#
#   ./tv-screenshot.sh                      # tv-JJJJMMTT-HHMMSS.png im aktuellen Verzeichnis
#   ./tv-screenshot.sh wohnzimmer.png       # eigener Dateiname
#   ./tv-screenshot.sh --record 20          # 20 Sekunden Video (tv-….mp4), höchstens 180
#   ./tv-screenshot.sh --record 20 film.mp4
#
# Hinweise: Kopiergeschützte Inhalte (DRM, viele Streaming-Apps) erscheinen schwarz.
# „screenrecord“ nimmt keinen Ton auf und fehlt auf manchen Fernsehern ganz.
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source=tv-lib.sh
. "$SCRIPT_DIR/tv-lib.sh"

usage() { sed -n '2,10p' "$0" | sed 's/^# \{0,1\}//'; exit "${1:-0}"; }

stamp="$(date +%Y%m%d-%H%M%S)"

case "${1:-}" in
  -h|--help) usage 0 ;;
  --record)
    secs="${2:-}"
    case "$secs" in ""|*[!0-9]*) usage 1 ;; esac
    [ "$secs" -ge 1 ] && [ "$secs" -le 180 ] || tv_die "Dauer zwischen 1 und 180 Sekunden angeben."
    out="${3:-tv-$stamp.mp4}"
    remote="/sdcard/tv-record-$stamp.mp4"
    tv_connect
    tv_info "Nehme $secs s auf …"
    tv_shell screenrecord --time-limit "$secs" "$remote"
    tv_adb pull "$remote" "$out" >/dev/null
    tv_shell rm -f "$remote"
    tv_info "Gespeichert: $out"
    ;;
  *)
    out="${1:-tv-$stamp.png}"
    tv_connect
    # exec-out überträgt die PNG-Daten unverändert (ohne Zeilenende-Umwandlung).
    tv_adb exec-out screencap -p > "$out"
    [ -s "$out" ] || tv_die "Kein Bild erhalten."
    tv_info "Gespeichert: $out"
    ;;
esac
