群晖的DSM登录界面可以自己设置壁纸,可惜只能选择一张图片~如果登录界面能每天自动换壁纸就很棒了啊~
那么想法来了:用群晖的计划任务执行脚本,每天下载一个新壁纸,然后自动替换。
首先我们要找到一个壁纸源啦~
emmm,bing搜索的每日美图挺不错的,就它吧!~
很快就找到了每日美图的一个api
稍微处理下,实现用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的登陆壁纸实际保存位置是
/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:
在群晖的ssh里面摸索一会找到了存储标题信息的地方,直接是个明文配置文件而不是数据库,这下修改就方便啦~
配置文件位置:
欢迎标题/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
原文链接:https://03k.org/dsm-bing.html
本站博文无特别声明均为原创,转载请注明原文链接。本站软件均搜集自互联网,供学习研究之用,请下载后24小时内删除。
疑问OR交流点我加QQ群喵喵喵!
必须预选一张默认壁纸,才能用这个脚本.不然开启不了.真尴尬,折腾了一整天得出个这个结论……
脚本已更新,无需设置。
在DSM 6.1.4-15217 Update 5 跑不起来.话说,有没有办法替换桌面的壁纸
脚本已经更新,去掉最后一行的注释并修改admin为你的用户名即可。
windows10/7 有什么方法可以这样弄吗?
这是写给DSM用的,如果你想要windows的,已经有人写过了,我就不弄轮子了,可以参考这个:https://github.com/Sauler/WallpaperSync