エンコードスクリプト encode.sh の作成
nano /mnt/data/docker/encoder/scripts/encode.sh
#!/bin/bash
# encode.sh - EPGStation録画完了コールバック
# エンコードはWindowsのAmatsukazeに任せる
set -uo pipefail
export LANG=ja_JP.UTF-8
export LC_ALL=ja_JP.UTF-8
LOG_BASE="/mnt/data/PT2/log"
INPUT="${RECPATH:-}"
NAME="${NAME:-unknown}"
CHANNELNAME="${CHANNELNAME:-unknown}"
CLEANUP_SCRIPT="/mnt/data/backup/scripts/disk_cleanup.sh"
if [ -z "${INPUT}" ]; then
echo "ERROR: RECPATH is not set" >&2
exit 0
fi
BASENAME=$(basename "${INPUT}" .ts)
INPUT_DIR=$(dirname "${INPUT}")
DATEDIR=$(date +%Y%m)
LOG_DIR="${LOG_BASE}/${DATEDIR}"
mkdir -p "${LOG_DIR}"
LOG_FILE="${LOG_DIR}/${BASENAME}.log"
log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "${LOG_FILE}"; }
log "=== 録画完了 ==="
log "ファイル: ${INPUT}"
log "番組名: ${NAME}"
log "チャンネル: ${CHANNELNAME}"
# --- スキップ判定 ---
SKIP="false"
if echo "${CHANNELNAME}" | grep -qiP '[JJ].{0,6}[SS][PP][OO][RR][TT][SS]'; then
log "JSPORTS → スキップ(Amatsukazeに渡さない)"
SKIP="true"
elif echo "${NAME}" | grep -q '連続テレビ小説'; then
log "連続テレビ小説 → スキップ(Amatsukazeに渡さない)"
SKIP="true"
else
log "Amatsukaze待ち → /PT2/に保持"
fi
# --- ファイル名クリーニング(スキップ対象以外)---
if [ "${SKIP}" = "false" ]; then
# 日付部分(先頭数字)を取得
DATEPART="${BASENAME%% *}"
# TV局名 [〇〇〇] を除去してタイトル部分を取得
RAW_TITLE=$(echo "${BASENAME}" | sed -e 's/^[0-9]* //')
# 不要タグ・記号を除去
CLEAN_TITLE=$(echo "${RAW_TITLE}" | sed \
-e 's/\[解\]//g' \
-e 's/\[初\]//g' \
-e 's/\[デ\]//g' \
-e 's/\[無\]//g' \
-e 's/\[無料\]//g' \
-e 's/\[二\]//g' \
-e 's/\[字\]//g' \
-e 's/\[新\]//g' \
-e 's/\[再\]//g' \
-e 's/\[SS\]//g' \
-e 's/\[多\]//g' \
-e 's/(字幕版)//g' \
-e 's/\[R15+\]//g' \
-e 's/\[PG12相当\]//g' \
-e 's/\[PG12\]//g' \
-e 's/‼//g' \
-e 's/\//-/g' \
-e 's/|/ /g' \
-e 's/[[:space:]][[:space:]]*/ /g' \
-e 's/[[:space:]]*$//' \
-e 's/^[[:space:]]*//')
NEW_BASENAME="${DATEPART} ${CLEAN_TITLE}"
NEW_INPUT="${INPUT_DIR}/${NEW_BASENAME}.ts"
if [ "${NEW_BASENAME}" != "${BASENAME}" ]; then
if [ ! -f "${NEW_INPUT}" ]; then
mv "${INPUT}" "${NEW_INPUT}"
log "リネーム: ${BASENAME} → ${NEW_BASENAME}"
# ログファイルも新しい名前で継続
NEW_LOG_FILE="${LOG_DIR}/${NEW_BASENAME}.log"
mv "${LOG_FILE}" "${NEW_LOG_FILE}"
LOG_FILE="${NEW_LOG_FILE}"
else
log "WARN: リネーム先が既に存在します: ${NEW_BASENAME}"
fi
else
log "リネーム不要: ${BASENAME}"
fi
fi
# --- ディスク容量チェック ---
if [ -x "${CLEANUP_SCRIPT}" ]; then
log "ディスク容量チェック実行..."
bash "${CLEANUP_SCRIPT}" >> "${LOG_FILE}" 2>&1
else
log "WARN: disk_cleanup.sh が見つからないかまたは実行権限がありません"
fi
exit 0