本帖最后由 onlyclxy 于 2021-5-13 20:18 编辑
有位兄弟给我这个代码做了个界面,大家可以去他那里下载界面版的.这边帖子就算是代码交流贴吧
https://www.52pojie.cn/thread-1369018-1-1.html
更新,兄弟们.. 今天小臂麻了一天.. 估计是长时间一个姿势颈椎变形压迫血管了. 先不这么拼的改代码了.界面的先随缘吧,我先锻炼一阵子.然后源代码放上来了.有学习的可以来借鉴.有想加界面的可以自己改.也希望自己能做抛砖引玉的那个人. 另外请不要过量爬人家网站, 当时我做这个目的,也是为了体验随机获得壁纸的新鲜感. 这些图有心找随便下好几T的,小弟保证你下一堆看都不带看的.人们就是有仓鼠症,喜欢屯东西.但是屯东西往往并不能提升好的体验. 以上
之前想找一个可以切换桌面壁纸的小程序. 但是一般网上的程序,要么收费,要么是动态壁纸特别占GPU.要么不咋稳定.而且不一定是4k的.于是自己又动手写了一个小程序来切换随机桌面壁纸.
Python写的,现在只有两个功能, 随机切换桌面壁纸和循环切换桌面壁纸. 当"自动换壁纸"配置关闭时,打开一次程序会随机切换一张壁纸. 当"自动换壁纸"配置开启时,程序会按着设定的时间自动切换桌面壁纸.
原理是找了个4k壁纸的网站,随机去选一张壁纸直接设置为桌面.而且不会产生多余的缓存
缺点是没有界面.只有个cmd的控制台.而且不能后台运行.
另外注意一下,程序同目录有个配置文件,别删除.配置文件可以自己改.
另外不知道用这个人的需求多不多. 要是不多的话,我就不做界面了
[Python] 纯文本查看 复制代码 import requests
import time
import os
from bs4 import BeautifulSoup
import random
import re
import urllib.request
import ctypes
import configparser
#表头
Modelheaders = {
#'upgrade-insecure-requests':'1',
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11'
}
def changepic(weburl,pagenum,autochange,autotime):
while True:
try:
lastweb=weburl+str(random.randint(1,int(pagenum))) #这个是获取页数
res=requests.get(lastweb,headers=Modelheaders) #获取网页代码
shaixuan4=BeautifulSoup(res.text,"html.parser") #用bs4分析源码
shaixuan5=shaixuan4.find("div",id="thumbs") #用bs4寻找标签
imggroup=[] #创建数组用于储存正确图片的地址
for k in shaixuan5.find_all("li"): #循环寻找列表格式的缩略图的li标签
try: #防止出错程序停止运行
shaixuan6=k.find("a")["href"] #寻找大图的网页地址
if len(shaixuan6)>30: #这里正确的图片网址,字符大约是28个, 如果有大于30字符的网址,说明网址不是正确的图片网址,股筛选掉.
break #跳出一次当前循环
imggroup.append(shaixuan6) #正确获取的大图图网址存入数组
#print(shaixuan3)
except: #异常处理
pass #占位符
#print("异常")
num=random.randint(0,len(imggroup)) #这里生成一个随机数,意在与在上面所有的图片里随机选一张图
#print(imggroup)
lasturl=imggroup[num] #从数组里取出随机选择的图片网址
#print(lasturl)
res=requests.get(lasturl,headers=Modelheaders) #分析这个大图的图片网址
res_soup=BeautifulSoup(res.text,"html.parser") #用bs4分析代码
img_text=res_soup.find("img",id="wallpaper") #寻找标签
#print(img_text)
img_url=img_text.get("src") #这个是获取大图的实际地址.scr=xxxx
print("更换壁纸中...")
#print("壁纸更换为: "+img_url)
opener = urllib.request.build_opener() #创建一个opener
opener.addheaders = [('User-agent', 'Mozilla/5.0')] #给这个opener设置header
urllib.request.install_opener(opener) #安装这个opener的表头header,用于模拟浏览器.如果不模拟浏览器,下面的代码会404
PATH=urllib.request.urlretrieve(img_url)[0] #获取处理图片地址
ctypes.windll.user32.SystemParametersInfoW(20, 0, PATH, 3) #设置桌面
if autochange=="是": #如果自动切换桌面为是,那么将会循环本条
print("等待 " +str(autotime) + " 秒") #打印输出
time.sleep(int(autotime)) #延迟几秒
else:
break #占位符
except: #有时候会数据溢出,这里没功夫细看,索性除了问题先跳过
time.sleep(0.1)
print("重试中,如果一直出现这条,说明配置文件不正确")
input("程序结束,请按回车退出") #防止cmd运行完一闪而过,加的暂停
print("-----------------------------------------------------------")
print("吾爱破解论坛 [url=http://www.52pojie.cn]www.52pojie.cn[/url]")
print("-----------------------------------------------------------")
print("随机2k4k图片自动设置桌面壁纸,本程序同目录有个配置文件,请勿删除")
print("-----------------------------------------------------------")
if os.path.isfile("bzconfig.ini"): #查看配置文件是否存在
print("读取配置文件:")
config = configparser.RawConfigParser() #预备读取配置文件
config.read('bzconfig.ini',encoding="utf8") #读取配置文件
autochange=config.get('基础设置', '自动换壁纸') #获取配置文件数据
print("自动换壁纸: "+autochange) #打印输出
autotime=config.get('基础设置', '换壁纸时间')
print("自动换壁纸等待时间: "+autotime)
web=config.get('基础设置', '网址')
#print("获取网址: "+web)
allpage=config.get('基础设置', '页面数量')
print("页面数量: "+allpage)
print("-----------------------------------------------------------")
else:
print("未找到配置文件,请重新下载配置文件,这里将使用默认配置来随机桌面壁纸")
web="https://wallhaven.cc/search?categories=111&purity=100&atleast=2560x1440&ratios=16x9%2C21x9%2C16x10%2C32x9%2C48x9&sorting=toplist&order=desc&page="
allpage=25
autochange="否"
autotime=3
print("-----------------------------------------------------------")
changepic(web,allpage,autochange,autotime) #运行程序
蓝奏云
https://wwe.lanzoui.com/b01tx5eve
密码:6i4o
|