# -*- 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()