def put(self, item): if "" == item["content"]: logger.debug(f'content is empty') return False logger.debug( f'PUT {item["content"]} {item["options"]} {item["answer"]} {item["excludes"]}...' ) # 单选题挑战题一致 if item["category"] == "单选题": item["category"] = "挑战题" # 判断是否是错误答案的题库条目 if item["excludes"] != "": excludeItem = self.find_excludes_item(item) if excludeItem is not None: item["excludes"] = item["excludes"] + excludeItem["excludes"] self.dataKu.remove(excludeItem) try: out_file = open("./data1.json", "w", encoding='utf8') self.dataKu.append(item) json.dump(self.dataKu, out_file, indent=6, ensure_ascii=False) out_file.close() return True except Exception as ex: logger.info(ex) return False
def post(self, item): # logger.debug(f'POST {item["content"]} {item["options"]} {item["answer"]} {item["excludes"]}...') if "" == item["content"]: logger.debug(f'content is empty') return None # 单选题挑战题一致 if item["category"] == "单选题": item["category"] = "挑战题" # logger.debug(f'GET {item["content"]}...') # 精确查询答案 for dataKuItem in self.dataKu: if dataKuItem['category'] == item["category"] and dataKuItem[ 'content'] == item["content"] and dataKuItem[ 'options'] == item[ "options"] and dataKuItem['answer'] != "": return dataKuItem else: continue # 精确查询排除答案的条码 for dataKuItem in self.dataKu: if dataKuItem['category'] == item["category"] and dataKuItem[ 'content'] == item["content"] and dataKuItem[ 'options'] == item[ "options"] and dataKuItem['excludes'] != "": return dataKuItem else: continue return None
def post_2(self, item): # logger.debug(f'POST {item["content"]} {item["options"]} {item["answer"]} {item["excludes"]}...') if "" == item["content"]: logger.debug(f'content is empty') return None # 单选题挑战题一致 if item["category"] == "单选题": item["category"] = "挑战题" logger.debug(f'GET {item["content"]}...') for dataKuItem in self.dataKu: if dataKuItem['category'] == item["category"] and dataKuItem['content'] == item["content"] and \ dataKuItem[ 'options'] == item["options"]: return dataKuItem else: continue # 如果找不到题目,模糊搜索一次 # if item["category"] == "挑战题": # for dataKuItem in self.dataKu: # if dataKuItem['category'] == item["category"] and fuzz.ratio(dataKuItem['content'], # item["content"]) > 70 and fuzz.ratio(dataKuItem['options'], item["options"]) > 80: # return dataKuItem # else: # continue return None
def find_excludes_item(self, item): logger.debug(f'Find excludes item: {item["content"]}...') for dataKuItem in self.dataKu: if dataKuItem['category'] == item["category"] and dataKuItem['content'] == item["content"] and \ dataKuItem[ 'options'] == item["options"] and item["excludes"] != "": return dataKuItem else: continue return None
def put(self, item): if "" == item["content"]: logger.debug(f'content is empty') return False logger.debug(f'PUT {item["content"]} {item["options"]} {item["answer"]} {item["excludes"]}...') # 单选题挑战题一致 if item["category"] == "单选题": item["category"] = "挑战题" try: out_file = open("./data1.json", "w", encoding='utf8') self.dataKu.append(item) json.dump(self.dataKu, out_file, indent=6, ensure_ascii=False) out_file.close() return True except Exception as ex: logger.info(ex) return False
def get(self, item, url=None): if not url: url = self.url if "" == item["content"]: logger.debug(f'content is empty') return None logger.debug(f'GET {item["content"]}...') try: res = requests.post(url=url, headers=self.headers, json=item) if 200 == res.status_code: logger.debug(f'GET item success') # logger.debug(res.text) # logger.debug(json.loads(res.text)) return json.loads(res.text) else: logger.debug(f'GET item failure') return None except: logger.debug('request faild') return None
def query_with_content(self, content): # logger.debug(f'POST {item["content"]} {item["options"]} {item["answer"]} {item["excludes"]}...') if "" == content: logger.debug(f'content is empty') return None logger.debug(f'query with {content}...') # 精确查找一次 answer = "" for dataKuItem in self.dataKu: if dataKuItem['content'] == content: if self.dataKu.count(dataKuItem) == 1: logger.info( f"快点点击!---{dataKuItem['answer']}---{dataKuItem['answer']}---{dataKuItem['answer']}---" ) return dataKuItem['answer'] else: return "" return answer
def query_with_content(self, content): # logger.debug(f'POST {item["content"]} {item["options"]} {item["answer"]} {item["excludes"]}...') if "" == content: logger.debug(f'content is empty') return None logger.debug(f'query with {content}...') # 精确查找一次 answer_count = 0 answer = "" for dataKuItem in self.dataKu: if dataKuItem['content'] == content: answer_count += 1 answer = dataKuItem['answer'] else: continue if answer_count == 1: return answer else: return ""
def post_precise(self, item): logger.debug(f'POST {item["content"]} {item["options"]} {item["answer"]} {item["excludes"]}...') if "" == item["content"]: logger.debug(f'content is empty') return None # 单选题挑战题一致 if item["category"] == "单选题": item["category"] == "挑战题" logger.debug(f'GET {item["content"]}...') # for dataKuItem in self.dataKu: # if dataKuItem['category'] == item["category"] and dataKuItem['content'] == item["content"] and dataKuItem['options'] == item["options"] and dataKuItem['answer'] == item["answer"]: # return dataKuItem # else: # continue if self.dataKu.count(item) == 0: return False else: return True
def put(self, item, url=None): if not url: url = self.url if "" == item["content"]: logger.debug(f'content is empty') return False logger.debug(f'PUT {item["content"]} {item["options"]} {item["answer"]} {item["excludes"]}...') try: res = requests.put(url=url, headers=self.headers, json=item) if 201 == res.status_code: logger.info('添加新记录') return True elif 200 == res.status_code: logger.info('更新记录') return True else: logger.debug("PUT do nothing") return False except: return False