Welcome To Our Shell

Mister Spy & Souheyl Bypass Shell

Current Path : /proc/thread-self/root/home/ift/52_procpy/fibu/

Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
Upload File :
Current File : //proc/thread-self/root/home/ift/52_procpy/fibu/ktocsv.py

#  coding:  utf
import os,re,sys,time,glob

#******************************************************************************

class Ktocsv ():

    def __init__ (self,*pars):

        if pars[0] == "__main__" and len(pars) > 1:
            self.__class__.__dict__[pars[1]](self,*pars[2:])
            return(None)
            

#******************************************************************************

    def mark (self,remark=""):
    
        t = time.perf_counter()
        if 't0' in vars(self):
            print ( ("%9.2f" % ((t-self.t0)*1000)) + " ms for:  " + remark )
        self.t0 = t

#******************************************************************************

    def s (self,file=None,skip_input=None):   #  sort kto
        
        zeilen = {}
        tage   = []

        try:
            zeilen0 = open(file).read().split("\n")
        except:
            zeilen0 = []
            
        if not skip_input:
            for zeile in sys.stdin:
                zeilen0.append(zeile.strip())

        for zeile in zeilen0:
            
            zeile  = re.sub(r"^(\d\d\d\d\d\d\d\d) +\-?(\d+\.\d\d) +\-?(\d+\.\d\d) +","",zeile)
            if zeile.strip() == "":
                continue
            
            betrag = "         "
            while (0 == 0):
            
                if "vorgemerkt" in zeile or "nfangssaldo\"" in zeile or "ndsaldo\"" in zeile:
                    break

                m  = re.search(";\"?([\-\+]?\d+)[\,\.](\d\d)\"?($|;\"?EUR|; +;|;\"?H|;\"?S)",zeile)
                if m:
                    betrag = "%9.2f" % ((1-int("S" in m.group(3))*2)*float(m.group(1)+"."+m.group(2)))
                    break

                m  = re.search(";\"?([\-\+]?\d+)\.(\d\d\d)\,(\d\d)\"?($|;\"?EUR|; +;|;\"?H|;\"?S)",zeile)
                if m:
                    betrag = "%9.2f" % ((1-int("S" in m.group(4))*2)*float(m.group(1)+m.group(2)+"."+m.group(3)))
                    break

                m  = re.search("[\; \"]([\-\+]?\d+)[\,\.](\d\d)[\; \"]",zeile)
                if m:
                    betrag = "%9.2f" % (float(m.group(1)+"."+m.group(2)))
                    break


                break                    
                    

            datum = "00000000"
            while (0 == 0):

                m = re.search("^\S+ +(20\d\d)(\d\d)(\d\d)(\D|$)",zeile)
                if m and int(m.group(2)+m.group(3)) > 0:
                    datum = m.group(1) + m.group(2) +  m.group(3)
                    break

                m = re.search("^\S+ (\D*)(\d\d)\.(\d\d)\.(20|)(\d\d)(\D|$)",zeile)
                if m:
                    datum = m.group(4) + m.group(5) +  m.group(3) +  m.group(2)
                    break

                m = re.search("\"?(\d\d)\.(\d\d)\.(20|)(\d\d)[\"\.\,\;]",zeile)
                if m:
                    datum = "20" + m.group(4) + m.group(2) + m.group(1)
                    break

                betrag = "         "
                break
                    
            if not datum in zeilen:
                zeilen[datum] = []
                tage.append(datum)
            zeilen[datum].append([betrag,zeile])

        tage.sort()
        sum  = 0.00
        text = []

        zeile0 = []
        for datum in tage:
            if datum == "00000000":
                continue
            for entry in zeilen[datum]:
                betrag = entry[0]
                zeile  = entry[1]
#                print(zeile0)
#                print(zeile)
#                print("")
                zeile1 = re.sub(r"^(\d\d\d\d\d\d\d\d) +\-?(\d+\.\d\d) +\-?(\d+\.\d\d) +","",zeile)
#                print(zeile1)
                zeile1 = re.sub(r"^([a-zA-Z\_\-\.0-9]+).csv\: +","",zeile1)
