趣味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实现图片筛选程序的攻略如下: 1. 获取图片 使用Python中的Pillow库可以很容易地获取图片。我们可以使用以下代码来获取指定路径的图片: from PIL import Image # 打开图片 im = Image.open(‘test.jpg’) # 显示图片 im.show() 2. 图片处理 2.1 图片裁剪 我们可以使用Pill…

    python 2023年5月18日
    00
  • 详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本

    下面是详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本的完整攻略: 一、升级系统及依赖安装 在进行Python3.7安装之前,需要先升级系统并安装相关依赖。 首先打开终端,更新apt-get软件源并完成系统升级。 sudo apt-get update sudo apt-get upgrade -y 然后安装Python3的安装依…

    python 2023年5月14日
    00
  • 教你如何使用Python下载B站视频的详细教程

    教你如何使用Python下载B站视频的详细教程 介绍 B站拥有众多视频资源,有时我们想要将某些视频本地保存以便离线观看或者备份等,此时我们可以使用Python实现视频的下载,本文将为大家详细介绍如何使用Python下载B站视频的方法。 准备工作 在使用Python下载B站视频之前,我们需要安装Python的程序,并安装可用于下载的第三方库,下面是安装第三方库…

    python 2023年5月18日
    00
  • python+requests实现接口测试的完整步骤

    以下是关于使用Python和requests实现接口测试的完整步骤: Python+requests实现接口测试的完整步骤 requests是Python中一个流行的HTTP库,可以用于向Web服务器发送HTTP请求和接收响应。以下是使用Python和requests实现接口测试的完整步骤: 步骤一:编写测试用例 首先,我们需要编写测试用例,包括请求的URL…

    python 2023年5月14日
    00
  • k-means 聚类算法与Python实现代码

    下面是详细讲解“k-means聚类算法与Python实现代码”的完整攻略。 k-means聚类算法 k-means聚类算法是一种常用的无监督学算法,用于将点分成k个簇。该算法的核心思想是最小化数据点与簇中心之间的距离来最佳簇中,从而将数据点分成k个簇。 下面是k-means聚类算法的Python实现代码: import numpy np def kmeans…

    python 2023年5月14日
    00
  • Python数据模型与Python对象模型的相关总结

    Python数据模型与Python对象模型的相关总结 简介 Python是一种语言,具有统一的数据模型,从而可以理清它如何构建和处理任何类型的对象。同时,Python还有一个Python对象模型,与语言的实现相关,它描述了Python对象在内存中的存储方式和相互之间的关系。 Python数据模型 Python数据模型定义了一个包含若干特殊方法的接口,在Pyt…

    python 2023年6月5日
    00
  • python控制nao机器人身体动作实例详解

    Python控制Nao机器人身体动作实例详解 简介 在本文中,将会详细讲解如何使用Python控制Nao机器人的身体动作。Nao机器人是一种可爱的机器人,其身体由许多舵机控制,可以进行各种动作,包括走路、舞蹈、打招呼等。在这里,我们将使用Python编程语言控制Nao机器人进行一些有趣的动作。 前置条件 在开始之前,您需要准备如下条件: 一台Nao机器人 一…

    python 2023年6月5日
    00
  • python Tkinter实例详解

    Python Tkinter实例详解 Tkinter概述 Tkinter是Python的标准GUI库,提供了一套跨平台的GUI工具包。它包含了多个控件,如Button、Canvas、Checkbutton、Entry、Frame、Label、Listbox、Menu、Menubutton、Message、Radiobutton、Scale、Scrollbar…

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