RadioTrayというネットラジオを聴くためのアプリケーションに、プラグインの機能があるので
ちょろっとなにか作ってみる
必要なファイル
- 処理本体を記述するPythonスクリプト
- プラグインそのものの情報を記述するpluginファイル
インストール
/usr/share/radiotray/plugins/に2つのファイルを放り込むだけ
作る
ということでさっそく、簡単なプラグインを書いてみる
[RadioTrayPlugin]
name=Website Jumper
desc=Open the website of the current radio
script=WebsiteJumper.py
class=WebsiteJumper
author=IzumiSy
from events.EventSubscriber import EventSubscriber
from events.EventManager import EventManager
from Plugin import Plugin
import webbrowser
class WebsiteJumper(Plugin):
# 初期化時に実行される関数
def __init__(self):
super(WebsiteJumper, self).__init__()
# 何に使うのかはわからないが必要らしい
def getName(self):
return self.name
# プラグインの設定から有効化されたときに実行される関数
def activate(self):
# SONG_CHANGEDにフックする関数を登録
self.eventSubscriber.bind(EventManager.SONG_CHANGED, self.on_song_changed)
# プラグインメニューに登録
self.tooltip.addSource(self.def_tooltip)
# プラグインのメニューに表示するために必要な関数
def hasMenuItem(self):
return True
# メニューに登録する名前を返す
def def_tooltip(self):
return "Website Jumper"
# SONG_CHANGEDにフックされる関数
def on_song_changed(self, data):
global location
if ('location' in data.keys()):
location = data['location']
# メニューから選択された場合の処理
def on_menu(self, data):
print "[WebsiteJumper] open %s" % (location)
webbrowser.open(location)
コードを見てくれればほとんど解説はいらないはず。
アプリケーションを起動して、ラジオを聴くとSONG_CHANGEDイベントが起きるので、その際に今聴いているラジオ局のウェブサイトのURLをブラウザで開くだけのプラグインです。
ちなみに、ソースコードを見る限りプラグインからフックできるイベントは、いろいろあるらしい。
- STATE_CHANGED... ラジオのON/OFFとかそういったときに発生するイベント
- SONG_CHANGED... 聴いているラジオの音楽がかわったときに発生するイベント
- BOOKMARKS_CHANGED... ブックマークが編集されたとき?に発生するイベント(未検証)
- STATION_ERROR... ラジオ局に関連するエラーが起きた時に発生するイベント(未検証)
- VOLUME_CHANGED... ボリュームが変えられたときに発生するイベント(未検証)
- BOOKMARKS_RELOADED... ブックマークの再読み込み時?に発生するイベント(未検証)
- NOTIFICATION... 通知に関するイベント?(未検証)
まあ他にもあるんだろうけど、それは自分で調べてください
ソースコードを読むといろいろ書いてあります。(適当)
IzumiSy/WebsiteJumper - Gist