Mac Alfred 工作流 Python开发,可自定义任何接口,全自动化办公

Alfred

        用Mac的人应该大多都知道这个,但是workflow工作流,应该是很多人没自己写过,得知支持Python脚本后,自己花了几个小时研究了一下如何把接口融合到Alfred快捷方式中,这里给大家提供一个模板,以这样的形式,无论是免费api还是自己封装的工具接口,均可集成到Alfred中!

效果图

在这里插入图片描述
在这里插入图片描述

申请接口

        市面上有很多免费接口,这里以聚合数据的头条新闻api为例,链接:https://www.juhe.cn/docs/api/id/235,在官网注册申请api即可,得到一个key,发送请求参数时带上key和其他参数即可。

Workflow

建立空白workflow

在这里插入图片描述
在这里插入图片描述
填上基本信息即可,也可以设置一个图标
再在里面空白处右键选择script filter
在这里插入图片描述
在这里插入图片描述

在script filter里面,我们去运行Python脚本,接受的参数就是"{query}"可以进行传参,这里采用了一个免费的头条新闻api,只要接口能测成功即可,不赘述:
在这里插入图片描述

Python代码,整体思路就是,定义好获取接口数据的方法,并将结果返回给workflow的具体字段即可:

# -*- coding: utf-8 -*-
"""
-------------------------------------------------
Project Name: alfredProjects
File Name: alfredTest.py
Author: apple
Create Date: 2021/6/28
-------------------------------------------------
"""
# coding: utf-8
from workflow import Workflow, web, ICON_WEB
import sys

reload(sys)

sys.setdefaultencoding('utf8')

query_map = dict(
    inner=u"输入in搜索头条国内新闻",
    outter='输入out搜索头条国际新闻',
    top=u'输入top搜索热点新闻'
)


def get_recent_news(query):
    if query == "in":
        url = "http://v.juhe.cn/toutiao/index?"
        params = {"key": "dd0fb509ac5407213bc6a0fddd48f234",
                  "type": "guonei"}
    elif query == "out":
        url = "http://v.juhe.cn/toutiao/index?"
        params = {"key": "dd0fb509ac5407213bc6a0fddd48f234",
                  "type": "guoji"}
    elif query == "top":
        url = "http://v.juhe.cn/toutiao/index?"
        params = {"key": "dd0fb509ac5407213bc6a0fddd48f234",
                  "type": "top"}

    r = web.post(url, data=params)
    print(r)
    # throw an error if request failed, Workflow will catch this and show
    # it to the user
    r.raise_for_status()
    # result = r.json()
    return r.json()["result"]['data']


def main(wf):
    query = wf.args[0]
    if not query:
        for key in ["inner", "outter", "top"]:
            wf.add_item(
                title=query_map[key],
                valid=True,
            )
    else:
        def wrapper():
            return get_recent_news(query)

        news = wf.cached_data(query, wrapper, max_age=300)
        # news = get_recent_news(query)
        for r in news:
            wf.add_item(title=u"【{}】{}".format(r["author_name"], r['title']),
                        arg=r['url'],
                        valid=True,
                        icon=ICON_WEB)
    # Send output to Alfred. You can only call this once.
    # Well, you *can* call it multiple times, but Alfred won't be listening
    # any more...
    wf.send_feedback()


if __name__ == '__main__':
    wf = Workflow()
    sys.exit(wf.run(main))

最后说一下脚本和相关库放在哪里:
在这里插入图片描述

点击后,会在finder显示该工作流的文件夹,将workflow库以及Python脚本放在此下即可:
在这里插入图片描述

跳转页面

        由于返回的json数据里面,每个新闻有个url,我们将url设为workflow的item args即可,代码片段:

 wf.add_item(title=u"【{}】{}".format(r["author_name"], r['title']),
                        arg=r['url'],
                        valid=True,
                        icon=ICON_WEB)

再在script filter之后接一个url即可:
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值