diff --git a/README.md b/README.md index e032667..ea638d8 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ This project is only in Chinese and i18n would be a super long shot. + 日期(由新到旧排序) 消息内容 ++ 9-24 利用 writemdict 模块实现了写入 mdx 的函数(mdict.py)。珍爱生命,拒绝造轮子! + + 9-23 阅读了 MDict txt 格式的初步制作方法。mdx 格式词典的生成要用到 MdxBuilder,这是仅使用于 Windows 下的 GUI 闭源软件,如果要用 MdxBuilder,我必须考虑: + 要不要把 Github Actions 容器换成 Windows 虚拟机? diff --git a/configure.py b/configure.py index 8f118b0..209b49f 100644 --- a/configure.py +++ b/configure.py @@ -1,11 +1,9 @@ # 此文件存储配置性质的全局变量。 +# 警告:不要注释下述任何变量。本项目其他部分没有针对它们设置默认值。 # 本项目使用 GitHub Rest API 获取最新数据,因此数据源需为 GitHub 仓库。repository 变量指定所使用的 GitHub 仓库,格式为“所有者/仓库名”。 repository = "EhTagTranslation/Database" -# directory 变量指定 markdown 文件所在的目录,项目将读取该目录所有 markdown 文件 -directory = "database" - # output_name 变量指定输出词典的文件名前缀。最终输出的词典将以“前缀_后缀”的格式命名,其中前缀在这里指定,而后缀将为词典的格式 output_name = "EhTagTranslation" diff --git a/fetch.py b/fetch.py index 7c29051..2d963c7 100644 --- a/fetch.py +++ b/fetch.py @@ -22,7 +22,7 @@ def getDataUrl(repository, noimage): return i["browser_download_url"] # 此函数为 fetch.py 的主体,从数据源实际地址解析 JSON 格式的数据并返回 Python 字典 -def getJsonData(repository, noimage): +def getDictionaryData(repository, noimage): # 从 URL 获取 JSON 格式的字典 url = getDataUrl(repository, noimage) stringresult = requests.get(url).text @@ -32,7 +32,8 @@ def getJsonData(repository, noimage): for category in jsonresult["data"]: for enname in category["data"].keys(): result[enname] = category["data"][enname] - # 当 female 与 male 标签的词条同时存在时,取 female 标签的词条。为了确保这一点,我们在这里牺牲一些效率把这些相同的词条再一次换为 female 的 + # 当 female 与 male 标签的词条同时存在时,取 female 标签的词条 + # 为了确保这一点,我们在这里牺牲一些效率把这些相同的词条再一次换为 female 的 # 接下来的四行代码虽然能实现业务,但是很烂,求大佬提供更好的实现方式 for category in jsonresult["data"]: if category["namespace"] == "female": diff --git a/main.py b/main.py index fe25912..2690814 100644 --- a/main.py +++ b/main.py @@ -2,4 +2,5 @@ version = 0 -from . import * \ No newline at end of file +import configure +import fetch \ No newline at end of file diff --git a/mdict.py b/mdict.py new file mode 100644 index 0000000..a891dd3 --- /dev/null +++ b/mdict.py @@ -0,0 +1,29 @@ +# 此文件调用 writemdict 库产生 MDict 格式的文件 +# writemdict 库是 MdxBuilder 的一个开源实现,并不包含 mdx 的全部技术细节,也 +# 不能生成新版 mdx 词典,不过这不重要。 + +from lib.writemdict.writemdict import MDictWriter + +# 我们的 mdict 词典将采用的词条格式为:英文名
中文名
描述 +# 这些词条将以 Python 字典的格式传递给 writemdict 库 +# 此函数的 dictionary 由 fetch.py 的函数生成 +def generateSourceDictionary(dictionary, nodescription): + result = {} + if (nodescription): + for entry in dictionary.keys(): + result[entry] = dictionary[entry]["name"] + else: + for entry in dictionary.keys(): + if (dictionary[entry]["links"]==""): + result[entry] = dictionary[entry]["name"] + "
" + dictionary[entry]["intro"] + else: + result[entry] = dictionary[entry]["name"] + "
" + dictionary[entry]["intro"] + "
" + dictionary[entry]["links"] + return result + +# 此函数调用 writemdict 库并向传来的文件对象写入数据,其中 dictionary 参数由 +# fetch.py 的函数生成,file 为被写入的文件对象,必须拥有写 +# 入权限且必须以二进制格式打开 +def writeMdxFile(title, description, dictionary, nodescription, outfile): + source_dictionary = generateSourceDictionary(dictionary, nodescription) + writer = MDictWriter(source_dictionary, title=title, description=description) + writer.write(outfile) \ No newline at end of file