趣味Python实战练习之自动更换桌面壁纸脚本附源码

让我来详细讲解一下“趣味Python实战练习之自动更换桌面壁纸脚本附源码”的完整攻略。

1. 项目介绍

本项目是一个Python实战练习,旨在通过编写一个自动更换桌面壁纸脚本,锻炼Python编程能力。

2. 项目要求

实现一个定时自动更换桌面壁纸的脚本,支持手动更换和定时更换两种方式。脚本通过爬取指定壁纸网站的图片,将图片下载到本地,然后设置为桌面壁纸。同时,每次更换壁纸成功后,需要将当前时间、更换的图片名称和图片地址保存到日志文件中。

3. 实现步骤及示例

3.1 环境准备

首先,需要准备Python 3.x的环境,并安装必要的第三方库,包括:
- requests:用于请求网络资源和下载图片
- beautifulsoup4:用于解析HTML页面和提取图片链接

这里以Windows系统为例安装所需库:

pip install requests
pip install beautifulsoup4

3.2 网站选择

其次,需要选择一个合适的壁纸网站,这里以Bing每日壁纸为例子(https://www.bing.com/)

3.3 代码实现

下面是代码的实现,包含两个部分:
- one_picture.py:手动更换壁纸
- timed_picture.py:定时更换桌面壁纸

# one_picture.py
import os
import random
import requests
from bs4 import BeautifulSoup
from datetime import datetime

def download_picture(url, save_path):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36',
    }
    response = requests.get(url, headers=headers)
    with open(save_path, 'wb') as f:
        f.write(response.content)

def get_picture_url(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36',
    }
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    url_raw = soup.find('div', id='bgImgProgLoad')['data-ultra-definition-src']
    url = 'https://www.bing.com' + url_raw
    return url

def set_wallpaper(path):
    key = 'WallpaperStyle'  # 填充:2 适应:6
    value = '6'
    cmd = 'REG ADD \"HKCU\\Control Panel\\Desktop\" /v {} /t REG_SZ /d {} /f'.format(key, value)
    os.system(cmd)
    cmd = 'REG ADD \"HKCU\\Control Panel\\Desktop\" /v Wallpaper /t REG_SZ /d \"{}\" /f'.format(path)
    os.system(cmd)
    cmd = 'RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters'
    os.system(cmd)

if __name__ == '__main__':
    url = 'https://www.bing.com/?ensearch=1'
    picture_name = datetime.now().strftime('%Y%m%d%H%M%S') + '.jpg'
    picture_path = os.path.join(os.getcwd(), picture_name)
    download_picture(get_picture_url(url), picture_path)
    set_wallpaper(picture_path)
    print('Success: {:s}'.format(picture_name))
# timed_picture.py
import os
import random
import requests
import time
from bs4 import BeautifulSoup
from datetime import datetime

def download_picture(url, save_path):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36',
    }
    response = requests.get(url, headers=headers)
    with open(save_path, 'wb') as f:
        f.write(response.content)

def get_picture_url(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36',
    }
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    url_raw = soup.find('div', id='bgImgProgLoad')['data-ultra-definition-src']
    url = 'https://www.bing.com' + url_raw
    return url

def set_wallpaper(path):
    key = 'WallpaperStyle'  # 填充:2 适应:6
    value = '6'
    cmd = 'REG ADD \"HKCU\\Control Panel\\Desktop\" /v {} /t REG_SZ /d {} /f'.format(key, value)
    os.system(cmd)
    cmd = 'REG ADD \"HKCU\\Control Panel\\Desktop\" /v Wallpaper /t REG_SZ /d \"{}\" /f'.format(path)
    os.system(cmd)
    cmd = 'RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters'
    os.system(cmd)

if __name__ == '__main__':
    while True:
        url = 'https://www.bing.com/?ensearch=1'
        picture_name = datetime.now().strftime('%Y%m%d%H%M%S') + '.jpg'
        picture_path = os.path.join(os.getcwd(), picture_name)
        download_picture(get_picture_url(url), picture_path)
        set_wallpaper(picture_path)
        print('Success: {:s}'.format(picture_name))
        with open('log.txt', 'a', encoding='utf-8') as f:
            f.write('{:s} {:s} {:s}\n'.format(datetime.now().strftime('%Y-%m-%d %H:%M:%S'), picture_name, url))
        time.sleep(1800)

在实现过程中,涉及到了一些知识点,比如:

  • requests库:用于向网站发送HTTP请求;
  • BeautifulSoup库:用于解析网站HTML页面,获取需要的图片链接;
  • os库:用于操作文件;
  • datetime库:用于获取当前时间;
  • time库:用于进行定时;
  • 注册表:用于更改桌面壁纸风格及设置桌面壁纸。

