群晖的DSM登录界面可以自己设置壁纸,可惜只能选择一张图片~如果登录界面能每天自动换壁纸就很棒了啊~
那么想法来了:用群晖的计划任务执行脚本,每天下载一个新壁纸,然后自动替换。
首先我们要找到一个壁纸源啦~
emmm,bing搜索的每日美图挺不错的,就它吧!~
很快就找到了每日美图的一个api
1 |
http://bing.com/HPImageArchive.aspx?format=js&idx=0&n=1 |
稍微处理下,实现用shell提取壁纸地址:
1 |
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的登陆壁纸实际保存位置是
1 2 |
/usr/syno/etc/login_background_hd.jpg /usr/syno/etc/login_background.jpg |
其他位置都是软链接到这个地方。
ssh下执行替换命令需要sudo。而幸运的是群晖的计划任务是支持root用户执行的。
所以就开始来弄个shell实现每天自动换壁纸啦~
首先在任务计划设置里面选择新增 计划的任务–> 用户定义的脚本
由于我们要先调试,所以运行频率选择每一分钟,从0000到2359,测试成功后再修改;
然后转到任务设置这里,在用户自定义的脚本文本框里面粘贴如下脚本:
1 2 3 4 |
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:
1 |
https://cn.bing.com/cnhp/coverstory |
在群晖的ssh里面摸索一会找到了存储标题信息的地方,直接是个明文配置文件而不是数据库,这下修改就方便啦~
配置文件位置:
1 2 |
欢迎标题/etc/synoinfo.conf 的login_welcome_title的值 欢迎信息/etc/synoinfo.conf的login_welcome_msg的值 |
用脚本实现自动替换:
1 2 3 4 5 |
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 |
综合一下上面的脚本:
1 2 3 4 5 6 7 8 9 10 11 |
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
如果有问题可以点击左边菜单的【加入电报群】和我一起沟通,或者留言咨询我!
赞赏微信赞赏
支付宝赞赏
本地photo图片可以自动换壁纸操作吗?
群晖photo图片可以自动换壁纸操作吗?
可以 但是需要自己写脚本