如何用 Python 编写 Alfred Workflow

写这篇文章记录一下我第一次开发 Alfred Workflow 的历程,希望能给后来者提供一个真正有帮助的教程。

在这边文章里,我会讲述我如何在Alfred里开发一个workflow,来实现LeetCode上的问题和Topic的检索功能。具体的代码,说明和演示可以访问我的 Github.

先贴个一个简单的示例图

选择Binary Search Tree [Hard]后,会打开一个LeetCode页面并筛选出所有带有Binary Search Tree标签的Hard Problem,如下图所示:

1. 准备工作

首先使用Alfred的Workflow,必须要购买他们的Alfred Powerpack,还是很值得的。

具体开发需要的依赖库是:deanishe开发的Alfred Workflow组件,可以从Github上面把它下载下来。

2. Detail Steps

2.1 创建一个新的workflow

首先点击左下角的+号,选择创建一个Blank Workflow,如下图所示:

2.2 添加Alfred Workflow开发组件

接下来先创建一个Script Filter,如下图所示

进入workflow所在的文件夹,双击刚刚新创建的Script Filter,然后双击下图中红色圆圈中的按钮即可。

最后把下载好的Alfred Workflow开发组件里的workflow文件夹,拷贝到这个文件夹中,如下图所示:

2.3 编写Script

首先讲讲如何在Alfred Workflow中调用我们编写的Python脚本,双击Script Filter,配置如下所示:

/bin/bash表示使用bash来执行我们的脚本,script中所写的就是在bash中执行的命令,如上图中所示,我们执行了一个名为search.py的Python脚本,并传递了参数--topic "{query}". 其中{query}就是用户在Alfred中输入的字符串。

接下来就可以使用 Alfred Workflow 库来开发了,具体的教程可以查看链接中Github的说明。

下面讲一下简单的基本框架

#!/usr/bin/python
# encoding: utf-8import sys# Workflow3 supports Alfred 3's new features. The `Workflow` class
# is also compatible with Alfred 2.
from workflow import Workflow3def main(wf):# The Workflow3 instance will be passed to the function# you call from `Workflow3.run`.# Not super useful, as the `wf` object created in# the `if __name__ ...` clause below is global...## Your imports go here if you want to catch import errors, which# is not a bad idea, or if the modules/packages are in a directory# added via `Workflow3(libraries=...)`import somemoduleimport anothermodule# Get args from Workflow3, already in normalized Unicode.# This is also necessary for "magic" arguments to work.args = wf.args# Do stuff here ...# Add an item to Alfred feedbackwf.add_item(u'Item title', u'Item subtitle')# Send output to Alfred. You can only call this once.# Well, you *can* call it multiple times, but subsequent calls# are ignored (otherwise the JSON sent to Alfred would be invalid).wf.send_feedback()if __name__ == '__main__':# Create a global `Workflow3` objectwf = Workflow3()# Call your entry function via `Workflow3.run()` to enable its# helper functions, like exception catching, ARGV normalization,# magic arguments etc.sys.exit(wf.run(main))

我们可以通过如下的方式来在Alfred的下拉列表中添加项:

wf.add_item(title="Title here",subtitle="Subtitle here",valid=True,uid="url here",arg="return argument here"
)

具体的代码,说明和演示可以访问我的 Github.

有什么问题可以在这里留言,看到了我会尽量回复。

