飞牛 fnOS 每日全自动轮换 Bing4K壁纸(带旧图自动清理+开机自启)
新手一枚,刚装系统不久发现没有bing轮换,自己又懒得手动上传,那就折腾一下吧,但实操后会发现一个大坑:飞牛系统的自定义壁纸不是存在普通文件夹里的,而是转换后塞进了底层数据库。 这导致传统的“直接替换系统图片文件”的玩法完全失效。
为了攻克这个堡垒,就得通过一段轻量级的 Python 脚本,伪装成我们在网页上的操作,直接调用飞牛官方的接口来实现全自动换壁纸。
这套方案完美实现了四大功能:
- 🌟 极致画质:强行拉取必应服务器的 4K UHD 级最高画质原图。
- 🔄 全自动轮换:每天凌晨自动更换,无需人工干预。
- 🧹 阅后即焚(防堆积):每天换新图前,自动调用接口彻底删掉昨天的那张旧壁纸,绝不占用 NAS 硬盘空间!
- 🛡️ 防漏更机制:加入开机自启延时补偿,即便 NAS 重启错过了定点时间,开机后也会自动补刷。

🛠️ 准备工作
- 在飞牛系统的网页设置中,开启 SSH 终端功能。
- 使用终端软件(如 PuTTY、系统自带终端等)连接到飞牛,输入
sudo -i 切换为 root 最高权限。
- 准备一台电脑,使用 Chrome 或 Edge 浏览器。
🟢 第一步:抓取你的专属“API 通行证”
要让脚本全自动伪装成你来更换壁纸,必须先拿到你的身份密钥。

- 登录飞牛网页桌面,按下键盘
F12 打开开发者工具。
- 切换到 “Network”(网络) 面板,点击过滤器中的 “Fetch/XHR”,然后点击左上角的“🚫”图标清空当前记录。
- 在飞牛桌面的“个人设定 -> 壁纸”里,手动上传一张任意的本地图片并设置为壁纸。
- 网络面板中会立刻弹出一个名为
uploadWallpaper 的请求,点击它。
- 在右侧的 “Request Headers”(请求标头) 中,找到并复制以下两项机密数据,先保存到记事本:
Authorization(通常是一串以 trim 开头的长字符)
Cookie(包含 fnos-token=... 和 SID=... 的长字符串)
🟢 第二步:一键部署终极 Python 脚本
在 SSH 终端里(确保已是 root 身份),直接复制以下整段代码并回车执行。
⚠️ 极其重要:在粘贴运行前,请务必先把下方代码中的 auth_token 和 cookie_data 替换成你刚刚抓取到的真实数据!

Bash
cat << 'EOF' > /root/bing_wallpaper.py
import urllib.request
import json
import os
import subprocess
import re
# ================= 基础配置 =================
api_url = "https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN"
tmp_jpg = "/tmp/bing_temp.jpg"
id_file = "/root/bing_wallpaper_id.txt"
# ================= ⚠️ 身份令牌(请修改) ⚠️ =================
auth_token = "填入你的 Authorization 数据"
cookie_data = "填入你的 fnos-token 和 SID 数据"
# =========================================================
try:
# 【1. 尝试清理昨天的旧壁纸 (阅后即焚)】
if os.path.exists(id_file):
with open(id_file, 'r') as f:
old_id = f.read().strip()
if old_id.isdigit():
print(f"0. 发现昨日壁纸 ID [{old_id}],正在执行自动清理...")
del_cmd = [
"curl", "-s", "-X", "POST",
"http://127.0.0.1:5666/sac/desktop/v1/removeWallpaper",
"-H", "Accept: application/json, text/plain, */*",
"-H", "Content-Type: application/json",
"-H", f"Authorization: {auth_token}",
"-H", f"Cookie: {cookie_data}",
"-d", f'{{"wallpaperId": {old_id}}}'
]
subprocess.run(del_cmd, capture_output=True)
print(" ✅ 旧壁纸已被彻底抹除,释放系统空间。")
# 【2. 获取并下载今日 4K UHD 新壁纸】
print("1. 获取今日必应 4K 壁纸链接...")
response = urllib.request.urlopen(api_url)
data = json.loads(response.read().decode('utf-8'))
image_url = "https://www.bing.com" + data['images'][0]['urlbase'] + "_UHD.jpg"
print("2. 下载 4K 图片到 NAS 临时目录...")
urllib.request.urlretrieve(image_url, tmp_jpg)
# 【3. 调用官方 API 上传新壁纸】
print("3. 正在伪装身份向飞牛官方 API 提交上传请求...")
upload_cmd = [
"curl", "-s", "-X", "POST",
"http://127.0.0.1:5666/sac/desktop/v1/uploadWallpaper",
"-H", "Accept: application/json, text/plain, */*",
"-H", f"Authorization: {auth_token}",
"-H", f"Cookie: {cookie_data}",
"-F", f"file=@{tmp_jpg}"
]
result = subprocess.run(upload_cmd, capture_output=True, text=True)
out_text = result.stdout
# 【4. 提取 ID,强制应用桌面并保存记录】
match = re.search(r'"wallpaperId"\s*:\s*(\d+)', out_text)
if match:
new_id = match.group(1)
print(f"4. 上传成功!获取到今日新壁纸专属 ID [{new_id}]")
print("5. 正在强制应用到桌面...")
set_cmd = [
"curl", "-s", "-X", "POST",
"http://127.0.0.1:5666/sac/desktop/v1/setWallpaper",
"-H", "Accept: application/json, text/plain, */*",
"-H", "Content-Type: application/json",
"-H", f"Authorization: {auth_token}",
"-H", f"Cookie: {cookie_data}",
"-d", f'{{"wallpaperId": {new_id}, "wallpaperType": 100}}'
]
subprocess.run(set_cmd, capture_output=True)
with open(id_file, 'w') as f:
f.write(new_id)
print(f"6. 新 ID 已存入记事本,等待明日自动清理。")
else:
print(f"⚠️ 警告:未能从服务器返回值中提取到 ID。返回数据:{out_text}")
if os.path.exists(tmp_jpg):
os.remove(tmp_jpg)
print("🎯 4K 终极全自动(带阅后即焚)脚本执行完毕!请刷新飞牛桌面查看。")
except Exception as e:
print(f"❌ 运行报错: {e}")
EOF
🟢 第三步:手动验测

部署完成后,在终端输入以下命令执行一次:
Bash
python3 /root/bing_wallpaper.py
终端跑完进度后,回到浏览器按下 F5 刷新飞牛网页。如果桌面变成了极其锐利的必应 4K 壁纸,说明底层逻辑已彻底跑通!🎉
🟢 第四步:设置“每日定点 + 开机防漏更”双保险
为了让系统彻底脱离人工干预,我们需要配置系统的定时任务。

-
在终端输入命令打开定时任务编辑器:
Bash
crontab -e
(如果提示选择编辑器,按键盘上的数字选择 nano 即可)
-
在文件最底部,新起两行,加入以下两段代码:
Bash
# 每天凌晨 00:05 自动执行一次轮换和清理
5 0 * * * /usr/bin/python3 /root/bing_wallpaper.py
# 每次 NAS 重启后,延时 60 秒(等待网络和 API 启动)再补刷一次壁纸
@reboot sleep 60 && /usr/bin/python3 /root/bing_wallpaper.py
-
按下 Ctrl + O 保存,按 Enter 确认,再按 Ctrl + X 退出。

至此,大功告成!享受每天不重样的 4K 桌面吧。