first commit
This commit is contained in:
53
jarvis_yt_play.sh
Executable file
53
jarvis_yt_play.sh
Executable file
@@ -0,0 +1,53 @@
|
||||
#!/bin/bash
|
||||
# 유튜브 재생 (자비스 메인 프로세스 밖 — fork 데드락 방지)
|
||||
# 사용: jarvis_yt_play.sh "검색어" ["https://youtube.com/watch?v=..."]
|
||||
set -euo pipefail
|
||||
|
||||
QUERY="${1:-}"
|
||||
WATCH_URL="${2:-}"
|
||||
BASE="/home/hoon/projects/jarvis"
|
||||
YT="${BASE}/jarvis_env/bin/yt-dlp"
|
||||
LOG="${BASE}/jarvis_logs/yt.log"
|
||||
PIDFILE="${BASE}/jarvis_logs/media.pid"
|
||||
|
||||
log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" >>"$LOG"; }
|
||||
|
||||
if [[ -z "$QUERY" ]]; then
|
||||
log "빈 검색어"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -f "$PIDFILE" ]]; then
|
||||
old_pid="$(cat "$PIDFILE" 2>/dev/null || true)"
|
||||
if [[ -n "$old_pid" ]]; then
|
||||
kill "$old_pid" 2>/dev/null || true
|
||||
sleep 0.2
|
||||
kill -9 "$old_pid" 2>/dev/null || true
|
||||
fi
|
||||
rm -f "$PIDFILE"
|
||||
fi
|
||||
|
||||
log "검색: $QUERY"
|
||||
|
||||
URL=""
|
||||
if [[ -x "$YT" ]]; then
|
||||
if [[ -n "$WATCH_URL" && "$WATCH_URL" =~ ^https?:// ]]; then
|
||||
log "API/사전확정 URL: $WATCH_URL"
|
||||
URL="$("$YT" -f bestaudio/best --no-playlist -g "$WATCH_URL" 2>>"$LOG" | head -1 || true)"
|
||||
else
|
||||
URL="$("$YT" -f bestaudio/best --no-playlist -g "ytsearch1:${QUERY}" 2>>"$LOG" | head -1 || true)"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ ! "$URL" =~ ^https?:// ]]; then
|
||||
log "URL 실패: $QUERY"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log "재생 시작: $QUERY"
|
||||
|
||||
cvlc --play-and-exit --no-video --quiet --no-repeat "$URL" &
|
||||
echo $! >"$PIDFILE"
|
||||
wait
|
||||
rm -f "$PIDFILE"
|
||||
log "재생 종료: $QUERY"
|
||||
Reference in New Issue
Block a user