Mac 系统虽然提供了很多的精美的壁纸,但是一次性只能设置一个实况,并且随机的时间有点长。虽然我也尝试了使用随机的实况,但是总感觉随机的有点问题,总是循环那几种实况,看久了还让我觉得厌倦了。于是自己探索了一下:实现自己爬取网络上的 4K 照片,然后写定时任务的脚本更新系统的壁纸。
:::success
🤭亮点:
:::
以下是实现的效果:过了几分钟之后就可以自动的切换壁纸。
我们先拆解一下需要的步骤:
我们选择是 bigying 的网站:网站的首页会显示一张高清图,基本上是日更,主打的是每天不一样。
我们需要下载图片的话,不需要关注这个表象,直接 Fn+F12 开启挂包:
发现了这样的一个 http GET 请求,返回的正好是图片的信息:https://cn.bing.com/hp/api/v1/imagegallery?format=json&ssd=20241212_1600&
在报文中,以下是我们需要关注的字段:
正合我意,这样我写个脚本岂不是可以直接实现高清图片自由?
代码是好久之前写的了,这里直接展示脚本。
#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
'''
@File : download-wallwapper.py
@Time : 2024/05/17 20:26:33
'''
# download-wallwapper from biying
import os
from os.path import exists
from typing import NoReturn
import requests
SAVE_BASE_PATH = "/Users/shigen/Pictures/wallwapper"
DO_MAIN = "https://cn.bing.com/"
def get_wallwapper_list() -> dict[str, str]:
url = 'https://cn.bing.com/hp/api/v1/imagegallery?format=json'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.5193.102 Safari/537.36',
'Referer': 'https://cn.bing.com/'
}
response = requests.get(url, headers=headers)
response.raise_for_status()
data = response.json()
imgs_list = data.get('data').get('images')
titles = [d.get('title') + '.jpg' for d in imgs_list]
urls = [DO_MAIN + d.get('imageUrls').get('landscape').get('ultraHighDef')
for d in imgs_list]
wallpaper_dict = dict(zip(titles, urls))
# print(wallpaper_dict)
return wallpaper_dict
def download(wallpaper_dict: dict[str, str]) -> NoReturn:
for title, url in wallpaper_dict.items():
file_path = os.path.join(SAVE_BASE_PATH, title)
if not exists(file_path):
print(f"开始下载: {title}")
response = requests.get(url)
response.raise_for_status()
with open(file_path, 'wb') as f:
f.write(response.content)
print(f"完成下载: {title}")
if __name__ == "__main__":
wallpaper_dict = get_wallwapper_list()
download(wallpaper_dict)
直接运行看看:
对应的文件展示:
万事俱备,只欠东风,现在我们开始写定时任务的脚本。Mac OS 本质就是 Linux,这里没什么特别的,就是借用 Linux 的 cron 表达式:
这里直接展示我的 shell 脚本:
#!/bin/bash
# 定义图片文件夹路径
image_folder="/Users/shigen/Pictures/wallwapper"
# 获取图片文件夹下的所有文件
files=($image_folder/*)
# 获取文件数量
num_files=${#files[@]}
# 生成一个随机索引
random_index=$(($RANDOM % num_files))
# 获取随机选择的照片
random_image=${files[$random_index]}
# 将照片设置为 macOS 桌面壁纸
osascript -e "tell application \"System Events\" to tell every desktop to set picture to \"$random_image\""
加入到系统的 cron 定时任务中:
corntab -e
*/5 * * * * /Users/xxxx/python-util/wallwapper/set-macos-wallwapper.sh
完成即可看到定时轮播的效果了。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。