This commit is contained in:
2026-01-19 21:36:25 -05:00
parent f28c54f610
commit 04fd09550a
52 changed files with 1743 additions and 0 deletions

20
bin/wsl/captureall_start_dir.sh Executable file
View File

@@ -0,0 +1,20 @@
#!/bin/bash
# Check if the argument (top-level directory) is provided
if [ -z "$1" ]; then
echo "Usage: $0 <top-level-directory>"
exit 1
fi
# Use the provided argument as the top-level directory for the find command
top_dir="$1"
export IFS=$'\n'
for i in $(find "$top_dir" -type f \( -iname "*.mp4" \) | sort -f);
do
filename="${i}"
echo "screencapturing: ${filename}"
# Uncomment the following line to actually run screencapture.py
screencapture.py "${filename}"
done

26
bin/wsl/ff169-to-43.sh Executable file
View File

@@ -0,0 +1,26 @@
#!/bin/bash
MAX_WIDTH=960
MAX_HEIGHT=540
date
export IFS=$'\n';
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile);
do
echo "Will convert to: ${i:2}_mobile.mp4";
done
echo " "
echo " "
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile);
do
echo "Resizing: ${i:2} ";\
ffmpeg -i ${i:2} -aspect "4:3" -acodec aac -b:v 3.8M -vcodec libx264 -g 30 ${i:2}_mobile.mp4
# ffmpeg -i temp.mp4 -pix_fmt yuv420p -c:v libx264 -b:v 3.8M \
# -vf scale="iw*sar*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih):ih*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih),pad=$MAX_WIDTH:$MAX_HEIGHT:(ow-iw)/2:(oh-ih)/2,setsar=1/1" \
# -r:v 29/1 -force_fps -movflags +faststart -threads 0 -c:a aac -b:a 10k -f mp4 -y ${i:2}_mobile.mp4
# rm temp.mp4
done
date

26
bin/wsl/ff43-to-169.sh Executable file
View File

@@ -0,0 +1,26 @@
#!/bin/bash
MAX_WIDTH=960
MAX_HEIGHT=540
date
export IFS=$'\n';
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile);
do
echo "Will convert to: ${i:2}_mobile.mp4";
done
echo " "
echo " "
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile);
do
echo "Resizing: ${i:2} ";\
ffmpeg -i ${i:2} -aspect "16:9" -acodec aac -vcodec libx264 -g 30 ${i:2}_mobile.mp4
#ffmpeg -i temp.mp4 -pix_fmt yuv420p -c:v libx264 -b:v 1.8M \
# -vf scale="iw*sar*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih):ih*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih),pad=$MAX_WIDTH:$MAX_HEIGHT:(ow-iw)/2:(oh-ih)/2,setsar=1/1" \
# -r:v 29/1 -force_fps -movflags +faststart -threads 0 -c:a aac -b:a 10k -f mp4 -y ${i:2}_mobile.mp4
# rm temp.mp4
done
date

51
bin/wsl/fflarge-pick_bitrate.sh Executable file
View File

@@ -0,0 +1,51 @@
#!/bin/bash
MAX_WIDTH=1920
MAX_HEIGHT=1080
read -p "Which bit-rate in MB? " thismb
read -p "Want a notify? " notifyval
date
export IFS=$'\n';
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.rmvb" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile | sort -f);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
echo "Will convert to: ${fn_noext}${ext}";
done
echo " "
echo " "
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.rmvb" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile | sort -f);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
echo "Resizing: ${i:2} ";\
ffmpeg -i ${i:2} -pix_fmt yuv420p -c:v libx264 -b:v ${thismb}M \
-vf scale="iw*sar*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih):ih*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih),pad=$MAX_WIDTH:$MAX_HEIGHT:(ow-iw)/2:(oh-ih)/2,setsar=1/1" \
-r:v 59/1 -force_fps -movflags +faststart -threads 0 -c:a aac -b:a 10k -f mp4 -g 118 -y ${fn_noext}${ext}
date
done
if [[ ( -n ${notifyval} ) ]]; then
ntfy -b pushover -o user_key useV3kis7G1EsecHhyDprNeywH72or -t 'From laptop.' send "ff job done."
fi

53
bin/wsl/fflarge.sh Executable file
View File

@@ -0,0 +1,53 @@
#!/bin/bash
MAX_WIDTH=1920
MAX_HEIGHT=1080
date
export IFS=$'\n';
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.rmvb" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile | sort -f);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
echo "Will convert to: ${fn_noext}${ext}";
done
echo " "
echo " "
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.rmvb" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile | sort -f);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
bitrate=`ffmpeg -i ${i:2} 2>&1 | egrep 'Video:' | grep -Po '[[:digit:]]+ kb/s' | cut -d ' ' -f 1`
echo "Found bitrate: ${bitrate} kb/s";
if [ "${bitrate}" == "0" ] || [ -z ${bitrate} ]; then
bitrate=`echo "8000"`
fi
echo "--> Final bitrate: ${bitrate} kb/s";
echo "Resizing: ${i:2} ";\
ffmpeg -i ${i:2} -pix_fmt yuv420p -c:v libx264 -b:v ${bitrate}k \
-vf scale="iw*sar*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih):ih*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih),pad=$MAX_WIDTH:$MAX_HEIGHT:(ow-iw)/2:(oh-ih)/2,setsar=1/1" \
-r:v 29/1 -force_fps -movflags +faststart -threads 0 -c:a aac -b:a 10k -f mp4 -g 30 -y ${fn_noext}${ext}
date
done

