Nim 递归搜索目录,生成 Markdon 链接和 sitemap
-
函数一,生成 Markdown 链接列表
在指定路径下递归搜索 .md 文件,读取文件,以文件内容的第一行文字作为标题,生成 Markdown 格式链接列表,然后如下打印出来:
-
函数二,生成 sitemap.xml
在指定路径下递归搜索 .md 文件,然后生成如下格式的 sitemap.xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://tuenhai.com/relative-path-1/file-name.html</loc>
<lastmod>2024-09-01</lastmod>
<changefreq>monthly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>https://tuenhai.com/relative-path-2/file-name.html</loc>
<lastmod>2024-09-01</lastmod>
<changefreq>monthly</changefreq>
<priority>1</priority>
</url>
</urlset>
然后把 sitemap.xml 的内容打印出来
Nim 代码
# 海云青飞 https://www.tuenhai.com
# 2024-09-02
import std/[os, strutils, times]
proc generateMarkdownLinkList(path: string) =
for file in walkDirRec(path):
if file.endsWith(".md"):
let
relativePath = file.relativePath(path)
content = readFile(file)
title = content.splitLines()[0].strip()
echo "- [", title, "](", relativePath, ")"
proc generateSitemap(path: string) =
let currentDate = now().format("yyyy-MM-dd")
echo """<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">"""
for file in walkDirRec(path):
if file.endsWith(".md"):
let
relativePath = file.relativePath(path)
htmlPath = relativePath.changeFileExt("html")
echo """ <url>
<loc>https://tuenhai.com/""", htmlPath, """</loc>
<lastmod>""", currentDate, """</lastmod>
<changefreq>monthly</changefreq>
<priority>1</priority>
</url>"""
echo "</urlset>"
# 使用示例
let path = r"C:\Users\tuenhai.com\src"
echo "Markdown Link List:"
generateMarkdownLinkList(path)
echo "\nSitemap XML:"
generateSitemap(path)
2024-09-02
独立思考最难得,赞赏支持是美德!(微信扫描下图)