『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
楼主: bugensui

[技术探讨] 请教如何在脚本动作中提取响应变量里某个值

[复制链接]

5

主题

80

帖子

317

积分

论坛分享达人

积分
317
金钱
237
HASS币
0
发表于 2025-1-14 15:32:23 | 显示全部楼层
bugensui 发表于 2025-1-14 15:15
我用这个代码{{ random_tracks.items}}获取,会报错,,搜百度好像是items是py内置的方法,可是Music Assi ...

你的代码很好啊
这个是取第一个item的uri
{{ random_tracks.items[0].uri }}
回复

使用道具 举报

158

主题

2508

帖子

7788

积分

元老级技术达人

积分
7788
金钱
5275
HASS币
30
 楼主| 发表于 2025-1-14 15:38:17 | 显示全部楼层
本帖最后由 bugensui 于 2025-1-14 15:39 编辑
悠哉悠哉 发表于 2025-1-14 15:32
你的代码很好啊
这个是取第一个item的uri
{{ random_tracks.items[0].uri }}

谢谢大佬的耐心指导,我用你的代码,执行报错,报错内容如下:
无法执行动作“script/unknown_2” 。 Error rendering data template: UndefinedError: builtin_function_or_method object has no element 0


random_tracks.items获取内容是空,但是奇怪的是可以获取后面的limit,用random_tracks.limit能获取到正确内容,是不是json里不能有items属性名称,因为py里items是内建属性,会报错,我不懂py,你知道不



回复

使用道具 举报

20

主题

222

帖子

1623

积分

金牌会员

Rank: 6Rank: 6

积分
1623
金钱
1401
HASS币
10
发表于 2025-1-14 15:40:07 | 显示全部楼层
你得到的是JSON数据,  可以转为数组array,
回复

使用道具 举报

158

主题

2508

帖子

7788

积分

元老级技术达人

积分
7788
金钱
5275
HASS币
30
 楼主| 发表于 2025-1-14 15:41:47 | 显示全部楼层
zg990725 发表于 2025-1-14 15:40
你得到的是JSON数据,  可以转为数组array,

我就是想提取里面歌曲的结果数量,然后去遍历uri,能给个参考不
回复

使用道具 举报

5

主题

80

帖子

317

积分

论坛分享达人

积分
317
金钱
237
HASS币
0
发表于 2025-1-14 15:42:06 | 显示全部楼层
sequence:
  - data:
      media_type: track
      order_by: play_count
      config_entry_id: 01JGDGA7ZKA72W5VTN6YP6XG9D
      limit: 10
      search: 王力宏
    response_variable: random_tracks
    action: music_assistant.get_library
  - repeat:
    count: "{{ random_tracks | length + 1}}"
    sequence:
      - action: notify.persistent_notification
        data:
          message: "{{ random_tracks.items[repeat.index - 1].uri }}"
alias: 播放音乐模板
description: ""
回复

使用道具 举报

158

主题

2508

帖子

7788

积分

元老级技术达人

积分
7788
金钱
5275
HASS币
30
 楼主| 发表于 2025-1-14 15:45:16 | 显示全部楼层

官网示例也是这样,就是很奇怪,为什么报错,心麻了,执行不了

QQ20250114-154353.png
回复

使用道具 举报

20

主题

222

帖子

1623

积分

金牌会员

Rank: 6Rank: 6

积分
1623
金钱
1401
HASS币
10
发表于 2025-1-14 15:52:54 | 显示全部楼层
bugensui 发表于 2025-1-14 15:41
我就是想提取里面歌曲的结果数量,然后去遍历uri,能给个参考不

我给你一个PHP 的语法,  其他的语言类似
先把JSON转为数组,  foreach($arr as $key => $val){
                                           //这样,就可以得到[]下键和值,  注意键为0123...
echo $val['uri'];                    //$val['uri']就可以那到uri了.
}
回复

使用道具 举报

5

主题

80

帖子

317

积分

论坛分享达人

积分
317
金钱
237
HASS币
0
发表于 2025-1-14 15:55:31 | 显示全部楼层
不好意思,刚才有个缩进问题,下面的代码我这里没有错误了:
sequence:
  - data:
      media_type: track
      order_by: play_count
      config_entry_id: 01JGDGA7ZKA72W5VTN6YP6XG9D
      limit: 10
      search: 王力宏
    response_variable: random_tracks
    action: music_assistant.get_library
  - repeat:
      count: |
        {{ random_tracks | length + 1}}
      sequence:
        - action: notify.persistent_notification
          data:
            message: "{{ random_tracks.items[repeat.index - 1].uri }}"
回复

使用道具 举报

158

主题

2508

帖子

7788

积分

元老级技术达人

积分
7788
金钱
5275
HASS币
30
 楼主| 发表于 2025-1-14 15:58:38 | 显示全部楼层
悠哉悠哉 发表于 2025-1-14 15:55
不好意思,刚才有个缩进问题,下面的代码我这里没有错误了:

谢谢,耽误了太多时间。保存是不报错,但是运行报错,真的奇葩。无法执行动作“script/unknown_2” 。 Error rendering data template: UndefinedError: builtin_function_or_method object has no element 0
回复

使用道具 举报

158

主题

2508

帖子

7788

积分

元老级技术达人

积分
7788
金钱
5275
HASS币
30
 楼主| 发表于 2025-1-14 15:59:18 | 显示全部楼层
zg990725 发表于 2025-1-14 15:52
我给你一个PHP 的语法,  其他的语言类似
先把JSON转为数组,  foreach($arr as $key => $val){
           ...

好的,谢谢,php,我不会。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2025-2-2 20:54 , Processed in 0.055938 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表