Module: ActiveEncode::EngineAdapters::FfmpegAdapter::Cleaner
- Included in:
- ActiveEncode::EngineAdapters::FfmpegAdapter
- Defined in:
- lib/active_encode/engine_adapters/ffmpeg_adapter/cleaner.rb
Instance Method Summary collapse
- #build_file_list(directory, filename) ⇒ Object
- #file_check(path, older_than) ⇒ Object
- #remove_child_files(directories, older_than) ⇒ Object
- #remove_empty_directories(directories) ⇒ Object
- #remove_files(files, older_than) ⇒ Object
-
#remove_old_files!(options = {}) ⇒ Object
This method is to clean up files leftover from the ffmpeg encode process.
Instance Method Details
#build_file_list(directory, filename) ⇒ Object
33 34 35 36 37 38 |
# File 'lib/active_encode/engine_adapters/ffmpeg_adapter/cleaner.rb', line 33 def build_file_list(directory, filename) file_path = File.join(directory, "**", filename) # Some of the files generated by the ffmpeg encode seem to be hidden files. # This uses File::FNM_DOTMATCH to include them in the results. Dir.glob(file_path, File::FNM_DOTMATCH) end |
#file_check(path, older_than) ⇒ Object
40 41 42 |
# File 'lib/active_encode/engine_adapters/ffmpeg_adapter/cleaner.rb', line 40 def file_check(path, older_than) File.mtime(path) < DateTime.now - older_than && File.file?(path) end |
#remove_child_files(directories, older_than) ⇒ Object
60 61 62 63 64 65 66 67 |
# File 'lib/active_encode/engine_adapters/ffmpeg_adapter/cleaner.rb', line 60 def remove_child_files(directories, older_than) files_to_delete = [] directories.each do |d| files = Dir.children(d).select { |ch| file_check(File.join(d, ch), older_than) } files_to_delete += files.collect { |f| File.join(d, f) } end FileUtils.rm(files_to_delete) unless files_to_delete.empty? end |
#remove_empty_directories(directories) ⇒ Object
53 54 55 56 57 58 |
# File 'lib/active_encode/engine_adapters/ffmpeg_adapter/cleaner.rb', line 53 def remove_empty_directories(directories) directories_to_delete = directories.select { |d| Dir.empty?(d) } non_empty_directories = directories - directories_to_delete directories_to_delete += non_empty_directories.select { |ned| Dir.children(ned) == ["outputs"] && directories_to_delete.include?(File.join(ned, "outputs")) } FileUtils.rmdir(directories_to_delete) unless directories_to_delete.empty? end |
#remove_files(files, older_than) ⇒ Object
44 45 46 47 48 49 50 51 |
# File 'lib/active_encode/engine_adapters/ffmpeg_adapter/cleaner.rb', line 44 def remove_files(files, older_than) files_to_delete = files.select { |f| file_check(f, older_than) } FileUtils.rm(files_to_delete) unless files_to_delete.empty? # Return a list of any directories that were included in the files list for further processing. # The files list can include directories such as "/tmp/.." which should not be included in directory list. files.select { |f| File.directory?(f) unless f.end_with?(".") } end |
#remove_old_files!(options = {}) ⇒ Object
This method is to clean up files leftover from the ffmpeg encode process. File names for the pass_through adapter are the same, so this will clean up pass_through encodes as well.
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/active_encode/engine_adapters/ffmpeg_adapter/cleaner.rb', line 9 def remove_old_files!( = {}) = { older_than: 2.weeks, no_outputs: ['input_metadata', 'duration_input_metadata', 'error.log', 'exit_status.code', 'progress', 'completed', 'pid', 'output_metadata-*'], outputs: false, all: false } .reverse_merge!() if [:all] files = build_file_list(WORK_DIR, "*") directories = remove_files(files, [:older_than]) remove_empty_directories(directories) elsif [:outputs] output_directories = build_file_list(WORK_DIR, "outputs") remove_child_files(output_directories, [:older_than]) remove_empty_directories(output_directories) else files = [] [:no_outputs].each { |fn| files += build_file_list(WORK_DIR, fn) } remove_files(files, [:older_than]) end end |