编写 Alfred 脚本成就达成
date
Jul 14, 2023
slug
AlfredWorkFlows
status
Published
tags
碎碎念
summary
type
Post
以前我总想自己写一个 Alfred 的脚本,但是苦于没有找到合适的资料,根本不知道如何入门。
现在 Chatgpt + 沉浸式翻译 完美解决问题。
驱动我做这件事情的还得是 Apple 公司,之前 macOS M1 版本的默认的 PHP 版本是可以使用 Alfred 的脚本的,我的很多脚本都是从网上搜来的,现在 macOS 直接把低版本的 PHP 废弃了,相应的 Alfred 脚本也不能使用了,我在经历了几天的痛苦之后,实在受不了了,就花了点时间用 Chatgpt + 沉浸式翻译,写出来了一个自己的 Alfred 的脚本,而且由于脚本本身不难写,难的是和 Alfred 之间的交互。现在这一步的秘密也被我搞通了,后面就是各种需求了。
完成之后,回头看,发现脚本和 Alfred 之间的交互也并不难,只是一个 JSON 而已,但是苦于之前不知道,一直在原地转圈。
刚才完成的脚本是:
- 输入 now ,返回一个当前的秒时间戳
- 输入具体的秒级时间戳,将其格式化并输出
#!/usr/bin/env python3
import datetime
import sys
import json
import time
result_array = []
def main(useTime):
result_item = {}
# get current time
now = datetime.datetime.now()
if useTime != -1:
ts = int(useTime)
dt = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(ts))
result_item['title'] = str(dt)
result_item['arg'] = str(dt)
result_array.append(result_item)
print(json.dumps({'items': result_array}))
return
ts = int(time.time())
result_item['title'] = str(ts)
result_item['subtitle'] = str(now)
result_item['arg'] = str(ts)
result_array.append(result_item)
print(json.dumps({'items': result_array}))
# run main function 2023-07-14 16:46:42.801999
if __name__ == '__main__':
args = sys.argv
if len(args) > 1:
if args[1] == 'now':
main(-1)
else:
main((args[1]))
和 Alfred 交互的 JSON 格式为:
{
"items": [
{
"uid": "desktop",
"type": "file",
"title": "Desktop",
"subtitle": "~/Desktop",
"arg": "~/Desktop",
"autocomplete": "Desktop",
"icon": {
"type": "fileicon",
"path": "~/Desktop"
}
},
{
"valid": false,
"uid": "flickr",
"title": "Flickr",
"icon": {
"path": "flickr.png"
}
},
{
"uid": "image",
"type": "file",
"title": "My holiday photo",
"subtitle": "~/Pictures/My holiday photo.jpg",
"autocomplete": "My holiday photo",
"icon": {
"type": "filetype",
"path": "public.jpeg"
}
},
{
"valid": false,
"uid": "alfredapp",
"title": "Alfred Website",
"subtitle": "https://www.alfredapp.com/",
"arg": "alfredapp.com",
"autocomplete": "Alfred Website",
"quicklookurl": "https://www.alfredapp.com/",
"mods": {
"alt": {
"valid": true,
"arg": "alfredapp.com/powerpack",
"subtitle": "https://www.alfredapp.com/powerpack/"
},
"cmd": {
"valid": true,
"arg": "alfredapp.com/powerpack/buy/",
"subtitle": "https://www.alfredapp.com/powerpack/buy/"
}
},
"text": {
"copy": "https://www.alfredapp.com/ (text here to copy)",
"largetype": "https://www.alfredapp.com/ (text here for large type)"
}
}
]
}
2023-07-18 更新
提供一些常用的 Workflow,均是在原有的 php 的基础上改的,作者信息保留在包里,其中 TimestampPy.alfredworkflow 是我自己写的,原作者的不小心删了。