Wikipedia:Bot作業依頼/統計ページの更新用botの作成依頼

統計ページの更新用botの作成依頼[編集]

Wikipedia:全言語版の統計の更新を行うbotを作成して頂けないでしょうか?(このようなbotはまだ開発されていないようです) 大まかな流れは以下のようになります。

  1. (更新時刻の数時間前)特別:Sitematrixのソースより、現在あるウィキペディアの言語コードを全て取得し、更新用データに登録されているものと比較、新規開設・閉鎖の言語版があれば修正する。
    更新用データ: 表の中で用いるリンクなどのテキスト部分は、別途ページを作成して、そこに保存しておく仕様が望ましいです。
  2. 全言語版の、特別:Statisticsのソースをダウンロード。
  3. データを処理し、wikiのソースに整形、投稿する。

動作させるのは、毎月1日を含む月2~4回程度です。詳細については、私の利用者ページ(サブページ)か、あるいは会話ページ・ウィキメールなどで連絡したいと思います。--氷鷺 2008年6月4日 (水) 03:17 (UTC)[返信]

検討します。--秋雪 2008年8月31日 (日) 22:33 (UTC)[返信]

ありがとうございます。ただ、先月終わりに、財団内の委員会専用ウィキ(部外者は閲覧不可)が「ウィキペディア」という形で開設されたこともあり、上記の(1)については手動更新で、botに任せるのは(2),(3)にした方が良いように思えてきました。あと、あまり大したことはまだ書いていないのですが、ノートに仕様などを書いておきました。もしかしたら何か参考になるかもしれません。--氷鷺 2008年9月4日 (木) 10:53 (UTC)[返信]

お待たせしております。

助言をいただきまた仕様を記述していただき、ありがとうございます。

昨年秋から、記述いただいた仕様を参照して、プログラム開発に着手し、すこしずつ開発作業を続けています。 作業を始めてから期間が経っていますが、開発作業の上でとくに深刻な困難に直面してきているわけではありません。 プログラミング言語としては、Rubyを採用しています。

仕様をあるていど実装し、部分的には動くようになっていますが、ひととおり実装が終わるまではいますこしお待ちいただきたく思います。 --秋雪 2009年1月19日 (月) 12:10 (UTC)[返信]

作業中... 長くお待たせしてしまいましたが、Rubyのボットスクリプトの中心となるロジックの実装が、終了しました。 このスクリプトでWikipedia:全言語版の統計の更新を行ってみました[1]。 フィードバックなどありましたら、コメントをお願いします。 要約欄の記述など、調整は可能です (おそらく「ボットによる編集」マークの有無も調整できると思います) 。

現在、リリース前の事前作業を行っています。 近日中に、ボットスクリプトをリリースする予定です。

参考までにおうかがいしたいのですが (よろしければでかまいませんので、ご回答いただければと思います) 、ボットスクリプトの運用をなさる方 (氷鷺さんでしょうか?) がお使いのシステム (Mac OS X 、Windows など) は何でしょうか? また、もしそのシステムにRubyの処理系が導入済みでしたら、処理系の種類 (Mac OS X 付属のRuby、JRubyCygwin版Rubyなど) とバージョンを教えていただけますでしょうか? --秋雪 2009年8月15日 (土) 05:35 (UTC)[返信]

