Initial commit: Intelligent Disk Cleaner

This commit is contained in:
2026-02-03 14:36:25 -05:00
commit ec7625d4d9
11 changed files with 1769 additions and 0 deletions

74
delete_av1.rb Normal file
View File

@@ -0,0 +1,74 @@
require 'optparse'
require 'open3'
require 'json'
options = {}
OptionParser.new do |opts|
opts.banner = "Usage: ruby delete_av1.rb [directory]"
end.parse!
directory = ARGV[0]
if directory.nil? || !Dir.exist?(directory)
puts "Usage: ruby delete_av1.rb [directory]"
exit 1
end
def is_av1?(file_path)
# Check only video stream
cmd = ['ffprobe', '-v', 'quiet', '-print_format', 'json', '-show_streams', '-select_streams', 'v:0', file_path]
stdout, _, status = Open3.capture3(*cmd)
return false unless status.success?
begin
data = JSON.parse(stdout)
stream = data['streams'][0]
return stream && stream['codec_name'] == 'av1'
rescue
false
end
end
puts "Scanning #{directory} for AV1 files..."
puts "This might take a while..."
av1_files = []
Dir.glob("#{directory}/**/*").each do |file|
next if File.directory?(file)
next unless ['.mp4', '.mkv', '.avi', '.mov', '.m4v'].include?(File.extname(file).downcase)
if is_av1?(file)
puts "Found: #{file}"
av1_files << file
end
end
if av1_files.empty?
puts "\nNo AV1 files found."
exit
end
puts "\n" + "="*40
puts "Found #{av1_files.length} AV1 files:"
av1_files.each { |f| puts " - #{f}" }
puts "="*40
puts "\nFound #{av1_files.length} files encoded with AV1."
print "Do you want to DELETE these files? [y/N]: "
STDOUT.flush
confirm = STDIN.gets.chomp.strip.downcase
if confirm == 'y'
deleted_count = 0
av1_files.each do |file|
begin
File.delete(file)
puts "Deleted: #{file}"
deleted_count += 1
rescue => e
puts "Failed to delete #{file}: #{e.message}"
end
end
puts "\nDeletion complete. #{deleted_count} files removed."
else
puts "\nOperation cancelled. No files were deleted."
end