Skip to content

Commit 3464e44

Browse files
committed
Small update
1 parent 9d77163 commit 3464e44

1 file changed

Lines changed: 53 additions & 13 deletions

File tree

pyneofile/pyneofile.py

Lines changed: 53 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9114,6 +9114,37 @@ def ftype_to_str(ftype):
91149114
# Default to "file" if unknown
91159115
return mapping.get(ftype, "file")
91169116

9117+
def calc_compression(fsize, fcsize, fmt="ratio"):
9118+
"""
9119+
fsize = original size (bytes)
9120+
fcsize = compressed size (bytes) or 0/None if not compressed
9121+
fmt:
9122+
- "ratio" -> "4.00:1"
9123+
- "percent" -> "75.0%"
9124+
- "both" -> "4.00:1 (75.0%)"
9125+
"""
9126+
try:
9127+
fsize = int(fsize or 0)
9128+
fcsize = int(fcsize or 0)
9129+
except (TypeError, ValueError):
9130+
return "-" # unknown
9131+
9132+
# Not compressed or invalid
9133+
if fsize <= 0 or fcsize <= 0 or fcsize >= fsize:
9134+
# If fcsize==fsize, ratio is 1:1; if fcsize>fsize, "expanded"
9135+
if fsize > 0 and fcsize == fsize:
9136+
return "1.00:1" if fmt == "ratio" else ("0.0%" if fmt == "percent" else "1.00:1 (0.0%)")
9137+
return "-" # treat as not compressed / unknown
9138+
9139+
ratio = fsize / fcsize
9140+
savings = (1.0 - (fcsize / fsize)) * 100.0
9141+
9142+
if fmt == "ratio":
9143+
return f"{ratio:.2f}:1"
9144+
if fmt == "percent":
9145+
return f"{savings:.1f}%"
9146+
return f"{ratio:.2f}:1 ({savings:.1f}%)"
9147+
91179148
def NeoFileListFiles(infile, fmttype="auto", filestart=0, seekstart=0, seekend=0, skipchecksum=False, formatspecs=__file_format_multi_dict__, saltkey=None, seektoend=False, verbose=False, newstyle=False, returnfp=False):
91189149
if(isinstance(infile, dict)):
91199150
listarrayfileslist = [infile]
@@ -9122,7 +9153,7 @@ def NeoFileListFiles(infile, fmttype="auto", filestart=0, seekstart=0, seekend=0
91229153
else:
91239154
if(infile != "-" and not hasattr(infile, "read") and not hasattr(infile, "write") and not isinstance(infile, bytes)):
91249155
infile = RemoveWindowsPath(infile)
9125-
listarrayfileslist = NeoFileToArray(infile, fmttype, filestart, seekstart, seekend, True, False, False, skipchecksum, formatspecs, saltkey, seektoend, returnfp)
9156+
listarrayfileslist = ArchiveFileToArray(infile, fmttype, filestart, seekstart, seekend, True, False, False, skipchecksum, formatspecs, saltkey, seektoend, returnfp)
91269157
if(not listarrayfileslist):
91279158
return False
91289159
for listarrayfiles in listarrayfileslist:
@@ -9156,14 +9187,23 @@ def NeoFileListFiles(infile, fmttype="auto", filestart=0, seekstart=0, seekend=0
91569187
if(len(fgprint) <= 0):
91579188
fgprint = listarrayfiles['ffilelist'][lcfi]['fgid']
91589189
if(newstyle):
9159-
VerbosePrintOut(ftype_to_str(listarrayfiles['ffilelist'][lcfi]['ftype']) + "\t" + listarrayfiles['ffilelist'][lcfi]['fcompression'] + "\t" + str(
9160-
listarrayfiles['ffilelist'][lcfi]['fsize']).rjust(15) + "\t" + printfname)
9190+
compratio = calc_compression(listarrayfiles['ffilelist'][lcfi]['fsize'], listarrayfiles['ffilelist'][lcfi]['fcsize'], "percent")
9191+
if(compratio=="-"):
9192+
compratio = "\t"
9193+
else:
9194+
compratio = "\t"+compratio
9195+
if(listarrayfiles['ffilelist'][lcfi]['fsize']==0):
9196+
compressprint = str("0").rjust(15) + "\t"
9197+
else:
9198+
compressprint = str(listarrayfiles['ffilelist'][lcfi]['fcsize']).rjust(15) + "\t"
9199+
VerbosePrintOut(ftype_to_str(listarrayfiles['ffilelist'][lcfi]['ftype']) + "\t" + listarrayfiles['ffilelist'][lcfi]['fcompression'] + compratio + "\t" + str(
9200+
listarrayfiles['ffilelist'][lcfi]['fsize']).rjust(15) + "\t" + compressprint + printfname)
91619201
else:
91629202
ts_ns = listarrayfiles['ffilelist'][lcfi]['fmtime']
91639203
sec, ns = divmod(int(ts_ns), 10**9)
91649204
dt = datetime.datetime.utcfromtimestamp(sec).replace(microsecond=ns // 1000)
9165-
VerbosePrintOut(PrintPermissionString(listarrayfiles['ffilelist'][lcfi]['fmode'], listarrayfiles['ffilelist'][lcfi]['ftype']) + " " + str(fuprint) + "/" + str(fgprint) + " " + str(
9166-
listarrayfiles['ffilelist'][lcfi]['fsize']).rjust(15) + " " + dt.strftime('%Y-%m-%d %H:%M') + " " + printfname)
9205+
VerbosePrintOut(PrintPermissionString(listarrayfiles['ffilelist'][lcfi]['fmode'], listarrayfiles['ffilelist'][lcfi]['ftype']) + "\t" + str(fuprint) + "/" + str(fgprint) + "\t" + str(
9206+
listarrayfiles['ffilelist'][lcfi]['fsize']).rjust(15) + "\t" + dt.strftime('%Y-%m-%d %H:%M') + "\t" + printfname)
91679207
lcfi = lcfi + 1
91689208
if(returnfp):
91699209
return listarrayfiles['fp']
@@ -9338,8 +9378,8 @@ def TarFileListFiles(infile, formatspecs=__file_format_multi_dict__, verbose=Fal
93389378
fgprint = member.gname
93399379
if(len(fgprint) <= 0):
93409380
fgprint = member.gid
9341-
VerbosePrintOut(PrintPermissionString(ffullmode, ftype) + " " + str(fuprint) + "/" + str(fgprint) + " " + str(
9342-
member.size).rjust(15) + " " + datetime.datetime.utcfromtimestamp(member.mtime).strftime('%Y-%m-%d %H:%M') + " " + printfname)
9381+
VerbosePrintOut(PrintPermissionString(ffullmode, ftype) + "\t" + str(fuprint) + "/" + str(fgprint) + "\t" + str(
9382+
member.size).rjust(15) + "\t" + datetime.datetime.utcfromtimestamp(member.mtime).strftime('%Y-%m-%d %H:%M') + "\t" + printfname)
93439383
lcfi = lcfi + 1
93449384
if(returnfp):
93459385
return listarrayfiles['fp']
@@ -9496,8 +9536,8 @@ def ZipFileListFiles(infile, verbose=False, returnfp=False):
94969536
fgprint = fgname
94979537
if(len(fgprint) <= 0):
94989538
fgprint = str(fgid)
9499-
VerbosePrintOut(PrintPermissionString(fmode, ftype) + " " + str(fuprint) + "/" + str(fgprint) + " " + str(member.file_size).rjust(
9500-
15) + " " + datetime.datetime.utcfromtimestamp(int(get_unix_timestamp_zip(zipinfo))).strftime('%Y-%m-%d %H:%M') + " " + printfname)
9539+
VerbosePrintOut(PrintPermissionString(fmode, ftype) + "\t" + str(fuprint) + "/" + str(fgprint) + "\t" + str(member.file_size).rjust(
9540+
15) + "\t" + datetime.datetime.utcfromtimestamp(int(get_unix_timestamp_zip(zipinfo))).strftime('%Y-%m-%d %H:%M') + "\t" + printfname)
95019541
lcfi = lcfi + 1
95029542
if(returnfp):
95039543
return listarrayfiles['fp']
@@ -9629,8 +9669,8 @@ def RarFileListFiles(infile, verbose=False, returnfp=False):
96299669
fgprint = fgname
96309670
if(len(fgprint) <= 0):
96319671
fgprint = str(fgid)
9632-
VerbosePrintOut(PrintPermissionString(fmode, ftype) + " " + str(fuprint) + "/" + str(fgprint) + " " + str(
9633-
member.file_size).rjust(15) + " " + member.mtime.strftime('%Y-%m-%d %H:%M') + " " + printfname)
9672+
VerbosePrintOut(PrintPermissionString(fmode, ftype) + "\t" + str(fuprint) + "/" + str(fgprint) + "\t" + str(
9673+
member.file_size).rjust(15) + "\t" + member.mtime.strftime('%Y-%m-%d %H:%M') + "\t" + printfname)
96349674
lcfi = lcfi + 1
96359675
if(returnfp):
96369676
return listarrayfiles['fp']
@@ -9742,8 +9782,8 @@ def SevenZipFileListFiles(infile, verbose=False, returnfp=False):
97429782
fgprint = fgname
97439783
if(len(fgprint) <= 0):
97449784
fgprint = str(fgid)
9745-
VerbosePrintOut(PrintPermissionString(fmode, ftype) + " " + str(fuprint) + "/" + str(fgprint) + " " + str(
9746-
fsize).rjust(15) + " " + member.creationtime.strftime('%Y-%m-%d %H:%M') + " " + printfname)
9785+
VerbosePrintOut(PrintPermissionString(fmode, ftype) + "\t" + str(fuprint) + "/" + str(fgprint) + "\t" + str(
9786+
fsize).rjust(15) + "\t" + member.creationtime.strftime('%Y-%m-%d %H:%M') + "\t" + printfname)
97479787
lcfi = lcfi + 1
97489788
if(returnfp):
97499789
return listarrayfiles['fp']

0 commit comments

Comments
 (0)