用Python将女朋友的照片做成壁纸软件,实现桌面壁纸自动更换!
话说兄弟们,女朋友生气了都是怎么哄的?
不会吧不会吧,不会有人还是单身狗吧!
算了,还是回到正题吧,再说我要挨打了~
今天咱们来交流一下程序员是怎么哄女朋友的,话不多说直接开始!
准备工作
1、环境
首先我们准备好环境和编辑器,我使用的是:
- Python 3.8 解释器
- Pycharm 编辑器
2、使用的模块
import re # 正则表达式模块 import requests # 数据请求模块 import os # 文件操作模块 import ctypes # 时间模块
request是第三方模块,需要手动安装一下,win + R
输入cmd
输入安装命令pip install requests
其它的都是自带的,不用安装,直接调用。
3、如何配置pycharm里面的python解释器?
- 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)
- 点击齿轮, 选择add
- 添加python安装路径
4、pycharm如何安装插件?
- 选择file(文件) >>> setting(设置) >>> Plugins(插件)
- 点击 Marketplace 输入想要安装的插件名字 比如:翻译插件 输入 translation / 汉化插件 输入 Chinese
- 选择相应的插件点击 install(安装) 即可
- 安装成功之后 是会弹出 重启pycharm的选项 点击确定, 重启即可生效
代码实战
为了单身的小伙伴,于是我将案例分为两个部分。
- 获取壁纸
- 设置自动更换
当然,不单身的话直接看第二部分,哈哈~
1、获取壁纸
首先来实现单张壁纸获取
这里分为四个步骤来获取壁纸,后面的网址我都屏蔽一下,防止检测。
- 发送请求, 对于 http://www.***.com/desk/31131.htm 发送请求
- 获取数据, 获取网页源代码 <服务器返回响应数据>
- 解析数据, 提取我们想要的数据内容 壁纸链接以及名字
- 保存数据, 把壁纸文件保存到本地文件
发送请求
for page in range(3, 21): print(f'正在采集第{page}页的数据内容') # 请求链接 link = f'http://www.****.com/index_{page}.htm' # 发送请求 html_data = requests.get(link).text # 提取ID img_id_list = re.findall('<a href="/desk/(\d+)\.htm" title=', html_data) # for循环遍历 for img_id in img_id_list: # 请求链接 url = f'http://www.***.com/desk/{img_id}.htm' # 发送请求 response = requests.get(url)
获取数据
response.text 获取响应文本数据
response.encoding = response.apparent_encoding 自动识别码
解析数据
# 获得到数据, 返回出现乱码了 response.encoding = 'gbk' # 链接地址 以及 标题 img, title = re.findall('<img src="(.*?)" alt="(.*?)"', response.text)[0] print(img, title)
保存数据
# 发送请求, 获取数据 # 完整源码+视频讲解+表白墙代码 # 都放在这个抠裙了:815624229 img_content = requests.get(img).content with open('img\\' + title + '.jpg', mode='wb') as f: f.write(img_content)
多页多个数据采集
这里只讲一下大概思路,我有专门录制视频来讲解,可以在文末获取。
一个链接, 对应一个数据,获取多个链接, 获取多个数据。
http://www.***.com/desk/31095.htm http://www.***.com/desk/31131.htm http://www.***.com/desk/31090.htm http://www.***.com/desk/31092.htm 第二页: http://www.***.com/index_2.htm 第三页: http://www.***.com/index_3.htm 第四页: http://www.***.com/index_4.htm
自动更换壁纸程序
import os import ctypes import cv2 def Change(): # 壁纸文件夹路径 wallpaper_dir = r"D:\壁纸\output" # 获取壁纸文件夹中的文件列表 wallpapers = os.listdir(wallpaper_dir) # 随机选择一张壁纸 # wallpaper_filename = random.choice(wallpapers) for wallpaper in wallpapers: # 拼接壁纸文件的完整路径 wallpaper_path = os.path.join(wallpaper_dir, wallpaper) # 设置壁纸 ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper_path, 3) def convert_mp4_to_jpgs(path): video_capture = cv2.VideoCapture(path) still_reading, image = video_capture.read() frame_count = 5 # 保存的起始帧的编号005 while still_reading: cv2.imwrite(f"output/frame_{frame_count:03d}.jpg", image) # read next image still_reading, image = video_capture.read() frame_count += 5 # 保存帧依次增加5,005>>010>>015....... Change()
最后
为了大家能更好的让女朋友感受到你的诚意,我还准备了一份将女友照片做成照片墙的源码,和本文源码+视频讲解都打包好了,直接在在公众号【Python学习交流】发送关键字【照片】自动领取。
来看看效果
好了,哄女朋友的分享就到这结束了,建议大家没事还是不要惹女朋友生气了,哄好了还好,哄不好就G了!