当前这个博客是使用Markdown编写,以Hugo来生成静态的网站。Markdown文件多了之后,管理起来就很麻烦,需要脚本化的工具来帮忙。因为Hugo是根据Markdown文件中的frontmatter来对配置生成的网页,所以这个脚本化的工具必须支持frontmatter。选来选去,还是编写python脚本来管理比较便捷。
首先用pip安装python-frontmatter,顺便把其他要用到的包也装上(注意,我使用的Python3,所以用的是pip3):
pip3 install python-frontmatter
pip3 install toml
pip3 install dateutils
Hugo支持两种格式的frontmatter:YAML和TOML。YAML是比较常见的,但是TOML也很流行(据说TOML比YAML来得简洁高效),为了让python-frontmatter支持TOML,需要同时安装toml包。
下面是一个脚本例子,遍历当前目录下的markdown文件(以md结尾),并提取出markdown文件中的frontmatter,打印出其中的日期:
#!/usr/bin/env python3
import glob
import shutil
import dateutil.parser
import frontmatter
def main():
files = glob.glob('*.md')
if files:
files.remove('_index.md')
for f in files:
date = getDate(f).isoformat()
print(date)
def getDate(md_file):
with open(md_file) as f:
md = frontmatter.load(f)
dt = md.metadata['date']
if type(dt) == str:
# toml 格式下date被识别为字符串
return dateutil.parser.parse(dt).date()
else:
# yaml 格式下date被识别为datetime,直接返回
return dt.date()
if __name__ == '__main__':
main()
把上面的脚本保持成getdate.py
,然后执行python3 getdate.py
,在我的电脑上显示下面的结果:
2016-12-28
2017-01-15
2017-04-15
2017-04-20
2017-04-23
...
(完)