python实现动态桌面壁纸(精简)

众所周知,一个良好的桌面壁纸能提高写代码的心情,也能加强在电脑面前吃泡面的食欲 但是找到一个合适壁纸是多么麻烦是事情,所以很多小伙伴不想麻烦,于是我的想法诞生了

先看效果图

只需要双击图标就可以切换下一张图片

还可以定时自动更换壁纸(后面详细介绍)

 

 

执行逻辑:

1.先去寻找高清壁纸网站

2.编写爬虫将大量图片保存到本地

3.编写代码将图片设置为壁纸

4.增加定时更新模块

一、目标地址

https://pic.netbian.com

二、爬虫代码

'''
    目标网站: https://pic.netbian.com
'''
from requests_html import HTMLSession
import re,os
import requests
from tqdm import tqdm
from functools import partial
from multiprocessing import Pool
session = HTMLSession()

# 获取下载链接
def get_urllist(addr):
    '''
    :addr: 传入该网站一个地址
    :return:  返回一个高清大图下载地址字典(标题:url)
    '''
    addr = f'https://pic.netbian.com{addr}'
    r = session.get(addr)
    # // 查看页面内容
    # print(r.html.html)
    # 获取链接
    # print(r.html.links) # 所有链接
    url_list = r.html.absolute_links # 绝对链接
    # print(url_list)
    rule = re.compile('(https://pic.netbian.com/tupian/[0-9]{1,9}.html)')

    href_list = re.findall(rule,str(url_list))
    # print(href_list)
    # print('获取图片:',len(href_list))
    # 请求进去得到高清壁纸
    complete_url_dict = {}
    for i in href_list:
        response = session.get(i)
        # print(response.html.html)
        # 获取部分url
        imperfect_url = response.html.xpath("//a[@id='img']/img/@src",first=True)
        title = response.html.xpath("//a[@id='img']/img/@title",first=True)
        # 拼接完整url
        url = f'https://pic.netbian.com{imperfect_url}'
        complete_url_dict.update({url:title})

    return complete_url_dict


# 下载图片
def download(url_dict,save_path):
    '''
    :save_path: 保存目录
    :param url_dict: 图片下载地址列表
    :return:
    '''
    # print(url_dict)
    name_list = os.listdir(save_path)
    # print(name_list)
    # for url,title in tqdm(url_dict.items()):
    url = url_dict[0]
    title = url_dict[1]
    if f'{title}.jpg' in name_list:
        print(title,'已存在...跳过!')
        pass
    else:
        with open(f'{save_path}/{title}.jpg', mode='wb') as f:
            f.write(requests.get(url).content)
            # print(title,':写入成功!')

if __name__ == '__main__':
    # 根据网站创建图片分类
    dic = {
        '4k风景':'/4kfengjing/',
        '4k美女':'/4kmeinv/',
        '4k游戏': '/4kyouxi/',
        '4k动漫': '/4kdongman/',
        '4k影视': '/4kyingshi/',
        '4k汽车': '/4kqiche/',
        '4k动物': '/4kdongwu/',
        '4k人物': '/4krenwu/',
        '4k美食': '/4kmeishi/',
        '4k宗教': '/4kzongjiao/',
        '4k背景': '/4kbeijing/',
        '4k手机壁纸': '/shoujibizhi/',

    }
    # url:title 字典
    print('图片下载器'.center(50,'='))
    for id,i in enumerate(dic.keys()):
        print(f'{id+1}.{i}')
    print(''.center(50, '='))
    try:
        idd = int(input('请选择图片序号:'))-1
        num = int(input('请选择下载页数:'))
        if num > 10:
            print('为确保安全,最多下载10页!!')
            num = 10
        if num <= 0:
            print('1<下载页数<10')
            exit()
    except:
        print('请输入数字!')
        exit()
    print('正在获取下载链接-/-/')
    name = list(dic.keys())[idd]
    # 第一页链接
    url_dict = get_urllist(dic[name])
    # 后几页链接
    for x in range(1,num):
        url_dict.update(get_urllist(dic[name]+f'index_{x+1}.html'))
    print('下载图片张数:',len(url_dict))
    save_path = f'./图片/{name}'
    if not os.path.exists(save_path):
        os.mkdir(save_path)
    # print(url_dict)
    # 下载图片
    # download(url_dict,save_path)
    print('正在下载-/-/')
    func = partial(download, save_path=save_path)
    pool = Pool(10)
    r = list(tqdm(pool.imap(func, url_dict.items()), total=len(url_dict.items()), ncols=80))
    pool.close()
    pool.join()

运行效果如下:

三、将图片设置为桌面背景


import os
import random
import ctypes


def fun(path):
    # path = r"E:\py开发环境\图片\4k动物" # 存储图片的文件夹
    file = os.listdir(path)  # 打开文件夹
    filepath = f" {path}\\{random.choice(file)}" # 随机选取某张图片,拼接绝对地址
    print(filepath)
    ctypes.windll.user32.SystemParametersInfoW(20, 0, filepath, 0)  # 设置桌面壁纸

fun(r"E:\py开发环境\图片\4k风景")

四、增加定时(每隔30分钟刷新一次壁纸)

while 1:
    path = r"E:\py开发环境\图片\4k动漫"# // 存储图片的文件夹
    fun(path)
    time.sleep(1800)

五、最后换一个图标,双击运行,大工告成

注意点:后面运行双击py文件时 会出现弹窗 需要将.py修改为.pyw即可

                                                                                  以上内容仅仅只做学习交流,切勿用做其他

欢迎一起学习进步wx:py-open-cv

                                                                                                                 

  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值