#                print("-",zeile)
#                print(".",zeile1)
                if zeile1 in zeile0:
                    continue
                zeile0.append(zeile1)
                if "." in betrag or "," in betrag:
                    sum    = "%11.2f"  %  (float(sum) + float(betrag))
                    zeile1 = sum + "  " + betrag + "  " + zeile
                else:
                    zeile1 = "           "    + "  " + betrag + "  " + zeile
                text.append(datum + "  " + zeile1)
        
        if len(text) > 0:
            text = "\n".join(text)
            try:
                open(file,"w").write(text+"\n")
            except:
                print(text)


#**************************************************************************        

    def x (self,files="**.csv"):   # extract files

        if os.path.isdir(files):
            files = re.sub("//","/",files + "/**.csv")

        text0  = []
        files1 = []
        files  = re.sub(r"\\","",files,99)
        for pattern in self.pattern_expand(files).split(","):
            for file in glob.glob(pattern):
                files1.append(file)
        open("__csv__","w").write("\n".join(files1)+"\n")
                
        for file in files1:
                file1 = re.sub(r"^(.*)\/(.*)$","\\2",file)
                for zeile in open(file).read().split("\n"):
                    zeile = zeile.strip()
                    if zeile == "":
                        continue
                    zeile = re.sub(r"^(\d\d\d\d\d\d\d\d) +\-?(\d+\.\d\d) +\-?(\d+\.\d\d) +","",zeile)
                    if not re.search(r"^(\S+)\.csv\: +",zeile):
                        zeile = file1 + ":  " + zeile
                    print(zeile)

#**************************************************************************        

    def lohn (self,files=None):  #  extract salary slips
    
        werte       = {}
        bezeichnung = {}
        monat       = "000000"
        zeilen      = []
        
        if files:
            files = re.sub(r"\\","",files,99)
            for pattern in self.pattern_expand(files).split(","):
                for file in glob.glob(pattern):
                    for zeile in open(file).read().split("\n"):
                        zeilen.append(zeile,strip())
        else:
            for zeile in sys.stdin:
                zeilen.append(zeile.strip())
                
        for zeile in zeilen:
            m = re.search(r"^([A-Z][A-Z]\S*) +(\-?\d+\.\d\d) +(\-?\d+\.\d\d) +(\-?\d+\.\d\d) +(.*?)$",zeile.strip())
            if m:
                if not m.group(1) in werte:
                    werte[m.group(1)]       = 0.00
                    bezeichnung[m.group(1)] = m.group(5)
                werte[m.group(1)] = werte[m.group(1)] + float(m.group(2)) + float(m.group(3))
                continue
            m = re.search(r"^(LOHN-AN) +(\-?\d+\.\d\d) +(\S+)",zeile.strip())
            if m:
                if "KUG" in m.group(3):
                    art = "LOHN-KUG"
                else:
                    art = "LOHN-AN"
                if not art in werte:
                    werte[art]       = 0.00
                    bezeichnung[art] = "Gehalt " + art
                werte[art] = werte[art] + float(m.group(2))
                continue

            m = re.search(r" (\d\d)/(\d\d\d\d)[, ]",zeile)
            if m and int(m.group(2)+m.group(1)) > int(monat):
                monat = m.group(2)+m.group(1)
                    
        for art in werte:
            print(monat+"  " + ("%13.2f" % werte[art]) + "  " + bezeichnung[art])
            



#**************************************************************************        

    def d (self,files="**.csv"):   # subtract file, difference
    
        if os.path.isdir(files):
            files = re.sub("//","/",files + "/**.csv")

        try:
            files1 = open("__csv__").read()
        except:
            files1 = ""
        files1 = files1.split("\n")

        text0 = []
        files = re.sub(r"\\","",files,99)
        for pattern in self.pattern_expand(files).split(","):
            for file in glob.glob(pattern):
                if file in files1:
                    continue
                for zeile in open(file).read().split("\n"):
                    zeile  = zeile.strip()
                    if zeile == "":
                        continue
                    zeile  = re.sub(r"^(\d\d\d\d\d\d\d\d) *\-?(\d+\.\d\d) +\-?(\d+\.\d\d) +","",zeile)
                    zeile1 = re.sub(r"^(\S+)\: +","",zeile)
                    text0.append(zeile1)
        

        text = []
        for zeile in sys.stdin:
