type
Post
status
Published
date
Mar 5, 2022
slug
tasker-switch-wallpaper
summary
介绍使用Tasker实现定时自动随机切换壁纸的两种方法, 分别依赖网络api和本地图片
tags
tasker
category
技术分享
icon
password
本教程将使用Tasker搭配网络上各种图片api或者存放在本地的图片来实现定时自动随机切换壁纸
环境: ArrowOS v11.0 (Android11[ROOT]), 但理论上本教程所进行的操作均无需ROOT

本地图片版

从本地的图片文件夹随机选择一张作为壁纸/锁屏,
一来应对流量不足的情况, 二来可以定向的抽取本地保存的好图

1.列出文件

notion image
目录 : 填写存放壁纸图片的文件夹路径;
排列所选项 : 随便选, 反正等下还要混洗;
数组 : 填写一个局部变量名, %+小写英文即可, 不要大写, 这个任务没必要搞全局变量, 这里我们以pics为例

2. 数组处理

notion image
数组 : 填写%pics
类型 : 选择混洗

3. 设置壁纸

notion image
类型 : 根据自身需要选择
图像 : 填写%pics1, 亦即%+之前取的变量名+1,也就是取出混洗过的数组中的第一个元素
比例缩放 , 裁切 : 根据自身图库中分辨率和实际勾选后效果自行勾选

完成

notion image
以上, 任务本身的编写已经完成, 接下来只需要在Taser的 配置文件 栏中建立一个定时配置文件(e.g. 从07:30 每30分 直到23:30), 然后选择这个本地任务即可. 如果不希望图片随机, 而是希望能够选择比如最新加入的图片这种, 可以省去第二步, 在列出文件时寻找适合的排列即可.

网络api版

本地图片版的确够用, 但如果我希望能够得到更随机的结果呢? 我希望每次打开手机, 壁纸都是我几乎没见过的图片——并且是我所期待的相关主题的, 而不是纯粹的未知. 这就需要一个允许查询参数的图片api, 这里我们选择unsplash的开发者api进行编写, 其申请十分简单, 网上有各种教程可以参考.
unsplash开发者api的申请链接
申请成功后, 在你申请的app界面可以找到下图中的AccessKey
notion image
记录图中标注的 Access Key , 等下要用

1.HTTP Request

notion image
方法 : 选择 GET , 这一步的任务是从unsplash的api中获取图片的json信息
URL : 填写 https://api.unsplash.com/photos/random
查询字段 : 这里有两个字段, 只有一个是必要的, 即 client_id , 填写上文获取到的 Access Key , 而另一个 query 则是用于unsplash查询的参数, 这里我填写的是sapce, 那么接下来我得到的图片就相当从unsplash搜索space得到的图片中随机返回一个
notion image
超时 : 可以设置的长一些, 毕竟不需要实时响应, 而且大部分unsplash的图片还是蛮大的
自动重定向 : 勾选, 通过api查询的过程中涉及重定向

2.变量搜索替换

notion image
变量 : 填写%http_data, 因为前文从http get中得到的数据会默认保存在这个局部变量中
搜索 : 这里要填写正则表达式(?≤full”:”).+?(?=”,”regular), 理由等下讲
只匹配一次 : 勾选, 虽然一般没什么用
将匹配项存储在数组中 : 仍然填写%http_data, 懒得取名
搜索 中, 第一步查询中%http_data中的数据包含图片的许多信息, 以一次以space为关键词的查询为例, %http_data的内容如下:
{ "id":"-cKXtsJWU-I", "created_at":"2017-09-09T10:47:25-04:00", "updated_at":"2022-03-04T03:02:14-05:00", "promoted_at":"2017-09-09T14:23:14-04:00", "width":4272, "height":2848, "color":"#0c2626", "blur_hash":"L0261:v]-o-p4:9tESE1-M?I$x%N", "description":"I took this star trail at Mabini, Batangas, Philippines way back in 2015. It was the first time I took this kind of star trail utilizing the position of the North Star (Polaris) at the sky, which seems to produce circular path of stars because the Earth rotates with Polaris right above the rotational axis.", "alt_description":null, "urls":{ "raw":"https://images.unsplash.com/photo-1504966981333-1ac8809be1ca?ixid=MnwxNDcwNTJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE2NDY0NjcxODc\u0026ixlib=rb-1.2.1", "full":"https://images.unsplash.com/photo-1504966981333-1ac8809be1ca?crop=entropy\u0026cs=srgb\u0026fm=jpg\u0026ixid=MnwxNDcwNTJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE2NDY0NjcxODc\u0026ixlib=rb-1.2.1\u0026q=85", "regular":"https://images.unsplash.com/photo-1504966981333-1ac8809be1ca?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxNDcwNTJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE2NDY0NjcxODc\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=1080", "small":"https://images.unsplash.com/photo-1504966981333-1ac8809be1ca?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxNDcwNTJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE2NDY0NjcxODc\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=400", "thumb":"https://images.unsplash.com/photo-1504966981333-1ac8809be1ca?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxNDcwNTJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE2NDY0NjcxODc\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=200", "small_s3":"https://s3.us-west-2.amazonaws.com/images.unsplash.com/small/photo-1504966981333-1ac8809be1ca" }, //...后边还有很长, 有兴趣请自行查询 }
%http_data
这里面包括了api返回的图片的许多信息, 而我们需要的仅仅是图片的下载链接, 这个值在 urls 项中, 其中 raw , full 等等是各种不同尺寸的图片下载链接, 这里我们以 regular 为例, 正则表达式可为(?≤full”:”).+?(?=”,”regular), 其将返回”regular”键的值.

3.HTTP Request

notion image
方法 : 仍然是GET, 本步中我们将通过GET方法和前文的图片链接下载图片
URL : %http_data1 , 注意结尾有个1, 这个就是上一步中正则提取出来的图片下载链接
头部 : Content-Type:image/* , 请求头标明要得到的类型为图片
将输出保存到文件或目录中 : 自行选择地址+名称+.jpg后缀, 没有该名称的图片将创建, 有则覆写
超时 : 拖长一点, 这一步要下载图片, 建议直接拖到60
自动重定向 : 勾选

4.设置壁纸

notion image
类型 : 根据自身需要选择
图像 : 与上一步中的将输出保存到文件或目录中 相同
比例缩放 , 裁切 : 建议勾选, unsplash返回的图片分辨率千奇百怪

完成

notion image
以上, 网络api版随机壁纸任务编写完成. 定时执行的流程和本地版一样, 需要注意的一点是 : unsplash的api每小时使用次数上限50, 所以更换的频率不建议设置的太高.

拓展

可以在任务开始时添加一个WIFI状态的检测, 使用流量时就切换到本地版;
可以把壁纸和锁屏分开写两个任务, 然后通过参数结合wifi检测实现wifi下分别随机切换+使用流量时分别随机切换;
网络api不局限于unsplash一种, 使用方法大同小异.
《废土谣》留档Ubuntu搭建RSSHub记录