前の記事、「ネットワークプレイヤーにUSB外付SSDをNAS化して安価でつける方法」でネットワーク上でオーディオ機器が無事つながりました。
さっそくネットワークオーディオプレイヤーHAP-S1のプレイリストをMarantz ND8006に移しましたので、本記事はその手順の備忘録です。
HAP-S1やMarantz ND8006のプレイリストは、ネットワークを介してPC上のWindowsMediaPlayerから直接見て編集することはできません。
しかしDENONの「HEOS」規格を介し参照することができます。
そこで以下の様な手順でHAP-S1のプレイリストをMarantz ND8006に変換していきます。
①ネットワークオーディオプレイヤーHAP-S1のプレイリストをHEOSの再生キューに入れる
↓
②HEOSの再生キューをHEOSのプレイリストとして保存する
↓
③HEOSのプレイリストをJSON型式でPCに取得する
↓
④PC上でプレイリスト(JSON型式)とメディアのファイルパス情報からm3u形式のプレイリストを生成する
長くなるので本記事では、①~③までを説明します。
④はHAP-S1に限らずHEOSに対応している機器のプレイリストならば使える独立したプログラムになるので次の記事で説明しようと思います。
①ネットワークオーディオプレイヤーHAP-S1のプレイリストをHEOSの再生キューに入れる
・HAP-S1の電源を入れます。
・Marantz ND8006の電源を入れます。
・HEOSアプリ(iPhone or Android)をインストールし、起動します。
「ミュージック」タブを選択します。
左上の「設定」ボタンを押します。
「デバイスの追加」でMarantz ND8006を追加します。
追加後「マイデバイス」を選択してMarantz ND8006が登録されているか確認します。
「設定」に戻って「HEOSアカウント」を選択し、HEOSアカウントにメールアドレスを登録しログインします。
これで準備が完了しました。
取り出したいプレイリストが入っているHAP-S1にアクセスします。
「ミュージック」タブに戻って、「ミュージックサーバー」を選択します。
ミュージックサーバーが表示されます。
「HAP-S1」を選択します。
「プレイリスト」を選択します。
取り出したいプレイリスト、この例では「Bach」を選択します。
「全ての???トラック」、この例ですと「全ての26トラック」を選択します。
上記のようにポップアップが表示されるので、「キューの最後に追加」を選択します。
右下の「再生」タブを選択すると「再生中」と表示されます。
右上の「音符マーク♪」を選択するとキューが表示されます。
取り出したいHAP-S1のプレイリストがキューにセットされました。
②HEOSの再生キューをHEOSのプレイリストとして保存する
次にキューの内容をHEOSのプレイリストとして保存します。
上記右上の「☆」を選択するとプレイリストの名前が入力できます。
"Playlist 1" と入力し保存します。
「ミュージック」タブ→「プレイリスト」を選択し、HEOSのプレイリストとして保存されたか確認します。
「Playlist 1」を選択し中身を確認します。
HAP-S1の「Bach」のプレイリストが、HEOSの「Playlist 1」のプレイリストにコピーされました。
③HEOSのプレイリストをJSON型式でPCに取得する
HEOSのプレイリストはHEOSコマンドでPCに取得可能です。
次にその手順を説明します。
※参照マニュアル:DLNA HEOSコマンドマニュアル
※参考記事:DENON HEOS MULTIROOM SPEAKER SCRIPT INTEGRATION IN HOMESEER
・HEOSデバイスである Marantz ND8006 の電源を入れます。
・あらかじめMarantz ND8006のIPアドレスは固定IP(この例では192.168.1.25)を設定しておきます。
・ターミナルエミュレータ(この例ではフリーソフトのputty.exe)を起動します。
ターミナルエミュレータの telnet port 1255 で、192.168.1.25 Marantz ND8006に接続します。
「Open」ボタンを押して接続が完了しても下記のように何も表示されません。
プレイヤー(再生機器)の一覧表示コマンド
heos://player/get_players
を入力します。
"name" に "Marantz ND8006" が表示されています。
ミュージックソースの一覧表示コマンド
heos://player/get_music_sources
を入力します。
上記からプレイリスト一覧のsid(ソースID)を取得します。
{"name": "Playlists", "image_url": "https://production.ws.skyegloup.com:443/media/images/service/logos/musicsource_logo_playlists.png", "type": "heos_service", "sid": 1025, "available": "true"}
sidは、1025 ですね。
プレイリスト一覧を表示するコマンドを実行するためには、さきほど登録したHEOSアカウントでサインインしなくてはなりません。
サインインコマンドは下記になります。
heos://system/sign_in?un=メールアドレス&pw=パスワード
ちなみにサインアウトは下記です。
heos://system/sign_out
サインイン出来たら、sidを指定してプレイリスト一覧を表示するコマンド
heos://browse/browse?sid=1025
を実行します。
※下記コマンド実行部分は横スクロールをかけている(SHIFT+マウスホイールスクロール可能)のでPCブラウザモードでご覧ください。
heos://browse/browse?sid=1025 {"heos": {"command": "browse/browse", "result": "success", "message": "command under process&sid=1025"}} {"heos": {"command": "browse/browse", "result": "success", "message": "sid=1025&returned=6&count=6"}, "payload": [{"container": "yes", "type": "playlist", "cid": "260608", "playable": "yes", "name": "#1", "image_url": ""}, {"container": "yes", "type": "playlist", "cid": "260609", "playable": "yes", "name": "DISCO1", "image_url": ""}, {"container": "yes", "type": "playlist", "cid": "260610", "playable": "yes", "name": "DISCO2", "image_url": ""}, {"container": "yes", "type": "playlist", "cid": "260611", "playable": "yes", "name": "Sonny Criss", "image_url": ""}, {"container": "yes", "type": "playlist", "cid": "266320", "playable": "yes", "name": "#2", "image_url": ""}, {"container": "yes", "type": "playlist", "cid": "266323", "playable": "yes", "name": "Playlist 1", "image_url": ""}]}
上記から取得したいプレイリスト "name": "Playlist 1"のcid(コンテナID)は、266323とわかります。
sidとcidを指定して"Playlist 1"の曲情報を取得するコマンド
heos://browse/browse?sid=1025&cid=266323
を実行します。
※100曲以上ある場合は下記のように複数回コマンドを実行するように分割します。
heos://browse/browse?sid=1025&cid=266323&range=0,99
heos://browse/browse?sid=1025&cid=266323&range=100,199
heos://browse/browse?sid=1025&cid=266323&range=200,299
※下記コマンド実行部分は横スクロールをかけている(SHIFT+マウスホイールスクロール可能)のでPCブラウザモードでご覧ください。
heos://browse/browse?sid=1025&cid=266323 {"heos": {"command": "browse/browse", "result": "success", "message": "command under process&sid=1025&cid=266323"}} {"heos": {"command": "browse/browse", "result": "success", "message": "sid=1025&cid=266323&returned=26&count=26"}, "payload": [{"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D551", "type": "song", "artist": "Bach", "album": "The Best of J.S.BACH", "album_id": "", "playable": "yes", "name": "Brandenburg Concerto No. 2 in F major, BWV 1047 Allegro Assai", "image_url": "http://192.168.1.60:60400/getTrackArt?id=551"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D561", "type": "song", "artist": "Bach", "album": "The Best of J.S.BACH", "album_id": "", "playable": "yes", "name": "Suite No. 2 in B minor, BWV 1067 Badinerie", "image_url": "http://192.168.1.60:60400/getTrackArt?id=561"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D579", "type": "song", "artist": "Johann Sebastian Bach", "album": "Violin & Oboe Concertos (Virgin)", "album_id": "", "playable": "yes", "name": "Oboe d'amore conc - BVW1055 - 03 Allegro", "image_url": "http://192.168.1.60:60400/getTrackArt?id=579"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D571", "type": "song", "artist": "Johann Sebastian Bach", "album": "Violin & Oboe Concertos (Virgin)", "album_id": "", "playable": "yes", "name": "Violin %26 Oboe conc - BVW1060 - 01 Allegro", "image_url": "http://192.168.1.60:60400/getTrackArt?id=571"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D573", "type": "song", "artist": "Johann Sebastian Bach", "album": "Violin & Oboe Concertos (Virgin)", "album_id": "", "playable": "yes", "name": "Violin %26 Oboe conc - BVW1060 - 03 Allegro", "image_url": "http://192.168.1.60:60400/getTrackArt?id=573"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D576", "type": "song", "artist": "Johann Sebastian Bach", "album": "Violin & Oboe Concertos (Virgin)", "album_id": "", "playable": "yes", "name": "Violin conc in Dm - BVW1052 - 03 Allegro", "image_url": "http://192.168.1.60:60400/getTrackArt?id=576"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D570", "type": "song", "artist": "Johann Sebastian Bach", "album": "Violin & Oboe Concertos (Virgin)", "album_id": "", "playable": "yes", "name": "Violin conc in Gm - BVW1056 - 03 Presto", "image_url": "http://192.168.1.60:60400/getTrackArt?id=570"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D584", "type": "song", "artist": "Johann Sebastian Bach", "album": "Best of Bach", "album_id": "", "playable": "yes", "name": "Braniborsky Koncert C.1 F Dur Bwv 1046 Allegro", "image_url": "http://192.168.1.60:60400/getTrackArt?id=584"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D585", "type": "song", "artist": "Johann Sebastian Bach", "album": "Best of Bach", "album_id": "", "playable": "yes", "name": "Braniborsky Koncert C.2 F Dur Bwv 1047 Allegro", "image_url": "http://192.168.1.60:60400/getTrackArt?id=585"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D581", "type": "song", "artist": "Johann Sebastian Bach", "album": "Best of Bach", "album_id": "", "playable": "yes", "name": "Jesus Bleibet Meine Freude Bwv 147", "image_url": "http://192.168.1.60:60400/getTrackArt?id=581"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D589", "type": "song", "artist": "Johann Sebastian Bach", "album": "Best of Bach", "album_id": "", "playable": "yes", "name": "Koncert Bwv 1043 Vivace", "image_url": "http://192.168.1.60:60400/getTrackArt?id=589"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D591", "type": "song", "artist": "Johann Sebastian Bach", "album": "Best of Bach", "album_id": "", "playable": "yes", "name": "Suita C.2 Bwv 1067 Badinerie", "image_url": "http://192.168.1.60:60400/getTrackArt?id=591"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D593", "type": "song", "artist": "Johann Sebastian Bach", "album": "Best of Bach", "album_id": "", "playable": "yes", "name": "Suita C.3 Bwv 1068 Air", "image_url": "http://192.168.1.60:60400/getTrackArt?id=593"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D2205", "type": "song", "artist": "J.S. Bach", "album": "Orchestral Works & Chamber Music Disc 7", "album_id": "", "playable": "yes", "name": "Concerto for 2 harpsichords, strings %26 b.c. in C minor BWV 1060 - I Allegro", "image_url": "http://192.168.1.60:60400/getTrackArt?id=2205"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D2207", "type": "song", "artist": "J.S. Bach", "album": "Orchestral Works & Chamber Music Disc 7", "album_id": "", "playable": "yes", "name": "Concerto for 2 harpsichords, strings %26 b.c. in C minor BWV 1060 - III Allegro", "image_url": "http://192.168.1.60:60400/getTrackArt?id=2207"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D2232", "type": "song", "artist": "J.S. Bach", "album": "Orchestral Works & Chamber Music Disc 9", "album_id": "", "playable": "yes", "name": "Concerto for 2 violins, strings %26 b.c. in D minor BWV 1043 - I Vivace", "image_url": "http://192.168.1.60:60400/getTrackArt?id=2232"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D2183", "type": "song", "artist": "J.S. Bach", "album": "Orchestral Works & Chamber Music Disc 5", "album_id": "", "playable": "yes", "name": "Concerto for 3 violins, strings %26 b.c. in D major BWV 1064 - III Allegro", "image_url": "http://192.168.1.60:60400/getTrackArt?id=2183"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D2210", "type": "song", "artist": "J.S. Bach", "album": "Orchestral Works & Chamber Music Disc 7", "album_id": "", "playable": "yes", "name": "Concerto for 4 harpsichords, strings %26 b.c. in A minor BWV 1065 - VI Allegro", "image_url": "http://192.168.1.60:60400/getTrackArt?id=2210"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D2226", "type": "song", "artist": "J.S. Bach", "album": "Orchestral Works & Chamber Music Disc 9", "album_id": "", "playable": "yes", "name": "Concerto for oboe, violin, strings %26 b.c. in D minor BWV 1060 - I Allegro", "image_url": "http://192.168.1.60:60400/getTrackArt?id=2226"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D2228", "type": "song", "artist": "J.S. Bach", "album": "Orchestral Works & Chamber Music Disc 9", "album_id": "", "playable": "yes", "name": "Concerto for oboe, violin, strings %26 b.c. in D minor BWV 1060 - III Allegro", "image_url": "http://192.168.1.60:60400/getTrackArt?id=2228"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D5438", "type": "song", "artist": "J.S. Bach", "album": "Organ Works Disc 14", "album_id": "", "playable": "yes", "name": "Fuge in G major BWV 577", "image_url": "http://192.168.1.60:60400/getTrackArt?id=5438"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D2198", "type": "song", "artist": "J.S. Bach", "album": "Orchestral Works & Chamber Music Disc 7", "album_id": "", "playable": "yes", "name": "Harpsichord Concerto in F minor BWV 1056 - III Presto", "image_url": "http://192.168.1.60:60400/getTrackArt?id=2198"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D2094", "type": "song", "artist": "J.S. Bach", "album": "Orchestral Works & Chamber Music Disc 22", "album_id": "", "playable": "yes", "name": "Menuet BWV Anh. 114 (Christian Petzold)", "image_url": "http://192.168.1.60:60400/getTrackArt?id=2094"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D2120", "type": "song", "artist": "J.S. Bach", "album": "Orchestral Works & Chamber Music Disc 22", "album_id": "", "playable": "yes", "name": "Praludium BWV 846", "image_url": "http://192.168.1.60:60400/getTrackArt?id=2120"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D2177", "type": "song", "artist": "J.S. Bach", "album": "Orchestral Works & Chamber Music Disc 5", "album_id": "", "playable": "yes", "name": "Violin Concerto in D minor BWV 1052 - III Presto", "image_url": "http://192.168.1.60:60400/getTrackArt?id=2177"}, {"container": "no", "mid": "http://192.168.1.60:60400/getContent?id%3D2180", "type": "song", "artist": "J.S. Bach", "album": "Orchestral Works & Chamber Music Disc 5", "album_id": "", "playable": "yes", "name": "Violin Concerto in G minor BWV 1056 - III Allegro assai", "image_url": "http://192.168.1.60:60400/getTrackArt?id=2180"}]}
上記のようにJSON型式の"Playlist 1"の26曲の曲情報がPCに取得できました。
"name"が、曲名。
"artist"が、アーティスト名。
"album"、アルバム名。
となっていますが、肝心の音源が入っているメディアファイル(mp3など)へのパス情報は下記のように記述されています。
"mid": "http://192.168.1.60:60400/getContent?id%3D551"
http://192.168.1.60 は、HAP-S1のIPアドレスなのですが、これではHAP-S1に問い合わせないとHAP-S1のどのフォルダに該当のメディアファイルがあるかわかりません。
そこで、「④メディアのファイルパス情報からm3u形式のプレイリストを生成する」となるわけです。
取得したJSON型式の曲名、アーティスト名、アルバム名をキーに、HAP-S1内の全メディアファイルをトップフォルダ階層から検索して、一致するファイルを見つけそのファイルパス情報を付加することで、m3u形式のプレイリストを生成します。
この部分は意外と長いプログラムになってしまったので、次の記事「DLNA(HEOS)対応ネットワークプレイヤーのプレイリストをm3u形式へ変換するプログラム」でご説明いたします。
#例に使ったプレイリストはバッハのお気に入りの26曲でした