すみません、botフラグ付きで更新されていたのでテスト更新に気がつきませんでした。数カ月前、Pythonの入門書を片手に、データ取得から整形までを自動化してみたのですが、その前後のbot化や、データのメンテナンスが面倒なのでなかば諦めており、とてもありがたく思います。ただ、15日の動作テストですが、その時点で271言語となっていましたので、先ほどこちらで統計を更新しておきました。では、とりあえずいくつか質問や修正点など。
  • 取得対象はどのようにされているのでしょうか? (固定で手動更新か、Sitematrixからの自動取得か) もし後者のみであれば、前者との併用が可能なよう、修正をお願いします。nomcomのような例もありますし、8/13に開設された4言語では、開設後4日間にわたって言語間リンク無効、SitematrixでもWP扱いされないといった、これまでにない現象がおき、やはりSitematrixからの自動取得のみに頼るのは危ないように思われますので…。
  • 順記事数が同じ場合は総項目数、それも同じ場合は編集数でソートをお願いします。
  • データのダウンロードに失敗した場合の動作はどのようにされているのでしょうか? (稀に1言語から数言語、データが取得できないことがあります。大規模なサーバダウンもたまにありますし)
  • 一部の数値が -1 となることがありますので、その際は 0 とみなして総計を算出し注記を入れるよう、お願いします。(-1 以外のマイナス値は見たことがありませんが、同様の処理で良いかと思います)
  • 一部の数値が空文字列となることがありますが、その際は - としてください。
実際の運用者については、他の方(複数)に頼みたいと考えています。私はbotの運用経験も、Rubyの処理系もありませんし、そろそろ一人でやるのはやめた方が良いと思いますので。--氷鷺 2009年8月17日 (月) 13:15 (UTC)[返信]

修正点をご指摘いただきまして、ありがとうございます。

15日の更新につきましては、うまくいっていない部分があり、お手数をおかけしてしまい申し訳ありませんでした。 この依頼がクローズするまでは、もしまた私がテストの一環として「Wikipedia:全言語版の統計」を更新することがありましたら、可能であればbotフラグ無しで更新するようにいたします。

少し前にテストしていて、どうも最近に3言語もしくは4言語新規開設されたらしいと気づいたのですが、スクリプトのログ出力を見ると不審な点があり、頭をひねっていましたが、おっしゃるような事情があったのですね。

ノートの仕様は、以前に拝読していましたが、スクリプトを仕様にしたがって実装する事と、意図したとおりに動作するか確かめることに、頭が集中していて、15日の更新の際は、事前に m:Wikimedia News のページをチェックしておくということを、失念してしまっていました。

ご質問と修正点につきまして、お答えいたします。

  • 取得対象につきましては、Sitematrixから取得しています。その後続けて、更新用ウィキテキストを作成するまでを、自動的に行うよう、スクリプトを実装しています。なおこのスクリプトは、nomcomのようなウィキの情報については処理対象外とするようにしています。作成された更新用ウィキテキストをテキストエディタで開き自分の目で確認して、必要に応じて手作業で編集し変更を加えることは、可能です。加えて、更新用ウィキテキストをもとにして、「Wikipedia:全言語版の統計」のページを更新するスクリプトも、別スクリプトとして、実装しています。さらに、この2つのスクリプトを連続して呼び出して実行するスクリプトも実装しています。このスクリプトは、実行中にスクリプトで異常が検出されれば中断しますが、異常が検出されなければ、Sitematrixからの情報の取得と更新用ウィキテキストの作成から「Wikipedia:全言語版の統計」のページの更新までを連続して実行します。ですので、併用が可能かといいいますと、併用は可能ということになるでしょうか。
  • 現在のスクリプトの実装では、純記事数のみをソートの基準にしていますが、修正点として言及いただきましたとおり、純記事数が同じ場合は総項目数、それも同じ場合は編集数でソートするよう、ソート方法を修正することを、試みようと思います。
  • データのダウンロードに失敗した場合の動作につきましては、1言語でもデータのダウンロードに失敗した場合は、異常が発生したものとして扱い、スクリプト実行を中断するようスクリプトのロジックを実装しています。ただし、ダウンロードの失敗時にはダウンロードの再試行をするよう実装しています。そのこともあり、また、テストするようになってから期間が経っていないこともあり、現在までのテストでは、データのダウンロードが失敗したことはなく、ダウンロード失敗で実行を中断するロジックの検証はできていません。
  • 一部の数値が -1 となることは、想定していませんでした。統計情報の取得で数値が -1 あるいは -1 でなくともマイナス値だった場合には、総計の算出では0として扱い注記を入れるよう、スクリプトの実装を試みます。
  • 一部の数値が空文字列となることは、想定していませんでした。統計情報の取得で数値が空文字列だった場合には、 - として表示するよう、スクリプトの実装を試みます。

