utools已经够强大了,不过对于我来说,它还是有很多”硬货“没法直接干。比如媒体的相关处理等。而要处理这些东西,免不了就会涉及到很多诸如ffmpeg等强大的工具。但是使用这些工具就会和utools的使用的体验有割裂感。并且这些工具会面临一个跨设备使用的问题,每次跨设备可能需要重新配置。
所以今天我就来谈谈我的一种解决方案。它无缝的将utools和这些强大工具融合起来,并且具有良好的跨设备特性。切换一个设备环境,也只需几分钟配置,就可以获得一个几乎一致的使用体验。
原理:
其实很简单。整个框架包含三个部分:数据目录,工具目录,utools。
如上图,这里面是我默认放的一些工具(当然后来又添加了一些自己写的命令行工具)。
这里面还放了个”SetEnv2.ps1“文件。这个文件比较关键:它主要将该工具目录路径写入环境变量和一些其它的初始化工作。代码示例如下:
#设置脚本当前目录为环境变量
$script_dir = Split-Path -Parent $MyInvocation.MyCommand.Definition
[System.Environment]::SetEnvironmentVariable("UtoolsCoreAssets",$script_dir,"Machine")
Write-Host "Environment variable to complete!"
#idm绿化
.\IDM\green.bat
Write-Host "idm Afforestation finish"
#提示
Write-Host "Enviroment Write Success,need restart computer!"
Pause
工具目录我会以压缩包的形式放在云端(如百度云盘)。因为这个包修改频率较小。当换到新环境后,可以下载这个包,解压后运行”SetEnv2.ps1“,设置就算完成了。
数据目录主要存放配置文件和自己写的一些库文件。如上图的python库文件以及一些配置文件。这些文件是经常需要更新的,所以采用git维护,便于跨设备快速同步。目录同样包含了一个”SetEnv2.ps1“脚本来写入环境变量:
#设置脚本当前目录为环境变量
$parent_dir = Split-Path -Parent $MyInvocation.MyCommand.Definition
$python_scripts_dir = $parent_dir + "/Scripts"
[System.Environment]::SetEnvironmentVariable("UtoolsCoreData",$parent_dir,"Machine")
#设置自己的python库目录,这样就可以在python脚本里直接引用自己的库了
[System.Environment]::SetEnvironmentVariable("PYTHONPATH",$python_scripts_dir,"Machine")
接下来就是使用utools来写脚本了。逻辑很简单:在“快捷命令”里通过脚本调用工具目录里的工具程序和数据目录里的配置来实现相关逻辑。就挑个最简单来说。比如我想实现:一个视频全屏随机轮播的功能,码代码码累了,可以随机轮播自己收集的高清视频。调节下心情。就可以通过命令行来调用mpc-hc.exe来实现。代码如下:
import os
import json
import subprocess
#UtoolsCoreAssets为工具目录,UtoolsCoreData为数据目录
mpc_path = '%s/%s' % (os.environ['UtoolsCoreAssets'],'MPC-HC/mpc-hc64.exe')
data_path = '%s/%s' % (os.environ['UtoolsCoreData'],'Data/Path.json')
with open(data_path,'r') as dat:
lunbo_path = json.loads(dat.read())['lunbo']
#命令行:mpc-hc64.exe video目录 /randomize /fullscreen
subprocess.call([mpc_path,lunbo_path,'/randomize','/fullscreen'])
Path.json里面存放了本机相关的独立目录:
通过将上方的代码设置为快捷命令就能一键启动啦。并且跨设备也能快速同步操作,基本无需配置。
下面是我的一部分实用的快捷命令,具体可以前往后面相关链接查看。
我的脚本汇总:
https://blog.csdn.net/qq_33520289/category_10782743.html
附上基本框架:
链接:https://pan.baidu.com/s/1YZx4DqTmnqscXDTiQTmkZQ
提取码:wrml