X-Git-Url: http://jaekl.net/gitweb/?p=quanlib.git;a=blobdiff_plain;f=book.rb;h=e0ccc841eed4c86600d56e18b0373fc14a138ab2;hp=aa61930bc357fb89dcc861085eedd38921b1f654;hb=fcaeedd4d1c128ff84371c0a7db5d0af6751492a;hpb=dfbc8c62ee2ee6e188609fc44e1a5ac4df40acf4 diff --git a/book.rb b/book.rb index aa61930..e0ccc84 100644 --- a/book.rb +++ b/book.rb @@ -20,12 +20,12 @@ class Book @volume = nil end - def loadFromFile(fileName) + def load_from_file(fileName) @path = fileName - parseFileName!(fileName) + parse_file_name!(fileName) end - def self.canHandle?(fileName) + def self.can_handle?(fileName) if nil == fileName return false end @@ -37,6 +37,10 @@ class Book return true end + if lowerName.end_with?(".pdf") + return true + end + return false end @@ -204,8 +208,8 @@ class Book end protected - def parseFileName!(fileName) - parts = fileName.split('/') + def parse_file_name!(file_name) + parts = file_name.split('/') (series_code, @volume, @title) = processTitle(parts[-1]) if parts.length > 1 grouping = parts[-2] @@ -215,8 +219,11 @@ class Book @series_id = @store.get_series(grouping, series_code) end - if fileName.downcase.end_with?(".epub") - scanEpub!(fileName) + lc_file_name = file_name.downcase + if lc_file_name.end_with?(".epub") + scanEpub!(file_name) + elsif lc_file_name.end_with?(".pdf") + scan_pdf!(file_name) end end @@ -243,6 +250,25 @@ class Book end end + protected + def scan_pdf!(file_name) + #puts 'Scanning "' + file_name.to_s + '"...' + + pdf_path = File.expand_path(file_name).to_s + if ! pdf_path.end_with?('.pdf') + puts 'Unexpected internal error: path "' + file_name.to_s + '" does not end with ".pdf".' + return + end + + jpeg_path = pdf_path[0..-5] + '.jpeg' + if File.file?(jpeg_path) + File.open(jpeg_path, 'r') do |is| + @cover = Cover.new(is, jpeg_path, 'image/jpeg') + end + end + end + + protected def scanOpf!(zipfile, opfPath) coverId = nil