iso-to-mkv 858 B

12345678910111213141516171819202122232425262728
  1. #!/usr/bin/env bash
  2. SEARCH_DIR="${1:-$(pwd)}"
  3. OUT_DIR="${2:-"$SEARCH_DIR/out"}"
  4. mkdir -p "$OUT_DIR"
  5. prev_season=""
  6. ep=1
  7. find "$SEARCH_DIR" -type f -iname '*.iso' | sort | while read -r iso; do
  8. echo "$iso"
  9. parent=$(basename "$(dirname "$iso")")
  10. [[ $parent =~ S([0-9]+) ]] || continue
  11. season=$(printf "%02d" "${BASH_REMATCH[1]}")
  12. [[ $season != "$prev_season" ]] && { ep=1; prev_season=$season; }
  13. ripdir="$OUT_DIR/temp/$parent"
  14. mkdir -p "$ripdir" "$OUT_DIR/Season $season"
  15. snap run makemkv.makemkvcon -r mkv --minlength=1800 iso:"$iso" all "$ripdir"
  16. for mkv in "$ripdir"/*.mkv; do
  17. out="$OUT_DIR/Season $season/S${season}E$(printf "%02d" "$ep").mkv"
  18. ffmpeg -nostdin -hide_banner -loglevel error -i "$mkv" \
  19. -map 0:v -map 0:a:m:language:eng -map 0:s:m:language:eng \
  20. -c copy "$out"
  21. rm "$mkv"
  22. ((ep++))
  23. done
  24. done