群晖的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登陆并开始摸索。
01.png
经过一番摸索,群晖DSM6.0的登陆壁纸实际保存位置是

/usr/syno/etc/login_background_hd.jpg

/usr/syno/etc/login_background.jpg

其他位置都是软链接到这个地方。

ssh下执行替换命令需要sudo。而幸运的是群晖的计划任务是支持root用户执行的。

所以就开始来弄个shell实现每天自动换壁纸啦~

首先在任务计划设置里面选择新增 计划的任务–> 用户定义的脚本
02.png
03.png
由于我们要先调试,所以运行频率选择每一分钟,从00:00到23:59,测试成功后再修改。
04.png
然后转到任务设置这里,在用户自定义的脚本文本框里面粘贴如下脚本:

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

05.png
注意,图中是/volume1/web/目录是我设置的下载的壁纸存放目录,你应该修改为你自己的下载目录。在File Station里面右键可以看到自己当前目录的路径。ln -sf 是建立图片到bing壁纸的软链接。

等一分钟后看一下效果:
06.png
嗯。挺棒!

DSM桌面壁纸自动更换

不过我们还注意到DSM登录的设置里面还有个欢迎标题和欢迎信息,位于左上角。

而bing每日美图都有个小标题和简介:
07.png
所以就又有想法了,把这个小标题和简介自动替换到设置里面!

很快找到了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/homes/admin/Wallpaper/bing.jpg"
#如果需要收集保存每日美图可去掉注释
#保存路径path,请设置自己的文件夹,在FileStation里面右键文件夹属性可以看到路径
#path="/volume1/wallpaper/"
#name="$(date +'%Y%m%d')_bing.jpg"
#save=$path$name
wget "https://bing.com$(curl -s "https://bing.com/HPImageArchive.aspx?format=js&idx=0&n=1"|sed 's/.\+"url"[:" ]\+//g'|sed 's/".\+//g')" -qO $save
story=$(curl -s https://www4.bing.com/cnhp/coverstory)
sed -i s/login_background_customize=.*//g /etc/synoinfo.conf
echo login_background_customize=\"yes\">>/etc/synoinfo.conf
ln -sf $save /usr/syno/etc/login_background_hd.jpg
ln -sf $save /usr/syno/etc/login_background.jpg
if (echo $story|grep attribute) then
sed -i s/login_welcome_title=.*//g /etc/synoinfo.conf
echo "login_welcome_title=\"$(echo $story|sed 's/.\+"title"[: "]\+//g'|sed 's/",".\+//g')\"">>/etc/synoinfo.conf
sed -i s/login_welcome_msg=.*//g /etc/synoinfo.conf
echo "login_welcome_msg=\"$(echo $story|sed 's/.\+"attribute"[: "]\+//g'|sed 's/",".\+//g')\"">>/etc/synoinfo.conf
fi
#设置用户桌面背景
ln -sf $save /usr/syno/etc/preference/admin/wallpaper

注1:login_background_customize是开启自定义脚本,为了解决在没有设置自定义壁纸的情况下脚本的问题。

注2:如果需要同时设置桌面的壁纸,可以把最后一行的注释去掉,把admin改为你的用户名。

记得把计划任务的时间间隔调一下,每分钟执行就没必要啦,我设置的是每4小时。如果你的群晖24小时开着,设置每天零点以后,或者凌晨几点运行一次就行了。

最终效果展示(点击查看大图)

08.png

相关链接

本文转载至:https://03k.org/dsm-bing.html

原文博主Github项目链接:https://github.com/lixuy/DSM_Login_BingWallpaper

Last modification:May 28th, 2019 at 08:25 pm
给鱼丸买瓶饮料