diff --git a/工具v2/database_tools.py b/工具v2/database_tools.py index aeee8e57..8594c2bd 100644 --- a/工具v2/database_tools.py +++ b/工具v2/database_tools.py @@ -1416,7 +1416,7 @@ def select_grade_from_pro_dict(prodict,grades): def GenerateSingleLessonNote(id,notesdict,metadict,templatepath,outputfilepath,consecutivenumbering = False, answered = False): #20231215版讲义生成 notetitle = id + r" \ " + notesdict["notes"][id]["name"] - structure = notesdict["structures"][id[0].upper()] + structure = notesdict["structures"][id[0].upper()]["structure"] note_contents = notesdict["notes"][id] output = "" sections_list = [] diff --git a/工具v2/讲义生成.py b/工具v2/讲义生成.py index aaa4ae69..0f017e46 100644 --- a/工具v2/讲义生成.py +++ b/工具v2/讲义生成.py @@ -1,12 +1,19 @@ -notes_dict_path = "../备课组/26届/校本材料.json" # 讲义(题,基础知识,目标)号码所在json数据库路径 -lessonpattern = r"G202602((4[0-8])|(53))" # 正则表达式, 数据库中讲义的编号([A-Z][0-9]{4}[(01)|(02)][[0-9]{2}), 字母表示类型, 四位数字表示届别, 2位数字表示学期及其他, 2位数字表示序号 +lessonpattern = r"[GJE]202[456]0\d0[123]" # 正则表达式, 数据库中讲义的编号([A-Z][0-9]{4}[(01)|(02)][[0-9]{2}), 字母表示类型, 四位数字表示届别, 2位数字表示学期及其他, 2位数字表示序号 outputdir = "d:/temp/26届材料" # 输出文件夹, 不建议修改 answered = True # 设置是否编译答案 consecutivenumbering = False # 设置是否用连续编号, 试卷请设为True, 普通讲义请设为False +jsonpath = "../备课组" #有json文件的根目录, 文件名需为"校本材料.json" + from database_tools import * -notes_dict = load_dict(notes_dict_path) + +jsondicts = [] +for loc,dirs,files in os.walk(jsonpath): + if "校本材料.json" in files: + jsondicts.append(load_dict(os.path.join(loc,"校本材料.json"))) + + pro_dict = load_dict("../题库0.3/problems.json") obj_dict = load_dict("../题库0.3/LessonObj.json") basicknowledge_dict = load_dict("../题库0.3/BasicKnowledge.json") @@ -17,13 +24,18 @@ for t in (obj_dict,basicknowledge_dict,pro_dict): papernames = [] multitexdata = [] -for lessonid in notes_dict["notes"]: - if re.findall(lessonpattern,lessonid) != []: - filename = notes_dict["notes"][lessonid]["id"]+notes_dict["notes"][lessonid]["filename"]+".tex" - texdata = GenerateSingleLessonNote(id = lessonid,notesdict = notes_dict, metadict = dictionaries, templatepath = ".\模板文件\讲义模板.txt", outputfilepath = os.path.join(outputdir,filename),consecutivenumbering=consecutivenumbering,answered=answered) - papernames.append(notes_dict["notes"][lessonid]["id"]+" \\ "+notes_dict["notes"][lessonid]["name"]) - multitexdata.append(re.findall(r"\\begin{center}\n{\\bf\\large \\papername}\n\\end{center}([\s\S]*\\end\{enumerate\})",texdata)[0]) +for notes_dict in jsondicts: + for lessonid in notes_dict["notes"]: + if re.findall(lessonpattern,lessonid) != []: + filename = notes_dict["notes"][lessonid]["id"]+notes_dict["notes"][lessonid]["filename"]+".tex" + papertype = lessonid[0] + consecutivenumbering = notes_dict["structures"][papertype]["consecutivenumbering"] + texdata = GenerateSingleLessonNote(id = lessonid,notesdict = notes_dict, metadict = dictionaries, templatepath = ".\模板文件\讲义模板.txt", outputfilepath = os.path.join(outputdir,filename),consecutivenumbering=consecutivenumbering,answered=answered) + papernames.append(notes_dict["notes"][lessonid]["id"]+" \\ "+notes_dict["notes"][lessonid]["name"]) + multitexdata.append(re.findall(r"\\begin{center}\n{\\bf\\large \\papername}\n\\end{center}([\s\S]*\\end\{enumerate\})",texdata)[0]) + + merged = "" for i in range(len(papernames)): merged += "\n\n\\chapter{"+papernames[i]+"}\n\n\n"