群晖的DSM登录界面可以自己设置壁纸,可惜只能选择一张图片~如果登录界面能每天自动换壁纸就很棒了啊~
那么想法来了:用群晖的计划任务执行脚本,每天下载一个新壁纸,然后自动替换。
首先我们要找到一个壁纸源啦~
emmm,bing搜索的每日美图挺不错的,就它吧!~
很快就找到了每日美图的一个api
http://bing.com/HPImageArchive.aspx?format=js&idx=0&n=1
稍微处理下,实现用shell提取壁纸地址:
echo https://cn.bing.com/$(curl -s "http://bing.com/HPImageArchive.aspx?format=js&idx=0&n=1"|grep -Po 'url[" :]+\K[^"]+')
今日美图壁纸拿到手了,接下来是怎么替换的问题。
幸好群晖DSM系统支持SSH登陆,轻轻松松就设置了SSH登陆并开始摸索。。
经过一番摸索,群晖DSM6.0的登陆壁纸实际保存位置是
/usr/syno/etc/login_background_hd.jpg
/usr/syno/etc/login_background.jpg
其他位置都是软链接到这个地方。
ssh下执行替换命令需要sudo。而幸运的是群晖的计划任务是支持root用户执行的。
所以就开始来弄个shell实现每天自动换壁纸啦~
首先在任务计划设置里面选择新增
计划的任务–> 用户定义的脚本
由于我们要先调试,所以运行频率选择每一分钟,从0000到2359,测试成功后再修改;
然后转到任务设置这里,在用户自定义的脚本文本框里面粘贴如下脚本:
save="/volume1/web/bing.jpg"
wget "https://cn.bing.com/$(curl -s "http://bing.com/HPImageArchive.aspx?format=js&idx=0&n=1"|grep -Po 'url[" :]+\K[^"]+')" -qO $save
ln -sf $save /usr/syno/etc/login_background_hd.jpg
ln -sf $save /usr/syno/etc/login_background.jpg
注意,图中是/volume1/web/目录是我开了web station之后的目录,你应该修改为你自己的下载目录。在File Station里面右键可以看到自己当前目录的路径。ln -sf 是建立图片到bing壁纸的软链接。
等一分钟后看一下效果:
嗯。挺棒!
不过我们还注意到DSM登录的设置里面还有个欢迎标题和欢迎信息,位于左上角。
而bing每日美图都有个小标题和简介:
所以就又有想法了,把这个小标题和简介自动替换到设置里面!
很快找到了bing的美图描述的api:
https://cn.bing.com/cnhp/coverstory
在群晖的ssh里面摸索一会找到了存储标题信息的地方,直接是个明文配置文件而不是数据库,这下修改就方便啦~
配置文件位置:
欢迎标题/etc/synoinfo.conf 的login_welcome_title的值
欢迎信息/etc/synoinfo.conf的login_welcome_msg的值
用脚本实现自动替换:
story=$(curl -s https://cn.bing.com/cnhp/coverstory)
title=$(echo $story|grep -Po 'title[" :]+\K[^"]+')
attribute=$(echo $story|grep -Po 'attribute[" :]+\K[^"]+')
sed -i s/login_welcome_title=.*/login_welcome_title=\"$title\"/g /etc/synoinfo.conf
sed -i s/login_welcome_msg=.*/login_welcome_msg=\"$attribute\"/g /etc/synoinfo.conf
综合一下上面的脚本:
save="/volume1/web/bing.jpg"
wget "https://cn.bing.com/$(curl -s "http://bing.com/HPImageArchive.aspx?format=js&idx=0&n=1"|grep -Po 'url[" :]+\K[^"]+')" -qO $save
sed -i s/login_background_customize=.*/login_background_customize=\"yes\"/g /etc/synoinfo.conf
ln -sf $save /usr/syno/etc/login_background_hd.jpg
ln -sf $save /usr/syno/etc/login_background.jpg
story=$(curl -s https://cn.bing.com/cnhp/coverstory)
title=$(echo $story|grep -Po 'title[" :]+\K[^"]+')
attribute=$(echo $story|grep -Po 'attribute[" :]+\K[^"]+')
sed -i s/login_welcome_title=.*/login_welcome_title=\"$title\"/g /etc/synoinfo.conf
sed -i s/login_welcome_msg=.*/login_welcome_msg=\"$attribute\"/g /etc/synoinfo.conf
#ln -sf $save /usr/syno/etc/preference/admin/wallpaper
注1:login_background_customize是开启自定义脚本,为了解决在没有设置自定义壁纸的情况下脚本的问题。
注2:如果需要同时设置桌面的壁纸,可以把最后一行的注释去掉,把admin改为你的用户名。
记得把计划任务的时间间隔调一下,每分钟执行就没必要啦,我设置的是每4小时。如果你的群晖24小时开着,设置每天零点以后,或者凌晨几点运行一次就行了。
最终效果展示(点击图片查看大图):
Github丢了一份,觉得有用的可以点个赞:
https://github.com/lixuy/DSM_Login_BingWallpaper
原文链接:https://03k.org/dsm-bing.html