悠米是只猫

悠米是只猫

利用Python打造专属的必应每日一图下载器

103
2024-01-01

你是否曾经被必应(Bing)网站的每日一图所吸引,想要将这些美丽的图片保存到本地?今天,我将为你介绍一个使用Python编写的简单工具,它可以帮助你自动下载必应每日一图,并将其保存到你的电脑中。

工具简介

这个工具是一个基于Python的图形用户界面(GUI)应用程序,使用了tkinter库来创建窗口和控件,以及requestsurllib库来处理网络请求和图片下载。通过这个工具,你可以轻松地获取必应每日一图,并将其保存到一个名为bing_images的文件夹中。

源码解析

以下是这个工具的完整Python源码:

# -*- coding: utf-8 -*-
import os
import tkinter as tk
import urllib.request
from tkinter import messagebox
import requests

def download_bing_images():
    # Bing 每日一图的 URL
    url = 'https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=8&mkt=zh-CN'
    response = requests.get(url)
    data = response.json()

    # 创建一个文件夹来保存图片
    if not os.path.exists('bing_images'):
        os.makedirs('bing_images')

    # 遍历每日一图的数据并下载图片
    for image_data in data['images']:
        image_name = image_data['hsh']
        image_url = f'https://cn.bing.com{image_data["url"]}'

        try:
            # 下载图片
            with urllib.request.urlopen(image_url) as response:
                image_data = response.read()
                with open(f'bing_images/{image_name}.jpg', 'wb') as f:
                    f.write(image_data)

            print(f'图片 {image_name}.jpg 已成功下载!')
            progress_label.config(text=f'图片 {image_name}.jpg 已成功下载!')
        except Exception as e:
            print(f'下载失败:{str(e)}')
            progress_label.config(text=f'下载失败:{str(e)}')

def on_button_click():
    try:
        # 清除之前的下载进度信息
        progress_label.config(text='')

        # 下载 Bing 每日一图
        download_bing_images()

        # 显示下载完成提示
        progress_label.config(text='所有图片已下载完成!\n请查看当前目录对应的“bing_images”文件夹')
    except Exception as e:
        messagebox.showerror('错误', f'下载失败:\n{str(e)}')

# 创建主窗口
root = tk.Tk()
root.title('Bing 每日一图下载器')
root.geometry('400x300')  # 设置窗口大小

# 创建按钮
button = tk.Button(root, text='下载 Bing 每日一图', command=on_button_click)
button.pack(padx=20, pady=20)

# 创建标签用于显示下载进度和结果
progress_label = tk.Label(root, text='')
progress_label.pack(padx=20, pady=20)

# 运行主循环
root.mainloop()

代码说明

  1. 导入必要的库

    • os:用于文件和目录操作。

    • tkinter:用于创建GUI界面。

    • urllib.request:用于下载图片。

    • requests:用于发送HTTP请求。

  2. download_bing_images函数

    • 发送HTTP请求获取必应每日一图的JSON数据。

    • 解析JSON数据,提取图片的URL和名称。

    • 创建一个名为bing_images的文件夹来保存图片。

    • 遍历图片数据,下载每张图片并保存到本地。

  3. on_button_click函数

    • 清除之前的下载进度信息。

    • 调用download_bing_images函数下载图片。

    • 显示下载完成提示或错误信息。

  4. 创建GUI界面

    • 创建主窗口并设置标题和大小。

    • 创建一个按钮,点击按钮时调用on_button_click函数。

    • 创建一个标签用于显示下载进度和结果。

使用方法

  1. 确保你的电脑上已经安装了Python(推荐使用Python 3.x版本)。

  2. 安装所需的库:

    pip install requests
  3. 将上述源码保存为一个Python文件,例如bing_image_downloader.py

  4. 运行Python文件:

    python bing_image_downloader.py
  5. 在弹出的GUI窗口中点击“下载 Bing 每日一图”按钮,等待下载完成。

结语

通过这个简单的Python工具,你可以轻松地下载必应每日一图,并将其保存到本地。你可以根据自己的需求进一步扩展和优化这个工具,例如添加更多的功能或改进用户界面。希望这个工具能为你带来便利和乐趣!

如果你有任何问题或建议,欢迎在评论区留言。