diff --git a/cps/comic.py b/cps/comic.py index 05ffef9b..91cb325d 100644 --- a/cps/comic.py +++ b/cps/comic.py @@ -24,21 +24,34 @@ import uploader def extractCover(tmp_file_name, original_file_extension): + cover_data = None if original_file_extension.upper() == '.CBZ': cf = zipfile.ZipFile(tmp_file_name) - compressed_name = cf.namelist()[0] - cover_data = cf.read(compressed_name) + for name in cf.namelist(): + ext = os.path.splitext(name) + if len(ext) > 1: + extension = ext[1].lower() + if extension == '.jpg': + cover_data = cf.read(name) + break elif original_file_extension.upper() == '.CBT': cf = tarfile.TarFile(tmp_file_name) - compressed_name = cf.getnames()[0] - cover_data = cf.extractfile(compressed_name).read() + for name in cf.getnames(): + ext = os.path.splitext(name) + if len(ext) > 1: + extension = ext[1].lower() + if extension == '.jpg': + cover_data = cf.extractfile(name).read() + break prefix = os.path.dirname(tmp_file_name) - - tmp_cover_name = prefix + '/cover' + os.path.splitext(compressed_name)[1] - image = open(tmp_cover_name, 'wb') - image.write(cover_data) - image.close() + if cover_data: + tmp_cover_name = prefix + '/cover' + extension + image = open(tmp_cover_name, 'wb') + image.write(cover_data) + image.close() + else: + tmp_cover_name = None return tmp_cover_name diff --git a/cps/static/js/kthoom.js b/cps/static/js/kthoom.js index 6a107b9a..6ab25ad7 100644 --- a/cps/static/js/kthoom.js +++ b/cps/static/js/kthoom.js @@ -99,14 +99,15 @@ kthoom.setSettings = function() { }; var createURLFromArray = function(array, mimeType) { - var offset = array.byteOffset, len = array.byteLength; + var offset = array.byteOffset; + var len = array.byteLength; var url; var blob; if (mimeType === 'image/xml+svg') { const xmlStr = new TextDecoder('utf-8').decode(array); return 'data:image/svg+xml;UTF-8,' + encodeURIComponent(xmlStr); - } + } // TODO: Move all this browser support testing to a common place // and do it just once. @@ -137,11 +138,13 @@ var createURLFromArray = function(array, mimeType) { kthoom.ImageFile = function(file) { this.filename = file.filename; var fileExtension = file.filename.split(".").pop().toLowerCase(); - var mimeType = fileExtension === "png" ? "image/png" : + this.mimeType = fileExtension === "png" ? "image/png" : (fileExtension === "jpg" || fileExtension === "jpeg") ? "image/jpeg" : fileExtension === "gif" ? "image/gif" : fileExtension == 'svg' ? 'image/xml+svg' : undefined; - this.dataURI = createURLFromArray(file.fileData, mimeType); - this.data = file; + if ( this.mimeType !== undefined) { + this.dataURI = createURLFromArray(file.fileData, this.mimeType); + this.data = file; + } }; @@ -169,34 +172,42 @@ function loadFromArrayBuffer(ab) { unarchiver.addEventListener(bitjs.archive.UnarchiveEvent.Type.PROGRESS, function(e) { var percentage = e.currentBytesUnarchived / e.totalUncompressedBytesInArchive; - totalImages = e.totalFilesInArchive; + if (totalImages === 0) { + totalImages = e.totalFilesInArchive; + } updateProgress(percentage *100); lastCompletion = percentage * 100; }); unarchiver.addEventListener(bitjs.archive.UnarchiveEvent.Type.EXTRACT, function(e) { - // convert DecompressedFile into a bunch of ImageFiles + // convert DecompressedFile into a bunch of ImageFiles if (e.unarchivedFile) { var f = e.unarchivedFile; // add any new pages based on the filename if (imageFilenames.indexOf(f.filename) === -1) { - imageFilenames.push(f.filename); - imageFiles.push(new kthoom.ImageFile(f)); - // add thumbnails to the TOC list - $("#thumbnails").append( - "