50
bin/wsl/fflarge_60fps.sh Executable file
View File

@@ -0,0 +1,50 @@
#!/bin/bash
MAX_WIDTH=1920
MAX_HEIGHT=1080
read -p "Want a notify when done? " notifyval
date
export IFS=$'\n';
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.rmvb" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
echo "Will convert to: ${fn_noext}${ext}";
done
echo " "
echo " "
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.rmvb" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
echo "Resizing: ${i:2} ";\
ffmpeg -i ${i:2} -pix_fmt yuv420p -c:v libx264 -b:v 10M \
-vf scale="iw*sar*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih):ih*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih),pad=$MAX_WIDTH:$MAX_HEIGHT:(ow-iw)/2:(oh-ih)/2,setsar=1/1" \
-r:v 59/1 -force_fps -movflags +faststart -threads 0 -c:a aac -b:a 10k -f mp4 -g 118 -y ${fn_noext}${ext}
date
done
if [[ ( -n ${notifyval} ) ]]; then
ntfy -b pushover -o user_key useV3kis7G1EsecHhyDprNeywH72or -t 'From laptop.' send "ff job done."
fi

53
bin/wsl/ffmedium.sh Executable file
View File

@@ -0,0 +1,53 @@
#!/bin/bash
MAX_WIDTH=1280
MAX_HEIGHT=720
date
export IFS=$'\n';
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.rmvb" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile | sort -f);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
echo "Will convert to: ${fn_noext}${ext}";
done
echo " "
echo " "
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.rmvb" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile | sort -f);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
# bitrate=`ffmpeg -i ${i:2} 2>&1 | egrep 'Video:' | grep -Po '[[:digit:]]+ kb/s' | cut -d ' ' -f 1`
# echo "Found bitrate: ${bitrate} kb/s";
if [ "${bitrate}" == "0" ] || [ -z ${bitrate} ]; then
bitrate=`echo "4000"`
fi
echo "--> Final bitrate: ${bitrate} kb/s";
echo "Resizing: ${i:2} ";\
ffmpeg -i ${i:2} -pix_fmt yuv420p -c:v libx264 -b:v ${bitrate}k \
-vf scale="iw*sar*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih):ih*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih),pad=$MAX_WIDTH:$MAX_HEIGHT:(ow-iw)/2:(oh-ih)/2,setsar=1/1" \
-r:v 29/1 -force_fps -movflags +faststart -threads 0 -c:a aac -b:a 28k -f mp4 -g 30 -y ${fn_noext}${ext}
date
done

50
bin/wsl/ffmedium_60fps.sh Executable file
View File

@@ -0,0 +1,50 @@
#!/bin/bash
MAX_WIDTH=1280
MAX_HEIGHT=720
read -p "Want a notify when done? " notifyval
date
export IFS=$'\n';
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.rmvb" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
echo "Will convert to: ${fn_noext}${ext}";
done
echo " "
echo " "
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.rmvb" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
echo "Resizing: ${i:2} ";\
ffmpeg -i ${i:2} -pix_fmt yuv420p -c:v libx264 -b:v 2.8M \
-vf scale="iw*sar*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih):ih*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih),pad=$MAX_WIDTH:$MAX_HEIGHT:(ow-iw)/2:(oh-ih)/2,setsar=1/1" \
-r:v 59/1 -force_fps -movflags +faststart -threads 0 -c:a aac -b:a 10k -f mp4 -g 118 -y ${fn_noext}${ext}
date
done
if [[ ( -n ${notifyval} ) ]]; then
ntfy -b pushover -o user_key useV3kis7G1EsecHhyDprNeywH72or -t 'From laptop.' send "ff job done."
fi

53
bin/wsl/ffmedium_noaudio.sh Executable file
View File

@@ -0,0 +1,53 @@
#!/bin/bash
MAX_WIDTH=1280
MAX_HEIGHT=720
date
export IFS=$'\n';
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.rmvb" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile | sort -f);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
echo "Will convert to: ${fn_noext}${ext}";
done
echo " "
echo " "
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.rmvb" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile | sort -f);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
# bitrate=`ffmpeg -i ${i:2} 2>&1 | egrep 'Video:' | grep -Po '[[:digit:]]+ kb/s' | cut -d ' ' -f 1`
# echo "Found bitrate: ${bitrate} kb/s";
if [ "${bitrate}" == "0" ] || [ -z ${bitrate} ]; then
bitrate=`echo "4000"`
fi
echo "--> Final bitrate: ${bitrate} kb/s";
echo "Resizing: ${i:2} ";\
ffmpeg -i ${i:2} -pix_fmt yuv420p -c:v libx264 -b:v ${bitrate}k \
-vf scale="iw*sar*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih):ih*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih),pad=$MAX_WIDTH:$MAX_HEIGHT:(ow-iw)/2:(oh-ih)/2,setsar=1/1" \
-r:v 29/1 -force_fps -movflags +faststart -threads 0 -c:a aac -an -f mp4 -g 30 -y ${fn_noext}${ext}
date
done

11
bin/wsl/ffmerge.sh Executable file
View File

@@ -0,0 +1,11 @@
#!/bin/bash
rm mylist.txt
rm merged.mp4
touch merged.mp4
rm merged.mp4
#listfiles=`ls -cr *.mp4`
listfiles=`ls *.mp4 *.m4v *.mkv`
for f in $listfiles; do echo "file '$f' " >> mylist.txt; done
ffmpeg -safe 0 -f concat -i mylist.txt -c copy -y merged.mp4

