Python新手也會寫的Alfred Workflow
Alfred的是公認的MacBook效率神器,入坑Mac這麼久用了很多別人寫的workflow覺著真心不錯。學了一點python終於可以寫個簡單的workflow了,先上效果圖:
關於Alfred的介紹可以看看 少數派的系列文章:關於Alfred的文章
準備工作:
1.MacBook + Alfred 2或3 + Alfred Powerpack
2.下載 deanishe 的python alfred 框架deanishe alfred,我們可以用他造的輪子完成我們自己的workflow了。
3.註冊和風天氣和風天氣官網,用天氣API獲取我們要在alfred輸出的天氣資料。
步驟:
1.新建個空白的workflow:
2.選中剛才新建的workflow,右邊空白區域右鍵選擇 Inputs-Scripts,會彈出一個新的設定視窗:
keyword:在alfred裡輸入這個值,就會調起這個script;
Language:這裡是指指令碼使用的程式語言,雖然我們用的是python,但是為了便於除錯,建議還是用bash呼叫自己寫的指令碼。
3.開啟這個workflow的位置
4.把deanishe 的workflow框架和自己的.py指令碼放在這個資料夾。
# -*- coding:utf-8 -*-
import json,sys
from datetime import datetime
from workflow import Workflow, web
reload(sys) # Python2.5 初始化後會刪除 sys.setdefaultencoding 這個方法,我們需要重新載入
sys.setdefaultencoding('utf-8')
#這個是和風天氣的API key,替換成你自己的就行
API_KEY = '你的API_KEY'
#返回某日是星期幾
def the_day(num):
week = ['星期一','星期二','星期三','星期四','星期五','星期六','星期日']
return week[num]
def main(wf):
url = 'https://free-api.heweather.com/x3/weather?cityid=CN101010100&key=' + API_KEY
#這裡用了deanishe 的框架裡面的web模組來請求頁面,web模組類似requests庫
r = web.get(url=url)
r.raise_for_status()
resp = r.text
data = json.loads(resp)
d = data['HeWeather data service 3.0'][0]
city = d['basic']['city']
#獲取一週內的資料
for n in range(0,7):
day = d['daily_forecast'][n]
#把API獲取的天氣、溫度、風力等資訊拼接成 alfred條目的標題、副標題
title = city + '\t' + the_day(datetime.weekday(datetime.strptime(day['date'],'%Y-%m-%d')))+ '\t' +day['cond']['txt_d']
subtitle = '白天 {weather_day}|' \
'夜間 {weather_night} |' \
' {tmp_low}~{tmp_high}攝氏度|' \
' {wind_dir} {wind_sc}'.format(
weather_day = day['cond']['txt_d'],
weather_night = day['cond']['txt_n'],
tmp_high = day['tmp']['max'],
tmp_low = day['tmp']['min'],
wind_sc = day['wind']['sc'],
wind_dir = day['wind']['dir']
)
#向alfred新增條目,傳標題、副標題、圖片路徑(圖片直接用的和風天氣提供的天氣圖,每個圖片的命名對應天氣狀態碼)
wf.add_item(title=title,subtitle=subtitle,icon='images/{code}.png'.format(code = day['cond']['code_d']))
wf.send_feedback()
if __name__ == '__main__':
wf = Workflow()
sys.exit(wf.run(main))
5.天氣的icon放在workflow所在的資料夾
6.給你的workflow新增一個版本檔案
7.在Alfred中除錯workflow
搞定收工
程式碼不完善的地方歡迎留言討論,如果您覺得這篇文章對您有幫助請點個贊喲。
相關文章
- Alfred之workflow入門Alfred
- Front Most Alfred WorkflowAlfred
- Laravel 中文文件檢索 Alfred WorkflowLaravelAlfred
- 使用python實現一個日期和時間戳互轉的Alfred workflowPython時間戳Alfred
- 用 Node.js 把玩一番 Alfred WorkflowNode.jsAlfred
- 分享自制的一個 Laravel 手冊 Alfred3 workflowLaravelAlfred
- Alfred Workflow 一鍵上傳圖片到 GitHub 返回 MarkdownAlfredGithub
- koa框架會用也會寫—(koa的實現)框架
- koa框架會用也會寫—(koa-router)框架
- 用python寫小遊戲,沒有學過python的也會這個打程式碼Python遊戲
- 電腦新手也能學會的重灌win10系統操作流程Win10
- koa框架會用也會寫—(koa-view、koa-static)框架View
- 編寫具有描述性的 RESTful API (一): WorkflowRESTAPI
- Python 裝飾器你也會用Python
- koa框架會用也會寫—(koa-bodyparser、koa-better-body)框架
- iOS 將來 Swift 也許會取代 Python !!!iOSSwiftPython
- 新手寫的視訊爬蟲爬蟲
- Mac效率神器Alfred以及Alfred常用操作MacAlfred
- 《經濟學人》也談 Python:它會是我們的未來嗎?Python
- 👅媽媽在也不用擔心我不會寫介面了
- 丁磊:那時候我們除了會寫軟體 什麼也不會做
- 寫給新手的MySQL入門指南MySql
- Python新手教程:40行python程式碼寫一個桌面翻譯器Python
- Blocs for Mac:新手也能快速上手的設計軟體BloCMac
- Python 新手常犯的錯誤Python
- 重新手寫一個VueVue
- URL 重寫新手指南
- gitflow workflowGit
- react workflowReact
- 效率神器--AlfredAlfred
- 新手也可以讀懂的 React18 原始碼分析(一)React原始碼
- JavaScript也能寫WebAssemblyJavaScriptWeb
- 新手應知應會的Linux命令Linux
- Python裡面這些點,據說80%的新手都會一臉懵逼Python
- 30個python教你學會優雅的寫程式碼Python
- 新手應該怎麼寫 SwiftSwift
- Alfred使用方法Alfred
- 你也可以手寫自己的Promise(一)Promise