とりあえず日記

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

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

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

前回までで localhostiTunes を DACP経由で操作できるようになりました。
今回は Windows7 から MAC にインストールされた iTunes を操作してみます。


今回の結果

惜しいところまで進んだのですが駄目でした。
素直に、Appleが提供している Bonjour SDK for Windows を使用した方が良いんじゃないという結論に落ち着きました。

以下試行錯誤のメモです。


使用するライブラリ

dacp(https://github.com/Logaritmisk/dacp)というライブラリを改造して使用します。

ソースコードを書き換える

dacp.py 175行目

(変更前)

self.__sdref = pybonjour.DNSServiceRegister(
        name=self.__name,
        regtype=self.__type,

(変更後:hostにMacIPアドレスを直接指定)

self.__sdref = pybonjour.DNSServiceRegister(
            host='XXX.YYY.ZZZ.WWW',
            name=self.__name,
            regtype=self.__type,

コマンドラインから pair_remote.py を実行します。

MAC側がこうなります、

パスコードを入力すると、、、

MAC側は下記画面のまま進行しなくなります。PC側のコンソールも同様に待ち状態のまま変化しません。

処理が止まっている箇所

dacp.py中のsock.accept()から戻ってこないです。
推測するに、PCからMACへの送信は可能で、MACから送られたパケットをPC側で受信が出来ていないんじゃないかと思います。

まとめ

DACP経由でPCからMACにインストールされたiTunesとペアリングが出来ませんでした。
PCからMACへ送信するパケットに問題があるのか、はたまた、MACから送信されたパケットをPC側で受信できていないだけなのか、それとも両方か。
はたまたDNSがうまく動いていないのか・・・
ネットワークには詳しくないのでこれ以上は追求しないことにします。

Bonjour SDK for Windows

今回試したライブラリはどれも PyBonjour の上に構築されています。
素直にApple社が提供しているBonjour SDK for Windows を使用した方が良いかもしれません。
ダウンロードしたところDNS関係と思われる「C/C#/Java/VB」のサンプルコードが附属していました。

最後に

結局、秀丸エディタ(PC)からMACにインストールされたiTunesを、リモートコントロールすることは出来ませんでした。

誰かがコマンドライン版を作っていそうな気もするんですが・・・
(その誰かとは俺のことで、今回はこんな結果になりました。)