Python으로 Alfred Workflow 만들기

발생일: 2018.10.20

키워드: alfred workflow, 알프레드 워크플로우

문제:
파이썬으로 알프레드 워크플로우 만들기 :)


해결책:

파이썬으로 워크플로우를 쉽게 만들 수 있게 부트스트랩 라이브러리를 만들어둔 저장소가 있다.


아래는 간단 튜토리얼.


논의:

# 부트스트랩 라이브러리 설치

알프레드 워크플로우를 생성한 후에, 해당 디렉토리에서 아래처럼 설치할 수 있다. (설치 가이드 참고)

    $ pip install --target ./workflow Alfred-Workflow


----
# 한글 이슈

알프레드는 맥의 기본 버전인 파이썬 2.7 버전을 사용하기 때문에, 고질적인 유니코드 문제가 있다.
unicodedata 모듈로 아래와 같이 노멀라이징하면 스크립트 필터에서 전달하는 한글 이슈를 해결할 수 있다.

    import sys
    import unicodedata

    reload(sys)
    sys.setdefaultencoding("utf-8")

    query = unicodedata.normalize('NFC', query)


위에서 언급한 workflow 모듈의 인스턴스의 args 변수에 실행 스크립트로 전달한 인자가 저장되며,
이미 유니코드로 노멀라이즈 되어 있어서 바로 사용해도 된다.

    query = wf.args[0]


다만, 디버깅 용도로 print()로 한글을 출력하려면 기본 인코딩을 지정해줘야 한다.


    import sys

    reload(sys)
    sys.setdefaultencoding("utf-8")

    query = wf.args[0]


----
# 서드파티 라이브러리 추가 (third-party library)

먼저, pip로 별도 라이브러리에 서드파티 라이브러리를 설치한다.
예를 들어, lib 디렉토리에 click 이란 패키지를 설치하려면 아래와 같이 실행하면 된다.

    $ pip install --target=./lib click


스크립트에서 직접 가져오려면 __init__.py 를 만들어줘야 한다.

    $ touch ./lib/__init__.py

    from lib import click



wf 인스턴스에서 바로 가져오는 방법도 있다.

    def main(wf):
        import requests
        ...

    if __name__ == '__main__':
        wf = Workflow3(libraries=['./lib'])
        sys.exit(wf.run(main))


----
# 꿀벌개발일지 검색용 워크플로우

아래와 같이 검색하는 간단한 워크플로우이다.



코드는 아래 gist에서 확인하면 된다.


다운로드해 참고해보면 쉽게 다른 워크플로우를 만들 수 있을 것이다. :D


카테고리

분류 전체보기 (702)
About me. (6)
Daylogs (667)
비공개 (0)
영어공부 (0)
My works - 추억 (29)