Created
April 11, 2025 09:38
Revisions
-
basdp created this gist
Apr 11, 2025 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,57 @@ #!/bin/bash set -euo pipefail # Ensure mkvmerge is installed if ! command -v mkvmerge &> /dev/null; then echo "Error: mkvmerge is not installed. Please install it first." exit 1 fi # Ensure jq is installed if ! command -v jq &> /dev/null; then echo "Error: jq is not installed. Please install it first." exit 1 fi # Check if an input file is provided if [ "$#" -lt 1 ]; then echo "Usage: $0 <input.mkv>" exit 1 fi for INPUT_FILE in "$@"; do #OUTPUT_FILE="filtered_${INPUT_FILE}" TMP_DIR="$(dirname "${INPUT_FILE}")" OUTPUT_FILE="$(mktemp --suffix=.mkv --tmpdir="${TMP_DIR}")" echo "Processing: $INPUT_FILE" # Get track info from mkvmerge JSON output TRACKS_JSON=$(mkvmerge -J "$INPUT_FILE") audio_tracks=($(echo "$TRACKS_JSON" | jq -r '.tracks[] | select(.type == "audio" and (.properties.language == "eng" or .properties.language == "dut")) | .id')) subtitle_tracks=($(echo "$TRACKS_JSON" | jq -r '.tracks[] | select(.type == "subtitles" and (.properties.language == "eng" or .properties.language == "dut")) | .id')) echo "Remaining audio tracks: ${audio_tracks[@]}" echo "Remaining subtitle tracks: ${subtitle_tracks[@]}" # Prepare track arguments for mkvmerge track_args=() if [ ${#audio_tracks[@]} -gt 0 ]; then track_args+=("-a" "$(IFS=,; echo "${audio_tracks[*]}")") fi if [ ${#subtitle_tracks[@]} -gt 0 ]; then track_args+=("-s" "$(IFS=,; echo "${subtitle_tracks[*]}")") fi # Run mkvmerge to create the filtered file mkvmerge -o "$OUTPUT_FILE" --no-attachments "${track_args[@]}" "$INPUT_FILE" echo "Writing merged file back to $INPUT_FILE..." mv --force "$OUTPUT_FILE" "$INPUT_FILE" echo "Finished $INPUT_FILE" done