53
bin/wsl/ffresize.sh Executable file
View File

@@ -0,0 +1,53 @@
#!/bin/bash
MAX_WIDTH=960
MAX_HEIGHT=540
date
export IFS=$'\n';
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.rmvb" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile | sort -f);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
echo "Will convert to: ${fn_noext}${ext}";
done
echo " "
echo " "
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.rmvb" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile | sort -f);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
bitrate=`ffmpeg -i ${i:2} 2>&1 | egrep 'Video:' | grep -Po '[[:digit:]]+ kb/s' | cut -d ' ' -f 1`
echo "Found bitrate: ${bitrate} kb/s";
if [ "${bitrate}" == "0" ] || [ -z ${bitrate} ]; then
bitrate=`echo "2700"`
fi
echo "--> Final bitrate: ${bitrate} kb/s";
echo "Resizing: ${i:2} ";\
ffmpeg -i ${i:2} -pix_fmt yuv420p -c:v libx264 -b:v ${bitrate}k \
-vf scale="iw*sar*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih):ih*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih),pad=$MAX_WIDTH:$MAX_HEIGHT:(ow-iw)/2:(oh-ih)/2,setsar=1/1" \
-r:v 29/1 -force_fps -movflags +faststart -threads 0 -c:a aac -b:a 160k -f mp4 -g 30 -y ${fn_noext}${ext}
date
done

48
bin/wsl/ffrmaudio.sh Executable file
View File

@@ -0,0 +1,48 @@
#!/bin/bash
MAX_WIDTH=960
MAX_HEIGHT=540
date
export IFS=$'\n';
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
echo "Will remove audio : ${fn_noext}${ext}";
done
echo " "
echo " "
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.ts" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
echo "Removing audio: ${i:2} ";\
ffmpeg -i ${i:2} \
-threads 0 -c:v copy -an -f mp4 -y ${fn_noext}${ext}
# ffmpeg -i ${i:2} -pix_fmt yuv420p -c:v libx264 -b:v 1.8M \
# -vf scale="iw*sar*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih):ih*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih),pad=$MAX_WIDTH:$MAX_HEIGHT:(ow-iw)/2:(oh-ih)/2,setsar=1/1" \
# -vf "transpose=2,transpose=2" \
# -r:v 29/1 -force_fps -movflags +faststart -threads 0 -c:a aac -b:a 10k -f mp4 -y ${fn_noext}${ext}
date
done

46
bin/wsl/ffrotate180-resize.sh Executable file
View File

@@ -0,0 +1,46 @@
#!/bin/bash
MAX_WIDTH=960
MAX_HEIGHT=540
date
export IFS=$'\n';
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
echo "Will rotate and convert to: ${fn_noext}${ext}";
done
echo " "
echo " "
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
echo "Flipping: ${i:2} ";\
ffmpeg -i ${i:2} -pix_fmt yuv420p -c:v libx264 -b:v 1.8M \
-vf scale="iw*sar*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih):ih*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih),pad=$MAX_WIDTH:$MAX_HEIGHT:(ow-iw)/2:(oh-ih)/2,setsar=1/1" \
-vf "transpose=2,transpose=2" \
-r:v 29/1 -force_fps -movflags +faststart -threads 0 -c:a aac -b:a 10k -f mp4 -g 30 -y ${fn_noext}${ext}
date
done

49
bin/wsl/ffrotate180.sh Executable file
View File

@@ -0,0 +1,49 @@
#!/bin/bash
MAX_WIDTH=960
MAX_HEIGHT=540
date
export IFS=$'\n';
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
echo "Will rotate and convert to: ${fn_noext}${ext}";
done
echo " "
echo " "
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
echo "Flipping: ${i:2} ";\
ffmpeg -i ${i:2} \
-vf "transpose=2,transpose=2" \
-threads 0 -y ${fn_noext}${ext}
# ffmpeg -i ${i:2} -pix_fmt yuv420p -c:v libx264 -b:v 1.8M \
# -vf scale="iw*sar*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih):ih*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih),pad=$MAX_WIDTH:$MAX_HEIGHT:(ow-iw)/2:(oh-ih)/2,setsar=1/1" \
# -vf "transpose=2,transpose=2" \
# -r:v 29/1 -force_fps -movflags +faststart -threads 0 -c:a aac -b:a 10k -f mp4 -y ${fn_noext}${ext}
date
done

45
bin/wsl/ffrotate90-resize.sh Executable file
View File

@@ -0,0 +1,45 @@
#!/bin/bash
MAX_WIDTH=960
MAX_HEIGHT=540
date
export IFS=$'\n';
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
echo "Will rotate and convert to: ${fn_noext}${ext}";
done
echo " "
echo " "
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
echo "Flipping: ${i:2} ";\
ffmpeg -i ${i:2} -pix_fmt yuv420p -c:v libx264 -b:v 1.8M \
-vf scale="iw*sar*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih):ih*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih),pad=$MAX_WIDTH:$MAX_HEIGHT:(ow-iw)/2:(oh-ih)/2,setsar=1/1" \
-vf "transpose=1" \
-r:v 29/1 -force_fps -movflags +faststart -threads 0 -c:a aac -b:a 10k -f mp4 -g 30 -y ${fn_noext}${ext}
date
done

45
bin/wsl/ffrotate90ccw-resize.sh Executable file
View File

