Существует инструмент Alfred на Mac, вы можете использовать его функцию рабочего процесса для написания пользовательских рабочих процессов, поддерживающих различные языки программирования.GithubЕсть также много способов играть.
После того, как плагин будет завершен, вы можете с помощью сочетания клавиш вызвать диалоговое окно Альфреда, ввести ключевое слово tq, и погода на эту неделю может отображаться ниже.
шаг
Выполните следующие действия, чтобы быстро завершить рабочий процесс
1. Во-первых, вам нужно установить Alfred, или приобрести функцию рабочего процесса, или взломать, чтобы получить эту расширенную функцию. Затем создайте новый пустой рабочий процесс.
2. Щелкните пустой рабочий процесс и щелкните правой кнопкой мыши фильтр Inputs-Script Filter, чтобы создать новый модуль сценариев.
Ключевое слово задает ключевое слово, которое запускает рабочий процесс погоды.
Скрипт заполняет логику процесса, который необходимо выполнить.Здесь выбираем родную оболочку системы и выполняем в ней Python
3. Щелкните значок файла в виде четырех квадратов в правом нижнем углу, чтобы войти в каталог папки рабочего процесса. кто-то написал этоalfred-workflowsБиблиотека Python, эта библиотека обеспечивает базовую структуру, мы загружаем эту библиотеку и помещаем ее в каталог, и на этой основе пишем процесс.
4. Напишите основную функцию. Разрабатывайте плагины на основе библиотеки рабочего процесса Python и API погоды в Weather.py.
Реализация функции
# -*- coding:utf-8 -*-
import json,sys
from datetime import datetime
from workflow import Workflow, web
reload(sys)
sys.setdefaultencoding('utf-8')
# 和风天气的API key
API_KEY = 'Your-key'
def the_day(num):
week = ['星期一','星期二','星期三','星期四','星期五','星期六','星期日']
return week[num]
def main(wf):
url = 'https://free-api.heweather.com/s6/weather/'
+ 'forecast?location=CN101280601&key=' + API_KEY
# 这里用了deanishe 的框架里面的web模块来请求页面
r = web.get(url=url)
r.raise_for_status()
resp = r.text
data = json.loads(resp)
# 主体信息
d = data['HeWeather6'][0]
city = d['basic']['location']
#获取一周内的数据
for n in range(0, len(d['daily_forecast'])):
day = d['daily_forecast'][n]
# 把API获取的天气、温度、风力等信息拼接成 alfred条目的标题、副标题
title = city + ' ' + the_day(datetime.weekday(
datetime.strptime(day['date'],'%Y-%m-%d')))
+ ' ' + 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))
Реализация в основном делится на следующие этапы:
1. Используйтеwf = Workflow()
Создайте новый экземпляр рабочего процесса
2. Запросить данные о погоде в экземпляре. Каждая строка списка погоды, отображаемая плагином, состоит из основного заголовка, подзаголовка и значка, а полученные данные форматируются в эти части.
3. Используйтеwf.add_item
Добавить в экземпляр построчно
4. Используйтеwf.send_feedback
Возврат данных в рабочий процесс для рендеринга
На этом плагин погоды завершен.
Ссылаться на
Previous Next
tuzhi /
Published under (CC) BY-NC-SA in categories tagged with