実際の運用者の件につきましては、了解いたしました。 私が開発しているボットスクリプトにつきましては、これまでRubyになじみのない方や、ご自分のPCにRubyをまだ導入なさっていない方、ボット運用経験のない方も、読者として想定して、ボット運用方法を含めたドキュメントを、作成しています。

ご参考のため、まだ作成・開発中ではありますが、手元のドキュメント等を公開いたします (/作成中のファイル群) 。

ご指摘いただいた修正点に沿って、スクリプトを修正し、添付ドキュメントの作成作業が終わりましたら、ボットスクリプトをリリースいたします。 まずは、修正点の仕様を正しく理解するよう、努めます (私は、仕様を読むことを苦手としていまして、理解に至るまで時間を要します) 。 修正点の中には、修正の難易度が私にとっては高いものも含まれているかもしれません。 その場合は、難易度に応じて修正にお時間をいただきたく存じます。

Pythonは、私は不勉強で習得していないプログラミング言語ですが、優れたプログラミング言語と聞いていますので、本依頼に限らず、習得すると有用と存じます。 --秋雪 2009年8月19日 (水) 11:59 (UTC)[返信]

ここしばらく、Bot作業依頼のことに時間をとれないでいたのですが、ご指摘いただいた修正点に沿って、スクリプトを修正し、ボットスクリプトをSourceForge.JPwikimedia-toolsプロジェクトで公開し、ダウンロードできるようにいたしました。

このボットスクリプトを公開するにあたり、ソフトウェアライセンスとしては、GNU General Public License, Version 2 (GPLv2) を採用しました。 GPLv2 を採用した理由は、このボットスクリプトの一部で、RWikiBot (1.0.10 および 2.0.0) のコードを、必要に応じて改変して使わせていただいていて、RWikiBotのライセンスがGPLv2となっているためです。

上記のwikimedia-toolsプロジェクトページの「ダウンロード」をクリックしていただくと、ボットスクリプトパッケージをダウンロードすることができます。 ダウンロードパッケージとして、tar.gz形式とZIP形式の2パッケージで、提供しています。 この2つのパッケージは、アーカイブ形式が異なるだけで、内容は同じですので、どちらをダウンロードしていただいてもかまいません。 tar.gz形式のパッケージは、実行可能なスクリプトにUnix系システムの実行権限を設定しているため、Unix系システムをお使いの場合は、便利でしょう。

ボットスクリプトの使用方法・運用方法・テスト方法は、パッケージ内のREADMEファイルに含めて、記述しています。

なお今回は、テストをサンドボックスページで行いました (テスト結果 - なお、pcd.wikipedia.orgが追加されています) 。 テスト更新をする際には、更新 (アップロード) 対象のページを、これまでどおり「Wikipedia:全言語版の統計」とすることもできますが、加えて設定ファイルを変更することにより、サンドボックスページなどほかのページとすることもできるよう、ボットスクリプトを修整しました。

どうぞご確認お願いいたします。 ボットスクリプトあるいはREADMEファイルについて、不備もしくは改善したほうがよい点などありましたら、コメントをいただければと存じます。 --秋雪 2009年12月31日 (木) 07:04 (UTC)[返信]

ボットスクリプトが内部で使っているリソースファイル resource.xml を修正して、「Wikipedia:全言語版の統計」を更新いたしました (結果) 。 その後、Wikipedia:全言語版の統計#総合計に「言語数」を追加する必要があったことに気づいて、2回目のアップロードを行いました (結果) 。 2回目のアップロードについては、要約を「/* 総合計 */ 言語数を追加」と設定するつもりでしたが、まちがえて1回目のアップロード時と同じ要約にしてしまいました。 総合計の表に言語数を出力するようボットスクリプトを修整いたしました。

