⌨️

[zenn]投稿した記事の一覧をファイルに出力してみる

2023/02/04に公開

昨年の12月からAtCoderの過去問チャレンジを続けているのですが、別のブログにこちらの記事へのリンクを載せた記事を書こうと思っているのですが、aticlesディレクトリの直下の記事が増えてくると目的の記事がどれなのかが分かりづらくなってきました。

そこでaticlesディレクトリの直下の記事の一覧をファイルに書き出すプログラムを書いてみました。

自分用ということで記事の一覧をタイトルでソートしたものをルートにartticle_list.mdという名称のマークダウンファイルに書き出しています。

自分の場合は記事のリストを並べ替えるだけですが、ちょっと改造すれば抽出する記事をフィルタリングすることもできるかもしれませんね。

import glob
import re
import os


def main():

    files = glob.glob("./articles/*.md")

    index = []
    for file in files:
        f = open(file, 'r', encoding='UTF-8')
        content = f.read()
        f.close()

        pattern = r'title: \"[.*?](.*?)\"'
        result = re.search(pattern, content)

        t = result.group(1) if result else ''
        i = os.path.splitext(os.path.basename(file))[0]

        index.append([t, i])

    index.sort()

    f = open('./article_list.md', 'w', encoding='UTF-8')
    for item in index:
        title = item[0]
        id = item[1]
        if title != '':
            line = "- [%s](https://zenn.dev/hyperdb/articles/%s)" % (title, id)
            f.write(line + "\n")
    f.close()


if __name__ == "__main__":
    main()

出力されたマークダウンはこんな感じになります。

- [ABC-042|A - 和風いろはちゃんイージー](https://zenn.dev/hyperdb/articles/b462a2dbdc2d1c)
- [ABC-042|B - 和風いろはちゃんイージー](https://zenn.dev/hyperdb/articles/13e6376de2f640)
- [ABC-043|A - キャンディーとN人の子供イージー](https://zenn.dev/hyperdb/articles/2863ed139fa6f0)
  • 2023.02.05 - 正規表現に引っ掛からないとエラーになっていたので修正しました

Discussion