1. 程式人生 > >用python為wallpaper engine批量新增本地視訊

用python為wallpaper engine批量新增本地視訊

wallpaper engine可以用本地視訊作為桌面背景,如果電腦裡有很多電影、電視劇、動畫之類的想隨機播放,一個一個新增還是很困難的,本文用python寫一個指令碼,修改wallpaper engine的配置檔案,把指定目錄下的視訊全部新增進來。算是學習python的一個小例子吧。

#-*- coding: utf-8 -*-
import json
import os
import io
import re

#輸入一個目錄,返回目錄下所有的視訊檔案(包括子目錄)
def getFileList(file_dir):
    L = []
    #篩選用的副檔名,列出wallpaper engine支援的視訊檔案型別
extNames=['.mp4','.wmv','.avi','.m4v','.mov','.webm','.mkv'] for root, dirs, files in os.walk(file_dir): for file in files: extName=os.path.splitext(file)[1] if extName in extNames: L.append(os.path.join(root, file)) return L #預設的wallpaper engine配置檔案路徑
filename="C:\Program Files (x86)\Steam\steamapps\common\wallpaper_engine\config.json" #用with而不是直接f=open(filename,'r'),可以保證檔案開啟失敗程式繼續執行 #然而對這個程式來說沒什麼用 with open(filename,'r') as f: #按utf-8編碼開啟json data=json.load(f,encoding="utf-8") #找到localfiles元素,這裡的Noah是這臺電腦的使用者名稱 #在修改wallpaper engine的設定時,經常出現沒有使用者名稱而直接跳到general的情況
#我也不知道為什麼,所以這裡應該根據實際情況修改 listOri=data["Noah"]["general"]["localfiles"] #將本地視訊列表與已有的列表合併 listNew=getFileList(u'D:\Download\視訊')+listOri #去掉重複的檔案路徑 listN=[] for li in listNew: if li not in listN: listN.append(li) #將列表賦值給json元素 data["Noah"]["general"]["localfiles"]=listN #這裡開啟檔案與上面不同,因為預設的open不能設定編碼格式 with io.open(filename,'w', encoding='utf-8') as f: #ensure_ascii=False:json.dump預設忽略特殊字元 #indent=4:子元素縮排四格 str=json.dumps(data, ensure_ascii=False,indent=4) #將縮排替換為‘\t’,這是python3.2之前的寫法,之後可以直接設定indent='\t' #從別處抄來的,沒看懂 str = re.sub('\n +', lambda match: '\n' + '\t' * (len(match.group().strip('\n')) / 3), str) f.write(str)