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

 找回密码
 立即注册
查看: 1016|回复: 0

[进阶教程] 小爱音箱播放电影-NAS本地电影篇

[复制链接]

1

主题

131

帖子

1131

积分

金牌会员

Rank: 6Rank: 6

积分
1131
金钱
1000
HASS币
0
发表于 2023-12-2 15:10:54 | 显示全部楼层 |阅读模式
本帖最后由 W@LTER 于 2023-12-2 15:17 编辑

缘由:
1. 受下面大佬帖子启发打算做一个用小爱同学语音控制来播放本地nas的电影版本,为什么不要小雅,因为不稳定,而且有些资源不能播了,故还是自己本地的好处理,不用担心。
https://bbs.hassbian.com/thread-23398-1-1.html

2. 需要先按照原贴教程做好了,最后才可以用本贴的节点替换原来的Python节点。下面教程基本原理跟上面大佬原贴一样,主要改动的地方是从小雅的电影源改为自己的nas电影源,所以,教程里面只要替换原来的流里面的Python节点的代码内容,重新改写搜索逻辑。

3. 另外,虽然电影源从小雅改为自己nas的电影,但是,还是需要将自己nas的电影挂载到alist,我们用alist来做资源管理,理论上,无论自己nas还是非nas,能挂载都能播放,而且,电影和音乐同理。下面,我详细说说在alist上面需要的一些处理和前提条件,才可以让流顺利执行。
  3.1. 电影的文件名,需要有中文名称, 因为你跟小爱说中文, 然后,对中文的电影名称进行搜索电影,英文好的可以直接跟小爱说英文,不知道识别准确率怎么样。建议为电影添加中文名称。
  3.2. nas的电影,最好需要用 本地存储 的方式来挂载到alist,其他方式不建议。这种方式应该是最流畅。具体操作步骤可以百度一下。另外, 挂载的时候关掉 显示隐藏,不要显示和不搜索到那些隐藏的文件和文件夹。
  3.3. alist管理页面里面,设置-全局-签名所有 关掉,说明看这里https://alist.nn.ci/zh/config/gl ... D%E6%89%80%E6%9C%89
  3.4. alist管理页面里面,开启索引功能。说明看这里https://alist.nn.ci/zh/guide/advanced/search.html, 我们播放的内容就是在搜索的内容里面找,如果可以想控制播放的内容,可以先限制搜索的内容,因此等构建好索引后, 自己尝试的搜索,看看搜索的结果是否预期中,如果不是,就要找问题了。

4. 我提供的流只是其中python代码节点,里面要改的东西跟原贴基本一致,另外,还需要提供一个alist的账号密码,为了来获取执行api search的post的headers令牌,说明看这里:https://alist.nn.ci/zh/guide/api ... n%E8%8E%B7%E5%8F%96https://alist.nn.ci/zh/guide/api ... 7%E4%BB%B6%E5%A4%B9, 如果谁有更好的办法可以交流一下。

感谢原贴大佬@silas3082的支持,才能有这个,谢谢。
[
    {
        "id": "4c07a07b87513251",
        "type": "template",
        "z": "74176f609151451e",
        "name": "python NAS加token电影脚本",
        "field": "payload",
        "fieldType": "msg",
        "format": "python",
        "syntax": "mustache",
        "template": "import requests\nimport json\n\n# 获取Authorization\nauth_url = "http://192.168.1.247:5244/api/auth/login"\nauth_payload = {\n    "username": "你的账号",\n    "password": "你的密码"\n}\n\nauth_response = requests.post(auth_url, json=auth_payload)\n\n# 检查获取Authorization的响应状态码\nif auth_response.status_code == 200:\n    try:\n        auth_data = auth_response.json()\n        token = auth_data["data"]["token"]\n        \n        # 使用获取到的Authorization进行请求\n        url = "http://192.168.1.247:5244/api/fs/search"\n        payload = {\n            "keywords": "{{payload}}",\n            "page": 1,\n            "parrent": "/",\n            "password": "",\n            "per_page": 100,\n            "scope": 0\n        }\n        \n        headers = {\n            "Authorization": token\n        }\n        \n        response = requests.post(url, json=payload, headers=headers)\n                # 检查响应状态码\n        if response.status_code == 200:\n            try:\n                # 解析响应数据\n                data = response.json()\n\n                # 获取type等于2的结果,并提取parent和name合并为url\n                urls = ["http://192.168.1.247:5244/d" + item["parent"] + "/" + item["name"] for item in data["data"]["content"] if item["type"] == 2]\n                if urls:\n                    # 获取第一个URL的结果\n                    first_url_result = urls[0]\n\n                    print(first_url_result)\n\n                    # 保存第一个URL的结果到本地文件\n\n                else:\n                    print("没有找到包含满足条件的电影。")\n            except json.JSONDecodeError:\n                print("url响应数据格式不正确,无法解析 JSON 数据。")\n        else:\n            print(f"请求失败,状态码: {response.status_code}")\n        \n    except json.JSONDecodeError:\n        print("令牌响应数据格式不正确,无法解析 JSON 数据。")\nelse:\n    print(f"获取令牌失败,状态码: {auth_response.status_code}")",
        "output": "str",
        "x": 200,
        "y": 360,
        "wires": [
            [
                "ce7ae6436c0af95a"
            ]
        ]
    }
]






python for xiaoai play nas.zip

1.18 KB, 下载次数: 10

售价: 1 金钱  [记录]

导入节点

评分

参与人数 3金钱 +36 收起 理由
DDDear + 10 感谢楼主分享!
隔壁的王叔叔 + 10 厉害了word楼主!
sorrypqa + 16 感谢楼主分享!

查看全部评分

回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-28 16:43 , Processed in 0.175404 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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