macos: 利用 alfred 与 python 脚本实现一个简单的工作流/exam

用python脚本,结合参数,实现的一个简单工作流命令
更新于: 2022-11-19 22:46:21

背景

我需要一个命令,帮我完成2个功能

  • 清理目录,建立空目录
  • 对图片进行整理(压缩/重命名),然后导出 zip

脚本 hello.py

  • clean: 清理目录,及初始化工作
  • export: 导出以及压缩等活儿
import os
import glob
import sys

# get execute args
args = sys.argv


def export():
    source_dir = './exam'
    target_dir = './exam_export'

    # copy target_dir to dist_dir
    os.system(f'cp -R {source_dir}/* {target_dir}')

    # 重命名
    files = glob.glob(target_dir + '/*.png')

    # sort by datetime reverse
    files.sort(key=lambda x: os.path.getmtime(x))

    for i, file in enumerate(files):
        # zero padding left
        index = str(i + 1).zfill(2)
        # rename
        os.rename(file, target_dir + '/%s.png' % index)

    # # image min
    os.system(f'cd {target_dir} && imc -o')

    # # make a zip
    os.system(f'zip -9 -r {target_dir}.zip {target_dir}')

    print('🐠 export done.')


def clean():
    source_dir = './exam'
    target_dir = './exam_export'

    os.mkdir(path=source_dir) if not os.path.exists(source_dir) else None
    os.mkdir(path=target_dir) if not os.path.exists(target_dir) else None

    # clean target dir
    for f in glob.glob(target_dir + '/*'):
        os.remove(f)

    # clean source dir
    for f in glob.glob(source_dir + '/*'):
        os.remove(f)

    print('🐠 clean done.')


def main():
    if len(args) > 1:
        cmd = args[1]
        if cmd == 'export':
            export()
        if cmd == 'clean':
            clean()
    else:
        print('Sub command is required.')


if __name__ == '__main__':
    main()

命令行调用

# 脚本目录
cd ~/Downloads
# 清理
python hello.py clean
# 导出
python hello.py export
workflow 任务
利用 keyword 触发
workflow 接收参数

调用 alfred

运行 clean 脚本
脚本运行正常
工作截图
程序运行效果截图

参考