Open6

WikiBlame を近代化したい

モチベ

WikiBlame は古典的なPHP性のWebアプリだが、これはリクエスト時の待ち時間が長くてマイクロインタラクションがイマイチ。しかもリロードなどの遷移時にも都度都度リクエストが走るので遅い。

https://wikipedia.ramselehof.de/wikiblame.php

https://ja.wikipedia.org/wiki/Wikipedia:ツール/WikiBlame

これをJSベースのSPAに改修したい。

なるべくWikipediaサーバーの負荷も軽くしたい。

二分探索

アルゴリズムの諸要素をREST APIのアクションに対応付けてみる

リビジョン総数

Get page history counts

https://www.mediawiki.org/wiki/API:REST_API/Reference#Get_page_history_counts

cf.

https://stackoverflow.com/a/70517281/3576692

中央値計算

挙動がカーソルベースなので、件数では取れないようだ?

古い Action API なら取れる

https://www.mediawiki.org/wiki/API:Revisions

rvlimit

ついでに本文もついてくる(やっぱり負荷が心配…)

content

追加・削除判定

https://www.mediawiki.org/wiki/API:REST_API/Reference#Compare_revisions
  • diff.type
    • 1 = 追加
    • 2 = 削除
    • 3 = 段落内変更。 diff.highlightRanges 参照
  • diff.highlightRanges
    • type
      • 0 = 追加
      • 1 = 削除

履歴取得

https://www.mediawiki.org/wiki/API:REST_API/Reference#Response_schema

20件ずつしか取れないので、何度もリクエストする必要がある。まずはこれで revision の配列を作る必要がある。

https://www.mediawiki.org/wiki/API:REST_API/Reference#Revision_object

revision object は要約しか持ってない。

https://www.mediawiki.org/wiki/API:REST_API/Reference#Get_HTML

ページのソースはリビジョンで取れないようだ

ログインするとコメントできます