私が達成しようとしていること
itemType=trackList
プレイリストなどの他のメニューのトラック ( の付いたメニュー) をリストするときに取得するのと同じ「すべて再生」メニュー項目を表示したいと考えていますitemType
。それは可能ですか?
たとえば、各メニューをネストされたリストとして表すには、次のようにします。
- コレクション 1
- すべて再生 <---- これはわかりません!
- プレイリスト 1
- すべて再生 <-- わかりました
- トラック 1
- トラック 2
- ...
- プレイリスト 2
- すべて再生 <-- わかりました
- トラック 1
- トラック 1
- ...
この動作が不可能な場合は問題ありませんが、再確認したかっただけです。
ドキュメントの内容
Sonos API docsによると、設定することで他の itemTypes をプレイ可能にすることができますcanPlay=true
。実際、それは私のユースケースに具体的に言及しています:
canPlay フラグは、コレクション全体を再生するためにキューに入れることができることを示すために使用されます。これを実現するために、クライアントは getMetadata を呼び出して、真に設定された「再帰的」ブール型パラメーターを渡します。これにより、コレクション内のすべての mediaItem 要素のフラット化されたリストが返されます。たとえば、「canPlay」は、トラックのプレイリストを表すコレクションに当てはまる場合があります...
設定するcanPlay=true
と、前のメニューでコレクションを押したままにして、そのようにすべてを再生できるメニュー ポップアップを表示できますが、後続のメニューに実際の「すべて再生」アイコンが表示されません。それは意図されたものですか、それとも「すべて再生」アイコンを表示する方法はありますか?
SMAPI itemTypes ページには次のように記載されています。
以下に示すように、canEnumerate = true の itemType trackList の mediaCollection は、コンテナーを参照すると、「すべてのトラック」ノードを有効にします。
これが機能するのはitemType
それだけですか?
私のgetMetadata
回答
それが役に立つ場合、ここに私のgetMetadata
応答があります:
getMetadata
コレクションを含むメニューを表示する呼び出し:<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <getMetadataResponse xmlns="http://www.sonos.com/Services/1.1"> <getMetadataResult> <index>0</index> <count>10</count> <total>10</total> ... <mediaCollection> <id>collections:134</id> <itemType>collection</itemType> <displayType>standardView</displayType> <title>Collection 1</title> <summary>Collection 1 Summary</summary> <canPlay>true</canPlay> <albumArtURI>https://path/to/album_art.jpg</albumArtURI> </mediaCollection> ... </getMetadataResult> </getMetadataResponse> </soap:Body> </soap:Envelope>
getMetadata
コレクションのプレイリストを一覧表示する呼び出し:<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <getMetadataResponse xmlns="http://www.sonos.com/Services/1.1"> <getMetadataResult> <index>0</index> <count>1</count> <total>1</total> <mediaCollection> <id>collections:134:playlists:506</id> <itemType>trackList</itemType> <displayType>standardView</displayType> <title>Playlist 1</title> <summary>Playlist 1 summary</summary> <canPlay>true</canPlay> <albumArtURI>http://path/to/album_art.jpg</albumArtURI> </mediaCollection> </getMetadataResult> </getMetadataResponse> </soap:Body> </soap:Envelope>