とりあえず日記

VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ(いまここ🍄)

DACPでiTunesをリモートコントロールしてみた(2回目)

DACPでiTunesをリモートコントロールしてみた(1回目) - とりあえず日記
DACPでiTunesをリモートコントロールしてみた(2回目) - とりあえず日記
DACPでiTunesをリモートコントロールしてみた(3回目) - とりあえず日記
DACPでiTunesをリモートコントロールしてみた(4回目) - とりあえず日記


DACP経由でiTunesを操作する続きです。
今回は、RemoteFrame(https://github.com/elsmorian/RemoteFrame)を試してみます。
「動作環境・準備」は1回目の日記を参照して下さい。

ファイル構成

elsmorian-RemoteFrame-20fd117
├─dacp.py
├─itunes.py
├─webserver.py
└─templates
    ├─config.html
    ├─index.html
    └─remote.html

ファイルの数が少なく分かりやすいです。
バージョンは elsmorian-RemoteFrame-20fd117 を使用。

webserver.pyの修正

試す前にソースコード(webserver.py)のバグ修正を行ないます。

(修正前)
51: tmp = open('static/artwork.png', 'wb')
(修正後)
51: import os
52: os.mkdir('static')
53: tmp = open('static/artwork.png', 'wb')

ディレクトリが見つからなくて例外が発生するのを修正します。


動かす

予め、iTunesを起動しておきます。(自動で起動はしません)


コマンドラインから webserver.py を実行する。

ブラウザで[http
//localhost:8080]へアクセスすると以下の画面になります。:

Pairをクリックして進むと

ブラウザの状態
iTunesの状態
コマンドラインの状態

ブラウザの "next" をクリックして次へ進むと

iTunesの状態
ブラウザの状態

"login"をクリックして次へ進むと


"remote"をクリックして次へ進むと

iTunesで曲を再生していない状態。
iTunesで再生中の曲がある状態。

Windows7附属のMP3です。〓Microsoft


Next/Prevをクリックすると・・・

曲が切り替わった直後に例外が発生します。

unicode周りで例外が発生しているようです。

<type 'exceptions.UnicodeDecodeError'> at /remote
'ascii' codec can't decode byte 0x8a in position 12: ordinal not in range(128)

Python	C:\Python27\lib\site-packages\web\utils.py in safeunicode, line 334
Web	GET http://localhost:8080/remote

深追いはやめてこの辺にしておきます。


まとめ

DACPのプロトコルを全く知らずにブラウザー経由で(例外が発生するものの)iTunesとペアリングして、「次の曲」へ進むことが出来ました。
iTunesがこちらを認識してそれに反応してくれた。)

今回のライブラリは、ソースコードの行数が少ないので本格的に実装するための参考として使用できそうです。



DACPでiTunesをリモートコントロールしてみた(1回目) - とりあえず日記
DACPでiTunesをリモートコントロールしてみた(2回目) - とりあえず日記
DACPでiTunesをリモートコントロールしてみた(3回目) - とりあえず日記
DACPでiTunesをリモートコントロールしてみた(4回目) - とりあえず日記