デスクトップマスコット「Apricot」をPythonで機能拡張する方法

スクリプト言語Python」を使ってデスクトップマスコット「Apricot」を機能拡張する方法をまとめてみました。

このPython言語を使って実際に出来るとことは、

  • .NETで提供されるクラスライブラリを使って開発
  • Scriptクラスによる「Apricot」へのアクセス

というような感じです。.NETのクラスライブラリは制限無く使えるので、タイマーやスレッドなどからGUIまでPythonで記述することが出来ます。

あと、ScriptクラスをPythonのコード内で使うと「Apricot」へアクセス出来ます。
「Apricot」を制御するためのメソッドは、

  • Idle() ...アイドル状態の呼び出し
  • Alert(TimeSpan ts, string name) ...アラートの呼び出し
  • Capture(bool reset) ...RSS/Atomフィードの取得。引数がTrueの時はキャッシュのクリア。
  • Find(string query) ...検索開始
  • Neutral() ...ニュートラル(デフォルトの立ち絵)の呼び出し

などがあります。
以下のコードは、3分後にユーザーに情報を通知するタイマープログラムです。また、このプログラムでは1分毎に情報を通知するようになっています。情報を通知する方法としては、Script.Alertを用いています。

尚、このコードをファイルに保存し、Apricot.exeがあるフォルダ、またはキャラクターのセリフなどが記述されたXMLファイルがあるフォルダに配置すると、コンテキストメニューで使用可能になります。
ちなみに、前者のフォルダだと全てのキャラクターに共通で実行出来、後者だとキャラクター固有になります。

# -*- encoding: utf-8 -*-

import clr

from System import *
from System.Timers import *

def onTimedEvent(timer, e):
	global ts
	ts = ts.Add(TimeSpan(0, 0, 0, 0, timer.Interval))
	if ts.TotalMilliseconds >= 0:
		timer.Stop()
		ts = TimeSpan(0)
	Script.Alert(ts, "カップラーメン")

ts = TimeSpan(0, -3, 0)
timer = Timer()
timer.Interval = 1000 * 60
timer.AutoReset = True
timer.Elapsed += onTimedEvent
timer.Start()