前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Mac实况壁纸太难看?自己动手实现高清壁纸自由

Mac实况壁纸太难看?自己动手实现高清壁纸自由

原创
作者头像
shigen
发布2024-12-14 17:49:11
发布2024-12-14 17:49:11
10500
代码可运行
举报
文章被收录于专栏:shigen的学习笔记
运行总次数:0
代码可运行

背景

Mac 系统虽然提供了很多的精美的壁纸,但是一次性只能设置一个实况,并且随机的时间有点长。虽然我也尝试了使用随机的实况,但是总感觉随机的有点问题,总是循环那几种实况,看久了还让我觉得厌倦了。于是自己探索了一下:实现自己爬取网络上的 4K 照片,然后写定时任务的脚本更新系统的壁纸。

:::success

🤭亮点:

  1. 脚本爬取网络 4k 画质壁纸
  2. 定时切换系统桌面,随机选择一张 4K 壁纸作为桌面

:::

以下是实现的效果:过了几分钟之后就可以自动的切换壁纸。

实践

我们先拆解一下需要的步骤:

画板
画板

找到图片集网站

我们选择是 bigying 的网站:网站的首页会显示一张高清图,基本上是日更,主打的是每天不一样。

我们需要下载图片的话,不需要关注这个表象,直接 Fn+F12 开启挂包:

发现了这样的一个 http GET 请求,返回的正好是图片的信息:https://cn.bing.com/hp/api/v1/imagegallery?format=json&ssd=20241212_1600&

在报文中,以下是我们需要关注的字段:

正合我意,这样我写个脚本岂不是可以直接实现高清图片自由?

脚本书写

代码是好久之前写的了,这里直接展示脚本。

代码语言:python
代码运行次数:0
复制
#!/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 脚本:

代码语言: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 定时任务中:

代码语言:shell
复制
corntab -e
*/5 * * * * /Users/xxxx/python-util/wallwapper/set-macos-wallwapper.sh

完成即可看到定时轮播的效果了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 实践
    • 找到图片集网站
    • 脚本书写
    • 定时任务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档