Comic improvments
This commit is contained in:
		
							parent
							
								
									f483ca3214
								
							
						
					
					
						commit
						1561a4abdf
					
				
							
								
								
									
										25
									
								
								cps/comic.py
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								cps/comic.py
									
									
									
									
									
								
							| 
						 | 
					@ -24,21 +24,34 @@ import uploader
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def extractCover(tmp_file_name, original_file_extension):
 | 
					def extractCover(tmp_file_name, original_file_extension):
 | 
				
			||||||
 | 
					    cover_data = None
 | 
				
			||||||
    if original_file_extension.upper() == '.CBZ':
 | 
					    if original_file_extension.upper() == '.CBZ':
 | 
				
			||||||
        cf = zipfile.ZipFile(tmp_file_name)
 | 
					        cf = zipfile.ZipFile(tmp_file_name)
 | 
				
			||||||
        compressed_name = cf.namelist()[0]
 | 
					        for name in cf.namelist():
 | 
				
			||||||
        cover_data = cf.read(compressed_name)
 | 
					            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':
 | 
					    elif original_file_extension.upper() == '.CBT':
 | 
				
			||||||
        cf = tarfile.TarFile(tmp_file_name)
 | 
					        cf = tarfile.TarFile(tmp_file_name)
 | 
				
			||||||
        compressed_name = cf.getnames()[0]
 | 
					        for name in cf.getnames():
 | 
				
			||||||
        cover_data = cf.extractfile(compressed_name).read()
 | 
					            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)
 | 
					    prefix = os.path.dirname(tmp_file_name)
 | 
				
			||||||
 | 
					    if cover_data:
 | 
				
			||||||
    tmp_cover_name = prefix + '/cover' + os.path.splitext(compressed_name)[1]
 | 
					        tmp_cover_name = prefix + '/cover' + extension
 | 
				
			||||||
        image = open(tmp_cover_name, 'wb')
 | 
					        image = open(tmp_cover_name, 'wb')
 | 
				
			||||||
        image.write(cover_data)
 | 
					        image.write(cover_data)
 | 
				
			||||||
        image.close()
 | 
					        image.close()
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        tmp_cover_name = None
 | 
				
			||||||
    return tmp_cover_name
 | 
					    return tmp_cover_name
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -137,11 +137,13 @@ var createURLFromArray = function(array, mimeType) {
 | 
				
			||||||
kthoom.ImageFile = function(file) {
 | 
					kthoom.ImageFile = function(file) {
 | 
				
			||||||
    this.filename = file.filename;
 | 
					    this.filename = file.filename;
 | 
				
			||||||
    var fileExtension = file.filename.split(".").pop().toLowerCase();
 | 
					    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 === "jpg" || fileExtension === "jpeg") ? "image/jpeg" :
 | 
				
			||||||
            fileExtension === "gif" ? "image/gif" : fileExtension == 'svg' ? 'image/xml+svg' : undefined;
 | 
					            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;
 | 
					        this.data = file;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -169,7 +171,9 @@ function loadFromArrayBuffer(ab) {
 | 
				
			||||||
        unarchiver.addEventListener(bitjs.archive.UnarchiveEvent.Type.PROGRESS,
 | 
					        unarchiver.addEventListener(bitjs.archive.UnarchiveEvent.Type.PROGRESS,
 | 
				
			||||||
            function(e) {
 | 
					            function(e) {
 | 
				
			||||||
                var percentage = e.currentBytesUnarchived / e.totalUncompressedBytesInArchive;
 | 
					                var percentage = e.currentBytesUnarchived / e.totalUncompressedBytesInArchive;
 | 
				
			||||||
 | 
					                if (totalImages === 0) {
 | 
				
			||||||
                    totalImages = e.totalFilesInArchive;
 | 
					                    totalImages = e.totalFilesInArchive;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
                updateProgress(percentage *100);
 | 
					                updateProgress(percentage *100);
 | 
				
			||||||
                lastCompletion = percentage * 100;
 | 
					                lastCompletion = percentage * 100;
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
| 
						 | 
					@ -180,8 +184,10 @@ function loadFromArrayBuffer(ab) {
 | 
				
			||||||
                    var f = e.unarchivedFile;
 | 
					                    var f = e.unarchivedFile;
 | 
				
			||||||
                    // add any new pages based on the filename
 | 
					                    // add any new pages based on the filename
 | 
				
			||||||
                    if (imageFilenames.indexOf(f.filename) === -1) {
 | 
					                    if (imageFilenames.indexOf(f.filename) === -1) {
 | 
				
			||||||
 | 
					                        var test = new kthoom.ImageFile(f);
 | 
				
			||||||
 | 
					                        if ( test.mimeType !== undefined) {
 | 
				
			||||||
                            imageFilenames.push(f.filename);
 | 
					                            imageFilenames.push(f.filename);
 | 
				
			||||||
                        imageFiles.push(new kthoom.ImageFile(f));
 | 
					                            imageFiles.push(test);
 | 
				
			||||||
                            // add thumbnails to the TOC list
 | 
					                            // add thumbnails to the TOC list
 | 
				
			||||||
                            $("#thumbnails").append(
 | 
					                            $("#thumbnails").append(
 | 
				
			||||||
                                "<li>" +
 | 
					                                "<li>" +
 | 
				
			||||||
| 
						 | 
					@ -191,12 +197,16 @@ function loadFromArrayBuffer(ab) {
 | 
				
			||||||
                                    "</a>" +
 | 
					                                    "</a>" +
 | 
				
			||||||
                                "</li>"
 | 
					                                "</li>"
 | 
				
			||||||
                            );
 | 
					                            );
 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                            // display first page if we haven't yet
 | 
					                            // display first page if we haven't yet
 | 
				
			||||||
                            if (imageFiles.length === currentImage + 1) {
 | 
					                            if (imageFiles.length === currentImage + 1) {
 | 
				
			||||||
                                updatePage(lastCompletion);
 | 
					                                updatePage(lastCompletion);
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        else {
 | 
				
			||||||
 | 
					                            totalImages--;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        unarchiver.addEventListener(bitjs.archive.UnarchiveEvent.Type.FINISH,
 | 
					        unarchiver.addEventListener(bitjs.archive.UnarchiveEvent.Type.FINISH,
 | 
				
			||||||
            function() {
 | 
					            function() {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -68,23 +68,23 @@ var ZipLocalFile = function(bstream) {
 | 
				
			||||||
        this.filename = bstream.readString(this.fileNameLength);
 | 
					        this.filename = bstream.readString(this.fileNameLength);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    info("Zip Local File Header:");
 | 
					    console.log("Zip Local File Header:");
 | 
				
			||||||
    info(" version=" + this.version);
 | 
					    console.log(" version=" + this.version);
 | 
				
			||||||
    info(" general purpose=" + this.generalPurpose);
 | 
					    console.log(" general purpose=" + this.generalPurpose);
 | 
				
			||||||
    info(" compression method=" + this.compressionMethod);
 | 
					    console.log(" compression method=" + this.compressionMethod);
 | 
				
			||||||
    info(" last mod file time=" + this.lastModFileTime);
 | 
					    console.log(" last mod file time=" + this.lastModFileTime);
 | 
				
			||||||
    info(" last mod file date=" + this.lastModFileDate);
 | 
					    console.log(" last mod file date=" + this.lastModFileDate);
 | 
				
			||||||
    info(" crc32=" + this.crc32);
 | 
					    console.log(" crc32=" + this.crc32);
 | 
				
			||||||
    info(" compressed size=" + this.compressedSize);
 | 
					    console.log(" compressed size=" + this.compressedSize);
 | 
				
			||||||
    info(" uncompressed size=" + this.uncompressedSize);
 | 
					    console.log(" uncompressed size=" + this.uncompressedSize);
 | 
				
			||||||
    info(" file name length=" + this.fileNameLength);
 | 
					    console.log(" file name length=" + this.fileNameLength);
 | 
				
			||||||
    info(" extra field length=" + this.extraFieldLength);
 | 
					    console.log(" extra field length=" + this.extraFieldLength);
 | 
				
			||||||
    info(" filename = '" + this.filename + "'");
 | 
					    console.log(" filename = '" + this.filename + "'");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    this.extraField = null;
 | 
					    this.extraField = null;
 | 
				
			||||||
    if (this.extraFieldLength > 0) {
 | 
					    if (this.extraFieldLength > 0) {
 | 
				
			||||||
        this.extraField = bstream.readString(this.extraFieldLength);
 | 
					        this.extraField = bstream.readString(this.extraFieldLength);
 | 
				
			||||||
        info(" extra field=" + this.extraField);
 | 
					        console.log(" extra field=" + this.extraField);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // read in the compressed data
 | 
					    // read in the compressed data
 | 
				
			||||||
| 
						 | 
					@ -110,13 +110,13 @@ ZipLocalFile.prototype.unzip = function() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Zip Version 1.0, no compression (store only)
 | 
					    // Zip Version 1.0, no compression (store only)
 | 
				
			||||||
    if (this.compressionMethod == 0 ) {
 | 
					    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;
 | 
					        currentBytesUnarchivedInFile = this.compressedSize;
 | 
				
			||||||
        currentBytesUnarchived += this.compressedSize;
 | 
					        currentBytesUnarchived += this.compressedSize;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    // version == 20, compression method == 8 (DEFLATE)
 | 
					    // version == 20, compression method == 8 (DEFLATE)
 | 
				
			||||||
    else if (this.compressionMethod == 8) {
 | 
					    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);
 | 
					        this.fileData = inflate(this.fileData, this.uncompressedSize);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else {
 | 
					    else {
 | 
				
			||||||
| 
						 | 
					@ -164,7 +164,7 @@ var unzip = function(arrayBuffer) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // archive extra data record
 | 
					        // archive extra data record
 | 
				
			||||||
        if (bstream.peekNumber(4) == zArchiveExtraDataSignature) {
 | 
					        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
 | 
					            // skipping this record for now
 | 
				
			||||||
            bstream.readNumber(4);
 | 
					            bstream.readNumber(4);
 | 
				
			||||||
| 
						 | 
					@ -175,7 +175,7 @@ var unzip = function(arrayBuffer) {
 | 
				
			||||||
        // central directory structure
 | 
					        // central directory structure
 | 
				
			||||||
        // TODO: handle the rest of the structures (Zip64 stuff)
 | 
					        // TODO: handle the rest of the structures (Zip64 stuff)
 | 
				
			||||||
        if (bstream.peekNumber(4) == zCentralFileHeaderSignature) {
 | 
					        if (bstream.peekNumber(4) == zCentralFileHeaderSignature) {
 | 
				
			||||||
            info(" Found a Central File Header");
 | 
					            console.log(" Found a Central File Header");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // read all file headers
 | 
					            // read all file headers
 | 
				
			||||||
            while (bstream.peekNumber(4) == zCentralFileHeaderSignature) {
 | 
					            while (bstream.peekNumber(4) == zCentralFileHeaderSignature) {
 | 
				
			||||||
| 
						 | 
					@ -205,7 +205,7 @@ var unzip = function(arrayBuffer) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // digital signature
 | 
					        // digital signature
 | 
				
			||||||
        if (bstream.peekNumber(4) == zDigitalSignatureSignature) {
 | 
					        if (bstream.peekNumber(4) == zDigitalSignatureSignature) {
 | 
				
			||||||
            info(" Found a Digital Signature");
 | 
					            console.log(" Found a Digital Signature");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            bstream.readNumber(4);
 | 
					            bstream.readNumber(4);
 | 
				
			||||||
            var sizeOfSignature = bstream.readNumber(2);
 | 
					            var sizeOfSignature = bstream.readNumber(2);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user