0

私が達成しようとしていること

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応答があります:

  1. 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>
    
  2. 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>
    
4

1 に答える 1

0

表示しようとしているのは、トラックのコレクションの上部にある「すべての曲」ノードのようです。ご指摘のとおり、「canPlay」を true に設定すると、「Play All」ノードが表示されます。これは、コンテナ タイプに関係なく、どの mediaCollection でも機能するはずです。同様に、「canEnumerate」を true に設定すると、「すべてのトラック」ノードが任意の mediaCollection のコンテナーの上部に表示されます。残念ながら、コンテナーの上部に [すべて再生] ボタンを表示する方法はありません。

于 2016-04-21T17:42:54.200 に答える