@@ -0,0 +1,45 @@
#!/bin/bash
MAX_WIDTH=960
MAX_HEIGHT=540
date
export IFS=$'\n';
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
echo "Will rotate and convert to: ${fn_noext}${ext}";
done
echo " "
echo " "
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile);
do
filename=`echo ${i:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
if [ $ext == ".mp4" ]; then
ext=`echo "_mobile.mp4"`
else
ext=`echo "_mobile.mp4"`
fi
echo "Flipping: ${i:2} ";\
ffmpeg -i ${i:2} -pix_fmt yuv420p -c:v libx264 -b:v 1.8M \
-vf scale="iw*sar*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih):ih*min($MAX_WIDTH/(iw*sar)\,$MAX_HEIGHT/ih),pad=$MAX_WIDTH:$MAX_HEIGHT:(ow-iw)/2:(oh-ih)/2,setsar=1/1" \
-vf "transpose=2" \
-r:v 29/1 -force_fps -movflags +faststart -threads 0 -c:a aac -b:a 10k -f mp4 -g 30 -y ${fn_noext}${ext}
date
done

18
bin/wsl/ffslowdown2x.sh Executable file
View File

@@ -0,0 +1,18 @@
#!/bin/bash
export IFS=$'\n';
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) );
do
echo "Will convert to: ${i:2}_2x.mp4";
done
echo " "
echo " "
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) );
do
echo "Speeding up .5x: ${i:2} ";\
ffmpeg -i ${i:2} -r 30 -filter:v "setpts=2.0*PTS" -filter:a "atempo=0.5" ${i:2}_slow.mp4
done
exit 0
done
done

18
bin/wsl/ffspeedup2x.sh Executable file
View File

@@ -0,0 +1,18 @@
#!/bin/bash
export IFS=$'\n';
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) );
do
echo "Will convert to: ${i:2}_2x.mp4";
done
echo " "
echo " "
for i in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) );
do
echo "Speeding up 2x: ${i:2} ";\
ffmpeg -i ${i:2} -r 60 -filter:v "setpts=0.5*PTS" -filter:a "atempo=2.0" ${i:2}_2x.mp4
done
exit 0
done
done

11
bin/wsl/find265media.sh Executable file
View File

@@ -0,0 +1,11 @@
#!/bin/sh
echo "h265 media:"
echo "--------------------"
for i in `ls`
do
OUTPUT="$(ffmpeg -i $i 2>&1 | egrep ' hevc ')"
if [ ! -z "$OUTPUT" ]; then
echo " "
echo $i
fi
done

14
bin/wsl/find60fps.sh Executable file
View File

@@ -0,0 +1,14 @@
#!/bin/sh
echo "60fps media:"
echo "--------------------"
for i in `ls`
do
OUTPUT50=`ffmpeg -i $i 2>&1 | egrep '50 fps'`
OUTPUT59=`ffmpeg -i $i 2>&1 | egrep '59 fps'`
OUTPUT5994=`ffmpeg -i $i 2>&1 | egrep '59.94 fps'`
OUTPUT60=`ffmpeg -i $i 2>&1 | egrep '60 fps'`
if [[ ( -n "$OUTPUT50" ) || ( -n "$OUTPUT59" ) || ( -n "$OUTPUT5994" ) || ( -n "$OUTPUT60" ) ]]; then
echo " "
echo $i
fi
done

48
bin/wsl/find_similar_videos.sh Executable file
View File

@@ -0,0 +1,48 @@
# Use the current working directory as the image directory
IMAGE_DIR="."
# Get a list of all files in the directory
files=("$IMAGE_DIR"/*.jpg)
# Calculate the total number of attempts
num_files=${#files[@]}
total_attempts=$((num_files * (num_files - 1) / 2))
# Calculate hours and minutes
total_hours=$((total_attempts / 3600))
total_minutes=$(( (total_attempts % 3600) / 60 ))
# Output the number of attempts and estimated time in hours and minutes
echo "Total attempts to compare all files: $total_attempts"
echo "Estimated time to complete (assuming 1 second per comparison): ${total_hours} hours and ${total_minutes} minutes"
echo
echo
# Get a list of all files in the directory
files=("$IMAGE_DIR"/*.jpg)
# Loop through each file by index
x=0
for ((i=0; i<${#files[@]}-1; i++)); do
for ((j=i+1; j<${#files[@]}; j++)); do
x=$((x + 1))
# Compare files[i] with files[j]
similar_images.py "${files[i]}" "${files[j]}"
# Calculate number of symbols based on x % 10
mod_result=$((x % 10))
# Determine whether to use * or o based on x being even or odd
if (( x % 2 == 0 )); then
symbol="*"
else
symbol="o"
fi
# Clear the line and print the symbols on the same line
printf "\r"
for ((k=0; k<mod_result; k++)); do
printf "$symbol"
done
done
done

15
bin/wsl/findlarge_media.sh Executable file
View File

@@ -0,0 +1,15 @@
#!/bin/sh
echo "Large 1440|1852|1920|2030|2048 media:"
echo "--------------------"
for i in `ls`
do
OUTPUT1440=`ffmpeg -i $i 2>&1 | egrep '1440x'`
OUTPUT1852=`ffmpeg -i $i 2>&1 | egrep '1852x'`
OUTPUT1920=`ffmpeg -i $i 2>&1 | egrep '1920x'`
OUTPUT2030=`ffmpeg -i $i 2>&1 | egrep '2030x'`
OUTPUT2048=`ffmpeg -i $i 2>&1 | egrep '2048x'`
if [[ ( -n "$OUTPUT1440" ) || ( -n "$OUTPUT1852" ) || ( -n "$OUTPUT1920" ) || ( -n "$OUTPUT2030" ) || ( -n "$OUTPUT2048" ) ]]; then
echo " "
echo $i
fi
done

12
bin/wsl/findmedium_media.sh Executable file
View File

@@ -0,0 +1,12 @@
#!/bin/sh
echo "Medium 1280|1440 media:"
echo "--------------------"
for i in `ls`
do
OUTPUT1280=`ffmpeg -i $i 2>&1 | egrep '1280x'`
OUTPUT1440=`ffmpeg -i $i 2>&1 | egrep '1440x'`
if [[ ( -n "$OUTPUT1280" ) || ( -n "$OUTPUT1440" ) ]]; then
echo " "
echo $i
fi
done

12
bin/wsl/findnon_hcodec.sh Executable file
View File

@@ -0,0 +1,12 @@
#!/bin/sh
echo "Media to convert to h.264"
echo "--------------------"
for i in `ls`
do
OUTPUTh264=`ffmpeg -i $i 2>&1 | egrep 'h264'`
OUTPUTh265=`ffmpeg -i $i 2>&1 | egrep 'hevc'`
if [[ ( -z "$OUTPUTh264" ) && ( -z "$OUTPUTh265" ) ]]; then
echo " "
echo $i
fi
done

5
bin/wsl/jpg2mp4.sh Executable file
View File

@@ -0,0 +1,5 @@
#!/bin/sh
#ffmpeg -y -r 1/5 -f concat -safe 0 -i list.txt -c:v libx264 -vf "fps=25,scale=1920:1080,format=yuv420p" out.mp4
ffmpeg -framerate 1.5/1 -i %04d.jpg -r 30 -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,format=yuv420p" -codec:v libx264 -y out.mp4

View File

@@ -0,0 +1,49 @@
#!/opt/homebrew/bin/bash
#
# x.sh — sanitize filenames: lowercase, replace non-alnum/dot with underscores,
# collapse runs of underscores, trim, and never overwrite a *different* existing file.
#
shopt -s globstar
SAVEIFS=$IFS
IFS=$'\n' # only split on newlines
sanitize() {
local name="$1"
# 1) lowercase
name="${name,,}"
# 2) anything not az, 09, or dot → underscore
name="${name//[^a-z0-9.]/_}"
# 3) collapse multiple underscores → one underscore
name="$(echo "$name" | sed -E 's/_+/_/g')"
# 4) remove underscore adjacent to dots
name="$(echo "$name" | sed -E 's/_\.|\._/./g')"
# 5) trim leading/trailing underscores
name="$(echo "$name" | sed -E 's/^_+|_+$//g')"
printf '%s' "$name"
}
export -f sanitize
# depth-first traversal so directories are renamed after their contents
find . -depth -print0 | while IFS= read -r -d '' src; do
dir=$(dirname "$src")
base=$(basename "$src")
dst=$(sanitize "$base")
if [[ "$base" != "$dst" ]]; then
target="$dir/$dst"
if [[ -e "$target" ]]; then
# If the only difference is case (macOS/APFS), allow it:
if [[ "${src,,}" = "${target,,}" ]]; then
mv -v "$src" "$target"
else
echo "Skipping: '$src' → '$target' (target exists)"
fi
else
mv -v "$src" "$target"
fi
fi
done
IFS=$SAVEIFS

16
bin/wsl/move_nonhcodec.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/sh
echo "Media to convert to h.264"
echo "--------------------"
for i in `ls`
do
OUTPUTh264=`ffmpeg -i $i 2>&1 | egrep 'h264'`
OUTPUTh265=`ffmpeg -i $i 2>&1 | egrep 'hevc'`
if [[ ( -z "$OUTPUTh264" ) && ( -z "$OUTPUTh265" ) ]]; then
echo " "
if [[ -f $i ]]; then
echo "Moving $i"
mkdir -p to_mp4
mv $i to_mp4
fi
fi
done

4
bin/wsl/notify.sh Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/sh
val1="$@"
ntfy -b pushover -o user_key useV3kis7G1EsecHhyDprNeywH72or -t 'From laptop.' send "$val1"

53
bin/wsl/preview_remove_dates.sh Executable file
View File

@@ -0,0 +1,53 @@
#!/bin/bash
SAVEIFS=$IFS
export IFS=$'\n';
CDIR=$(pwd)
if (pwd | grep -c '\/home\/mobaxterm'); then
#echo "Correct Directory"
echo " "
else
echo "Recursive - Are you sure? CTRL-C now to terminate."
# exit 0
sleep 4
fi
echo " removing in order: .dddd.dd.dd .dd.dd.dddd .dd.dd.dd .19dd .20dd "
for i in `find $CDIR -maxdepth 1 -type f -print`; do
unset hasdate
# echo echo "Looking at $i"
hasfulldate=`echo "$i" | awk '/[\._][[:digit:]][[:digit:]][[:digit:]][[:digit:]][\._]/'`
if [ -z "$hasfulldate" ] ; then
hasfulldate=`echo ""`
else
hasdate=`echo "1"`
fi
if [ -z "$hasfulldate" ] ; then
haspartialdate=`echo "$i" | awk '/[\._][[:digit:]][[:digit:]][\._][[:digit:]][[:digit:]]/'`
if [ -z "$haspartialdate" ] ; then
haspartialdate=`echo ""`
else
hasdate=`echo "1"`
fi
fi
if [ -z $hasdate ] ; then
unset hasdate
else
echo "found: $i "
# in this order:
# .dddd.dd.dd
# .dd.dd.dddd
# .dd.dd.dd
# .19dd
# .20dd
#
fi
done
IFS=$SAVEIFS

77
bin/wsl/remove_dates.sh Executable file
View File

@@ -0,0 +1,77 @@
#!/bin/bash
export IFS=$'\n';
for afile in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.rmvb" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile | sort -f);
do
filename=`echo ${afile:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
i=`echo ${filename}`
# echo "Will remove date: ${i}";
unset hasdate
# echo echo "Looking at $i"
hasfulldate=`echo "$i" | awk '/[[:digit:]][[:digit:]][[:digit:]][[:digit:]][\._]/'`
if [ -z "$hasfulldate" ] ; then
hasfulldate=`echo ""`
else
hasdate=`echo "1"`
fi
if [ -z "$hasfulldate" ] ; then
haspartialdate=`echo "$i" | awk '/[\._][[:digit:]][[:digit:]][\._][[:digit:]][[:digit:]]/'`
if [ -z "$haspartialdate" ] ; then
haspartialdate=`echo ""`
else
hasdate=`echo "1"`
fi
fi
if [ -z $hasdate ] ; then
unset hasdate
else
echo "mv -n date: $i "
# in this order:
# .dddd.dd.dd
# .dd.dd.dddd
# .dd.dd.dd
# .19dd
# .20dd
#
# res=`echo mv -n "$i" "${i//[[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]]/}"`
# echo echo "res is $res"
# dddd.dd.dd.
mv -n "$i" "${i//[[:digit:]][[:digit:]][[:digit:]][[:digit:]][\._][[:digit:]][[:digit:]][\._][[:digit:]][[:digit:]][\._]/}"
if [ -f $i ] ; then
# 19dddddd.
mv -n "$i" "${i//[1][9][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][\._]/}"
fi
if [ -f $i ] ; then
# 20dddddd.
mv -n "$i" "${i//[2][0][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][\._]/}"
fi
if [ -f $i ] ; then
# dd.dd.dddd.
mv -n "$i" "${i//[[:digit:]][[:digit:]][\._][[:digit:]][[:digit:]][\._][[:digit:]][[:digit:]][[:digit:]][[:digit:]][\._]/}"
fi
if [ -f $i ] ; then
# dd.dd.dd.
mv -n "$i" "${i//[[:digit:]][[:digit:]][\._][[:digit:]][[:digit:]][\._][[:digit:]][[:digit:]][\._]/}"
fi
if [ -f $i ] ; then
# 19dd.
mv -n "$i" "${i//[1][9][[:digit:]][[:digit:]][\._]/}"
fi
if [ -f $i ] ; then
# 20dd.
mv -n "$i" "${i//[2][0][[:digit:]][[:digit:]][\._]/}"
fi
# echo " ---- "
# echo " "
fi
done
IFS=$SAVEIFS

36
bin/wsl/remove_digits.sh Executable file
View File

@@ -0,0 +1,36 @@
#!/bin/bash
export IFS=$'\n';
for afile in $(find . -maxdepth 1 -type f \( -iname "*.mpg" -o -iname "*.vob" -o -iname "*.m4v" -o -iname "*.mov" -o -iname "*.avi" -o -iname "*.mp4" -o -iname "*.wmv" -o -iname "*.flv" -o -iname "*.rmvb" -o -iname "*.mpeg" -o -iname "*.mkv" -o -iname "*.mov" \) | grep -v mobile | sort -f);
do
filename=`echo ${afile:2}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
i=`echo ${filename}`
# echo "Will remove digit: ${i}";
unset hasdigit
# echo echo "Looking at $i"
hasfulldigit=`echo "$i" | awk '/[[:digit:]][\._]/'`
if [ -z "$hasfulldigit" ] ; then
hasfulldigit=`echo ""`
else
hasdigit=`echo "1"`
fi
if [ -z $hasdigit ] ; then
unset hasdigit
else
echo "mv -n digit: $i "
# res=`echo mv -n "$i" "${i//[[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]]/}"`
# echo echo "res is $res"
# d.
mv -n "$i" "${fn_noext//[[:digit:]]/}"${ext}
fi
done
IFS=$SAVEIFS

25
bin/wsl/rename60fps_media.sh Executable file
View File

@@ -0,0 +1,25 @@
#!/bin/sh
echo "60fps media:"
echo "--------------------"
for i in `ls`
do
OUTPUT50=`ffmpeg -i $i 2>&1 | egrep '50 fps'`
OUTPUT59=`ffmpeg -i $i 2>&1 | egrep '59 fps'`
OUTPUT5994=`ffmpeg -i $i 2>&1 | egrep '59.94 fps'`
OUTPUT60=`ffmpeg -i $i 2>&1 | egrep '60 fps'`
if [ -n "$OUTPUT50" ] || [ -n "$OUTPUT59" ] || [ -n "$OUTPUT5994" ] || [ -n "$OUTPUT60" ]; then
echo " "
echo $i
tol=`echo "$i" | tr '[:upper:]' '[:lower:]'`
echo $tol
# if ! [ $tol in *"_60fps."* ]; then
if [ $tol != *"_60fps."* ]; then
filename=`echo ${i}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
new_fn=`echo ${fn_noext}_60fps${ext}`
echo "new filename is ${new_fn}"
mv $i ${new_fn}
fi
fi
done

34
bin/wsl/rename_any.sh Executable file
View File

@@ -0,0 +1,34 @@
#!/bin/bash
SAVEIFS=$IFS
export IFS=$'\n';
CDIR=$(pwd)
read -p "any name to replace: " startold
read -p "name to use instead: " startnew
echo "Renaming from ${startold} to ${startnew} ";\
if (pwd | grep -c '\/home\/mobaxterm'); then
echo "Correct Directory"
echo " "
else
echo "Wrong Directory"
echo " "
# exit 0
fi
for i in `find $CDIR -maxdepth 0 -type d -print`; do
DIR=$i
cd "$DIR"
echo "Inside $DIR :"
for file in `find . -maxdepth 1 -type f -iname "*${startold}*"`; do
sedstr=`echo "s/${startold}/${startnew}/g"`
newfile=`echo "${file}" | sed ${sedstr}`
echo "moving ${file} to ${newfile}"
mv -n ${file} ${newfile}
done
cd "$CDIR"
done
IFS=$SAVEIFS

26
bin/wsl/rename_front.sh Executable file
View File

@@ -0,0 +1,26 @@
#!/bin/bash
SAVEIFS=$IFS
export IFS=$'\n';
CDIR=$(pwd)
read -p "starting name to add to front: " startfront
echo "Renaming front with ${startfront} ";\
if (pwd | grep -c '\/home\/mobaxterm'); then
echo "Correct Directory"
echo " "
else
echo "non-recursive: proceeding in non-mobaxterm directory"
echo " "
# exit 0
fi
for i in `ls`; do
newfile=`echo "${startfront}${i}"`
echo "moving ${i} to ${newfile}"
mv ${i} ${newfile}
done
IFS=$SAVEIFS

35
bin/wsl/rename_start.sh Executable file
View File

@@ -0,0 +1,35 @@
#!/bin/bash
SAVEIFS=$IFS
export IFS=$'\n';
CDIR=$(pwd)
read -p "starting name to replace: " startold
read -p "starting name to use instead: " startnew
echo "Renaming from ${startold} to ${startnew} ";\
if (pwd | grep -c '\/home\/mobaxterm'); then
echo "Correct Directory"
echo " "
else
echo "Recursive!! Are you sure? CTRL-C to terminate."
# sleep 2
echo " "
# exit 0
fi
for i in `find $CDIR -type d -print`; do
DIR=$i
cd "$DIR"
echo "Inside $DIR :"
for file in `find . -maxdepth 1 -type f -iname "${startold}*"`; do
sedstr=`echo "s/${startold}/${startnew}/"`
newfile=`echo "${file}" | sed ${sedstr}`
echo "moving ${file} to ${newfile}"
mv -n ${file} ${newfile}
done
cd "$CDIR"
done
IFS=$SAVEIFS

24
bin/wsl/renamelarge_media.sh Executable file
View File

@@ -0,0 +1,24 @@
#!/bin/sh
echo "Large 1440|1852|1920|2030|2048 media:"
echo "--------------------"
for i in `ls | grep -v _Med.`
do
OUTPUT1440=`ffmpeg -i $i 2>&1 | egrep '1440x'`
OUTPUT1852=`ffmpeg -i $i 2>&1 | egrep '1852x'`
OUTPUT1920=`ffmpeg -i $i 2>&1 | egrep '1920x'`
OUTPUT2030=`ffmpeg -i $i 2>&1 | egrep '2030x'`
OUTPUT2048=`ffmpeg -i $i 2>&1 | egrep '2048x'`
if [ -n "$OUTPUT1440" ] || [ -n "$OUTPUT1852" ] || [ -n "$OUTPUT1920" ] || [ -n "$OUTPUT2030" ] || [ -n "$OUTPUT2048" ] ; then
echo " "
echo $i
tol=`echo "$i" | tr '[:upper:]' '[:lower:]'`
if [ $tol != *"_large.mp4"* ]; then
filename=`echo ${i}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
new_fn=`echo ${fn_noext}_Large${ext}`
echo "new filename is ${new_fn}"
mv $i ${new_fn}
fi
fi
done

19
bin/wsl/renamemedium_media.sh Executable file
View File

@@ -0,0 +1,19 @@
#!/bin/sh
echo "Medium 1280|1440 media:"
echo "--------------------"
for i in `ls | grep -v _Large`
do
OUTPUT1280=`ffmpeg -i $i 2>&1 | egrep '1280x'`
OUTPUT1440=`ffmpeg -i $i 2>&1 | egrep '1440x'`
if [ -n "$OUTPUT1280" ] || [ -n "$OUTPUT1440" ]; then
tol=`echo "$i" | tr '[:upper:]' '[:lower:]'`
if [ $tol != *"_med.mp4"* ]; then
filename=`echo ${i}`
ext=`echo ${filename} | awk -F. '{print "."$NF}'`
fn_noext=`basename "${filename}" $ext`
new_fn=`echo ${fn_noext}_Med${ext}`
echo "new filename is ${new_fn}"
mv $i ${new_fn}
fi
fi
done

15
bin/wsl/renumber_jpgs.sh Executable file
View File

@@ -0,0 +1,15 @@
#!/bin/bash
SAVEIFS=$IFS
export IFS=$'\n';
CDIR=$(pwd)
n=1
for i in `ls *.jpg`; do
nn=`printf "%04d\n" ${n}`
echo "mv ${i} to ${nn}.jpg"
mv ${i} ${nn}.jpg
((n++))
done
IFS=$SAVEIFS

33
bin/wsl/sanitizefilenames.sh Executable file
View File

@@ -0,0 +1,33 @@
#!/bin/bash
SAVEIFS=$IFS
export IFS=$'\n';
CDIR=$(pwd)
echo "Recursive - Are you sure? CTRL-C now to terminate."
sleep 4
for i in `find $CDIR -type d -print`; do
DIR=$i
cd "$DIR"
echo echo "In $DIR"
find . -maxdepth 1 -type f \( -iname "* *" \) -exec bash -c 'mv -n "$0" "${0//\ /_}"' {} \;
find . -maxdepth 1 -type f \( -iname "*-*" \) -exec bash -c 'mv -n "$0" "${0//\-/_}"' {} \;
find . -maxdepth 1 -type f \( -iname "*+*" \) -exec bash -c 'mv -n "$0" "${0//\+/_}"' {} \;
find . -maxdepth 1 -type f \( -iname "*,*" \) -exec bash -c 'mv -n "$0" "${0//\,/_}"' {} \;
find . -maxdepth 1 -type f \( -iname "*\!*" \) -exec bash -c 'mv -n "$0" "${0//\!/_}"' {} \;
find . -maxdepth 1 -type f \( -iname "*\'*" \) -exec bash -c 'mv -n "$0" "${0//\'"'"'/_}"' {} \;
find . -maxdepth 1 -type f \( -iname "*#*" \) -exec bash -c 'mv -n "$0" "${0//#/_}"' {} \;
find . -maxdepth 1 -type f \( -iname "*;*" \) -exec bash -c 'mv -n "$0" "${0//;/_}"' {} \;
find . -maxdepth 1 -type f \( -iname "*&*" \) -exec bash -c 'mv -n "$0" "${0//&/_}"' {} \;
find . -maxdepth 1 -type f \( -iname "*\[*" \) -exec bash -c 'mv -n "$0" "${0//\[/_}"' {} \;
find . -maxdepth 1 -type f \( -iname "*]*" \) -exec bash -c 'mv -n "$0" "${0//\]/_}"' {} \;
find . -maxdepth 1 -type f \( -iname "*(*" \) -exec bash -c 'mv -n "$0" "${0//\(/_}"' {} \;
find . -maxdepth 1 -type f \( -iname "*)*" \) -exec bash -c 'mv -n "$0" "${0//\)/_}"' {} \;
find . -maxdepth 1 -type f \( -iname "*___*" \) -exec bash -c 'mv -n "$0" "${0//___/_}"' {} \;
find . -maxdepth 1 -type f \( -iname "*__*" \) -exec bash -c 'mv -n "$0" "${0//__/_}"' {} \;
for f in `find . -maxdepth 1 -type f` ; do mv -v $f `echo $f | tr '[A-Z]' '[a-z]'` ; done
cd "$CDIR"
done
IFS=$SAVEIFS

68
bin/wsl/screencapture.py Executable file
View File

@@ -0,0 +1,68 @@
#!/usr/bin/python3
import argparse
import os
import cv2
def capture_and_resize_frame(video_path, capture_time=180):
# Extract the base filename from the video path
base_filename = os.path.splitext(os.path.basename(video_path))[0]
output_image_path = f"{base_filename}_screencapture.jpg"
# Open the video file
video = cv2.VideoCapture(video_path)
# Get the frames per second (fps) of the video
fps = video.get(cv2.CAP_PROP_FPS)
# Calculate the frame number for the specified capture time (180 seconds by default)
frame_number = int(fps * capture_time)
# Set the frame position to the capture time in the video
video.set(cv2.CAP_PROP_POS_FRAMES, frame_number)
# Read the frame
success, frame = video.read()
# Check if the frame was successfully read
if success:
# Save the frame as an image temporarily
temp_image_path = 'temp_screencapture.jpg'
cv2.imwrite(temp_image_path, frame)
#print(f"Frame at {capture_time} seconds saved as {temp_image_path}")
# Load the captured image for resizing
image = cv2.imread(temp_image_path)
# Set new dimensions
new_width, new_height = 960, 540
# Resize the image
resized_image = cv2.resize(image, (new_width, new_height))
# Save the resized image with the new output path
cv2.imwrite(output_image_path, resized_image)
print(f"Screen capture resized and saved as {output_image_path}")
else:
print("Failed to capture the frame, video shorter than 3 mins.")
# Release the video
video.release()
# Remove the temporary file
os.remove(temp_image_path)
def main():
# Set up argument parser
parser = argparse.ArgumentParser(description="Extract and resize a frame from a video.")
parser.add_argument("video_path", type=str, help="Path to the video file")
# Parse arguments
args = parser.parse_args()
# Call the capture and resize function
capture_and_resize_frame(args.video_path)
if __name__ == "__main__":
main()

37
bin/wsl/similar_images.py Executable file
View File

@@ -0,0 +1,37 @@
#!/usr/bin/python3
import argparse
from skimage.metrics import structural_similarity as ssim
import cv2
def are_images_similar(image_path1, image_path2, similarity_threshold=0.95):
# Load both images in grayscale mode
image1 = cv2.imread(image_path1, cv2.IMREAD_GRAYSCALE)
image2 = cv2.imread(image_path2, cv2.IMREAD_GRAYSCALE)
# Check if images are the same size
if image1.shape != image2.shape:
print("Images have different dimensions.")
return False
# Calculate the SSIM between the two images
score, _ = ssim(image1, image2, full=True)
# Return True if the score is above the similarity threshold
return score >= similarity_threshold
def main():
# Set up argument parser
parser = argparse.ArgumentParser(description="Compare two images for similarity.")
parser.add_argument("image1_path", type=str, help="Path to the first image file")
parser.add_argument("image2_path", type=str, help="Path to the second image file")
# Parse arguments
args = parser.parse_args()
# Compare images
if are_images_similar(args.image1_path, args.image2_path):
print(f"\nFound similar videos:\n{args.image1_path} and {args.image2_path}\n")
if __name__ == "__main__":
main()