daemonfreaks.com

mtimeをメタデータから取る

posted by jun-g at Sun, 06 Feb 2022 23:40 JST

PyBlosxomは記事の作成日時を各エントリーファイルの修正日時(mtime)から取得します。投稿後に過去記事を修正した場合に作成日付が変わってしまうのが気に入らなかったので、entrycacheというプラグインを使用して初回に記事が読み込まれた際のmtimeがキャッシュされるようにしていましたが、キャッシュファイルがサーバー側で生成・更新され続けるため、キャッシュファイルを紛失してしまうと作成日時が再現できなくなる脆弱な仕組みが気になっていたので、 entrymtime というプラグインを自作し、各エントリーファイルのmetadataに作成日時を書いておけるようにしました。

移行の為にentrycacheのキャッシュファイルから作成日時を抽出して各エントリーファイルのmetadataに追記。

import os, time

with open('.entrycache') as c:
    data = c.read()

caches = eval(data)

for item in caches.items():
    fname = os.path.basename(item[0])
    if not os.path.exists(fname):
        continue
    t = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(item[1]))
    with open(fname) as r:
        lines = r.readlines()
    lines.insert(1, "#entrymtime %s\n" % t)
    with open(os.path.join("new", fname), 'w') as w:
        w.writelines(lines)

ついでに拡張子がtxtのエントリーファイルの拡張子を blx に変更しました。

さらについでに、エントリーファイルもgithubで管理するようにしました。ついでというよりこれが本当のやりたかったこと。

うーん、2022年の記事とは思えないですね…w

PyBlosxomのプラグイン

posted by jun-g at Mon, 23 Sep 2013 22:28 JST

バージョン1.5から標準でプラグインが同梱されるようになったので、同梱されてるものはなるべくそれを使うように設定を変更しました。

ついでに自作のプラグインはコードを整理してちょっとづつbitbucketに登録していってます。

daemonfreaks / pyblosxom-plugins

自分のブログをちょこちょこカスタマイズするのは箱庭的な趣があって、何年経っても楽しいものですね。