ubuntu
カテゴリ
TV録画後にAmatsukazeへ
2026/04/18 21時tv
当初は、録画を完成後、CMカットを行い、エンコードまで成功させたが、CM判定の『comskip』『join_logo_scp』TV局ロゴを収集し編集して行うも、Windows環境のAmtsukazeには遠く及ばない精度で、それを高めていくのには相当の調整が必要という事が判明し、Ununtu側では録画専用にして、翌朝早朝5時半にスリー状態のWindouws機のAmatukazeに渡すこととした。

エンコードスクリプト 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

記事一覧