我想要的效果很小:网易云在放歌的时候,窗口背后有一层会动的画面。桌面本身该什么样还什么样。
现成的做法基本都要 Wallpaper Engine(Steam 上的付费软件),而且是铺满整个桌面,网易云窗口压在上面照旧是一块死板的深色。索性自己写了一个。
解压就能用。下面说清它干什么、有什么毛病,以及代码是谁写的。
它做两件事,别搞混
窗口背景:把一段 mp4 当成网易云的背景在放。歌在响,画面在动,播放条和歌词照样看得清——它们压在视频上面的一层半透明玻璃上。这个不需要 Wallpaper Engine,装完就能用。
桌面壁纸:把正在播的封面、歌名、歌词画到真实桌面上。这个需要 Wallpaper Engine,包里带的是一个 WE 工程,没装就用不了——但不影响上面那条。
两个都能叫「动态壁纸」,最容易混的就是这里。我只开第一个:桌面留干净,画面只出现在网易云窗口里。
三步
- 解压到任意位置;
- 双击里面的
网易云动态壁纸.exe; - 点【安装】。
路上有两个岔口。没找到 Node.js 会弹窗,点「自动下载 Node 便携版」就行,约 30 MB,走国内镜像,不写注册表、不改 PATH、也不动系统里已经装着的 Node。没找到网易云会弹窗让你指定 cloudmusic.exe。
装完它会自动启动一次:拉起数据桥 → 用调试模式启动网易云 → 注入画面 → 打开换壁纸页面。以后每次用,双击桌面上那个快捷方式。换壁纸的页面是 http://127.0.0.1:3210/switch,一格格缩略图,点「应用」当场就换。
包里没有壁纸
这是我定的:一个壁纸都不放。视频素材的来源和授权我管不了,我能决定的只有自己的代码怎么发。
所以下载包里 wallpapers 是个空文件夹,装完也是空的,不会因为没放 mp4 就报错。要加:把任意 .mp4 / .webm / .mkv / .mov 丢进安装目录下的 wallpapers(默认在 D 盘的 NeteaseWallpaper,没有 D 盘就落到当前用户目录),刷新页面就能看到。你自己放进去的文件,以后再点【安装】也不会被覆盖。
两个必须先说的提醒
exe 没有数字签名。 第一次双击会被 Windows SmartScreen 拦一下,标题是「Windows 已保护你的电脑」,说的是未知发布者,不是文件坏了——点「更多信息」,再点「仍要运行」。个人小工具,没买签名证书。
杀毒软件可能报警。 它的工作方式是给网易云加一个 --remote-debugging-port 启动参数,再用 Chrome DevTools 协议读网易云自己的页面、往里注入一层视频。从杀软的角度看这就是「远程调试 + 注入界面」,个别国产全家桶会拦,加白名单即可。它全程只写自己的目录、桌面快捷方式和当前用户的自启项,不需要管理员权限,也不改网易云安装目录里的任何文件。
有一件事我觉得做得挺值
读取「现在在放什么」,常见做法是截屏识别或者扒窗口标题猜进度,都不准。
网易云本身就是 Chromium 内核的应用(我用的是 3.1.41,CEF,Chromium 91),带上调试参数启动后会在 127.0.0.1 上开一个端口。工具连上去直接读它的播放器 DOM:进度条那个 input[type=range] 的 value 和 max,单位是秒,所以进度是精确值而不是估算;歌词列表就在页面里、时间戳也在,连歌词接口都不用打;歌曲 id 写在播放条的 data-log 里,查元数据零歧义。
不加启动参数也照常能用,只是自动降级:数据源从 cdp 换成窗口标题,进度变成估算,歌词改走网易云接口,封面歌名都不受影响。反向控制播放(上一首、暂停)只有调试端口这条路能做,服务本身只用 Node 内置模块、只绑回环地址。
谁写的
代码是 DeepSeek 写的,需求和验收是我定的。分工值得摊开说,不然「用 AI 写的」这四个字没什么信息量。
我定的部分:要什么效果(背景要有画面,但压在它上面的歌词必须看得清);不能碰的线(不改网易云安装目录、不要管理员权限、卸载只许结束它自己启动的那个 node、不许误杀我别的 node);验收方式(真机上跑,界面得是我眼睛看到的样子)。
它写的部分:数据桥、CDP 那一套、注入器、C# 安装器、换壁纸网页、打包脚本,还有文档。文档占的分量不小:哪条选择器拿哪个字段、出问题怎么查、给陌生人看的三步说明,都是它写的。它写文档的好处是愿意把「为什么非得这么写」一起写上,不只列步骤。
它也错,而且错得很有代表性——都不是语法错误,是只有真机上才暴露的东西:
- 启动脚本一开始带着中文注释。cmd.exe 按控制台代码页读
.cmd,中文被从中间截断,双击以后什么都不发生,也不报错。现在那个文件强制纯 ASCII,文件头写着「别顺手清理」。 - PowerShell 脚本必须带 UTF-8 BOM。PS 5.1 只认带 BOM 的 UTF-8,没有就按 GBK 读,中文注释直接把脚本读崩。
- 它以为注入用的脚本注册一次就长期有效。实测是调试连接一断,注册就没了,网易云刷新页面也不会自动恢复。这才有了
--keep-alive。
这几条现在都写在文档最显眼的位置。这个仓库给开发 agent 立的规矩里有一条:结论要对着现场核对,不能只读仓库。小工具的文档是同一条规矩的另一种写法:那张选择器表上标着「全部实机探测得出,不是猜的」,因为猜的那些都错了。
现在还不行的地方
只支持网易云 3.x(CEF 内核)。2.x 和更老的版本会在安装时报错并中止,不会装一半。判断依据是 cloudmusic.exe 旁边有没有 libcef.dll。
注入是运行时的。 网易云重启一次就得重跑一遍(点一下快捷方式),嫌烦可以用 --keep-alive 自己恢复。网易云升级也可能改界面结构,玻璃那部分是运行时扫出来的背景色,退化表现是「没效果」而不是「界面坏掉」,所有改过的地方都记着原值,一键还原。
桌面壁纸那一项要 Wallpaper Engine。 没装的话安装时探测不到,会弹一个说明框,措辞是「正常降级」,不是报错;探测读的是注册表和常见安装目录,装在偏门位置可能探不到——不代表你没装,装好 WE 再点一次【安装】就行。真出别的毛病,看安装目录下的 install.log 和 service.log,界面上也实时打印原因。
下载
- 地址:https://music.yunblog.com.cn/netease-wallpaper-portable.zip
- 大小:183,164 字节(179 KB)
- SHA-256:
74C02D98105567AF74B61832CBD0BE1DACEB64FE0DEEF0BA55277EE64FDE9FFC
包里除了 exe,还有全部运行时文件、installer 下的安装器源码(想重编,系统自带编译器就够)和两份说明;日志、截图、缓存、便携 Node 都没打进去。
用着有意见或者发现哪里不对,留言说一声。
