Wikipediaの「日本の鉄道車両」のページから
ランダムに鉄道車両の情報を取得して、
画像などを表示するというブログパーツを作りました。

経緯

 Javascriptで何かWebサービスとか作りたいけど、
これと言って作りたいものが思いつかない今日この頃(^_^;)
そんな中、先日どうにか思いついたのが鉄道ネタ。
まぁ、割と嫌いじゃないジャンルではあります。

 鉄道な作品といえば、
すでに「どこかの駅」というブログパーツを作ってたりしてます。
Wikipediaの「日本の鉄道駅一覧」のページから
ランダムにどこかの駅の情報を取得して、
画像などを表示するという感じです。
で、思いついたのがこれの鉄道車両版というわけです。

技術的なことについて

 鉄道車両について調べていたら、
Wikipediaに日本の鉄道車両という、お誂え向きのページを見つけました。
以前に書いたりしてますが、
MediaWikiのAPIを使えばWikipediaから情報を得ることができます。

 なので、さっそく同様にやってみたら、
Categoryなページは通常のページのようにはうまく行かないことが分かりました。
サブカテゴリ、テンプレート、関連ページなどが含まれるようなのですが、
APIでHTMLなテキストを取得してみると、それらの情報が入ってない・・・う~む。
色々調べたりして試行錯誤した結果、APIのパラメータを変える必要があるようです。
基本的には、action=parseaction=queryで行けるんですけど、
パラメータがいっぱいあるので、目的のものを見つけるのに苦労しました(^_^;)

 ときに、鉄道車両なページには、
鉄道車両」「鉄道車両貨車」「機関車情報表」という3種類のテンプレートがあり、
そこに車両名や画像などの項目があります。

 APIについて色々調べていて気づいたのですが、Wikitext形式で取得すれば、
テンプレート情報をより直接的に取得できることが分かりました、
Wikitext形式というのはこんな感じになっており、Markdownな記述に似ています。

 Wikitextから必要なテンプレート情報を抽出したり、
Wikitext固有の記述を除外や展開したりするのにちょっと手間取りましたが、
DOMをスクレイピングするよりも結果的にコードがスッキリした感じになりました。

 テストで試していたら、
日本の車両メーカーが輸出したものとか結構出てきて、
意外な発見があったりしました。

注意点

 「日本の鉄道車両」を起点にランダムにページを取得した結果、
上記で書いた3つのテンプレートのいずれも無い場合は、
情報を取得できないので最初からリトライするようにしてあります。
なお、一つのページに該当テンプレートが複数あった場合は一番目のを採用しています。
また、中古車両が地方の鉄道会社などで使われていたりする場合は、
元になった車両のページへの転送指示があったりするので、
その場合はそれに従って該ページを参照するようにしてあります。

使い方

 以下の画面で「踏切」マークをクリックします。

 鉄道車両の情報を取得するまでの間、
列車が右から左へ移動する様子が流れます。

 そして取得した画像などの情報が表示されます。
車両名の所を押下するとWikipediaのページを開きます。
「戻る」を押下すると始めの画面に戻ります。
なお、画像エリアの所を押下すると、戻ることなく即再実行します。

ブログパーツの設置方法

 本サイトが利用しているXREAの無料版では、
1日あたりの転送量制限というのがあります。
そのため、直接的なサービスは行いません。
設置ファイルの配布ということで代替させていただきます。
ご了承ください。

 レンタルサーバーとかでは問題ないと思いますが、
ブログなサービスではHTMLをアップロードできない場合があるようです。
その場合は設置することができませんのでご了承ください。

 ファイルは以下よりダウンロードできます。
設置方法については同梱の説明を参照してください。
なお、同梱のHTMLファイルをダブルクリックすると、
すぐに動作を確認することができます。

追記

★2021年1月30日追記
うまく行かない可能性があったので改善しました。
バージョンは 1.0.2 となります。

★2021年1月31日追記
間違ったテンプレートを参照してしまう問題を修正しました。
バージョンは 1.0.3 となります。

★2021年3月21日追記
一様乱数を使ってランダムに選んでいるのですが、
カテゴリ上位にあるページの出現頻度が高めになってしまうようなので(^_^;)
配下のカテゴリ数やページ数に応じた調整を行ってみました。
従来よりもランダムなバラけ具合が改善しているかと思います。
バージョンは 1.1.1 となります。

コメントする

メールアドレスが公開されることはありません。が付いている欄は必須項目です。