#!/usr/bin/env bash

# NOTE: needs mkvtoolnix installed, ie. `apt install mkvtoolnix`.

set -e

OUT="$PWD"
echo "processing current directory: $OUT"

for dir in */ ; do
  [ -d "$dir" ] || continue
  echo "processing $dir"

  cd "$dir"

  # prefer .rar if present
  rarfile=$(ls *.rar 2>/dev/null | head -n1)
  if [ -z "$rarfile" ]; then
    rarfile=$(ls *.r00 2>/dev/null | head -n1)
  fi

  if [ -z "$rarfile" ]; then
    echo "  no .rar/.r00 in $dir, skipping"
    cd ..
    continue
  fi

  unrar x -o+ "$rarfile" . || { echo "  extraction failed in $dir"; cd ..; continue; }

  # find first video file
  video=$(find . -maxdepth 1 -type f \
    \( -iname '*.mkv' -o -iname '*.mp4' -o -iname '*.avi' -o -iname '*.m2ts' \) \
    ! -iname '*sample*' | head -n1)

  if [ -z "$video" ]; then
    echo "  no video found after extraction in $dir"
    cd ..
    continue
  fi

  base=$(basename "$dir" /)
  out="$OUT/${base}.mkv"

  echo "  muxing '$video' -> '$out'"
  mkvmerge -o "$out" "$video"

  cd ..
done

