pkwkdownloader.php

Top > Plugin > pkwkdownloader.php
First Edition. 01/31/2007
Last Modified. 02/02/2007

Pukiwiki のソース(Wiki または HTML)を http 経由でダウンロード

SummaryPukiwiki のソース(WikiまたはHTML)を http 経由でダウンロード
Developersonots
First Edition01/31/2007
LicenseGPL
Table of Contents

概要

Pukiwiki のソース(Wiki または HTML)を http 経由でダウンロードできます。

正確には Pukiwiki のプラグインではありません。PukiWiki に特化した php で記述されたダウンローダです。 なんらかの理由で管理者の方と連絡が取れなくなった場合などにバックアップを取るのに使用できると思います。

Related

技術的詳細

  • Pukiwiki の index.php?cmd=filelist からページ一覧を取得します。
    • Pukiwiki Plus! の場合管理者パスワードが必要なので、指定してください。結果、現状のところ、自分が管理者ではない Plus! サイトの一覧ダウンロードは困難です。
    • 将来的には cmd=list から取得する方法を用意しようと思います。しかしその場合全てのページを取得することはできないので悩ましい所です。
  • Wiki ソースは index.php?cmd=source&page=ページ から取得します。
    • source プラグインを禁止しているサイトもあるでしょう。そのようなサイトのために将来的には cmd=edit からも取得できるようにする予定です。ただし編集権限が必要になるので悩ましい所です。
  • 添付ファイル一覧は index.php?cmd=attach から一覧を取得します。

正しい XHTML であることと、これらのプラグインの出力が変わらないことを期待しています。

使い方

PHP5, PEAR の HTTP/Request.php*1, XML/XML_HTMLSax.php*2 モジュールが使用できることを前提としています。XAMPP の場合最初からインストールされてありましたので、推奨してみます。

ダウンロードモード(メイン)

コマンドラインの PHP スクリプトとして pkwkdownloader.php を起動します。

% php pkwkdownloader.php [option] pkwkurl

必須

  • pkwkurl
    • 対象 PukiWiki の index.php までのアドレスを入力します。

オプション

  • -k [wiki|html|attach]
  • --kind [wiki|html|attach]
    • ダウンロードするソース種類の指定です。wiki を指定すると wiki ソース、html を指定すると html ソース、attach を指定すると添付ファイルのダウンロードをします。デフォルトは wiki ソースです。
  • -c
  • --continue
    • ダウンロードを再開する時に使用します。ローカルにすでにファイルがある場合ダウンロードせずにスキップします。
  • -un [username]
  • --username [username]
    • Basic認証用ユーザ名です。ダウンロードするページが読み取り制限されている場合Basic認証する必要があります。
  • -up [userpass]
  • --userpass [userpass]
    • -un に対するパスワードです。
  • -g [正規表現]
  • --filter [正規表現]
    • ダウンロードするページを正規表現でマッチしたものだけに絞込みます。
  • -v [正規表現]
  • --except [正規表現]
    • ダウンロードするページを正規表現で除外指定します。
  • -d [dir]
  • --directory-prefix [dir]
    • ダウンロード保存先のディレクトリです。デフォルトは 'down/' です。
  • -w [waittime]
  • --waittime [waititme]
    • ダウンロード待ち時間をマイクロ秒で指定します。デフォルトで2秒になっています。サーバの負荷を考慮してそこそこ待ってあげるようにしましょう。
  • -p [password]
  • --password [password]
    • Plus! 管理者パスワードです。対象が Pukiwiki Plus! i18n の場合、cmd=filelist に対してパスワードが必要です。
  • -e [encode rule]
  • --encode [encode rule]
    • 実験 ページ名→ファイル名変換の際に使用するエンコードルールを php で記述します。$str をページ名、返り値として使用できます。

php pkwkdownloader.php -p 管理者パスワード -un 参照制限ページ用ユーザ名 -up 参照制限ページ用パスワード -t -k html -d html/ http://ぷきウィキURL/index.php
php pkwkdownloader.php -p 管理者パスワード -un 参照制限ページ用ユーザ名 -up 参照制限ページ用パスワード -t -k wiki -d wiki/ http://ぷきウィキURL/index.php
php pkwkdownloader.php -p 管理者パスワード -un 参照制限ページ用ユーザ名 -up 参照制限ページ用パスワード -t -k attach -d attach/ http://ぷきウィキURL/index.php

