cronやログフィードを使わずにスケジュールタスクを実行する方法

  • 投稿日:
  • by
  • カテゴリ:

MTで指定日投稿やその他のスケジュールタスクを実行するには、cronなどで定期的にrun-periodic-taskを実行する方法が良く知られています。
この他にも、ログ・フィードを取得するタイミングでスケジュールタスクを実行することもできます。
しかし、前者はcrontabに登録しなくてはいけませんし、後者はフィードを定期的に取得する必要があります。フィードリーダーなどに登録して自動的に取得する方法もありますが、ログの情報を外部に預けることに抵抗がある人もいるのではないかと思います。

そこで、第三の方法です。
XML-RPCを使う方法があります。

XML-RPC - Wikipedia

XML-RPCを使うと、外部のアプリケーションからMTに用意されたAPIを実行することができます。
XML-RPC APIを用いたブログエディタもたくさん開発されています。
今回は、XML-RPC APIの「runPeriodicTasks」メソッドを呼ぶことで、スケジュールタスクを実行します。
試しに、Rubyでさくさくとスクリプトを書いてみました。

require 'xmlrpc/client'

uri = "http://localhost/cgi-bin/mt/mt-xmlrpc.cgi"
username = "username"
password = "password"

client = XMLRPC::Client.new2( uri )
mt = client.proxy("mt")

begin
  result = mt.runPeriodicTasks(username, password)
rescue XMLRPC::FaultException => e
  puts "fault #{e.faultCode}: #{e.faultString}"
end

このスクリプトをテキストエディタなどに貼り付けて、scheduke_task.rbのようなファイル名で保存します。
uriにMTのmt-xmlrpc.cgiのURLを、usernameにはAPIを実行するユーザ名を、passwordにそのユーザの Webサービスパスワードを入力してください。
このスクリプトをWindowsのタスクスケジューラなどで定期的に実行すれば、MTのスケジュールタスクを実行することができます。設定が面倒なら、手動で実行しても良いでしょう(笑)
これなら、手元の普段使っているPCからでも操作ができます。