pukiwikiの記事を流し込む のバックアップ差分(No.1)

更新


  • 追加された行はこの色です。
  • 削除された行はこの色です。
[[プログラミング/svelte]]

* 本格的に移行するかどうかは分からないけど [#ma28df7f]

このサイトは 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"

* データの取り込み [#wf9e09d4]

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: 335 (from 2010/06/03), today: 2, yesterday: 1