一、为什么想下载wallpaper Engine的壁纸
在游戏平台steam上,有一个壁纸软件wallpaper Engine,人称小红车,里面有各种好看的动态壁纸和视频,可以给我们的电脑设置动态桌面,非常好用。
用过几次后,我有了一些痛点,就是软件只能启动的时候才有这个桌面壁纸(当然这非常合理),但是我很喜欢这张壁纸,希望开机后,或不启动steam和wallpaper Engine的时候,也可以用这个壁纸当桌面。
同时有些视频我很喜欢,但是又不想当壁纸,就想下载下来放到其他文件夹里,所以就产生了这个需求,把wallpaper里面的壁纸和视频下载一下。
二、 这些代码能做到什么
在有了下载的想法以后,我着手研究起来,首先我想下载的是:壁纸和视频,视频文件的话还好说,在本地的文件夹里就有,但是壁纸文件时pkg封装好的,因为很多壁纸里有一些动态效果,这个应该是它的统一格式。
于是我在网上找到了大佬写的解包exe程序
repkg包地址:https://github.com/notscuffed/repkg/releases
根据这个程序,我进行了二次开发,可以批量的解压pkg的图片,然后放入必定文件夹中,加入了一些去重、重命名的功能,以及可以指定白名单不加入下载队列中。
三、代码展示和下载
这里我给出了我的代码仓库地址,github和gitcode,具体使用方法在readme文件中有介绍。
https://gitcode.net/CCGGAAG/Python
https://github.com/CCGGAAG/wallpaper_download
这里要注意的是,直接复制我的代码不能跑,因为缺一个repkg.exe,从我上面给出的仓库地址下载就行了。
# -*- coding:utf-8 -*-
import os
import shutil
import yaml
import hashlib
import random
class CopyWallpaper:
def __init__(self, steam_url, copy_dir):
"""
类的初始化,两个地址必需传递为本地电脑的绝对路径
:param steam_url: wallpaper的数据文件夹,例如:D:/**/Steam/steamapps/workshop/content/431960
:param copy_dir: 你要转移存储文件的地址
"""
self.steam_url = steam_url
self.copy_dir = copy_dir
self.file_format = [".mp4", ".MP4", ".MOV", ".mov", ".avi", ".AVI", ".webm", ".WEBM", ".pkg"]
self.video_format = [".mp4", ".MP4", ".MOV", ".mov", ".avi", ".AVI", ".webm", ".WEBM", ".mp3"]
self.pkg_file_format = [".png", ".PNG", ".jpg", ".JPG", ".jpeg", ".JPEG", ".gif", ".GIF"]
if "img" not in os.listdir(self.copy_dir):
os.makedirs(self.copy_dir + "/img")
def get_repkg_img(self, list_pkg):
"""
通过本地的pkg文件地址列表,将pkg解压后的图片文件移动到指定文件夹(copy_dir)下
:param list_pkg: 本地的pkg文件地址列表
:return:
"""
pkg_path = os.getcwd() + "/repkg"
base_driver = pkg_path[0]
for i in list_pkg