本人对于壁纸一直偏佛系,不爱特意去找一堆壁纸。因此用Python简单地搞了一个自动下载壁纸,定时随机轮换的功能来自娱自乐,顺便分享给大家。

原文链接:查看

准备

下载安装Python3

官网下载即可,选择合适的版本:https://www.python.org/downloads/

安装一直下一步即可,记得勾选添加到环境变量。

安装pypiwin32

执行设置壁纸操作需要调用Windows系统的API,需要安装pypiwin32,控制台执行如下命令:

pip install pypiwin32

工作原理

两个线程,一个用来下载壁纸,一个用来轮换壁纸。每个线程内部均做定时处理,通过在配置文件中配置的等待时间来实现定时执行的功能。

壁纸下载线程

简易的爬虫工具,查询目标壁纸网站,过滤出有效连接,逐个遍历下载壁纸。

壁纸轮换线程

遍历存储壁纸的目录,随机选择一张壁纸路径,并使用pypiwin32库设置壁纸。

部分代码

线程创建与配置文件读取

def main():

# 加载现有配置文件

conf = configparser.ConfigParser()

# 读取配置文件

conf.read("conf.ini")

# 读取配置项目

search = conf.get('config', 'search')

max_page = conf.getint('config','max_page')

loop = conf.getint('config','loop')

download = conf.getint('config','download')

# 壁纸轮换线程

t1 = Thread(target=loop_wallpaper,args=(loop,))

t1.start()

# 壁纸下载线程

t2 = Thread(target=download_wallpaper,args=(max_page,search,download))

t2.start()

遍历图片随机设置壁纸

def searchImage():

# 获取壁纸路径

imagePath = os.path.abspath(os.curdir) + '\images'

if not os.path.exists(imagePath):

os.makedirs(imagePath)

# 获取路径下文件

files = os.listdir(imagePath)

# 随机生成壁纸索引

if len(files) == 0:

return

index = random.randint(0,len(files)-1)

for i in range(0,len(files)):

path = os.path.join(imagePath,files[i])

# if os.path.isfile(path):

if i == index:

if path.endswith(".jpg") or path.endswith(".bmp"):

setWallPaper(path)

else:

print("不支持该类型文件")

设置壁纸

def setWallPaper(pic):

# open register

regKey = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,"Control Panel\\Desktop",0,win32con.KEY_SET_VALUE)

win32api.RegSetValueEx(regKey,"WallpaperStyle", 0, win32con.REG_SZ, "2")

win32api.RegSetValueEx(regKey, "TileWallpaper", 0, win32con.REG_SZ, "0")

# refresh screen

win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER,pic, win32con.SPIF_SENDWININICHANGE)

壁纸查询链接过滤

def crawl(page,search):

# 1\. 进入壁纸查询页面

hub_url = 'https://wallhaven.cc/search?q=' + search + '&sorting=random&page=' + str(page)

res = requests.get(hub_url)

html = res.text

# 2\. 获取链接

## 2.1 匹配 'href'

links = re.findall(r'href=[\'"]?(.*?)[\'"\s]', html)

print('find links:', len(links))

news_links = []

## 2.2 过滤需要的链接

for link in links:

if not link.startswith('https://wallhaven.cc/w/'):

continue

news_links.append(link)

print('find news links:', len(news_links))

# 3\. 遍历有效链接进入详情

for link in news_links:

html = requests.get(link).text

fing_pic_url(link, html)

print('下载成功,当前页码:'+str(page));

图片下载

def urllib_download(url):

#设置目录下载图片

robot = './images/'

file_name = url.split('/')[-1]

path = robot + file_name

if os.path.exists(path):

print('文件已经存在')

else:

url=url.replace('\\','')

print(url)

r=requests.get(url,timeout=60)

r.raise_for_status()

r.encoding=r.apparent_encoding

print('准备下载')

if not os.path.exists(robot):

os.makedirs(robot)

with open(path,'wb') as f:

f.write(r.content)

f.close()

print(path+' 文件保存成功')

import部分

import re

import time

import requests

import os

import configparser

import random

import tldextract #pip install tldextract

import win32api, win32gui, win32con

from threading import Thread

知识点

threading:多线程,这里用来创建壁纸下载和壁纸轮换两个线程。

requests:这里用get获取页面,并获取最终的壁纸链接

pypiwin32:访问windows系统API的库,这里用来设置壁纸。

configparser:配置文件操作,用来读取线程等待时间和一些下载配置。

os:文件操作,这里用来存储文件,遍历文件,获取路径等。

