Spaces:
Paused
Paused
| # -*- coding: utf-8 -*- | |
| ##import zipOrZip as zo; | |
| import gzip, bz2, tarfile, zipfile, datetime, io | |
| from io import BytesIO | |
| import os | |
| # | |
| import mw; | |
| from tofu_edit import ctod | |
| # | |
| def extgz(te): | |
| buf = BytesIO( te) | |
| f = gzip.GzipFile(fileobj=buf) | |
| data = f.read() | |
| return data; | |
| def wbgz(te):#writeBuffer | |
| buf = BytesIO() | |
| f = gzip.GzipFile(fileobj=buf,mode="wb") | |
| f.write(te); | |
| f.close()#neccesery | |
| return buf.getvalue(); | |
| def wfgz(fn,te):#writeFile | |
| f = gzip.open(fn,"wb") | |
| data = f.write(te) | |
| f.close()#同じ名前のファイルがあるとRenameと同じ挙動に | |
| def wfbz(fn,te):#writeFile | |
| f = bz2.BZ2File(fn,"wb") | |
| data = f.write(te) | |
| f.close() | |
| def writebzb(te):#writeFilebz Buffer | |
| buf = BytesIO() | |
| f = bz2.BZ2File(fileobj=buf,mode="wb")#fileobj not work | |
| data = f.write(te) | |
| f.close() | |
| return buf.getvalue() | |
| def tarlist(fn): | |
| with tf.open(fn,"r") as ta: | |
| return tf.list() | |
| def tarprint(fn): | |
| ## with tarfile.open(fn,"r") as ta: | |
| ## print(ta.list()) | |
| ta=tarfile.open(fn,"r") | |
| print(ta.list()) | |
| for tarinfo in ta: | |
| print(tarinfo.name,tarinfo.size, ## datetime.fromtimestamp(tarinfo.mtime), | |
| tarinfo.mtime, oct(tarinfo.mode), tarinfo.uname, tarinfo.gname) | |
| ta.close() | |
| def tfread(tfn,fn): | |
| with tarfile.open(tfn,"r") as ta: | |
| ti = ta.getmember(fn) | |
| f = ta.extractfile(ti) | |
| te= f.read() | |
| return te ; | |
| def writeExtract(dist,fns=()): | |
| if(type(fns)==str): | |
| with tarfile.open(fns) as ta: | |
| ta.extractall(dist) | |
| def writexz(fn,li3,mode='w|xz'):codetar(li3=li3,mode=mode,fn=fn); | |
| def codetar(li3,mode='w|',bio=BytesIO(),fn=""): | |
| with tarfile.open(name=fn, mode=mode, fileobj=(bio if not fn else None))as ta: | |
| for src,dist in li3: | |
| ta.add(src,dist) | |
| return bio | |
| def zipread(zfn,fn="",pwd=None): | |
| with zipfile.ZipFile(zfn,"r") as zfo: | |
| if not fn:return zfo.infolist() | |
| #fo=zfo.open(fn,"r",pwd=pwd) | |
| data=zfo.read(fn,pwd=pwd) | |
| return data | |
| def zipwrites_full(zfn,li,compress=zipfile.ZIP_DEFLATED, pwd=None): | |
| #passward not supported | |
| with zipfile.ZipFile(zfn,"w",compression=compress) as zfo: | |
| for rfn,wfn in li: | |
| zfo.write(rfn,wfn) | |
| return zfo.infolist() | |
| def zipwrites(zfn,li,compress=zipfile.ZIP_DEFLATED, pwd=None): | |
| zipwrites_full(zfn,[(fn,fn) for fn in li],compress=compress, pwd=pwd) | |
| def zipwrites_dir(zfn,dirn,*aw,**kw): | |
| import itertools | |
| imw=(itertools.chain.from_iterable(([jofn(r,fn) for fn in (ds+fs)] for r, ds, fs in os.walk(dirn) ) )) | |
| ## dire=kah.split("\\")[-1] | |
| li=[(i,i[len(dirn):]) for i in imw] | |
| zipwrites_full(zfn,li,*aw,**kw) | |
| #zipwrites_dir(r"r:\isshonisino.zip",r"r:\temp",compress=zipfile.ZIP_STORED) | |
| def zipbufi(li): | |
| buf = BytesIO() | |
| with zipfile.ZipFile(buf,mode="w") as fo: | |
| for p,te in li: | |
| fo.writestr(p,te); | |
| ## if type(te)==str: fo.writestr(p,te); | |
| ## else: fo.write(p,te) | |
| #print(buf.getvalue()) | |
| return buf; | |
| def zipbuf(): | |
| #buf=zipbufi([(r"v/w.txt","vw"),("new folder/",""),(r"ほのか","weffw")]) | |
| buf=zipbufi([(r"nf/nf/0.txt","vw"),("cmczip.com.url",""),(r"nf/nf/cmczip.com.url","")]) | |
| #buf=BytesIO(buflk) | |
| inf=zipread(buf) | |
| wr.wfdb(r"c:\v\t\ziptst.zip",buf.getbuffer()) | |
| print(inf) | |
| #zipbuf() | |
| def ziplvlv(): | |
| b1 = BytesIO() | |
| zipwrites_dir(b1,r"c:\v\t\lvlv") | |
| buf=zipbufi([(r"v1.zip",b1.getbuffer()),("v2.zip",b1.getbuffer())]) | |
| zfn=r"c:\v\t\ziptst.zip" | |
| wr.wfdb(zfn,buf.getbuffer()) | |
| print(zipread(zfn)) | |
| ##ziplvlv() | |
| #https://www.rarlab.com/rar_add.htm | |
| os.environ["UNRAR_LIB_PATH"]=r"C:\dll\unrar64.dll" | |
| try: | |
| from unrar import rarfile | |
| except:0 | |
| def ur(fn): | |
| ro=rarfile.RarFile(fn) | |
| #ro.comment | |
| ## print(ro.namelist()) | |
| ## ro.printdir() | |
| fs=ro.infolist() | |
| for fo in fs[:4]+fs[-2:]: | |
| print(fo.filename) | |
| ro.extract(fo,dstfolder) | |
| #for fn in (r"C:\v\jd\Nagato Yuki Shoushitsu v0%d.rar"%d for d in range(6,10)): #exc | |
| from mw import rfdb, jofn, lfnb | |
| class zo: | |
| def ini1(self,zfn,tmpfolder=""): | |
| self.zfn=zfn | |
| self.tdn=tdn=jofn(tmpfolder,lfnb(zfn[0])) | |
| if not os.path.exists(tdn): | |
| os.makedirs(tdn) | |
| else: return self | |
| if 1: | |
| self.tfread=self.tfread | |
| for f in zfn: writeExtract(tdn,f)#4 bcmodified | |
| else: | |
| self.tfread=self.tfread | |
| return self | |
| def fpfn(self,fn): return jofn(self.tdn, fn) | |
| def tfread(self,zfn,fn): | |
| return rfdb(jofn(self.tdn, fn)) | |
| ## def __iter__(self): | |
| ## for f in tempfolder | |
| def __enter__(self): | |
| return 1 | |
| def __exit__(self, _type, value, traceback): | |
| self.tdn | |
| def rmtmp(self): | |
| import shutil | |
| from datetime import datetime, date, timedelta | |
| import time | |
| ctime=os.path.getctime(self.tdn) | |
| ctime=datetime.fromtimestamp(ctime) | |
| flnew=datetime.now()-timedelta(hours=2) < ctime | |
| print("remove;",ctime, self.tdn, f"{flnew=}") | |
| if flnew: shutil.rmtree(self.tdn) | |
| # | |
| import random | |
| import string | |
| import uuid | |
| import hashlib | |
| #hashlib.sha1(b"kanata").hexdigest() | |
| def mkOneTime():return mkPas(uuid.uuid4()) | |
| def mk1p():return print(mkPas(uuid.uuid4(),l=12,letters="d!?-_#"))#keyboard friendly pass | |
| def mkPas(k,l=24,letters="ad"): | |
| diLe={"a":string.ascii_letters, "d": string.digits, "p":string.punctuation} | |
| diLe.update([(p,p)for p in string.punctuation]) | |
| letters=jw("",[diLe[c]for c in letters]) | |
| print(letters) | |
| # | |
| random.seed(k) | |
| return (jw('',[random.choice(letters) for i in range(l)])) | |
| def mkKey(k,l=1234,l2=1):#initial vector, rn key len, range*256 | |
| random.seed(k) | |
| rn=[random.randrange(0,l2*0x100) for i in range(l)] | |
| return rn | |
| def visunel(k,te): | |
| t2=[(v+k[i%len(k)])%6 for i,v in enumerate(te)] | |
| return t2 | |
| def visuner(k,te): | |
| t2=[(v+256-k[i%len(k)])%6 for i,v in enumerate(te)] | |
| return t2 | |
| def visunex(k,te):return bytearray([(v^k[i%len(k)]) for i,v in enumerate(te)])#xor | |
| import array | |
| import struct | |
| #http://docs.python.jp/3/library/struct.html | |
| def pwdlen(pwd): | |
| if(type(pwd)==int): | |
| a | |
| def imagineL(pwd,data,fn): | |
| datas=[bytes(v)for v in [fn,pwd,data]] | |
| lens=[len(i)for i in datas];#(len(pwd),len(data),len(fn),) | |
| ba=bytearray(4*len(lens)+ sum(lens)) | |
| ## p1=struct.pack("III"+jw("",[(str(i)+"s")for i in lens]), *lens) | |
| p1=struct.pack("III"+jw("",[(str(i)+"s")for i in lens]), *lens+datas) | |
| #struct.pack_into("2s",ba,0,b"j") | |
| ## return p1 | |
| ##def imagineL(pwd,data,fn): | |
| datas=[fn,pwd,data] | |
| lens=struct.unpack("III", p1[:12]) | |
| p2r=struct.unpack("III"+jw("",[(str(i)+"s")for i in lens]), p1) | |
| print(p2r) | |
| return p2r | |
| def main(): | |
| hh=wr.hhww(mojibake=0) | |
| z="gz"; | |
| fn="fn."+z; | |
| te=wr.rfdb(wr.sys.argv[0]); | |
| tfn=r"N:\dpDict\naist-jdic-0.4.3.tar.gz" | |
| tfn2=["unimj.txt","orror00.txt"] | |
| import os | |
| import re | |
| if 0: | |
| wr.inidir("testfldr\\") | |
| tarprint(tfn) | |
| ta=tarfile.open("testfldr\\ふぁいる.tar.gz","w:gz") | |
| for n in tfn2 : ta.add(n) | |
| ta.close() | |
| print(tfread(tfn,"naist-jdic-0.4.3/README").decode("cp932")) | |
| if 0: | |
| wfgz(fn,te); | |
| wfbz("fあみn.txt.bz2",te);#文字化け | |
| ## wfbz(str("あいう.txt.bz2".encode("mbcs")),te); | |
| bf=wbgz(te); | |
| wr.wfdb("f2.txt.gz",bf); | |
| pass | |
| if 0:#NoWork | |
| bf=writebzb(te); | |
| def tes2(): | |
| randkey=mkKey("key",22,1) | |
| print(randkey) | |
| randkey=mkKey("key2",22,1) | |
| print(randkey) | |
| coded=visunel(randkey, "amiあみ".encode("utf8")) | |
| raw=visuner(randkey,coded) | |
| print(coded,bytes(coded),raw, bytes(raw).decode()) | |
| print("xor",visunex(randkey, visunex(randkey, "amiあみ".encode("utf8")))) | |
| # | |
| imagineL(randkey,coded,b"ami.c") | |
| # | |
| mk1p();print(mkOneTime()) | |
| ## class ca(io.m): | |
| class ca(io.BufferedIOBase): | |
| ## class ca(io.BytesIO): | |
| def __init__(sl,ar): | |
| sl.ar=ar | |
| sl.p=0 | |
| def read(sl,ln): | |
| ## ri=io.BytesIO.read(sl,ln) | |
| ## return ri | |
| ro=sl.ar[sl.p:sl.p+ln] | |
| sl.p=sl.p+ln | |
| return bytes(ro) | |
| def write(sl,te): | |
| sl.ar.extend(list(te)) | |
| ## ri=io.BufferedWriter.write(sl,te) | |
| ## return ri | |
| def getvalue(sl): | |
| return bytes(sl.ar) | |
| def j1():#no | |
| return | |
| buf=ca([]) | |
| with gzip.GzipFile(fileobj=buf,mode="wb") as go: | |
| go.write(b"fwefwe") | |
| wd=buf.getvalue() | |
| with gzip.GzipFile(fileobj=buf) as go: | |
| rd=go.read() | |
| print(wd,rd) | |
| #12 | |
| with open(r"r:\j12.gz","wb") as fo: | |
| fo | |
| def j2():#print sorted punctuation | |
| "explorer '- !#$%&(),.;@[]^_`{}~+=0"#'- is ordered by following sign | |
| cant=r'"*./:<>?\|'#'unaviable' | |
| az="!#$%&'()+,-019;=@AZ[]^_`az{}~"#aviable | |
| # | |
| import os, time | |
| if not(wr.ifexist(r"r:\fn")):os.makedirs(r"r:\fn") | |
| # | |
| diLe={"a":string.ascii_letters, "d": string.digits, "p":string.punctuation} | |
| li1=[i for j in diLe.values() for i in j]+list("わあ") | |
| li1.sort() | |
| print(jw("",li1)) | |
| print(jw("",[ c for c in li1 if not c in cant])) | |
| # | |
| eFn=[] | |
| for i,c in enumerate(li1): | |
| if(c in r'"*/:<>?\|'):continue | |
| try: | |
| fn1=r"r:\fn\%s_d_x%x"%(c,i,ord(c)) | |
| wr.write8(fn1+".exe","")#exe 4 sendto | |
| wr.write8(r"r:\fn\%c"%(c)+".exe","") | |
| ## os.utime(fn1,(time.mktime((2000,1,1,5,55,55,1,1,1)),0.0)) | |
| except Exception as e:# lkFileNotFoundError as e: | |
| eFn.append((c,e)) | |
| print("eFn " + jw("",(c for c,e in eFn))) | |
| ap=r"N:\driveK\applic\7za920\7za.exe" | |
| def j4(fn=r"N:\afilen\program\python\Mjmoji",alias="files",pwd=""):#7z | |
| with wr.cldir(fn): | |
| fd=os.walk(fn) | |
| fn1=[jofn(r,f) for r,ds,fs in fd for f in fs] | |
| fn2=[os.path.relpath(j) for j in fn1] | |
| if 1: | |
| ## fnt=[(f,os.path.split(f)[1]) for f in fn1] | |
| fnt=[(f,os.path.relpath(f)) for f in fn1] | |
| buf=codetar(fnt,mode="w|") | |
| xz=r"r:\tar.tar.xz" | |
| codetar(fnt,mode="w|xz",fn=xz)#idea. encoding="utf-8" | |
| # | |
| ## codetar([(fp,"alfa\\"+rp)for fp,rp in fnt],mode="a",fn=r"r:\alf.tar.gz") | |
| tarprint(xz) | |
| #open | |
| ## with open(xz+"2","wb") as fo: | |
| ## fo | |
| fns=fn2 | |
| j=fns[9] | |
| cline=[ap,'a', 'r:\\j4.7z','-si'] | |
| print(cline) | |
| ri=ctod(cline,sh=False,si=buf.getvalue()) | |
| print(jw(" ",[str(j)for j in ri])) | |
| def j3(fn=r"N:\afilen\program\python\file",alias="files",pwd=""):#7z | |
| with wr.cldir(fn): | |
| ap=r"N:\driveK\applic\7za920\7za.exe" | |
| #fns=os.listdir(fn); | |
| fd=os.walk(fn) | |
| fn1=[jofn(r,f) for r,ds,fs in fd for f in fs] | |
| fn2=[os.path.relpath(j) for j in fn1] | |
| fns=fn2 | |
| ## jf=jw(" ",[jofn(fn,j)for j in fns]) | |
| #### print(jf) | |
| ## cline=ap+" a "+("-p%s "%pwd if pwd else "")+r"r:\j.7z "+jf | |
| ## ri=ctod(cline) | |
| ## print(ri) | |
| ## cline=ap+" a "+("-p%s "%pwd if pwd else "")+r"r:\stdin.7z -siSI/a "+jf | |
| #### cline=ap+" a "+("-p%s "%pwd if pwd else "")+r'r:\stdin.7z -sir@list < '+jf | |
| ## cline=ap+" a "+("-p%s "%pwd if pwd else "")+r'r:\stdin.7z kakomj/mj.py'#idea | |
| if 0: | |
| ri=ctod(cline) | |
| else: | |
| for j in fns: | |
| cline=ap+" a "+("-p%s "%pwd if pwd else "")+r"r:\j.7z "+'"%s"'%j | |
| cline=[ap," a "+("-p%s "%pwd if pwd else "")+r"r:\j.7z "+'%s'%j] | |
| cline=[ap,'a', 'r:\\j32.7z',j]#idea | |
| print(cline) | |
| ri=ctod(cline,sh=False) | |
| print(ri) | |
| ## wr.prexit() | |
| print(ri) | |
| # | |
| if 0:#no | |
| cline=ap+" a "+("-p%s "%pwd if 0 else "")+r"r:/j3.7z "+r"-ir!N:\afilen\program\python\file\*.txt" | |
| cline=ap+" a "+r" r:/j2.7z "+r" -ir!R:\temp\*.txt"#idea | |
| cline=ap+" a "+r" j2 "+r' -ir!"N:\afilen\program\python\file\*.txt"' | |
| ## cline=ap+" a "+r" j2 "+r' -ir!"N:/afilen/program/python/file/*.txt"' | |
| print(cline) | |
| ri=ctod(cline) | |
| print(ri) | |
| ## j4(fn=r"N:\afilen\program\python\file") | |
| ## j3() | |
| ## j2() | |
| ## j1() | |
| if hh.mojibake: | |
| zfn=r"C:\v\jd\Pic201377.zip" | |
| info=zipread(zfn) | |
| print(info) | |
| # | |
| with zipfile.ZipFile(zfn,"r") as zfo: | |
| for im in zfo.infolist():#|namelist() | |
| fn=im.filename | |
| print(fn.encode('cp437').decode('cp932')) | |
| def m0(): | |
| te=wr.rfdb(r"N:\afilen\program\python\work\d.html") | |
| ## buf = StringIO( te.decode("utf-8")) | |
| buf = BytesIO( te) | |
| f = gzip.GzipFile(fileobj=buf) | |
| data = f.read() | |
| f = open("tenkaiAfter"+".html","wb") | |
| f.write(data) | |
| f.close() | |
| if __name__ == '__main__': | |
| main() |