예제 #1
0
파일: IRDB.py 프로젝트: thica/ORCA-Remote
    def ConvertItach2CCF(self) -> None:
        #todo : remove when we know, it is not used anymore
        oXMLCode: Element
        uFile: str
        uCmd: str
        uRepeat: str
        uFileName: str
        uFinal: str
        aFiles: List[str] = Globals.oPathCodesets.GetFolderList()
        aFiles2: List[str] = []
        for uFile in aFiles:
            if uFile.startswith("CODESET_iTach_"):
                aFiles2.append(uFile)

        for uFile in aFiles2:
            oFile: cFileName = cFileName(Globals.oPathCodesets) + uFile
            oXMLCodeset: Element = LoadXMLFile(oFile=oFile)
            oXMLCodes: List[Element] = oXMLCodeset.findall('code')
            for oXMLCode in oXMLCodes:
                uCmd = GetXMLTextAttribute(oXMLNode=oXMLCode,
                                           uTag="cmd",
                                           bMandatory=False,
                                           vDefault="")
                if uCmd.startswith("sendir,"):
                    uRepeat, uCmd = ITach2CCF(uCmd)
                    oXMLCode.set("cmd_ccf", uCmd)
                    oXMLCode.set("repeatcount", uRepeat)
                    del oXMLCode.attrib["cmd"]
            uFileName = oFile.string.replace("_iTach_", "_infrared_ccf_")
            uFinal = ToUnicode(XMLPrettify(oElem=oXMLCodeset))
            uFinal = uFinal.replace(u'<?xml version="1.0"?>',
                                    u'<?xml version="1.0" encoding="UTF-8"?>')
            with codecs.open(uFileName, 'w', 'utf-8') as oOutfile:
                oOutfile.write(uFinal)
예제 #2
0
    def ConvertItach2CCF(self):
        #todo : remove when we know, it is not used anymore
        from ORCA.utils.XML import GetXMLTextAttribute
        import codecs
        aFiles = Globals.oPathCodesets.GetFolderList()
        aFiles2 = []
        for uFile in aFiles:
            if uFile.startswith("CODESET_iTach_"):
                aFiles2.append(uFile)

        for uFile in aFiles2:
            oFile = cFileName(Globals.oPathCodesets) + uFile
            oXMLCodeset = ElementTree(file=oFile.string).getroot()
            oXMLCodes = oXMLCodeset.findall('code')
            for oXMLCode in oXMLCodes:
                uCmd = GetXMLTextAttribute(oXMLCode, "cmd", False, "")
                if uCmd.startswith("sendir,"):
                    uRepeat, uCmd = ITach2CCF(uCmd)
                    oXMLCode.set("cmd_ccf", uCmd)
                    oXMLCode.set("repeatcount", uRepeat)
                    del oXMLCode.attrib["cmd"]
            uFileName = oFile.string.replace("_iTach_", "_infrared_ccf_")
            uFinal = ToUnicode(XMLPrettify(oXMLCodeset))
            uFinal = uFinal.replace(u'<?xml version="1.0"?>',
                                    u'<?xml version="1.0" encoding="UTF-8"?>')
            with codecs.open(uFileName, 'w', 'utf-8') as outfile:
                outfile.write(uFinal)
예제 #3
0
    def _Parse_Json(self,uOrgResponse,uGetVar):
        ''' parses the result a json '''
        uResponse     = ToUnicode(uOrgResponse)
        uResponse2    = ToUnicode(uOrgResponse)
        tJsonResponse = uResponse

        try:
            tJsonResponse = json.loads(uResponse)
        except Exception as e:   # pylint: disable=unused-variable
            #uResponse = uResponse.replace("'", "blalala")
            #uResponse = uResponse.replace('"', "'")
            #uResponse = uResponse.replace("blalala",'"')

            uResponse=fixLazyJsonWithComments(uResponse)

            try:
                tJsonResponse = json.loads(uResponse)
            except Exception as e:
                uResponse     = uResponse.replace('u"', '"')
                tJsonResponse = json.loads(uResponse)
        lGetVars = uGetVar.split(',')
        uResult  = tJsonResponse
        iIndex   = 0
        UnSplit(lGetVars)
        if uGetVar == u'':
            return u'',u''
        for uVar in lGetVars:
            self.ShowDebug(u'Parsing Vartoken:' + uVar + " in:"+uResponse)
            iIndex=iIndex+1
            # we split [aa=bb,ccc}
            uVar = uVar.split(',')
            #and remove the brackets
            if len(uVar)>1:
                if uVar[0].startswith(u'['):
                    uVar[0] = uVar[0][1:]
                if uVar[1].endswith(u']'):
                    uVar[1] = uVar[1][:-1]
            #If we got a dict
            if isinstance(uResult,dict):
                self.ShowDebug(u'Parsing Result as Dict')
                # and should only receive one value, its simple, we do it
                if len(uVar) == 1:
                    uResult = uResult.get(uVar[0])    # pylint: disable=no-member
                # If we have to pull a specific value from a dict, than use the specific one (Not Testet: ToDo: Needs to reworked as soon as i got an example)
                else:
                    uResult = uResult.get(uVar[1])
            #If we got a list
            elif isinstance(uResult,list):
                self.ShowDebug(u'Parsing Result as List')
                #if we need nothing special, then use the first one
                if len(uVar) == 1:
                    if len(uResult) > 0:
                        uResult = uResult[0]
                        self.ShowDebug(u'Parsing Result as List, pulling first element:' + uResponse)
                else:
                    self.ShowDebug(u'Parsing Result as List: Pulling given Value')
                    #now it gets complicated
                    # Lets split the first part (xxx=yyy
                    lTmp=uVar[0].split('=')
                    if len(lTmp) == 2:
                        for oTmpResult in uResult:
                            if isinstance(oTmpResult,dict):
                                uFinalResult = u''
                                bFound       = False
                                for uKey, uValue in oTmpResult.items():
                                    if uKey == uVar[1]:
                                        uFinalResult = uValue
                                    if uKey == lTmp[0]:
                                        if uValue == lTmp[1]:
                                            bFound = True
                                if bFound:
                                    uResult = uFinalResult
                                    break
                        #sResult=sResult.get(lTmp[1])
                    else:
                        uResult = uResult[0]
            if iIndex == len(lGetVars):
                if isinstance(uResult, int) or isinstance(uResult, str) or isinstance(uResult, float):
                    uResult = ToUnicode(uResult)
                if isinstance(uResult, unicode):
                    self._SetVar(uResult,u'JSON:Storing Value')
                    return uVar,uResult
                else:
                    self.ShowError(u'Incomplete parse options')
                    self._SetVar(uResponse2,u'Storing incomplete Value')
                    return uVar,uResponse2
        return u'',u''
