diff options
author | Tim Keller <tjkeller.xyz> | 2024-11-17 23:39:40 -0600 |
---|---|---|
committer | Tim Keller <tjkeller.xyz> | 2024-11-17 23:39:40 -0600 |
commit | 08f22ad82edbe30606a8145a01ab18f2f6d71b4b (patch) | |
tree | cce5c45c996d81d131ada2f409a3c6d041b5416e /.old/d8concat | |
parent | 09ada24d4ec23cf24ab136141b354953d1bbc2fa (diff) | |
download | scripts-08f22ad82edbe30606a8145a01ab18f2f6d71b4b.tar.xz scripts-08f22ad82edbe30606a8145a01ab18f2f6d71b4b.zip |
delete .old dir since all is still stored in version control
Diffstat (limited to '.old/d8concat')
-rwxr-xr-x | .old/d8concat | 164 |
1 files changed, 0 insertions, 164 deletions
diff --git a/.old/d8concat b/.old/d8concat deleted file mode 100755 index bf8b608..0000000 --- a/.old/d8concat +++ /dev/null @@ -1,164 +0,0 @@ -#!/bin/sh - -[ -d "$1" ] || exit 1 # Exit with error if not pointing to a directory - -# Misc -duration() { ffprobe -i "$1" -show_entries format=duration -v quiet -of csv="p=0" | tr -d . ; } -timebase="1/1000000" # duration function gives microseconds - -safename() { echo "$1" | tr -d '<>:"/\|?*' ; } - -# Temp dirs -workdir="$(mktemp -d "${TMPDIR:-/tmp}/combinetapesworkdir.XXXXXX")" - -cleanup() { rm -rf "$workdir" ; } -trap cleanup EXIT INT HUP QUIT TERM ALRM USR1 - -# Loop vars -current_date=0 -duration_total=0 -chapter_start=0 -chapter_time=0 -last_chapter_concurrent=0 - -# TODO this relys on the for loop looping in order - -# Either can be ran on single dv containing directory, or many dv containing directories -for dir in "$1"/ "$1"/*/; do - dir="${dir%/}" # Remove trailing slash - title="" - - if [ "$dir" != "$1" ]; then - title="$(basename "$dir")" - fi - if echo "$dir" | grep '/\*' >/dev/null; then - break - fi - - for tape in "$dir"/*.dv; do - date="$(echo "$(basename "$tape")" | grep -o '[0-9]*\.[0-9]*\.[0-9]*' | tr '.' '-')" - time="$(echo "$(basename "$tape")" | grep -o '[0-9]*-[0-9]*-[0-9]*' | tr '-' ':')" - - if [ "$title$date" != "$current_date" ]; then - # Reset vars - current_date="$title$date" - duration_total=0 - chapter_start=0 - chapter_time=0 - last_chapter_concurrent=0 - - # Create dirs - date_dir="$workdir/$current_date" - mkdir -p "$date_dir" - - files="$date_dir/files" - chapters="$date_dir/chapters" - - # Init chapters file - printf ";FFMETADATA1\n\n" > "$chapters" - - # title file - if [ "$title" ]; then - echo "$title" > "$date_dir/title" - fi - fi - - # Concat files - echo "file '$(realpath "$tape" | sed "s/'/'\\\\''/g")'" >> "$files" - - # Chapter marker - tape_duration=$(duration "$tape" | grep -o "[1-9][0-9]*") - duration_total=$(( $duration_total + $tape_duration )) - - # Only insert chapter marker if recordings are not concurrent. dvgrab - # splits files into 1gb chunks, or 291557933 microseconds of raw dv footage - # (with digital 8) - if [ $last_chapter_concurrent = 0 ]; then - chapter_time=$time - fi - if [ $tape_duration = 291557933 ]; then - last_chapter_concurrent=1 - continue - else - last_chapter_concurrent=0 - fi - - echo "[CHAPTER]" >> "$chapters" - echo "TIMEBASE=$timebase" >> "$chapters" - echo "START=$chapter_start" >> "$chapters" - echo "END=$duration_total" >> "$chapters" - echo "title=Section starts at $chapter_time" >> "$chapters" - echo >> "$chapters" - - chapter_start=$duration_total - done -done - - -# ffmpeg combine -out_dir=export -default_title=Untitled -mkdir -p "$out_dir" - -for date_dir in "$workdir"/*; do - date="$(echo "$date_dir" | grep -o "[0-9][0-9][0-9][0-9]-[0-9]*-[0-9]*")" - origin_tape="$(basename "$1")" - - # Files - title="$date_dir/title" - files="$date_dir/files" - chapters="$date_dir/chapters" - - # Nicely title - if [ -e "$title" ]; then - # title file - output_title="$(cat "$title")" - #elif echo "$origin_tape" | grep "^[^0-9].*[0-9]*-[0-9]*-[0-9]*" >/dev/null; then - # # Beginning descriptor - # output_title="$(echo "$origin_tape" | sed 's/ [0-9#].*//')" - #elif echo "$origin_tape" | grep "$date [A-Z]" >/dev/null; then - # # Date range or list of dates with titles (Title must be capitalized, 'to' must be made lowercase - # output_title="$(echo "$origin_tape" | sed "s/.*$date //; s/ to [0-9].*//; s/;.*//")" - else - # default - output_title=$default_title - fi - - output_title="$(echo "$output_title" | sed 's/\s*#[0-9]*$//')" # Remove sequence numbers - - # File name - if [ "$output_title" = "$default_title" ]; then - output_name="$date" - else - output_name="$date $output_title" - fi - - if [ -e "$out_dir/$output_name.mp4" ]; then - output=$(ls "$out_dir" | grep "$output_name *[0-9]*.mp4" | while read -r file; do - file_tape="$(mediainfo "$out_dir/$file" | sed -n 's/Comment.* - Origin tape: //p')" - if [ "$origin_tape" = "$file_tape" ]; then - echo 0 - break - fi - done) - if [ "$output" = 0 ]; then - continue - fi - output_name="$output_name $(ls "$out_dir" | grep "$output_name *[0-9]*.mp4" | wc -l)" - fi - - # Convert - #-c copy \ - #-metadata "title=$output_title" \ # Dont set title since it will be stuck if file is renamed - ffmpeg -hide_banner -nostdin \ - -n \ - -f concat -safe 0 -i "$files" \ - -i "$chapters" -map_metadata 1 \ - -c:v libx264 -crf 22 -preset medium -tune grain \ - -vf yadif \ - -c:a aac -b:a 320k \ - -metadata "date=$date" \ - -metadata "comment=tapes.tjkeller.xyz - Origin tape: $origin_tape" \ - "$out_dir/$output_name.mp4" - #"$out_dir/$output_name.mkv" -done |