問題タブ [sonos]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sonos - 資格情報に複数の sessionId
私は sessionId 認証方法を使用していますが、Sonos デバイスが私のサービス用に複数の sessionId を保持しているようです。基本的に、Credentials ヘッダーで渡される sessionId は、常に最新の getSessionId で生成された sessionId ではなく、2 つ前の getSessionId で生成されたものである場合があります。そんなことがあるものか?それを防ぐにはどうすればよいですか?
python-3.x - SoCo を使用して曲を play_uri() しようとすると、「Illegal MIME-Type」エラーが発生します
SoCoは、Sonos スピーカーを制御するための Python ライブラリです。ローカルに保存された曲を再生しようとしています:
ドキュメントを正しく読んだらmysong.ogg
、Sonos でプレイを開始する必要があります。ただし、このコードではすぐに次の例外が発生します。
sonos - Sonos Music API を実装する場合、「コレクション」アイテムを一覧表示するメニューを取得して、「すべて再生」ボタンを表示するにはどうすればよいですか?
私が達成しようとしていること
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
応答があります:
/li>getMetadata
コレクションを含むメニューを表示する呼び出し:
/li>getMetadata
コレクションのプレイリストを一覧表示する呼び出し:
android - デバイス全体の API を Sonos や Chromecast などのアプリ デベロッパーに公開する
Sonos または Chromecast をインストールすると、対応アプリ (Cast 送信者などと呼ばれる) がこれらの種類のストリーミング API を使用できるようになります。ここでは、特定の API の詳細に立ち入ることなく、また必ずしもマルチメディア ストリーミング アプリについて考えることなく、単純にしておきましょう。iOS や Android などの一般的なプラットフォームで、以下を提供する方法は何ですか?
- 特定のアプリ/サービスがインストールされているため、その API が使用可能であるという API 対応アプリへの知識
- 呼び出し可能なシステム全体のフレームワーク/API を提供する
- API を使用するアプリのリストを取得する方法と、それらにクエリを送信する方法 (たとえば、Sonos はトラックのリストを要求できます)
インターネット上で、これらの特定の API を使用するクライアント コードのさまざまな例を見つけることができますが、そのような API を構築する方法については何もありません。ドキュメントや例へのリンクは大歓迎です。
sonos - 2 ボタン評価の実装について
私はプラットフォームに 2 ボタン レーティングを実装している最中で、細かい部分のいくつかに頭を悩ませています。
まず、私はここで私が抱えている問題を簡潔に説明しようとしました!
rateItem
およびエンドポイントを介して処理および返される 3 つの状態がありgetExtendedMetadata
、ユーザーは 3 つの状態間を移動できます。
0 - 未評価
1 - 賛成票
2 - 反対票
したがってrateItem
、これら 3 つのオプションのいずれかを受け入れます。
ドキュメントを見ると、私のプレゼンテーション マップはこれらの線に沿っているはずです。
ここからトラブルに巻き込まれます。<Match ... value="X">
要素は問題ないようで、私のデータが示すものと一致しています。しかし、ボタンをクリックすると、rateItem
エンドポイントは ID 0 から 6 を受け取るように見えます(この例では ID 4 が欠落していますか?)。
ドキュメントには次のように記載されています。
Id (int) これは、rateItem メソッドに渡される値です。Id は、指定されたプロパティ名に対して一意である必要があります。
そこで、これに対抗するために、プレゼンテーション マップを変更して、0 Match プロパティから送信される ID が 1 と 2 (賛成票と反対票) になるようにしました。次に、0 と 2 にリンクする 1 の Match プロパティと、0 と 1 にリンクする 2 があります。
文字列 ID も更新されていることに注意してください。文字列ファイルと画像に問題はないと確信しています。
これは私には理にかなっていますが、実際には画像とアラートを捨てており、さまざまなプラットフォームでさまざまな結果が得られています (これまで iOS および Mac コントローラーでテストされています)。
この時点で、誰か提案を提供できますか? ここで十分に理解できたと思います!誰でも提供できるヒントをいただければ幸いです。
sonos - SONOS 再生エラー「これらの曲は APPNAME からのストリーミングには使用できません」
私は音楽サービスを SONOS と統合するための POC を準備しており、テスト目的で簡単なサービスを作成しました。URL「getMetadata」、「getMediaMetadata」、「getMediaURI」を再生するための 3 つの必須メソッドを実装しました。
最初に、メディア タイプ「トラック」を試し、.mp4 形式の「getMediaURI」メソッドから曲の URL (ハード コード) を返しました。期待どおりに動作しました。
後で 7 デジタル URL を試してみると、「これらの曲は "APPNAME" からのストリーミングには使用できません。MIME タイプの値を変更しようとしましたが、何も機能していないようです。タイプ: audio/x-m4a
注: 同じ 7 デジタル URL がブラウザで正常に再生されます。
私はここで何か悪いことをしていますか? 何か不足していますか?どんな助けでも本当に感謝しています。
ありがとう。
sonos - 予期しない文字でセルフテスト スイートが失敗する
Self-Test Suite を介してリクエストを送信する際に問題があります。私は受け取ります
zonePlayerId が原因のようです
wsdlでは
デバイス ID と同じである必要があります。soapUi経由で送信余分なtnsがないので問題ありません。
何か変えましたか?前回は実行できましたが、できるだけ早く新しいバージョンを提出したいと考えています。
ありがとう
soap - プレイリストからトラックを削除するには、代わりに deleteContainer を呼び出します removeFromContainer
ユーザーのプレイリストからトラックを削除しようとすると、コントローラーはメソッドdeleteContainerで SOAP リクエストを送信します。
しかし、メソッドremoveFromContainerがあることがわかります。このメソッドは、プレイリストからトラックを削除するために使用する必要があると思います。
Android アプリと MacOS Sonos アプリでこの問題が発生します。そして、プレイリストではなくトラックを削除しています。プレイリストを削除するときは、同じメソッドdeleteContainerを呼び出しますが、正しい ID を使用します (例: PLAYLISTS:PLAYLIST:23952)。
私が間違っている?メソッドremoveFromContainerが使用されるのはどの場合ですか?
プレイリストのルート セクション
リクエスト
応答
プレイリスト アイテムを取得する
リクエスト
応答
プレイリストからのアイテム削除時
リクエスト
環境
MacOS Sonos アプリの[バージョン情報] ダイアログから:
Sonos デバイス情報:
Android Sonos アプリから
http://192.168.0.108:1400/status/VERSION