Top| About|
2008|07|08|09|10|
2010|01|02|03|04|05|06|07|08|09|

2010-01-23

引き続きRhythmbox を弄ってるんだが、Rhythmbox-client という、コマンドラインで動作するものが有るので、それとcrontab を組み合わせてラジオを朝流すようにできるのか試してみる。コマンドはここ。ただ、何故かstream を巧く受信出来ないんだよねこれ。まぁ別に無くても良いけど。

Rhythmbox は、少なくともpodcast は再生できる。最新のpodcast を確認すると勝手にDL する"はず"なので、特に手動でDL をする必要は無いと思う。だけど、この日記を書いてる段階だと確認できないので、もし駄目だった追記しようと思う。

以下は、BBC ニュースをコマンドラインで再生するもの。2行目の --play は要らないはずなんだが、自分の環境だと駄目だった。おまじないだと思って良い。

# rhythmbox-client --play-uri=http://downloads.bbc.co.uk/podcasts/worldservice/globalnews/rss.xml
# rhythmbox-client --play

ただし、crontab で運用するためにシェルスクリプトを書くと、ちょっと話しが変わってくる。Rhythmbox を別のシェルで起動している状態で、シェルスクリプトを実行するとハングアップする時があるかも知れない。その場合は、--no-present を--play-uri= の前に追加すると解決するかも知れない。検索したけど、余りこのコマンドについて詳しく説明しているサイトが無いので、これで合ってるのかどうか良く解らんのだけど。あと、sleep も3秒入れておくと、play が早すぎる時でも大丈夫。それともしVNC で普段ログインしてるんだけど、シェルスクリプトを再生するときにssh でログインして、とかで問題になる時は、export DISPLAY=:1.0 && rhythmbox --play とかすると解決する可能性がある。あとexport DBUS_SESSION_BUS_ADDRESS とかも指定すると良いかも知れない。そこらへんの詳しい話しはここにある。あと、ここ。このサイトに沿ってスクリプトを組むとちゃんと動いた。

# /bin/bash
PID=$(pgrep -u $LOGNAME -o -x rhythmbox)
 
if [ -n $PID ] ; then
	PID=$(pgrep -u $LOGNAME -o -x notification-da)
fi
 
DBUS_SESSION_BUS_ADDRESS=`grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ 2>/dev/null`
export $DBUS_SESSION_BUS_ADDRESS
 
rhythmbox-client --play-uri=http://downloads.bbc.co.uk/podcasts/worldservice/globalnews/rss.xml
sleep 3
rhythmbox-client --play

あとは、crontab で毎朝指定すれば良いはずで、実際暫く出来てたんだけど、何故か急にfailed execute dbus launch autolaunch d bus dbus session と言われるようになってしまった。特に何も弄ってないんだが。うーむ、原因が解らんがとりあえず放置することにする。