TownBlogWikibaseのAPIによるデータインポートせっかくWikibaseの環境を構築しても中にデータが入っていなければ何の意味もありません。そこで、PHPのスクリプトを作成して、CSV形式の月待塔オープンデータをAPI経由でインポートすることにします。ボット用パスワードの作成APIを使用してWikibaseにアクセスする場合、通常のログインに使用するアカウントとパスワードではなく、アカウントに紐付いたボット名とボット用パスワードを使用します。そこでまず、特別ページの「利用者と権限」にある「ボット用パスワード」を開きます。ボット名を入力して[作成]ボタンをクリックします。編集関係の権限を付与して[作成]ボタンをクリックすると、作成されたボット用パスワードが表示されます。インポートプログラムの作成メインのプログラムは以下のとおりです。ついては後で解説します。日本語を正しく扱えるようにするためのものです。詳しくはこちらを参照して下さい。定義された以下の2つの関数を呼び出してWikibaseにログインします。APIの種類によっては、操作をする前にトークンを取得をする必要があります。関数で編集用トークンを取得しておきます。CSVファイルの1行がWikibaseにおける1つの項目となります。CSVファイルの1カラム目のIDは、Wikibaseの項目のラベルになります。トークンの取得時に作成したクッキーを削除しています。こちらにあるMITライセンスのサンプルコードを修正して利用します。ボット名とボット用パスワードを設定します。処理結果を表す文字列を返すように変更しました。トークン取得APIではHTTPのGETメソッドを使用し、ログインAPIではPOSTメソッドを使用しています。その補助関数を定義しています。同様ですが、取得するトークンはCSRFトークンになります。同様にAPIを呼び出し、結果を取得して返します。関数は、Wikibaseに登録する内容を指定するJSON形式のデータを作成し、APIを呼び出します。登録内容はラベルと文から成ります。ラベルは{"labels":{"ja":{"language":"ja","value":"ラベル"}}と指定します。関数とその補助関数を用いて作成します。型ごとのJSONフォーマットの仕様についてはこちらが参考になります。インポートを実行すると、以下のような項目が作成されます。項目には「説明」を設定していないため、特別ページの説明がないエンティティを表示するとインポートした項目を一覧表示することができます。