python专属壁纸_Python开发专属壁纸下载与轮换程序相关推荐

  1. python程序员专用壁纸_Python开发专属壁纸下载与轮换程序

    本人对于壁纸一直偏佛系,不爱特意去找一堆壁纸.因此用Python简单地搞了一个自动下载壁纸,定时随机轮换的功能来自娱自乐,顺便分享给大家. 原文链接:https://www.codernice.top ...

  2. python主题壁纸下载_Python开发专属壁纸下载与轮换程序

    本人对于壁纸一直偏佛系,不爱特意去找一堆壁纸.因此用Python简单地搞了一个自动下载壁纸,定时随机轮换的功能来自娱自乐,顺便分享给大家. 原文链接:https://www.codernice.top ...

  3. 怎么用java做动态壁纸_开发实时壁纸

    所谓实时壁纸,即动态壁纸,就是手机桌面不再是简单的图片,而是运行中的动画,该动画由程序实时绘制的,所以称为实时壁纸.Android中提供WallpaperService基类来开发实时壁纸,步骤如下: ...

  4. python定义栈_Python开发中栈的定义及用法详解

    前言 在Python开发中栈的设计和使用是常用到的,可以说是学习Python必须要掌握的一个技能,那么作为程序猿的你掌握了多少呢?掌握不熟练?没关系,跟着小编再来学习一下吧. 正文 栈是常用的数据结构 ...

  5. anaconda打开python文本编辑器_Python开发环境安装(Anaconda+PyCharm)

    Anaconda 包含Python和python很多库 官网:(下载很慢很慢,<10 k/s) https://www.anaconda.com/download/ 清华大学开源软件镜像站:(点 ...

  6. python主题壁纸_Python教你如何下载你喜欢的桌面壁纸

    相关知识 1.URL处理模块(库) import urllib.request as req 2.创建一个表示远程url的类文件对象 req.urlopen(' ') 3.导入re包(正规表达式包) ...

  7. 有没有关于python的壁纸_python“批发”好看壁纸

    欢迎加入我们卧虎藏龙的python讨论qq群:996113038 ┉┉┉┉┉┉ 『导语』 ┉┉┉┉┉┉ 尽管每次都只是匆匆一眼 但它仍然能影响一天的心情 它就是我们的桌面壁纸 时常更换壁纸能带来一种新 ...

  8. python修改电脑桌面壁纸_python实现桌面壁纸切换功能

    本文实例为大家分享了python实现桌面壁纸切换功能的具体实现方法,供大家参考,具体内容如下 大体分为两个部分 一.利用爬虫爬取壁纸 第一部分爬取图片url地址并且下载至本地 爬虫针对http://i ...

  9. 用python当壁纸_python实现windows壁纸定期更换功能

    本文定期更换windows壁纸的python程序,很简单,属于自己写着玩的那种,不提供完美的壁纸切换解决方案. 安装pywin32 extensions 安装python2.7后,然后管理员的方式运行 ...

最新文章

  1. ROS学习手记 - 2.1: Create and Build ROS Package 生成包(Python)
  2. esriFeatureType与esriGeometryType的区别与联系
  3. ABP 拦截器不工作
  4. [原]FreeSWITCH uuid_transfer both转移失败(三方通话),如何解决?
  5. How to bind multiple properties with formatter on one control
  6. Sentinel(二)之Quick Start
  7. element tree不刷新视图_Vue项目布署后,刷新页面404的真正原因找到了
  8. Python格式化字符串f-string常用用法
  9. 解决spring的xml文件打开没有namespace等操作选项的问题
  10. multisim14安装后怎么汉化(超详解)
  11. Hadoop原理讲解(面试题)
  12. 史上最全的程序员常用英语词汇 珍藏版
  13. Android基础之批量发送短信
  14. 我喜欢两个男人。。。
  15. Fresco使用详情
  16. Computer Viruses and Malware (Advances in Information Security)
  17. 浏览器控制台输出图片
  18. php k线15分钟 30分钟,15分钟30分钟K线战法
  19. 大型支付系统后台对账系统的控制和管理
  20. 微信公众号爬虫的基本原理

热门文章

  1. 加班狗是怎样炼成的?推荐看三遍!
  2. 制造业数字化转型的意义
  3. 阿里巴巴旗下的淘宝为什么要分离出一个天猫出来?
  4. 乌鸦喝水(异常处理版 _)
  5. 利用python爬取LOL全皮肤
  6. 1234. 倍数问题 dp 数组 背包问题 状态压缩
  7. 长相思——山一程,水一程
  8. (国赛) 第七届工创赛之智能垃圾分类
  9. 如何运营护肤小红书号?可以根据你的产品和行业领域去运营
  10. DDos攻击与防守还有各自成本案例