自动为图床添加图片

自动为图床添加图片
lei整个流程分为两步:
- 获取 Bing 每日图片:通过调用 Bing 的官方 API 获取当天壁纸的 URL。
- 上传到你的图床:将获取到的图片数据,通过你提供的 API 上传到你的图床。
由于这个操作需要每天自动执行,最好的方式是编写一个自动化脚本,并使用定时任务(如 GitHub Actions、Cron Job 等)来运行它。
核心思路
我们的脚本将执行以下操作:
- 向 Bing API 发送请求,获取包含图片信息的 JSON 数据。
- 从 JSON 中解析出图片的 URL。
- 下载这张图片到内存中。
- 构造一个
POST请求,将图片数据上传到你的图床 API。 - (可选)记录上传成功的日志。
步骤一:编写 Python 自动化脚本
这是最核心的部分。我们需要 requests 库来处理网络请求。如果你的 Python 环境没有安装,请先执行 pip install requests。
下面是一个完整的 Python 脚本 (sync_bing_wallpaper.py),你只需要修改顶部的配置信息即可。
1 | import requests |
使用说明:
将上面代码保存为
sync_bing_wallpaper.py文件。修改配置:打开文件,将
YOUR_DOMAIN和AUTH_CODE以及 _NASA_API_KEY_替换成你自己的信息。UPLOAD_PARAMS中的参数也可以根据你的需求调整。修改
YOUR_DOMAIN: 将"https://your.domain"替换成你图床的真实、可访问的域名。 例如,如果你的图床访问地址是https://img.cool-pics.com,那么你应该修改为:YOUR_DOMAIN = "https://img.cool-pics.com"修改
AUTH_CODE: 将"your_authCode"替换成你图床API说明里提到的真实认证码。 例如,如果你的认证码是abcdef123456,那么你应该修改为:AUTH_CODE = "abcdef123456"如果你的图床不需要认证码,可以设置为空字符串:AUTH_CODE = ""
本地测试:在命令行中运行
python sync_bing_wallpaper.py,看看是否能成功上传并打印出图片链接。
步骤二:设置自动化每日执行
当脚本可以手动运行时,下一步就是让它每天自动运行。这里推荐两种最流行的方法:
方法一:使用 GitHub Actions (强烈推荐)
这种方法免费、稳定,不需要你自己的服务器。
创建 GitHub 仓库:
- 登录 GitHub,创建一个新的公开或私有仓库。
- 将你的
sync_bing_wallpaper.py文件上传到这个仓库。
添加依赖文件:
- 在仓库根目录创建一个名为
requirements.txt的文件,内容只有两行:1
2
3requests
beautifulsoup4
- 在仓库根目录创建一个名为
创建 Workflow 文件:
- 在你的仓库页面,点击 “Actions” 标签页。
- 点击 “set up a workflow yourself”(或者类似的按钮)。
- 这会创建一个
.github/workflows/main.yml文件。将文件名修改为更有意义的,比如 image_sync.yml。 - 将文件内容替换为以下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# .github/workflows/image_sync.yml
name: Sync Daily Wallpapers
# ===================================================================
# 触发器 (Triggers)
# ===================================================================
on:
schedule:
- cron: '0 0 * * *' # 每天北京时间 8:00 (UTC 0:00)
- cron: '0 1 * * *' # 每天北京时间 9:00 (UTC 1:00)
- cron: '0 */6 * * *' # 每6小时
workflow_dispatch:
inputs:
source:
description: 'Image source to sync (bing, nasa, or wallhaven)'
required: true
default: 'bing'
type: choice
options:
- bing
- nasa
- wallhaven
# ===================================================================
# 任务 (Jobs)
# ===================================================================
jobs:
sync-images:
# 在最新的 Ubuntu 环境上运行
runs-on: ubuntu-latest
# ===============================================================
# 步骤 (Steps)
# ===============================================================
steps:
# 步骤 1: 拉取代码
- name: Checkout repository
uses: actions/checkout@v4
# 步骤 2: 设置 Python 环境
- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: '3.10'
# 步骤 3: 安装 Python 依赖库
# 不需要 working-directory,因为 requirements.txt 就在根目录
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
# 步骤 4: 执行同步脚本
# 同样不需要 working-directory,因为 sync_bing_wallpaper.py 就在根目录
- name: Run sync script
env:
YOUR_DOMAIN: ${{ secrets.YOUR_DOMAIN }}
AUTH_CODE: ${{ secrets.AUTH_CODE }}
NASA_API_KEY: ${{ secrets.NASA_API_KEY }}
run: |
# 打印当前工作目录和文件列表,用于最终确认
echo "--- Current Directory: $(pwd) ---"
echo "--- Files in Root: ---"
ls -l
echo "------------------------------------"
# 根据不同的触发条件,执行不同的命令
if [[ -n "${{ github.event.inputs.source }}" ]]; then
echo "Running from MANUAL trigger. Source: ${{ github.event.inputs.source }}"
python sync_bing_wallpaper.py ${{ github.event.inputs.source }}
elif [[ "${{ github.event.schedule }}" == "0 0 * * *" ]]; then
echo "Running from SCHEDULED trigger for Bing."
python sync_bing_wallpaper.py bing
elif [[ "${{ github.event.schedule }}" == "0 1 * * *" ]]; then
echo "Running from SCHEDULED trigger for NASA."
python sync_bing_wallpaper.py nasa
elif [[ "${{ github.event.schedule }}" == "0 */6 * * *" ]]; then
echo "Running from SCHEDULED trigger for Wallhaven."
python sync_bing_wallpaper.py wallhaven
else
echo "Error: No matching trigger condition found."
exit 1
fi配置 Secrets (重要!)
- 不要将你的域名和认证码直接写在 Python 脚本里提交到 GitHub。我们使用 GitHub Secrets 来安全地存储它们。
- 首先,在你的 GitHub 仓库页面,进入
Settings->Secrets and variables->Actions。 - 点击
New repository secret,创建三个 Secret:- Name:
YOUR_DOMAIN - Value:
https://your.domain(你的图床完整域名) - Name:
AUTH_CODE - Value:
your_authCode(你的认证码) - Name:
NASA_API_KEY
- Name:
完成
- 现在,GitHub Actions 会在每天指定的时间自动运行你的脚本,从 Secrets 中获取配置,完成壁纸的同步。你可以在仓库的 “Actions” 标签页查看每次运行的日志。
方法二:使用 Linux Cron Job (如果你有自己的服务器)
将
sync_bing_wallpaper.py文件上传到你的服务器,例如放在/home/user/scripts/目录下。打开终端,输入
crontab -e来编辑你的定时任务。在文件末尾添加一行,格式如下:
1
2# 每天早上 8:05 执行脚本,并将日志输出到文件
5 8 * * * /usr/bin/python3 /home/user/scripts/sync_bing_wallpaper.py >> /home/user/scripts/bing_sync.log 2>&15 8 * * *表示每天的 8:05 执行。/usr/bin/python3是你 Python 解释器的路径,可以通过which python3查看。>> /home/user/scripts/bing_sync.log 2>&1会将脚本的所有输出(包括错误)追加到日志文件中,方便排查问题。
保存并退出编辑器。系统会自动安排任务。
总结
- 准备脚本:使用上面提供的 Python 脚本,并填入你的配置信息。
- 选择自动化方式:
- 无服务器:首选 GitHub Actions,安全、方便、免费。
- 有服务器:使用 Cron Job。
- 设置并测试:按照上述步骤配置好自动化,并手动触发一次(或等待它自动运行)来验证整个流程是否通畅。
这样,你的图床就能每天自动拥有最新的 Bing 壁纸了!






