mirror of
				https://github.com/janeczku/calibre-web
				synced 2025-10-30 23:03:02 +00:00 
			
		
		
		
	Comic improvments
This commit is contained in:
		
							
								
								
									
										25
									
								
								cps/comic.py
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								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] | ||||
|     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 | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -137,11 +137,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); | ||||
|     if ( this.mimeType !== undefined) { | ||||
|         this.dataURI = createURLFromArray(file.fileData, this.mimeType); | ||||
|         this.data = file; | ||||
|     } | ||||
| }; | ||||
|  | ||||
|  | ||||
| @@ -169,7 +171,9 @@ function loadFromArrayBuffer(ab) { | ||||
|         unarchiver.addEventListener(bitjs.archive.UnarchiveEvent.Type.PROGRESS, | ||||
|             function(e) { | ||||
|                 var percentage = e.currentBytesUnarchived / e.totalUncompressedBytesInArchive; | ||||
|                 if (totalImages === 0) { | ||||
|                     totalImages = e.totalFilesInArchive; | ||||
|                 } | ||||
|                 updateProgress(percentage *100); | ||||
|                 lastCompletion = percentage * 100; | ||||
|             }); | ||||
| @@ -180,8 +184,10 @@ function loadFromArrayBuffer(ab) { | ||||
|                     var f = e.unarchivedFile; | ||||
|                     // add any new pages based on the filename | ||||
|                     if (imageFilenames.indexOf(f.filename) === -1) { | ||||
|                         var test = new kthoom.ImageFile(f); | ||||
|                         if ( test.mimeType !== undefined) { | ||||
|                             imageFilenames.push(f.filename); | ||||
|                         imageFiles.push(new kthoom.ImageFile(f)); | ||||
|                             imageFiles.push(test); | ||||
|                             // add thumbnails to the TOC list | ||||
|                             $("#thumbnails").append( | ||||
|                                 "<li>" + | ||||
| @@ -191,12 +197,16 @@ function loadFromArrayBuffer(ab) { | ||||
|                                     "</a>" + | ||||
|                                 "</li>" | ||||
|                             ); | ||||
|                     } | ||||
|                 } | ||||
|                             // display first page if we haven't yet | ||||
|                             if (imageFiles.length === currentImage + 1) { | ||||
|                                 updatePage(lastCompletion); | ||||
|                             } | ||||
|                         } | ||||
|                         else { | ||||
|                             totalImages--; | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             }); | ||||
|         unarchiver.addEventListener(bitjs.archive.UnarchiveEvent.Type.FINISH, | ||||
|             function() { | ||||
|   | ||||
| @@ -68,23 +68,23 @@ var ZipLocalFile = function(bstream) { | ||||
|         this.filename = bstream.readString(this.fileNameLength); | ||||
|     } | ||||
|  | ||||
|     info("Zip Local File Header:"); | ||||
|     info(" version=" + this.version); | ||||
|     info(" general purpose=" + this.generalPurpose); | ||||
|     info(" compression method=" + this.compressionMethod); | ||||
|     info(" last mod file time=" + this.lastModFileTime); | ||||
|     info(" last mod file date=" + this.lastModFileDate); | ||||
|     info(" crc32=" + this.crc32); | ||||
|     info(" compressed size=" + this.compressedSize); | ||||
|     info(" uncompressed size=" + this.uncompressedSize); | ||||
|     info(" file name length=" + this.fileNameLength); | ||||
|     info(" extra field length=" + this.extraFieldLength); | ||||
|     info(" filename = '" + this.filename + "'"); | ||||
|     console.log("Zip Local File Header:"); | ||||
|     console.log(" version=" + this.version); | ||||
|     console.log(" general purpose=" + this.generalPurpose); | ||||
|     console.log(" compression method=" + this.compressionMethod); | ||||
|     console.log(" last mod file time=" + this.lastModFileTime); | ||||
|     console.log(" last mod file date=" + this.lastModFileDate); | ||||
|     console.log(" crc32=" + this.crc32); | ||||
|     console.log(" compressed size=" + this.compressedSize); | ||||
|     console.log(" uncompressed size=" + this.uncompressedSize); | ||||
|     console.log(" file name length=" + this.fileNameLength); | ||||
|     console.log(" extra field length=" + this.extraFieldLength); | ||||
|     console.log(" filename = '" + this.filename + "'"); | ||||
|  | ||||
|     this.extraField = null; | ||||
|     if (this.extraFieldLength > 0) { | ||||
|         this.extraField = bstream.readString(this.extraFieldLength); | ||||
|         info(" extra field=" + this.extraField); | ||||
|         console.log(" extra field=" + this.extraField); | ||||
|     } | ||||
|  | ||||
|     // read in the compressed data | ||||
| @@ -110,13 +110,13 @@ ZipLocalFile.prototype.unzip = function() { | ||||
|  | ||||
|     // Zip Version 1.0, no compression (store only) | ||||
|     if (this.compressionMethod == 0 ) { | ||||
|         info("ZIP v" + this.version + ", store only: " + this.filename + " (" + this.compressedSize + " bytes)"); | ||||
|         console.log("ZIP v" + this.version + ", store only: " + this.filename + " (" + this.compressedSize + " bytes)"); | ||||
|         currentBytesUnarchivedInFile = this.compressedSize; | ||||
|         currentBytesUnarchived += this.compressedSize; | ||||
|     } | ||||
|     // version == 20, compression method == 8 (DEFLATE) | ||||
|     else if (this.compressionMethod == 8) { | ||||
|         info("ZIP v2.0, DEFLATE: " + this.filename + " (" + this.compressedSize + " bytes)"); | ||||
|         console.log("ZIP v2.0, DEFLATE: " + this.filename + " (" + this.compressedSize + " bytes)"); | ||||
|         this.fileData = inflate(this.fileData, this.uncompressedSize); | ||||
|     } | ||||
|     else { | ||||
| @@ -164,7 +164,7 @@ var unzip = function(arrayBuffer) { | ||||
|  | ||||
|         // archive extra data record | ||||
|         if (bstream.peekNumber(4) == zArchiveExtraDataSignature) { | ||||
|             info(" Found an Archive Extra Data Signature"); | ||||
|             console.log(" Found an Archive Extra Data Signature"); | ||||
|  | ||||
|             // skipping this record for now | ||||
|             bstream.readNumber(4); | ||||
| @@ -175,7 +175,7 @@ var unzip = function(arrayBuffer) { | ||||
|         // central directory structure | ||||
|         // TODO: handle the rest of the structures (Zip64 stuff) | ||||
|         if (bstream.peekNumber(4) == zCentralFileHeaderSignature) { | ||||
|             info(" Found a Central File Header"); | ||||
|             console.log(" Found a Central File Header"); | ||||
|  | ||||
|             // read all file headers | ||||
|             while (bstream.peekNumber(4) == zCentralFileHeaderSignature) { | ||||
| @@ -205,7 +205,7 @@ var unzip = function(arrayBuffer) { | ||||
|  | ||||
|         // digital signature | ||||
|         if (bstream.peekNumber(4) == zDigitalSignatureSignature) { | ||||
|             info(" Found a Digital Signature"); | ||||
|             console.log(" Found a Digital Signature"); | ||||
|  | ||||
|             bstream.readNumber(4); | ||||
|             var sizeOfSignature = bstream.readNumber(2); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Ozzieisaacs
					Ozzieisaacs