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)
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)
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''
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''