修整したボットスクリプトのダウンロードパッケージを、先述のSourceForge.JPのwikimedia-toolsプロジェクトにアップロードいたしました。 ご確認いただければと思います。 --秋雪 2010年1月17日 (日) 05:56 (UTC)[返信]

ボットスクリプトのバグ (実行中にエラーが発生して終了する) を修正し、併せて修整、およびREADMEファイルの改訂を行いました。 これをバージョン0.8.4として、wikimedia-toolsプロジェクトのページからダウンロードできるようにいたしました。 このバージョンでは、Ruby 1.9.1 に対応しました。 また、Windowsでは導入しやすいRuby処理系のひとつ、ActiveScriptRuby 1.8.7(p249) with-winsock2 で動作することを確認いたしました。

下記は、コマンドライン環境 (Linux/bash) でこのボットスクリプトを動かした場合の例です (WindowsのRuby環境でも動作することは確認しています) 。

% ruby -w languages-statistics-taker.rb
統計情報の取得と更新用ウィキテキストの作成
開始しました。 2010-03-01 00:00:00 (UTC)
作業ディレクトリ: 20100301T000000
現在あるウィキペディアの言語コードの数 (Special:SiteMatrix) : 271
リソースファイルとSpecial:SiteMatrixの照合を開始します。
次のリソースファイルの記述がSpecial:SiteMatrixに存在しません: ng, [[ンドンガ語]], [[:en:Ndonga language|{{lang|ng|{{#language:ng}}}}]]
リソースファイルとSpecial:SiteMatrixの照合を終了しました。
統計情報の取得を開始しました。 2010-03-01 00:00:10 (UTC)
統計情報の取得を終了しました。 2010-03-01 00:00:45 (UTC)
統計情報の取得に要した時間: 34.891067 秒
統計ページの現在のリビジョンのウィキテキストを取得して、20100301T000000/current-page.txt に出力しました。
新規開設された言語版:
 なし
閉鎖されているとみられる言語版:
 * ng, [[ンドンガ語]], [[:en:Ndonga language|{{lang|ng|{{#language:ng}}}}]]
更新用統計ページのウィキテキストを作成して、20100301T000000/new-page.txt に出力しました。
終了しました。 2010-03-01 00:00:51 (UTC)
要した時間: 50.733164 秒
% ruby -w languages-statistics-updater.rb 
統計ページの更新
開始しました。 2010-03-02 12:40:35 (UTC)
更新対象ページ: Wikipedia:全言語版の統計
更新用ウィキテキスト: 20100301T000000/new-page.txt
データ取得時刻: 2010-03-01 00:00:45 (UTC)
言語数: 271
要約欄: "統計更新: データ取得時刻 2010年3月1日00:00(UTC)"
ウェブページに対する更新を実行しますか? (yes/no) [no] yes
更新します。
Bot logged in.
更新しました。
Bot logged out.
終了しました。 2010-03-02 12:41:38 (UTC)
要した時間: 63.006292071 秒
%

ボットスクリプトのこれまでのバージョン履歴は、次のとおりです。

0.8.4 (2010-03-08)
閉鎖されたウィキペディアサイトがあった場合にエラーになっていた問題に対処しました。
2010年2月のウィキペディアサイトの挙動の変更で、ボットがアクセスできなかった問題に対処しました。
Ruby 1.9.1 に対応しました。
ActiveScriptRuby 1.8.7(p249) with-winsock2 で動作することを確認しました。
ActiveScriptRuby 上で notepad、explorer などの自動起動を行えるよう対応しました。
ボットのログイン失敗 (認証失敗) 時の制御を改善しました。
READMEファイルを改訂しました。
README.xmlをREADME.htmlに統合しました。
config.xmlを修整しました。
言語間リンクの扱いを自動化し、それにともない、resource.xmlファイルから言語間リンクの記述を削除しました。
更新前に、更新対象ページ、更新用ウィキテキストファイル名、データ取得時刻、言語数、要約欄の内容を、表示するようにしました。
更新前に、実際に更新を行うかどうかを、プロンプトによりボット運用者に問い合わせることができるようにしました (オプションにより問い合わせの省略も可能です) 。
ンドンガ語版の閉鎖にともない、resource.xmlファイルから記述を削除しました。
0.8.3 (2010-02-06)
統計ページの表の項目構成が変更されたことにともなう修整をしました。
  • 編集数 --> 総編集数
  • 活動 --> 点数A
  • 評価 --> 点数B
  • 総合計の表に「言語数」を追加
0.8.2 (2010-01-17)
統計ページの節構成が変更されたことにともなう修整をしました。
  • 10万記事以上 --> 10万記事以上100万記事未満、100万記事以上
ピカルディ語版の開設にともないresource.xmlファイルに記述を追加しました。
0.8.1 (2009-12-31)
公開された最初のバージョンです。

--秋雪 2010年3月8日 (月) 13:00 (UTC)[返信]

ボットのバージョン 0.8.5 をリリースしました (wikimedia-tools > ダウンロード) 。

MediaWiki API の変更によりログインできなくなっていた問題に対処しました。 クロスプラットフォーム環境において安定稼働するよう修整しました (プラットフォーム依存のコードを除去しました) 。

どうぞご確認お願いいたします。 --秋雪 2010年6月21日 (月) 10:24 (UTC)[返信]

ボットのバージョン 0.8.6 をリリースしました[2]

ボットの開発に使っていたパソコンが長く不調だったため、ボット開発のペースが遅くなっていました。

動作テストを行い、結果を別ページに投稿しました (/テスト/2011-03-16) 。

今回のリリースでの変更点は下記のとおりです。

  • Special:Statisticsでの action=raw で統計情報を取得できなくなったようですので、下記のように取得方法を変更しました。
    http://ja.wikipedia.org/w/api.php?action=query&meta=siteinfo&siprop=statistics&format=xml
  • また、出力するウィキテキストで action=raw としていた部分を、uselang=ja に変更しました。
  • 「10記事以上100記事未満」と「10記事未満」を、「100記事未満」に統合しました。
  • Rubyの処理系の新しいバージョン1.9.2で動かすための修整をしました。
  • resource.xmlのlanguage要素を、言語コードのアルファベット順にソートするように改訂しました (これまでは、全言語版の統計のページに掲載されている順でした) 。
    変更した理由は、resource.xmlの2つのバージョンがある際に (ウィキの新設や閉鎖、および重要記事の執筆状況による評価点数の更新のため、日を経るとresource.xmlを改訂する必要があります) 、ツールやSubversionクライアントなどによる2バージョン間の差分比較を容易にするためです。
    なおスクリプト側としては、resource.xmlにlanguage要素がどのように並んでいても、これまでと変わりなく動作します。
    languages-resource-printer.rb によるlanguage要素の内容の出力順は、言語コードのアルファベット順となります。

--秋雪 2011年3月17日 (木) 09:55 (UTC)[返信]

統計更新用bot作成依頼2020[編集]

よく、Wikipedia:日本語版の統計を見るのですが、5か月ほど更新されていない状況です。これらは、botで作成できるものだと思われるので、作成していただけないでしょうか。

また、Wikipedia‐ノート:日本語版の統計#名前空間別の統計の提案でも告知させていただきましたが、Wikipedia:井戸端/subj/名前空間と統計について#統計について​で、おおよそ合意形成された、名前空間別の統計の作成もお願いします。--股志会話2020年10月10日 (土) 06:57 (UTC)[返信]