Ported to Python3

This commit is contained in:
kounch 2019-03-03 10:28:21 +01:00
parent 18c4d19a0c
commit 63932f9bf8

View File

@ -68,7 +68,7 @@ class OpenableRarFile(rarfile.RarFile):
self._close(handle) self._close(handle)
if not found: if not found:
raise KeyError('There is no item named %r in the archive' % member) raise KeyError('There is no item named %r in the archive' % member)
return ''.join(buf) return b''.join(buf)
if platform.system() == "Windows": if platform.system() == "Windows":
@ -122,12 +122,14 @@ class ZipArchiver:
try: try:
data = zf.read( archive_file ) data = zf.read( archive_file )
except zipfile.BadZipfile as e: except zipfile.BadZipfile as e:
print >> sys.stderr, u"bad zipfile [{0}]: {1} :: {2}".format(e, self.path, archive_file) errMsg=u"bad zipfile [{0}]: {1} :: {2}".format(e, self.path, archive_file)
sys.stderr.buffer.write(bytes(errMsg,"UTF-8"))
zf.close() zf.close()
raise IOError raise IOError
except Exception as e: except Exception as e:
zf.close() zf.close()
print >> sys.stderr, u"bad zipfile [{0}]: {1} :: {2}".format(e, self.path, archive_file) errMsg=u"bad zipfile [{0}]: {1} :: {2}".format(e, self.path, archive_file)
sys.stderr.buffer.write(bytes(errMsg,"UTF-8"))
raise IOError raise IOError
finally: finally:
zf.close() zf.close()
@ -163,14 +165,15 @@ class ZipArchiver:
zf.close() zf.close()
return namelist return namelist
except Exception as e: except Exception as e:
print >> sys.stderr, u"Unable to get zipfile list [{0}]: {1}".format(e, self.path) errMsg=u"Unable to get zipfile list [{0}]: {1}".format(e, self.path)
sys.stderr.buffer.write(bytes(errMsg,"UTF-8"))
return [] return []
# zip helper func # zip helper func
def rebuildZipFile( self, exclude_list ): def rebuildZipFile( self, exclude_list ):
# this recompresses the zip archive, without the files in the exclude_list # this recompresses the zip archive, without the files in the exclude_list
#print ">> sys.stderr, Rebuilding zip {0} without {1}".format( self.path, exclude_list ) #errMsg=u"Rebuilding zip {0} without {1}".format( self.path, exclude_list )
# generate temp file # generate temp file
tmp_fd, tmp_name = tempfile.mkstemp( dir=os.path.dirname(self.path) ) tmp_fd, tmp_name = tempfile.mkstemp( dir=os.path.dirname(self.path) )
@ -273,7 +276,8 @@ class ZipArchiver:
if not self.writeZipComment( self.path, comment ): if not self.writeZipComment( self.path, comment ):
return False return False
except Exception as e: except Exception as e:
print >> sys.stderr, u"Error while copying to {0}: {1}".format(self.path, e) errMsg=u"Error while copying to {0}: {1}".format(self.path, e)
sys.stderr.buffer.write(bytes(errMsg,"UTF-8"))
return False return False
else: else:
return True return True
@ -362,22 +366,26 @@ class RarArchiver:
#entries = rarc.read_files( archive_file ) #entries = rarc.read_files( archive_file )
if entries[0][0].file_size != len(entries[0][1]): if entries[0][0].file_size != len(entries[0][1]):
print >> sys.stderr, u"readArchiveFile(): [file is not expected size: {0} vs {1}] {2}:{3} [attempt # {4}]".format( errMsg=u"readArchiveFile(): [file is not expected size: {0} vs {1}] {2}:{3} [attempt # {4}]".format(
entries[0][0].file_size,len(entries[0][1]), self.path, archive_file, tries) entries[0][0].file_size,len(entries[0][1]), self.path, archive_file, tries)
sys.stderr.buffer.write(bytes(errMsg,"UTF-8"))
continue continue
except (OSError, IOError) as e: except (OSError, IOError) as e:
print >> sys.stderr, u"readArchiveFile(): [{0}] {1}:{2} attempt#{3}".format(str(e), self.path, archive_file, tries) errMsg=u"readArchiveFile(): [{0}] {1}:{2} attempt#{3}".format(str(e), self.path, archive_file, tries)
sys.stderr.buffer.write(bytes(errMsg,"UTF-8"))
time.sleep(1) time.sleep(1)
except Exception as e: except Exception as e:
print >> sys.stderr, u"Unexpected exception in readArchiveFile(): [{0}] for {1}:{2} attempt#{3}".format(str(e), self.path, archive_file, tries) errMsg=u"Unexpected exception in readArchiveFile(): [{0}] for {1}:{2} attempt#{3}".format(str(e), self.path, archive_file, tries)
sys.stderr.buffer.write(bytes(errMsg,"UTF-8"))
break break
else: else:
#Success" #Success"
#entries is a list of of tuples: ( rarinfo, filedata) #entries is a list of of tuples: ( rarinfo, filedata)
if tries > 1: if tries > 1:
print >> sys.stderr, u"Attempted read_files() {0} times".format(tries) errMsg=u"Attempted read_files() {0} times".format(tries)
sys.stderr.buffer.write(bytes(errMsg,"UTF-8"))
if (len(entries) == 1): if (len(entries) == 1):
return entries[0][1] return entries[0][1]
else: else:
@ -453,7 +461,8 @@ class RarArchiver:
namelist.append( item.filename ) namelist.append( item.filename )
except (OSError, IOError) as e: except (OSError, IOError) as e:
print >> sys.stderr, u"getArchiveFilenameList(): [{0}] {1} attempt#{2}".format(str(e), self.path, tries) errMsg=u"getArchiveFilenameList(): [{0}] {1} attempt#{2}".format(str(e), self.path, tries)
sys.stderr.buffer.write(bytes(errMsg,"UTF-8"))
time.sleep(1) time.sleep(1)
else: else:
@ -472,7 +481,8 @@ class RarArchiver:
rarc = OpenableRarFile(self.path) rarc = OpenableRarFile(self.path)
except (OSError, IOError) as e: except (OSError, IOError) as e:
print >> sys.stderr, u"getRARObj(): [{0}] {1} attempt#{2}".format(str(e), self.path, tries) errMsg=u"getRARObj(): [{0}] {1} attempt#{2}".format(str(e), self.path, tries)
sys.stderr.buffer.write(bytes(errMsg,"UTF-8"))
time.sleep(1) time.sleep(1)
else: else:
@ -768,7 +778,8 @@ class ComicArchive:
try: try:
image_data = self.archiver.readArchiveFile( filename ) image_data = self.archiver.readArchiveFile( filename )
except IOError: except IOError:
print >> sys.stderr, u"Error reading in page. Substituting logo page." errMsg=u"Error reading in page. Substituting logo page."
sys.stderr.buffer.write(bytes(errMsg,"UTF-8"))
image_data = ComicArchive.logo_data image_data = ComicArchive.logo_data
return image_data return image_data
@ -1013,13 +1024,15 @@ class ComicArchive:
def readRawCoMet( self ): def readRawCoMet( self ):
if not self.hasCoMet(): if not self.hasCoMet():
print >> sys.stderr, self.path, "doesn't have CoMet data!" errMsg=u"{} doesn't have CoMet data!".format(self.path)
sys.stderr.buffer.write(bytes(errMsg,"UTF-8"))
return None return None
try: try:
raw_comet = self.archiver.readArchiveFile( self.comet_filename ) raw_comet = self.archiver.readArchiveFile( self.comet_filename )
except IOError: except IOError:
print >> sys.stderr, u"Error reading in raw CoMet!" errMsg=u"Error reading in raw CoMet!"
sys.stderr.buffer.write(bytes(errMsg,"UTF-8"))
raw_comet = "" raw_comet = ""
return raw_comet return raw_comet
@ -1070,7 +1083,8 @@ class ComicArchive:
data = self.archiver.readArchiveFile( n ) data = self.archiver.readArchiveFile( n )
except: except:
data = "" data = ""
print >> sys.stderr, u"Error reading in Comet XML for validation!" errMsg=u"Error reading in Comet XML for validation!"
sys.stderr.buffer.write(bytes(errMsg,"UTF-8"))
if CoMet().validateString( data ): if CoMet().validateString( data ):
# since we found it, save it! # since we found it, save it!
self.comet_filename = n self.comet_filename = n