Add All existing
This commit is contained in:
49
filter_extra
Executable file
49
filter_extra
Executable file
@@ -0,0 +1,49 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Check if the user provided a time argument
|
||||
if [ -z "$1" ]; then
|
||||
echo "Usage: sort_extra {time(HH:MM:SS)}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Convert the provided time into total seconds
|
||||
IFS=: read -r hours minutes seconds <<< "$1"
|
||||
target_time=$((hours * 3600 + minutes * 60 + seconds))
|
||||
|
||||
# Create the extra folder if it doesn’t exist
|
||||
mkdir -p extra
|
||||
|
||||
# Iterate through all subdirectories except 'extra'
|
||||
for dir in */; do
|
||||
if [ "$dir" != "extra/" ]; then
|
||||
find "$dir" -type f -name "*.mkv" | while read -r file; do
|
||||
# Get the duration of the mkv file in seconds
|
||||
duration=$(ffprobe -v error -select_streams v:0 -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$file")
|
||||
duration=${duration%.*} # Convert float to integer
|
||||
|
||||
# Convert duration to HH:MM:SS format
|
||||
hh=$((duration / 3600))
|
||||
mm=$(((duration % 3600) / 60))
|
||||
ss=$((duration % 60))
|
||||
formatted_duration=$(printf "%02d:%02d:%02d" $hh $mm $ss)
|
||||
|
||||
# Check if duration is less than the target time
|
||||
if [ "$duration" -lt "$target_time" ]; then
|
||||
base_name=$(basename -- "$file")
|
||||
target_file="extra/$base_name"
|
||||
|
||||
# Ensure the file does not overwrite an existing file
|
||||
if [ -e "$target_file" ]; then
|
||||
count=1
|
||||
while [ -e "extra/${count}_$base_name" ]; do
|
||||
((count++))
|
||||
done
|
||||
target_file="extra/${count}_$base_name"
|
||||
fi
|
||||
|
||||
mv "$file" "$target_file"
|
||||
echo "Moved: $file -> $target_file (Length: $formatted_duration)"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
done
|
||||
Reference in New Issue
Block a user