HTMLファイルリンク修正モード

ダウンロードした html ファイルのリンクを、それらを相互リンクするように修正します。

% php pkwkdownloader.php --format [option] pkwkurl

楽をするため ../dump2html.inc.php で定義した関数を再利用しています。pkwklinkmodifier.inc.php を pkwkdownloader.php と同じディレクトリにダウンロードしておいてください。

必須

  • -m
  • --format
    • これで HTML ファイルリンク修正モードになります。
  • pkwkurl
    • 対象 PukiWiki の index.php までのアドレスを入力します。リンク置換の際の情報として使用されます。

オプション

  • -d [dir]
  • --directory-prefix [dir]
    • ダウンロード保存先のディレクトリを同様に指定します.
  • -s [relative|abolute]
  • --urlstyle [relative|abolute]
    • リンク修正の際に相対URLを使用するか絶対URLを使用するか指定します。デフォルトは relative (相対URL)です。

php pkwkdownloader.php --format -d html/ -s relative http://ぷきウィキURL/index.php

ダウンロード

以下の2つのファイルを右クリックから保存してください。pkwklinkmodifier.inc.php は dump2html.inc.php でも用いているHTML間リンク修正用ライブラリです。

What's new viewcvs

FileDateWhat's new
rev.48102/22/2007ダウンロードした HTML ファイルのリンク修正機能に対応。これをもって ver.0.99 といったところ
rev.43902/16/2007読み取り制限されているページに対応。ページの絞込み機能。まだベータ版
rev.38902/02/2007attach に対応。まだベータ版
rev.38602/01/2007コマンドラインオプションに対応。まだベータ版
rev.38301/31/2007初版。3時間クッキング。まだベータ版

Compatibility Check

Please join us to check compatibilities.

Compatible

Selection Vote
1.3.7 3
1.4.3 0
1.4.4 0
1.4.5_1 0
1.4.6 0
1.4.7 1
1.4.5plus-eucjp 0
1.4.6plus-u1-eucjp 0
1.4.6plus-u2-eucjp 0
1.4.5plus-u2-i18n 0
1.4.6plus-u1-i18n 0
1.4.6plus-u2-i18n 0
1.4.7plus-i18n 1
1.4.7plus-u2-i18n 3

Incompatible

Selection Vote
1.3.7 0
1.4.3 0
1.4.4 0
1.4.5_1 0
1.4.6 0
1.4.7 0
1.4.5plus-eucjp 0
1.4.6plus-u1-eucjp 0
1.4.6plus-u2-eucjp 0
1.4.5plus-u2-i18n 0
1.4.6plus-u1-i18n 0
1.4.6plus-u2-i18n 0
1.4.7plus-i18n 0
1.4.7plus-u2-i18n 0

ToDo

  • cmd=list からのファイル一覧取得 (plus の cmd=filelist は管理者パスワード必須)
    • もしくは別の URL でもいいし、ページ一覧ファイルをローカルに作成、指定してもいい。とにかくページ一覧が得られればいい。
  • cmd=edit から wiki ソース取得
  • こちらの場合 css, javascript へのパスは修正しないほうがいいのだろうか
    • dump2html のものを再利用しているので修正してしまっている
    • オプションを作ってもいいが、オプション名を考えるのが面倒くさい。
  • ROOT_URI の replace
    • --replace-rooturi [search] [replace]
    • search には必ず絶対URIを入れてもらう→相対パスでも TOPURL . search で絶対パスになるはず
    • replace にはカレントディレクトリからの相対パス、もしくは絶対パスをいれてもらう
    • urlstyle=relative 等は href 用のオプションとなる


*1 http_post_data でもいいのですが PECL 必須とどっちがいいでしょうね?
*2 PHP組み込みの xml_parse だと <pre>&lt;hoge&gt;</pre> のようなものを解析するときに勝手に htmlspecialchars の逆操作をしてから解析する (<pre><hoge></pre>を解析する) バグ?があってだめでした。