
这是第一个版本,算是1.0版本,实现了选择日期,然后自动批量下载4K的壁纸,图片全部来源必应。
这里我会将代码全部公开,然后包括软件的下载等,后续会更新,也会更新新版本的代码,你可以根据代码自行打包exe软件。
开箱即用的版本请看文末下载区域。
代码:(接口来源网络)
import requests
import os
from datetime import datetime, timedelta
import tkinter as tk
from tkinter import messagebox
from tkcalendar import DateEntry
from requests.packages.urllib3.exceptions import InsecureRequestWarning
import threading
# 忽略不安全请求警告
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
def download_bing_wallpapers(start_date, end_date):
base_url = "https://bing.ee123.net/img/"
size = "UHD"
output_dir = "bing_wallpapers"
# 创建保存壁纸的文件夹
if not os.path.exists(output_dir):
os.makedirs(output_dir)
session = requests.Session()
session.verify = False
current_date = start_date
while current_date <= end_date:
date_str = current_date.strftime('%Y%m%d')
params = {
'date': date_str,
'size': size,
'type': 'json'
}
response = session.get(base_url, params=params)
# 检查请求是否成功
if response.status_code == 200:
try:
data = response.json()
image_url = data.get('imgurl') # 使用 'imgurl' 获取图片URL
if image_url:
image_name = f"{date_str}.jpg"
image_path = os.path.join(output_dir, image_name)
# 下载图片
img_response = session.get(image_url)
if img_response.status_code == 200:
with open(image_path, 'wb') as img_file:
img_file.write(img_response.content)
print(f"Downloaded: {image_name}")
else:
print(f"Failed to download image from {image_url}")
else:
print(f"No 'imgurl' found in the response for {date_str}")
except ValueError:
print(f"Failed to decode JSON response for {date_str}")
else:
print(f"Failed to retrieve data for {date_str}, status code: {response.status_code}")
current_date += timedelta(days=1)
messagebox.showinfo("完成", "壁纸下载完成!")
def start_download():
start_date = start_date_entry.get_date()
end_date = end_date_entry.get_date()
if start_date > end_date:
messagebox.showerror("错误", "开始日期不能晚于结束日期")
return
# 使用线程来运行下载任务,避免阻塞主线程
download_thread = threading.Thread(target=download_bing_wallpapers, args=(start_date, end_date))
download_thread.start()
# 创建主窗口
root = tk.Tk()
root.title("Bing 壁纸下载器")
# 日期选择框
tk.Label(root, text="选择开始日期:").grid(row=0, column=0, padx=10, pady=10)
start_date_entry = DateEntry(root, width=12, background='darkblue',
foreground='white', borderwidth=2, year=2024)
start_date_entry.grid(row=0, column=1, padx=10, pady=10)
tk.Label(root, text="选择结束日期:").grid(row=1, column=0, padx=10, pady=10)
end_date_entry = DateEntry(root, width=12, background='darkblue',
foreground='white', borderwidth=2, year=2024)
end_date_entry.grid(row=1, column=1, padx=10, pady=10)
# 下载按钮
download_button = tk.Button(root, text="下载壁纸", command=start_download)
download_button.grid(row=2, column=0, columnspan=2, padx=10, pady=10)
# 运行GUI主循环
root.mainloop()
以下是第二个版本,新增了进度条,下载过程中实时更新进度条,显示当前的下载进度。
图片尺寸的填写框,可以通过填写框自由输入所需的图片尺寸。
分 辨 率 | UHD , 1920x1200 , 1920x1080 , 1366x768 , 1280x768 ,1024x768 , 800x600 , 800x480 , 768x1280 ,720x1280 , 640x480 , 480x800 , 400x240 , 320x240 , 240x320 |
以下是代码:
import requests
import os
from datetime import datetime, timedelta
import tkinter as tk
from tkinter import messagebox, ttk
from tkcalendar import DateEntry
import threading
# 忽略不安全请求警告
requests.packages.urllib3.disable_warnings()
def download_bing_wallpapers(start_date, end_date, size, progress_var, progress_bar):
base_url = "https://bing.ee123.net/img/"
output_dir = "bing_wallpapers"
# 创建保存壁纸的文件夹
if not os.path.exists(output_dir):
os.makedirs(output_dir)
session = requests.Session()
session.verify = False
current_date = start_date
total_days = (end_date - start_date).days + 1
progress_step = 100 / total_days
while current_date <= end_date:
date_str = current_date.strftime('%Y%m%d')
params = {
'date': date_str,
'size': size,
'type': 'json'
}
response = session.get(base_url, params=params)
if response.status_code == 200:
try:
data = response.json()
image_url = data.get('imgurl')
if image_url:
image_name = f"{date_str}.jpg"
image_path = os.path.join(output_dir, image_name)
# 下载图片
img_response = session.get(image_url)
if img_response.status_code == 200:
with open(image_path, 'wb') as img_file:
img_file.write(img_response.content)
print(f"Downloaded: {image_name}")
else:
print(f"Failed to download image from {image_url}")
else:
print(f"No 'imgurl' found in the response for {date_str}")
except ValueError:
print(f"Failed to decode JSON response for {date_str}")
else:
print(f"Failed to retrieve data for {date_str}, status code: {response.status_code}")
current_date += timedelta(days=1)
# 更新进度条
progress_var.set(progress_var.get() + progress_step)
progress_bar.update()
messagebox.showinfo("完成", "壁纸下载完成!")
def start_download():
start_date = start_date_entry.get_date()
end_date = end_date_entry.get_date()
size = size_var.get()
if start_date > end_date:
messagebox.showerror("错误", "开始日期不能晚于结束日期")
return
# 重置进度条
progress_var.set(0)
progress_bar.update()
# 使用线程来运行下载任务,避免阻塞主线程
download_thread = threading.Thread(target=download_bing_wallpapers,
args=(start_date, end_date, size, progress_var, progress_bar))
download_thread.start()
# 创建主窗口
root = tk.Tk()
root.title("Bing 壁纸下载器")
# 日期选择框
tk.Label(root, text="选择开始日期:").grid(row=0, column=0, padx=10, pady=10)
start_date_entry = DateEntry(root, width=12, background='darkblue',
foreground='white', borderwidth=2, year=2024)
start_date_entry.grid(row=0, column=1, padx=10, pady=10)
tk.Label(root, text="选择结束日期:").grid(row=1, column=0, padx=10, pady=10)
end_date_entry = DateEntry(root, width=12, background='darkblue',
foreground='white', borderwidth=2, year=2024)
end_date_entry.grid(row=1, column=1, padx=10, pady=10)
# 图片尺寸填写框
tk.Label(root, text="输入尺寸:").grid(row=2, column=0, padx=10, pady=10)
size_var = tk.StringVar(value="UHD")
size_entry = tk.Entry(root, textvariable=size_var, width=10)
size_entry.grid(row=2, column=1, padx=10, pady=10)
# 进度条
progress_var = tk.DoubleVar(value=0)
progress_bar = ttk.Progressbar(root, variable=progress_var, maximum=100)
progress_bar.grid(row=3, column=0, columnspan=2, padx=10, pady=10, sticky="ew")
# 下载按钮
download_button = tk.Button(root, text="下载壁纸", command=start_download)
download_button.grid(row=4, column=0, columnspan=2, padx=10, pady=10)
# 运行GUI主循环
root.mainloop()
2.1版本:(自行填入有点蠢,还是改成下拉框吧)
import requests
import os
from datetime import datetime, timedelta
import tkinter as tk
from tkinter import messagebox, ttk
from tkcalendar import DateEntry
import threading
# 忽略不安全请求警告
requests.packages.urllib3.disable_warnings()
def download_bing_wallpapers(start_date, end_date, size, progress_var, progress_bar):
base_url = "https://bing.ee123.net/img/"
output_dir = "bing_wallpapers"
# 创建保存壁纸的文件夹
if not os.path.exists(output_dir):
os.makedirs(output_dir)
session = requests.Session()
session.verify = False
current_date = start_date
total_days = (end_date - start_date).days + 1
progress_step = 100 / total_days
while current_date <= end_date:
date_str = current_date.strftime('%Y%m%d')
params = {
'date': date_str,
'size': size,
'type': 'json'
}
response = session.get(base_url, params=params)
if response.status_code == 200:
try:
data = response.json()
image_url = data.get('imgurl')
if image_url:
image_name = f"{date_str}.jpg"
image_path = os.path.join(output_dir, image_name)
# 下载图片
img_response = session.get(image_url)
if img_response.status_code == 200:
with open(image_path, 'wb') as img_file:
img_file.write(img_response.content)
print(f"Downloaded: {image_name}")
else:
print(f"Failed to download image from {image_url}")
else:
print(f"No 'imgurl' found in the response for {date_str}")
except ValueError:
print(f"Failed to decode JSON response for {date_str}")
else:
print(f"Failed to retrieve data for {date_str}, status code: {response.status_code}")
current_date += timedelta(days=1)
# 更新进度条
progress_var.set(progress_var.get() + progress_step)
progress_bar.update()
messagebox.showinfo("完成", "壁纸下载完成!")
def start_download():
start_date = start_date_entry.get_date()
end_date = end_date_entry.get_date()
size = size_var.get()
if start_date > end_date:
messagebox.showerror("错误", "开始日期不能晚于结束日期")
return
# 重置进度条
progress_var.set(0)
progress_bar.update()
# 使用线程来运行下载任务,避免阻塞主线程
download_thread = threading.Thread(target=download_bing_wallpapers, args=(start_date, end_date, size, progress_var, progress_bar))
download_thread.start()
# 创建主窗口
root = tk.Tk()
root.title("Bing 壁纸下载器")
# 日期选择框
tk.Label(root, text="选择开始日期:").grid(row=0, column=0, padx=10, pady=10)
start_date_entry = DateEntry(root, width=12, background='darkblue',
foreground='white', borderwidth=2, year=2024)
start_date_entry.grid(row=0, column=1, padx=10, pady=10)
tk.Label(root, text="选择结束日期:").grid(row=1, column=0, padx=10, pady=10)
end_date_entry = DateEntry(root, width=12, background='darkblue',
foreground='white', borderwidth=2, year=2024)
end_date_entry.grid(row=1, column=1, padx=10, pady=10)
# 图片尺寸下拉选项
tk.Label(root, text="选择分辨率:").grid(row=2, column=0, padx=10, pady=10)
size_var = tk.StringVar(value="UHD")
size_combobox = ttk.Combobox(root, textvariable=size_var, values=[
"UHD", "1920x1200", "1920x1080", "1366x768", "1280x768",
"1024x768", "800x600", "800x480", "768x1280", "720x1280",
"640x480", "480x800", "400x240", "320x240", "240x320"
])
size_combobox.grid(row=2, column=1, padx=10, pady=10)
size_combobox.set("UHD")
# 进度条
progress_var = tk.DoubleVar(value=0)
progress_bar = ttk.Progressbar(root, variable=progress_var, maximum=100)
progress_bar.grid(row=3, column=0, columnspan=2, padx=10, pady=10, sticky="ew")
# 下载按钮
download_button = tk.Button(root, text="下载壁纸", command=start_download)
download_button.grid(row=4, column=0, columnspan=2, padx=10, pady=10)
# 运行GUI主循环
root.mainloop()
必应4K壁纸下载器1.0
1
必应4K壁纸下载器2.1
2
Download permission
View
-
¥Download for freeDownload after commentDownload after login
- {{attr.name}}:
Your current level is
Login for free downloadLogin
Your account has been temporarily suspended and cannot be operated!
Download after commentComment
Download after paying ¥ points
please firstLogin
You have run out of downloads ( times) please come back tomorrow orUpgrade Membership
Download after paying pointsPay Now
Download after paying pointsPay Now
Your current user level is not allowed to downloadUpgrade Membership
You have obtained download permission
You can download resources every daytimes, remaining todaytimes left today
- All rights reserved.
- No part of this website, including text and images, may be reproduced, modified, distributed, or transmitted in any form or by any means, without the prior written permission of the author.
- Unauthorized commercial use is strictly prohibited.
- Unauthorized personal use is strictly prohibited.