DACPでiTunesをリモートコントロールしてみた(1回目) - とりあえず日記
DACPでiTunesをリモートコントロールしてみた(2回目) - とりあえず日記
DACPでiTunesをリモートコントロールしてみた(3回目) - とりあえず日記
DACPでiTunesをリモートコントロールしてみた(4回目) - とりあえず日記
今回は、dacp(https://github.com/Logaritmisk/dacp)というライブラリを試してみます。
ファイル構成
Logaritmisk-dacp-33f6b9b ├─.gitignore ├─dacp.py ├─itunes.py ├─README └─examples ├─change_song.py ├─current_artwork_file.py ├─current_artwork_pyglet.py ├─dacp.py ├─get_db.py ├─itunes.py └─pair_remote.py
ファイルの数が少なく分かりやすいです。
ソースバージョン、Logaritmisk-dacp-33f6b9b
動かす
予め、iTuneを起動しておきます。(自動で起動はしません)
コマンドラインから pair_remote.py を実行してペアリングを行います。
iTunes側でパスコード「1717」を入力すると・・・・
例外発生です!!
Traceback (most recent call last):
File "C:\Users\hoge\Desktop\Logaritmisk-dacp-33f6b9b\examples\pair_remote.py",
line 24, in
if c.code == dacp.generate_pairing_code(p.pair, DACP_SERVICE_CODE):
AttributeError: 'module' object has no attribute 'generate_pairing_code'
例外の原因
generate_pairing_code が見つかりません・・・・Githubへ中途半端な状態でコミットされてるようです。
修正方法
作者への問い合わせとか面倒なので手元でサクッと修正します。
前回の日記で使用したライブラリから、バグのないファイルをコピーしてきます。GitHub - elsmorian/RemoteFrame: A web interface to a DACP iTune remote control designed to run on the OpenFrame or Joggler platform
RemoteFrameの「dacp.py/itunes.py」をdacpのexamplesディレクトリへ上書きコピーして下さい。
examples/dacp.py examples/itunes.py
必ず、examplesディレクトリにコピーして下さい。
もう一度トライ
もう一度、pair_remote.py を実行してiTunesへペアリングコードを入力して下さい。
guidは後で使うのでメモして下さい。
server-guid: 37AFF1AB43D1CF8E
(guidの値は環境毎に異なります。)
次の曲へ移動してみる
change_song.py をテキストエディタで開き guid を変更します。
(変更前)
if q.login(guid='95AAFD5039592871'):
(変更後:ペアリング時に取得したguidを設定して下さい。)
if q.login(guid='37AFF1AB43D1CF8E'):
iTunesで曲を生成してから、change_song.py を実行すると「次の曲」へ移動するはずです。
再生と一時停止のトグル
下記コードを play_pause.py として保存して下さい。
#play_pause.py import itunes q = itunes.ITunesController(host='localhost') q.connect() if q.login(guid='37AFF1AB43D1CF8E'): q.play_pause() else: print('faild to connect to server...') q.close()
実行すると「再生・一時停止」がトグルします。
ボリューム設定(ITunesController.volume メソッド)
ITunesController.volume()メソッドを呼び出すとボリュームの「設定・取得」が出来るようですが、正規表現のコンパイルで例外が発生しました・・・
最低限の操作はできているので今回はあきらめました。
(作者と自分が使用している Python のバージョンが異なるのかもしれません)
ペアリングの期間
iTunesを再起動してもペアリングは有効でした。