Nuclear 30分钟上手:一个免费音乐播放器、三套控制接口和一个自动补歌脚本

Nuclear 30分钟上手:一个免费音乐播放器、三套控制接口和一个自动补歌脚本 Nuclear 30分钟上手一个免费音乐播放器、三套控制接口和一个自动补歌脚本【免费下载链接】nuclearStreaming music player that finds free music for you项目地址: https://gitcode.com/GitHub_Trending/nu/nuclearNuclear 是一个开源的免费音乐流媒体播放器无广告、无追踪搜到什么就能听什么。如果你想把桌面音乐播放器换成一个可远程、可脚本化、还能接 AI 的播放器这篇就是最短路径。先跑起来这一节回答Nuclear 怎么装、装完 2 分钟内怎么确认它能用。Linux 用 Flatpak 一条命令装好macOS 把 dmg 拖进 Applications首次右键 Open 绕过 GatekeeperWindows 直接跑安装包。# Linux 安装并启动 flatpak install flathub com.nuclearplayer.Nuclear flatpak run com.nuclearplayer.Nuclear启动后能看到 Dashboard 欢迎页再打开 设置 → Integrations把 Nuclear Jam 打开页面会出现 Remote URL 和 API URL形如http://192.168.1.42:4120/api。看到这行 API URL说明环境 OK——后面所有脚本和控制接口都以它为入口。能力拆解这一节把 Nuclear 的外部能力按三个高频场景拆开搜歌、控制播放、复用老工具。用 HTTP API 搜歌并进队Jam 打开后遥控器网页的同一台服务器还暴露 HTTP API可以搜歌、加队列但它读不了本地文件——Nuclear 没有本地曲库概念一切皆流媒体。# 搜一首歌URL 换成你的 API URL BASEhttp://192.168.1.42:4120/api curl -s $BASE/search -H Content-Type: application/json \ -d {query: Radiohead}返回 JSON 里的tracks数组带每首歌的id、标题、歌手整个数组丢给/queue/add就能直接进队。最容易踩的坑没装元数据插件时tracks会是空数组先回插件商店装一个。把播放、暂停、跳转写成脚本所有播放控制都是无返回值的 POST200 即成功想盯状态变化可以挂/api/events的 SSE 流不用轮询。# 播放、跳到 30 秒、打开随机 curl -s -X POST $BASE/playback/play curl -s -X POST $BASE/playback/seek -H Content-Type: application/json -d {seconds: 30} curl -s -X POST $BASE/playback/shuffle -H Content-Type: application/json -d {enabled: true}三条都回空即生效当前状态用GET /api/playback查。注意队列为空时命令照样发出去但会失败返回 500body 里带error字段。用老 MPD 工具控制桌面播放器内置 MPD 兼容服务器支持状态、播放、队列、音量与 idle 推送但不支持曲库浏览mpc、ncmpcpp这类现成工具直接连。# 装好 mpc 后直接连默认 127.0.0.1:6600 mpc status mpc next马上能看到播放状态和队列。坑在端口6600 被占时 Nuclear 会自动往 6601–6609 顺延连不上先对照设置页显示的地址export MPD_PORT6601。小项目这一节把前面的 API 串成一个 30 行的自动补歌脚本按关键词轮播搜索每 10 分钟往队列塞 3 首歌并打印当前播放状态只用到标准库。#!/usr/bin/env python3 自动补歌脚本查状态 - 搜歌 - 加队列 import json, time, urllib.request BASE http://192.168.1.42:4120/api # 换成你的 API URL QUERIES [chill jazz, lofi hip hop, city pop] def get(path): return json.load(urllib.request.urlopen(BASE path)) def post(path, bodyNone): req urllib.request.Request( BASE path, json.dumps(body or {}).encode(), methodPOST) req.add_header(Content-Type, application/json) return json.load(urllib.request.urlopen(req)) if get(/health).get(status) ! ok: # 先确认 Jam 开着 raise SystemExit(API 连不上请先开启 Nuclear Jam) i 0 while True: q QUERIES[i % len(QUERIES)] tracks post(/search, {query: q, limit: 5}).get(tracks, []) if tracks: post(/queue/add, {tracks: tracks[:3]}) # 每次塞 3 首 pb get(/playback) print(f[{time.strftime(%H:%M:%S)}] 3 首状态{pb[status]}) i 1 time.sleep(600) # 每 10 分钟补一轮运行方式python3 auto-queue.py # [22:01:03] 3 首状态playing预期是每 10 分钟打印一行时间戳和播放状态同时 Nuclear 右侧队列面板各多 3 首歌没打印就先核对 BASE 地址和 Jam 开关。踩坑速查这一节回答脚本连不上、搜索没结果这类高频问题的最快排查路径。问题大概率原因一行解法curl 连 4120 端口被拒Jam 没开或设备不在同一局域网到 设置 → Integrations 核对 API URLsearch 返回空数组没装元数据插件或数据源失效在插件商店装一个 metadata 插件mpc 连不上端口不是 6600被占时自动顺延export MPD_PORT6601以设置页为准macOS 拦截启动没有 Apple 开发者签名右键 Open或sudo xattr -r -d com.apple.quarantine /Applications/Nuclear.app三套集成服务器端口区间不同Jam 用 4120–4129MPD 用 6600–6609MCP 用 8800–8809均自动顺延。还能往哪走这一节给三个顺着本项目继续深入的入口。用 TypeScript 写自己的 provider 插件元数据、流媒体、仪表盘注册流程见 packages/docs/plugins/providers.md。把播放器接进 AI 助手内置 MCP 服务器暴露 4 个工具发现与调用流程见 packages/docs/integrations/mcp-server.md。换皮肤除内置与社区主题商店外还支持 CSS 变量写进阶主题见 packages/docs/themes/themes.md。【免费下载链接】nuclearStreaming music player that finds free music for you项目地址: https://gitcode.com/GitHub_Trending/nu/nuclear创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考