Alfred

Alfred

Alfred는 Mac에서 항상 사용하는 App이다. 기본 기능은 무료로도 사용 가능하지만, 하나의 스크립트 같은 WorkFlowPowerPack을 사야 사용할 수 있다. PowerPack의 Mega Supporter 라이선스 비용을 지급하고 사용 중이다.

Workflow raywenderlich

PowerPack도 있으니, iOS 관련 자습서를 보기 위해 종종 방문하는 raywenderlich.com의 최신 글을 빠르게 볼 수 있는 Workflow를 만들어 보았다.

Screen Shot

Alfred를 띄운 후, ray를 입력하면 RSS를 읽어서 글 목록을 보여준다. 해당 글을 선택하면 웹 브라우저에서 보여준다.

Workflow 제작기

처음에는 Swift를 이용해서 만들려고 생각했으나, Swift는 Mac OS에 기본으로 설치되어 있지 않아 기본으로 설치된 python을 이용했다.

python

참고로 python은 아주 가끔 필요한 만큼만 사용하는 수준이다. 즉, 문법 잘 모른다. 필요할 때 문서보고 필요한 문법 찾아서 사용한다. 그리고 목표를 달성하면 다시 한동안 사용하지 않으니 자연스럽게 잊어버린다. 흐흐….

기본 라이브러리 역시 잘 모른다. 문법도 모르는데, 기본 라이브러리를 어찌 알겠는가? 이 역시 필요한 것 문서보고 찾아서 사용하는 수준이다.

전체 흐름

Overview

Alfred Workflow의 Script Filter로 셸 스크립트를 실행한다. 셸 스크립트 안에서 python 프로그램을 실행시킨다.

python 프로그램은 raywenderlich 사이트의 RSS 피드를 읽어 제목과 URL 주소를 뽑아 목록을 만들어 Alfred에 넘겨준다. 그리고 Alfred에서는 목록을 보여주고 사용자가 선택하면 해당 목록의 URL 주소를 웹 브라우저로 접근한다.

Feedparser

RSS를 읽고 해석하는 것은 feedparser라는 라이브러리를 선택했다. python용 RSS parser로 검색되어 알게 되었다. python 인터프리터를 이용해 가볍게 테스트해보고, 무난하기에 사용하는 것으로 결정했다.

Alfred-workflow

Alfred workflow 작성에 도움을 주는 라이브러리이다. 역시 검색해서 나와서 몇 가지 테스트 후, 사용하기로 했다.

문서를 더듬어 가면서 일정 시간 동안 데이터 캐시 하는 기능과 결과 목록을 Alfred에 넘기는 기능을 사용했다.

결과물(gihub)

Script Filter

Overview

별거 없다. main.py라는 python 프로그램을 실행시킨다.

main.py

# -*- coding: utf-8 -*-
#
# [email protected], 2016

import sys
import feedparser
from workflow import Workflow3, ICON_WEB

def get_feed_data():
    return feedparser.parse('https://raywenderlich.com/feed')

def main(wf):

    feed = wf.cached_data('feed', get_feed_data, max_age=60)
    for item in feed.entries:
        wf.add_item(item.title,
                    item.link,
                    quicklookurl=item.link,
                    icon=ICON_WEB,
                    valid=True,
                    arg=item.link)
                    
    wf.send_feedback()
    

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

Open URL

Overview

목록에서 선택되면 URL을 받아 웹 브라우저에서 보여준다.

첫 Alfred workflow – raywenderlich.com rss reader was originally published by developer at SoftDevStory Blog on December 21, 2016.