普通删除
直接选中
,右键取消订阅
即可,
但是没办法删除其他机器的订阅记录。因为有些记录是不出现在 已安装
列表里的(个人猜测是已下架的壁纸)
导致每一次安装都需要下载大量的文件。
针对这种记录,就需要用特别的方法。
根据文件标题去搜索中心安装取消订阅
按道理是可以的,
但是我没有试过,因为有很多壁纸都搜不到了
这种方法也很麻烦
让这些壁纸出现在已安装列表里即可取消订阅
首先,必须清楚每一个壁纸有一个特定的 编号,删除也是根据这个编号进行删除的
实际上每一个壁纸的文件夹名就是这个编号,只要把这个编号出现在列表里,就能取消订阅了
实际操作方法:
- 获取编号
- 找到配置文件(实际是在wallpager 的安装路径下的
bin\workshopcache.json
文件) - 打开文件,复制一项,改掉
workshopid
为编号即可,最好title
也改成编号,不然认不出 - 打开
Wallpager Engine
,选中取消订阅
即可 - 重启
Wallpager Engine
,就删除成功了
提供一个脚本批量生成
import os
import json
def get_all_dir(dir):
'''
:brief: 获取所有的文件夹名
:param dir: string 父文件夹路径
:return: string[] 子文件夹名
'''
for _, dirs, _ in os.walk(dir):
return dirs
def get_all_workshopid(dir):
'''
:brief:获取所有项目的workshopid
:param dir: string 父文件夹路径
:return: string[] id列表
'''
data = []
dirs = get_all_dir(dir)
for item in dirs:
data.extend(get_all_dir(dir + r'\\' + item))
return data
def create_config(items, sample):
'''
:brief:根据示例生成新的项
:param items: string[] workshopid数组
:param sample: dict
:return: dict[]
'''
data = []
for item in items:
new_item = sample.copy()
old = new_item['workshopid']
for (k, v) in new_item.items():
if k == 'title' or k == 'workshopid':
new_item[k] = item
elif isinstance(v, str):
new_item[k] = v.replace(old, item)
data.append(new_item)
return data
# steam 的安装路径
steam_dir = r'D:\Steam\\'
# steam下载的文件路径
workshop_dir = steam_dir + r'steamapps\workshop\content'
# wallpager 的配置文件路径
wallpager_config_file = steam_dir + r'steamapps\common\wallpaper_engine\bin\workshopcache.json'
id_items = get_all_workshopid(workshop_dir)
print('总文件个数:%d' %(len(id_items)))
with open(wallpager_config_file, 'r+', encoding='utf-8') as fs:
content = fs.read()
res = json.loads(content)
if len(res['wallpapers']) < 1:
print('请先订阅一个作为示例')
exit(0)
sample = res['wallpapers'][0]
exist_id = []
for item in res['wallpapers']:
exist_id.append(item['workshopid'])
data = list(set(id_items).difference(set(exist_id)))
if len(data) < 1:
print('没有缓存的文件')
exit(0)
new_items = create_config(data, sample)
res['wallpapers'].extend(new_items)
content = json.dumps(res, indent=4, ensure_ascii=False)
fs.seek(0)
fs.write(content)
print('成功生成缓存配置文件,可以进行取消订阅')
全选或框选批量取消订阅即可
注意改掉里面的路径 steam_dir 必须先订阅一个壁纸
本来是想找到接口,通过接口删除的,但能力有限,没找到方法
转载请保留原文链接: https://zodream.cn/blog/id/179.html