其中需要注意的是,“set_wallpaper()”函数部分,Windows系统有多种桌面壁纸风格,本脚本中使用的是“适应”风格,其他风格可自行修改。

3.4 运行结果

在运行脚本后,可看到控制台输出更换的壁纸名称和日志信息,同时桌面壁纸也已经实现更换。

还可以根据需求通过修改代码,定制不同的壁纸网站和更换频率等参数。

4. 总结

本项目通过实现一个自动更换桌面壁纸脚本,锻炼了Python编程能力,掌握了爬取网站信息及操作系统壁纸设置等技能。同时,也开拓了思路,可以拓展到其他自动化工具的实现中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:趣味Python实战练习之自动更换桌面壁纸脚本附源码 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Python之时间和日期使用小结

    Python之时间和日期使用小结 在Python中,时间和日期的操作是非常常见和重要的部分。本文将介绍一些Python中常用的时间和日期操作,包括时间类型、时间和日期格式化、时间戳转换,以及一些常见的日期计算操作。 时间类型 Python内置了几种时间类型,包括: time.time(): 时间戳,表示自1970年1月1日0时0分0秒以来的秒数; time.…

    python 2023年6月2日
    00
  • 如何基于python测量代码运行时间

    当我们优化代码或者比较算法的效率时,了解代码运行所需时间是非常重要的。Python提供了一种方法来测量代码运行时间。在本文中,我们将讨论Python中测量代码运行时间的方法。 time库 Python内置time库,可以用于测量代码执行所需时间。具体步骤如下: 使用time模块中的time()函数记录当前时间作为开始时间。 执行要计时的代码。 再次使用tim…

    python 2023年6月3日
    00
  • python出现”IndentationError: unexpected indent”错误解决办法

    当我们在Python编程过程中遇到“IndentationError: unexpected indent”错误提示时,通常是由于缩进不正确导致的。以下是解决Python错误提示“IndentationError: unexpected”的完整攻略: 1. 检查缩进 如果我们在Python编程过程中遇到“IndentationError: unexpecte…

    python 2023年5月13日
    00
  • 使用python删除nginx缓存文件示例(python文件操作)

    下面我来详细讲解一下“使用python删除nginx缓存文件示例(python文件操作)”的完整攻略。 1. 确认缓存文件路径 首先我们需要先确认nginx缓存文件的路径,一般而言,nginx缓存文件存储在服务器上的/var/cache/nginx目录下。 2. 使用python的os模块定位缓存文件并删除 在确认了缓存文件的路径之后,我们就可以使用pyth…

    python 2023年6月3日
    00
  • python pandas库读取excel/csv中指定行或列数据

    如何用Python Pandas库读取Excel或CSV文件中指定行或列的数据可以按照以下步骤进行。 准备 在代码中导入Pandas库: import pandas as pd 然后,使用以下代码一次性读取Excel或CSV文件: # 读取Excel文件 df = pd.read_excel(‘filename.xlsx’) # 读取CSV文件 df = p…

    python 2023年6月3日
    00
  • C# wpf Canvas中实现控件拖动调整大小的示例

    下面是详细讲解C# wpf Canvas中实现控件拖动调整大小的攻略。 1. 为控件添加事件处理程序 首先,我们需要定义控件的事件处理程序来让它们可以被拖动和调整大小。在XAML中,我们可以这样为控件添加鼠标左键按下事件处理程序: <Canvas> <Button Content="可拖拽" Canvas.Left=&q…

    python 2023年6月13日
    00
  • 小白学Python之实现OCR识别

    小白学Python之实现OCR识别攻略 简介 OCR(Optical Character Recognition)是一种将图片或扫描文档中的文本转换成可编辑和搜索的文本的技术。Python作为一种强大的编程语言,有许多 OCR 库和工具可以用于实现 OCR 功能。在本文中,我们将通过几个简单的步骤,介绍如何使用Python实现OCR识别。 步骤 步骤1:安装…

    python 2023年5月18日
    00
  • Python 用repeat()重复单个值

    当我们需要在 Python 中多次使用同一个值时,重复单个值是一种非常有用的方法。Python 中的 repeat() 函数可以很方便地实现这一点。 repeat() 函数的使用方法 repeat() 函数位于 itertools 模块中,使用时需要先引入该模块。它的基本使用方法为: itertools.repeat(object, times) 其中,ob…

    python-answer 2023年3月25日
    00
合作推广
合作推广
分享本页
返回顶部