pukiwikiの記事を流し込む の履歴(No.1)
更新本格的に移行するかどうかは分からないけど†
このサイトは pukiwiki を使って作られていて、 どうやら全部で 500 ページくらいあるみたい(え?!
これをデータとして流し込んでみるとブログっぽい雰囲気を醸し出せそう。
- 個々のページが pukiwiki 文法なのか markdown 文法なのかを表すフラグを用意する
- pukiwiki 文法の場合、表示の際に pukiwiki → markdown → html の変換を行う
sqlite では enum は使えないらしいので該当項目は Int で我慢する。
prisma/schema.prisma
model Article { id Int @id @default(autoincrement()) author User @relation(fields: [authorId], references: [id]) authorId String @map("author_id") title String body String newRevisionId Int? @unique @map("new_revision_id") oldRevision Article? @relation("ArticleRevision", fields: [newRevisionId], references: [id]) newRevision Article? @relation("ArticleRevision") createdAt DateTime @default(now()) @map("created_at") deletedAt DateTime? @map("deleted_at") attachments Attachment[] + syntax Int @default(0) // 0:MARKDOWN, 1:PUKIWIKI @@index([deletedAt, title, createdAt]) @@index([newRevisionId, deletedAt, title]) @@index([newRevisionId, deletedAt, createdAt]) }
LANG: console $ pnpm prisma migrate dev --name "add syntax column to Article"
データの取り込み†
pukiwiki/wiki に E38398E383ABE38397.txt みたいな訳の分からない名前のファイルがずら~っとあって、 これらが記事の本文
ファイル名は記事タイトルを英文字も全部含めて encodeURIComponent 的な変換をして % を取り除いたもの
日付はファイルの最終編集日時から取れる
このほかに backup に E38182E38184E38195E381A4.gz みたいなファイルがたくさんあって、ここに編集履歴が入っている。
>>>>>>>>>> 1100902204
のように10個の ">" に続けてスペース、10桁の数値が続く行がセパレータになっていて、 間に昔の記事が挟まる。
https://www.yoheim.net/blog.php?q=20141002
によれば zlib を使うと .gz ファイルを node だけで解凍できる。
数値は unix timestamp なので、1000 を掛けると javascript で Date にできる
https://qiita.com/shirokurotaitsu/items/5efd855900ec6135bbab
これだけの情報があれば取り込みは簡単そう。
Counter: 712 (from 2010/06/03),
today: 3,
yesterday: 2