如何用 Python 编写 Alfred Workflow相关推荐

  1. python workflow_如何用 Python 写 Alfred Workflow

    原标题:如何用 Python 写 Alfred Workflow 用 Mac 的同学应该都听过 Alfred,号称效率神器.但是,你有没有想过可以用 Python 自己写一个 Workflow 呢? ...

  2. python写乘法口诀-如何用python编写乘法口诀表

    如何用python编写乘法口诀表?首先要明确一下思路,我们可以确定x,y两个变量,弄清楚其变化的规律,再使用循环嵌套实现.下面是如何用Python编写乘法口诀表的具体方法. 第一种:使用for遍历循环 ...

  3. python rest api 测试_如何用Python编写REST API的单元测试

    在过去的几个月中,正在从事一个名为B的项目.它是带有简单Web UI的徽章生成器,用于添加数据并生成PDF可打印徽章.B后端现在已转移到REST-API并测试REST-API中使用的功能,我们需要一些 ...

  4. python写乘法口诀表好记方法_如何用python编写乘法口诀表

    如何用python编写乘法口诀表?首先要明确一下思路,我们可以确定x,y两个变量,弄清楚其变化的规律,再使用循环嵌套实现.下面是如何用Python编写乘法口诀表的具体方法. 第一种:使用for遍历循环 ...

  5. 如何用Python编写一个求 1到n阶乘之和的程序

    各位许久不见了,甚是想念! 前段时间我进入高中阶段学习,一直还没有适应,现在好些了就继续写博客了. 看到很多人关注我,点赞或是评论,我感觉太高兴了! C语言这块我暂时先放下了,我想自己学学Python ...

  6. 乘法口诀表python_如何用python编写乘法口诀表

    如何用python编写乘法口诀表?首先要明确一下思路,我们可以确定x,y两个变量,弄清楚其变化的规律,再使用循环嵌套实现.下面是如何用Python编写乘法口诀表的具体方法. 第一种:使用for遍历循环 ...

  7. 如何用 Python 编写网页病毒

    如何用 Python 编写网页病毒,慎用噢 原创作者:Shane_hcker https://blog.csdn.net/Shane_hcker/article/details/112004870 本 ...

  8. 独家 | 如何用Python编写你最喜欢的R函数?

    翻译:陈之炎 校对:卢苗苗 本文共2136字,建议阅读5分钟. 本文介绍了采用创建一个Python脚本,用该脚本模仿R风格的函数的方法来方便地进行统计. 是用R语言还是用Python语言?这是一个旷日 ...

  9. 如何用python编写一个绘制马赛克图像的自写程序mask = np.zeros

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 这篇教程将会展示如何用python的图形化包"Pygame"和基础的文件I/O来创建一 ...

  10. python中编写函数素数_如何用Python编写素数程序?

    成为一个认证的专业素数是一个大于1的自然数,它没有除1以外的任何除数.你可以用Python编写一个代码来帮助你找到所有的素数.在本文中,我们将按照以下顺序在Python中编写一个素数程序:什么是素数? ...

最新文章

  1. 公司又有人被开除了,这次真的是...
  2. Validation failed for one or more entities. See ‘EntityValidationErrors’解决方法
  3. 2压缩备份数据库_为什么您的企业需要备份数据库
  4. KubeCon 2019 北美会议完美落幕| 云原生生态周报 Vol. 29
  5. 使用@Valid进行Spring验证bindingresult 用法
  6. 《程序员歌单》请查收
  7. html class和id,css教程之样式表的基本语法(二) class(类)和id的一个小实例
  8. 北京市中 高英语听说计算机考,2021年北京高考首次英语听说机考时间确定,共五种题型...
  9. cobalt strick 4.0系列教程(3)---数据管理
  10. 6大分布式定时任务对比
  11. Android软件开发之盘点所有Dialog对话框大合集(一)
  12. mysql的数据库操作类_MYSQL数据库操作类
  13. Spring的加载机制导致不同SpringBoot启动方式下@Value注解失效
  14. oracle创建dblink语句_多个Oracle数据库联合做统计分析
  15. 单元测试中简单使用Mockito解决Spring Bean依赖树问题
  16. 对有序特征进行离散化(继承Spark的机器学习Estimator类)
  17. iOS开发:如何修改app名称
  18. 请高手指点,简单的几个数组操作方法不知道是否可以有更好的改进方法或者更简单的方法?
  19. flink job 提交模式
  20. 【Windows Server 2019】活动目录 (Active Directory) ——创建、删除和管理对象、容器和组织单位(OU)

热门文章

  1. 软考常用计算公式及理解
  2. 逆水寒2021最新服务器,逆水寒公布2021部分更新计划,写满了离经叛道
  3. 2018医学考博英语阅读理解解题技巧
  4. WorldPress中文乱码问题
  5. svchost.exe程序下载解决方法或者在360中看到svchost.exe占网速
  6. Hacking Vim: 插件管理器Pathogen(02)
  7. 2021-2027全球与中国卸扣式绝缘子市场现状及未来发展趋势
  8. [编程题]雀魂启动!
  9. java播放器_Java视频播放器的制作
  10. magento-onestep-checkout-remove-payment-method-step