@@ -97,14 +97,28 @@ class ScheduleGenerator:
|
|||||||
reg = r"\{(.|\r|\n)+\}"
|
reg = r"\{(.|\r|\n)+\}"
|
||||||
matched = re.search(reg, schedule_text)[0]
|
matched = re.search(reg, schedule_text)[0]
|
||||||
schedule_dict = json.loads(matched)
|
schedule_dict = json.loads(matched)
|
||||||
|
self._check_schedule_validity(schedule_dict)
|
||||||
return schedule_dict
|
return schedule_dict
|
||||||
except json.JSONDecodeError:
|
except json.JSONDecodeError:
|
||||||
logger.exception("解析日程失败: {}".format(schedule_text))
|
logger.exception("解析日程失败: {}".format(schedule_text))
|
||||||
return False
|
return False
|
||||||
|
except ValueError as e:
|
||||||
|
logger.exception(f"解析日程失败: {str(e)}")
|
||||||
|
return False
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.exception(f"解析日程发生错误:{str(e)}")
|
logger.exception(f"解析日程发生错误:{str(e)}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def _check_schedule_validity(self, schedule_dict: Dict[str, str]):
|
||||||
|
"""检查日程是否合法"""
|
||||||
|
if not schedule_dict:
|
||||||
|
return
|
||||||
|
for time_str in schedule_dict.keys():
|
||||||
|
try:
|
||||||
|
self._parse_time(time_str)
|
||||||
|
except ValueError:
|
||||||
|
raise ValueError("日程时间格式不正确") from None
|
||||||
|
|
||||||
def _parse_time(self, time_str: str) -> str:
|
def _parse_time(self, time_str: str) -> str:
|
||||||
"""解析时间字符串,转换为时间"""
|
"""解析时间字符串,转换为时间"""
|
||||||
return datetime.datetime.strptime(time_str, "%H:%M")
|
return datetime.datetime.strptime(time_str, "%H:%M")
|
||||||
|
|||||||
Reference in New Issue
Block a user