#!/usr/bin/env bash # # 功能: # 1. 自動安裝 curl、jq(若系統尚未安裝)。 # 2. 檢查給定 YouTube 影片的 playabilityStatus,判斷在未登入情況下是否能正常播放。 # # 使用方法: # 1) 切換至 root 或確保能使用 sudo(腳本中自動 apt-get)。 # 2) ./youtube_check.sh # # 例如: # ./youtube_check.sh a3iRoMPmsdg # --- 檢查並安裝依賴套件 --- if ! command -v curl &>/dev/null || ! command -v jq &>/dev/null; then echo "更新套件索引並安裝缺少的工具(curl, jq)..." apt-get update -y apt-get install -y curl jq fi # --- 解析參數 --- VIDEO_ID="$1" if [ -z "$VIDEO_ID" ]; then echo "用法:$0 " exit 1 fi # --- 取得 YouTube 頁面HTML (不帶登入Cookie) --- HTML_CONTENT=$(curl -s "https://www.youtube.com/watch?v=${VIDEO_ID}") # --- 從頁面中擷取 ytInitialPlayerResponse JSON --- JSON_BLOCK=$(echo "$HTML_CONTENT" \ | grep -o 'ytInitialPlayerResponse = {.*};' \ | sed 's/ytInitialPlayerResponse = //' \ | sed 's/;$//') # 若找不到 JSON,判定為「無法取得播放資訊」,可能被擋或重定向等 if [ -z "$JSON_BLOCK" ]; then echo "無法擷取 ytInitialPlayerResponse,可能被 YouTube 直接擋住或此影片不存在。" exit 1 fi # --- 用 jq 解析 .playabilityStatus.status --- STATUS=$(echo "$JSON_BLOCK" | jq -r '.playabilityStatus.status' 2>/dev/null) if [ "$STATUS" = "OK" ]; then echo "影片可正常播放 (status=OK)" exit 0 elif [ -n "$STATUS" ]; then echo "影片播放受限,status=${STATUS}" exit 1 else echo "無法判定影片狀態,可能解析失敗或不支援此影片。" exit 1 fi