X-Git-Url: http://jaekl.net/gitweb/?p=quanlib.git;a=blobdiff_plain;f=walkdir.rb;h=fb23fcf56d44d1fd8bbbad76153aabd2debb6898;hp=6ef98c242de8d285ff8479e65d961b6911cbe7ea;hb=b8fe580f73b094e366643388ecd2d184b643616a;hpb=2c6d69af97c152524366d3fefe1808dfb78f8f56 diff --git a/walkdir.rb b/walkdir.rb index 6ef98c2..fb23fcf 100644 --- a/walkdir.rb +++ b/walkdir.rb @@ -30,7 +30,8 @@ class WalkDir def books result = [] - for file in @files.sort + @files = remove_duplicates(@files) + for file in @files.sort() if Book.can_handle?(file) && (!is_duplicate?(file)) book = Book.new(@store) book.load_from_file!(file) @@ -57,6 +58,30 @@ class WalkDir return false end + def remove_duplicates(files) + unique = {} + for file in files + if Book.can_handle?(file) + key = File.dirname(file) + '/' + File.basename(file, '.*') + if unique.has_key?(key) + new_ext = File.extname(file) + old_ext = File.extname(unique[key]) + if ('.pdf' == old_ext) && ('.epub' == new_ext) + # Prefer EPUB over PDF + puts 'REPLACED ' + unique[key].to_s + ' with ' + file.to_s + unique[key] = file + else + puts 'DROPPED ' + file.to_s + " because it's superceded by " + unique[key].to_s + end + else + unique[key] = file + end + end + end + + return unique.values + end + def walk(path) result = [] children = Dir.entries(path)