Add `arrived` attribute (file creation timestamp) to books table.
[quanlib.git] / extract.rb
1 require 'find'
2 require 'pathname'
3
4 def exec(cmdline)
5   puts "$ #{cmdline}"
6   result = system(cmdline)
7   unless result
8     puts "FAILED:  #{cmdline}"
9   end
10   result
11 end
12
13 def extract_epub(source_file, source_path, dest_path)
14   relative_path = source_file[source_path.length .. source_file.length]
15   dest_file = "#{dest_path}/#{relative_path}"
16   dest_file = dest_file[0 .. (dest_file.length - 6)] + ".txt"
17
18   required_path = Pathname(dest_file).dirname
19   unless File.directory? required_path
20     unless exec("mkdir -p #{required_path}")
21       return false
22     end
23   end
24
25   if File.exist? dest_file
26     source_time = File.mtime source_file
27     dest_time = File.mtime dest_file
28     comp = dest_time <=> source_time
29     if comp > 0
30       return true # Nothing to do, extraction is already up-to-date
31     end
32   end
33     
34   exec("ebook-convert #{source_file} #{dest_file}")
35 end
36
37 def scan_dir(source_path, dest_path) 
38   Find.find(source_path) do |f|
39     if f.match(/.epub\Z/)
40       unless (f.match(/_bis.epub\Z/) || f.match(/_ter.epub\Z/) || f.match(/_quater.epub\Z/))
41         extract_epub(f, source_path, dest_path)
42       end
43     end
44   end
45 end
46
47 dest_path = ARGV[0]
48 for arg in ARGV[1 .. ARGV.length]
49   scan_dir(arg, dest_path)
50 end