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

yizhihongxing

让我来详细讲解一下“趣味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多维数组拉平到一维数组是一个常见的问题,下面讲解几种方法来实现它。 方法一:使用itertools.chain()函数 首先,我们可以使用itertools.chain()函数来将多维数组拉平到一维数组。这个函数可以接受多个迭代器作为参数,然后将它们连接起来形成一个单一的迭代器。 示例:将二维数组 [[1, 2, 3], [4, 5, …

    python 2023年6月3日
    00
  • 教你使用Python从文件中提取IP地址

    下面我将为你详细讲解“教你使用Python从文件中提取IP地址”的完整攻略。 介绍 在网络通信中,每台计算机都需要使用唯一的IP地址进行通信,IP地址是一组由数字和点组成的形式,如:192.168.0.1。本攻略将会教你使用Python提取文本文件中的IP地址。 步骤 步骤一:读取文件内容 定义一个读取文件的函数,从指定的文件路径中读取到文件的内容,并将其返…

    python 2023年6月3日
    00
  • 解决python3 HTMLTestRunner测试报告中文乱码的问题

    在Python3中使用HTMLTestRunner生成测试报告时,中文字符可能会出现乱码。本攻略将提供两种解决方法。 方法一:修改HTMLTestRunner源代码 下载HTMLTestRunner源代码 可以从这里下载HTMLTestRunner源代码。 修改HTMLTestRunner.py文件 在HTMLTestRunner.py文件中,找到以下代码:…

    python 2023年5月15日
    00
  • Python面向对象总结及类与正则表达式详解

    Python面向对象总结及类与正则表达式详解 Python面向对象总结 Python是一种面向对象的编程语言,支持类、对象、继承、多态等面向对象的特性。下面是Python面向对象的一些基本概念: 类 类是一种抽象的数据类型,用来具有相同属性和方法的对象的集合。在Python中,我们可以使用class关键字定义一个类。下面是一个例子,演示如何定义一个类: cl…

    python 2023年5月14日
    00
  • python实现用户登录系统

    1. 简介 用户登录系统是网站及应用程序中非常基础、常见的功能之一。通过使用Python语言,可以容易地构建出一个用户登录系统。 2. 实现步骤 2.1. 设计数据库结构 创建一张用户表,包含如下字段:- 用户ID- 用户名- 密码- 邮箱 2.2. 用户注册 用户注册功能需要用户在网站上输入自己的用户名、密码和邮箱等信息,然后将这些信息写入到用户表中。 2…

    python 2023年5月19日
    00
  • Python 单元测试哲学和排序

    【问题标题】:Python unittest philosophy and orderingPython 单元测试哲学和排序 【发布时间】:2023-04-06 03:39:02 【问题描述】: 虽然单元测试的理念是测试可以按任何顺序运行并且它应该通过,但如果您正在实现一个没有其他方式与服务器通信的 API 怎么办……并且您需要测试某个特定的非常基本…

    Python开发 2023年4月7日
    00
  • python打开文件的方式有哪些

    Python是一种非常流行的编程语言,在文件操作方面提供了简单而多样化的方式。下面是python打开文件的方式的详细攻略: 使用open()函数 使用open()函数打开文件可谓是Python中最基本的文件操作方式,它使用文件对象方法来读取、写入或修改文件。 file = open(‘example.txt’, ‘r’) 在上述示例中,我们使用了open()…

    python 2023年5月20日
    00
  • Python 中OS module的使用详解

    Python 中OS module的使用详解 在Python中,os模块是一个非常重要的模块,它可以让我们使用Python操作操作系统。本篇文章将详细介绍os模块的使用方法。 os模块概述 os模块提供了许多与操作系统交互的函数,例如创建文件和目录、访问环境变量、获取进程信息、等等。无论是Windows、Linux还是Mac OS X,os模块都能够提供一致…

    python 2023年6月2日
    00
合作推广
合作推广
分享本页
返回顶部