Runner in the High

技術のことをかくこころみ

RadioTrayのプラグインを作る

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