#            print("xxx",zeile)
            zeile  = zeile.strip()
            zeile  = re.sub(r"^(\d\d\d\d\d\d\d\d)  *\-?(\d+\.\d\d) +\-?(\d+\.\d\d) +","",zeile)
            zeile1 = re.sub(r"^(\S+)\: +","",zeile)
            if not zeile1 in text0:
                text.append(zeile)

        if len(text) > 0:
            print("\n".join(text))


#**************************************************************************        

    def qd (self,files="**.csv"):
    
        self.q(files,1)

#**************************************************************************        

    def q (self,files="**.csv",dryrun=0):   # the content of one file is subtracted to all chosen files
    
        if os.path.isdir(files):
            files = re.sub("//","/",files + "/**.csv")

        text0 = []
        for zeile in sys.stdin:
            zeile  = zeile.strip()
            if zeile == "":
                continue
            zeile  = re.sub(r"^(\d\d\d\d\d\d\d\d) +\-?(\d+\.\d\d) +\-?(\d+\.\d\d) +","",zeile)
            zeile1 = re.sub(r"^(\S+)\: +","",zeile)
            text0.append(zeile1)
                
        files = re.sub(r"\\","",files,99)
        for pattern in self.pattern_expand(files).split(","):
            for file in glob.glob(pattern):
                text    = []
                zaehler = 0  #  Anzahl der Zeilen, die nicht uebernommen werden
                for zeile in open(file).read().split("\n"):
                    zeile  = zeile.strip()
                    zeile  = re.sub(r"^(\d\d\d\d\d\d\d\d) +\-?(\d+\.\d\d) +\-?(\d+\.\d\d) +","",zeile)
                    zeile1 = re.sub(r"^(\S+)\: +","",zeile)
                    if not zeile1 in text0:
                        if not zeile.strip() == "":
                            text.append(zeile)
                    else:
                        zaehler = zaehler + 1
                if zaehler > 0:
                    print(file,"has changed",len(text),"/",zaehler)
                    if dryrun == 0:
                        open(file,"w").write("\n".join(text)+"\n")
                        self.s(file,".")

#**************************************************************************        

    def pattern_expand (self,patterns):
    
        new_pattern = []
        for pattern in patterns.split(","):
            if "**" in pattern:
                pattern1 = ( re.sub(r"\*\*","*",pattern) + "," +
                             re.sub(r"\*\*","*/*",pattern) + "," +
                             re.sub(r"\*\*","*/*/*",pattern) + "," +
                             re.sub(r"\*\*","*/*/*/*",pattern) + "," +
                             re.sub(r"\*\*","*/*/*/*/*",pattern) + "," +
                             re.sub(r"\*\*","*/*/*/*/*/*",pattern) + "," +
                             re.sub(r"\*\*","*/*/*/*/*/*/*",pattern) )
                new_pattern.append(pattern1)
            else:
                new_pattern.append(pattern)
        return(",".join(new_pattern))

#**************************************************************************        

    def join (self):

        zeile0 = ""
        for file in sys.stdin:
            file1 = file.strip()
            text = open(file1).read()
        
            text1  = ""
            zeile0 = ""
            for zeile in text.split("\n"):
                zeile = zeile.strip()
                if re.search(r"^\"\d\d\.\d\d\.\d\d\d\d\"",zeile):
                    text1  = text1 + zeile0 + "\n"
                    zeile0 = zeile
                else:
                    zeile0 = zeile0 + zeile
                    
            open(file1+"~","w").write(text)
            open(file1,"w").write(text1)
                
#**************************************************************************        

if __name__ == "__main__":
    
    Ktocsv(*tuple(["__main__"]+sys.argv[1:]))


bypass 1.0, Devloped By El Moujahidin (the source has been moved and devloped)
Email: contact@elmoujehidin.net bypass 1.0, Devloped By El Moujahidin (the source has been moved and devloped) Email: contact@elmoujehidin.net