问题标签 [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.

0 投票
1 回答
46 浏览

sonos - 凭据中的多个 sessionId

我使用 sessionId 身份验证方法,似乎 Sonos 设备为我的服务保留了多个 sessionId。基本上,在 Credentials 标头中传递的 sessionId 并不总是使用最新的 getSessionId 生成的 sessionId,但有时是之前生成的两个 getSessionId。这怎么可能?我能做些什么来防止它?

0 投票
0 回答
718 浏览

python-3.x - 尝试使用 SoCo 播放_uri() 歌曲时出现“非法 MIME 类型”错误

SoCo是一个用于控制 Sonos 扬声器的 Python 库。我正在尝试播放本地存储的歌曲:

如果我正确阅读了文档,mysong.ogg应该开始在 Sonos 上玩。但是,此代码会立即导致以下异常:

0 投票
1 回答
162 浏览

sonos - 在实现 Sonos Music API 时,如何获取列出“收藏”项目的菜单以显示“全部播放”按钮?

我想要达到的目标

我想显示与itemType=trackList其他itemType例如播放列表的菜单的曲目(带有 的菜单)相同的“全部播放”菜单项。那可能吗?

因此,例如,将每个菜单表示为嵌套列表,我想要:

  • 集合 1
    • 全部播放<----我没有得到这个!
    • 播放列表 1
      • 全部播放 <-- 我明白了
      • 轨道 1
      • 轨道 2
      • ...
    • 播放列表 2
      • 全部播放 <-- 我明白了
      • 轨道 1
      • 轨道 1
    • ...

如果这种行为是不可能的,那很好,但我只是想仔细检查一下。

文档说什么

根据Sonos API 文档,您可以通过设置使其他 itemTypes 可播放canPlay=true。事实上,它特别提到了我的用例:

canPlay 标志用于指示集合可以排队等待完整播放。为了实现这一点,客户端将调用 getMetadata 并传入一个布尔参数“recursive”设置为 true。这将返回集合中所有 mediaItem 元素的扁平列表。例如,对于表示曲目播放列表的集合,“canPlay”可能是真的......

当我设置时canPlay=true,我可以在前一个菜单中按住 Collection,并弹出一个菜单,让我以这种方式播放所有内容,但在随后的菜单中没有真正的“播放所有”图标。这是有意的,还是有任何方法可以显示“全部播放”图标?

SMAPI itemTypes 页面说:

一旦您浏览到容器,带有 canEnumerate = true 的 itemType trackList 的 mediaCollection 将启用“所有轨道”节点,如下所示

这是唯一itemType的吗?

我的getMetadata回应

如果它有用,这是我的getMetadata回复:

  1. getMetadata调用显示包含集合的菜单:

    /li>
  2. getMetadata列出集合的播放列表的调用:

    /li>
0 投票
0 回答
137 浏览

android - 向应用程序开发人员公开设备范围的 API,例如 Sonos 或 Chromecast

安装 Sonos 或 Chromecast 后,兼容的应用程序(例如 Cast 发件人)可以使用这些类型的流 API。现在,无需深入了解特定 API 的细节,也不必考虑多媒体流应用程序,让我们保持简单。在 iOS 和 Android 等常见平台上,有哪些方法可以提供以下内容:

  • 了解启用 API 的应用程序已安装特定应用程序/服务,因此其 API 可用
  • 提供可调用的、系统范围的框架/API
  • 一种检索使用 API 的应用程序列表的方法,以及一种向它们发送查询的方法(例如,Sonos 可以请求曲目列表)

在互联网上,我可以找到使用这些特定 API 的客户端代码的各种示例,但没有关于如何构建此类 API 的信息。文档和示例的链接非常受欢迎。

0 投票
1 回答
43 浏览

sonos - 了解两键评级实施

我正在我们的平台上实施两键评级,我正在为一些更精细的细节而烦恼。

首先,我真的试图在这里简洁地解释我遇到的麻烦!

我们通过rateItemgetExtendedMetadata端点处理和返回了三种状态,用户可以在这三种状态之间移动:

0 - 未评级
1 - 投赞成票
2 - 投反对票

所以rateItem接受这三个选项之一。

查看文档,我的演示图应该是这样的。

这就是我开始遇到麻烦的地方。这些<Match ... value="X">元素看起来很好,并且与我的数据显示的相匹配。但是当单击按钮时,rateItem端点似乎接收到 ID 0 到 6。(示例中缺少 ID 4?)

该文档指出:

Id (int) 这是将传递给 rateItem 方法的值。给定属性名称的 Id 必须是唯一的。

因此,为了解决这个问题,我修改了我的演示地图,以便从 0 Match 属性发送的 ID 为 1 和 2(上下投票)。然后有一个 1 Match 属性链接到 0 和 2,还有一个 2 链接到 0 和 1。这就是我所在的位置:

请注意,字符串 ID 也已更新,我相信我的字符串文件和图像都很好。

这对我来说很有意义,但实际上是在丢掉我的图像和警报,并且我在不同的平台上得到了不同的结果(到目前为止在 iOS 和 Mac 控制器上进行了测试)。

在这一点上,任何人都可以提供任何建议吗?我希望我在这里有足够的意义!我非常感谢任何人可以提供的任何提示。

0 投票
1 回答
118 浏览

sonos - SONOS 播放错误“这些歌曲无法从 APPNAME 流式传输”

我一直在准备 POC 以将我们的音乐服务与 SONOS 集成,我已经编写了简单的服务用于测试目的。我已经实现了三种基本方法来播放 url “getMetadata”、“getMediaMetadata”和“getMediaURI”。

首先,我尝试使用媒体类型“track”并从 .mp4 格式的“getMediaURI”方法返回歌曲 url(硬编码),它按预期工作得很好。

后来,当我尝试使用 7 位 url 播放失败时说“这些歌曲不可用于从“APPNAME”流式传输。我尝试更改 mime 类型值也似乎没有任何效果。类型:音频/x-m4a

注意:相同的 7 个数字 url 在浏览器上可以正常播放。

我在这里做错什么了吗?我错过了什么吗?非常感谢任何帮助。

谢谢。

0 投票
1 回答
87 浏览

sonos - 如何从 SONOS 控制器向音乐服务发送心跳(ping)

我只想找出我的服务中的音乐当前是否正在播放?通常对于我们的 Android 或 iOS 客户端,我们曾经向服务发送心跳 (ping) 以通知客户端处于活动状态,如何在 SONOS 中实现相同的功能。我已经通过设置 pollinterval 尝试使用 getLastUpdate ,但似乎只有当我的控制器处于前台时才会调用它。

提前致谢。

0 投票
1 回答
67 浏览

sonos - 自测套件因意外字符而失败

我在通过 Self-Test Suite 发送请求时遇到问题。我收到

好像是zonePlayerId引起的

在wsdl中是

它应该与设备 ID 相同。通过soapUi发送我没有问题,因为没有额外的tns。

你改变了什么吗?我上次能够运行它们,我们想尽快提交一个新版本。

谢谢

0 投票
1 回答
324 浏览

sonos - 在 trac 的播放中后退或向前跳过时无法播放未正确编码的曲目

我正在为 Sonos 开发 Soap 服务。SONOS 部分接受该服务。但是仍然存在一些问题,即在播放曲目(曲目内部)期间进行跳过(向前或向后)时,某些 mp3 曲目会导致“无法播放未正确编码的曲目”。我已经比较了“好”和“坏”轨道的编码过程,我看不出有任何真正的原因是它们中的一部分不会在轨道内跳过。我将非常感谢与此问题相关的任何提示。

此致,

克日斯

0 投票
1 回答
98 浏览

soap - 从播放列表调用 deleteContainer 中删除曲目,而不是 removeFromContainer

当我试图从用户播放列表中删除曲目时,控制器使用方法deleteContainer发送 SOAP 请求,即:

但我可以看到有一个方法removeFromContainer,我认为这个方法应该用于从播放列表中删除曲目。

我在 Android APP 和 MacOS Sonos App 中遇到了这个问题。我正在删除曲目,而不是播放列表。删除播放列表时,它调用相同的方法deleteContainer但具有正确的 ID,即:PLAYLISTS:PLAYLIST:23952

我错了吗?在什么情况下会使用removeFromContainer方法?

播放列表根部分

要求

回复

获取播放列表项

要求

回复

从播放列表中删除项目

要求

环境

从 MacOS Sonos 应用程序的“关于”对话框:

Sonos 设备信息:

从 Android Sonos 应用程序

http://192.168.0.108:1400/status/VERSION

显示类型 pmap