예제 #4
0
    def _Parse_Json(self,uOrgResponse,uGetVar):
        """ parses the result a json """
        uResponse     = ToUnicode(uOrgResponse)
        uResponse2    = ToUnicode(uOrgResponse)
        tJsonResponse = uResponse

        try:
            tJsonResponse = json.loads(uResponse)
        except Exception as e:
            #uResponse = uResponse.replace("'", "blalala")
            #uResponse = uResponse.replace('"', "'")
            #uResponse = uResponse.replace("blalala",'"')

            uResponse=fixLazyJsonWithComments(uResponse)

            try:
                tJsonResponse = json.loads(uResponse)
            except Exception as e:
                # uResponse     = uResponse.replace('u"', '"')
                # uResponse     = uResponse.replace('u"', "'")
                if "u'" in uResponse:
                    uResponse     = uResponse.replace("u'", '"')
                    uResponse     = uResponse.replace("'", '"')
                    tJsonResponse = json.loads(uResponse)

        lGetVars = uGetVar.split(',')
        uResult  = tJsonResponse
        iIndex   = 0
        UnSplit(lGetVars)
        if uGetVar == u'':
            return u'',u''
        for uVar in lGetVars:
            self.ShowDebug(u'Parsing Vartoken:' + uVar + " in:"+uResponse)
            iIndex=iIndex+1
            # we split [aa=bb,ccc}
            uVar = uVar.split(',')
            #and remove the brackets
            if len(uVar)>1:
                if uVar[0].startswith(u'['):
                    uVar[0] = uVar[0][1:]
                if uVar[1].endswith(u']'):
                    uVar[1] = uVar[1][:-1]
            #If we got a dict
            if isinstance(uResult,dict):
                self.ShowDebug(u'Parsing Result as Dict')
                # and should only receive one value, its simple, we do it
                if len(uVar) == 1:
                    uResult = uResult.get(uVar[0])
                # If we have to pull a specific value from a dict, than use the specific one (Not Testet: ToDo: Needs to reworked as soon as i got an example)
                else:
                    uResult = uResult.get(uVar[1])
            #If we got a list
            elif isinstance(uResult,list):
                self.ShowDebug(u'Parsing Result as List')
                #if we need nothing special, then use the first one
                if len(uVar) == 1:
                    if len(uResult) > 0:
                        uResult = uResult[0]
                        self.ShowDebug(u'Parsing Result as List, pulling first element:' + uResponse)
                else:
                    self.ShowDebug(u'Parsing Result as List: Pulling given Value')
                    #now it gets complicated
                    # Lets split the first part (xxx=yyy
                    lTmp=uVar[0].split('=')
                    if len(lTmp) == 2:
                        for oTmpResult in uResult:
                            if isinstance(oTmpResult,dict):
                                uFinalResult = u''
                                bFound       = False
                                for uKey, uValue in oTmpResult.items():
                                    if uKey == uVar[1]:
                                        uFinalResult = uValue
                                    if uKey == lTmp[0]:
                                        if uValue == lTmp[1]:
                                            bFound = True
                                if bFound:
                                    uResult = uFinalResult
                                    break
                        #sResult=sResult.get(lTmp[1])
                    else:
                        uResult = uResult[0]
            if iIndex == len(lGetVars):
                if isinstance(uResult, int) or isinstance(uResult, str) or isinstance(uResult, float):
                    uResult = ToUnicode(uResult)
                if isinstance(uResult, string_types):
                    self._SetVar(uResult,u'JSON:Storing Value')
                    return uVar,uResult
                else:
                    self.ShowError(u'Incomplete parse options')
                    self._SetVar(uResponse2,u'Storing incomplete Value')
                    return uVar,uResponse2
        return u'',u''