반응형
클리앙의 동그리a 님이 만드신 우편번호 검색 workflow를 오랫동안 잘 쓰고 있었는데, 어느 순간부터 동작하지 않는 것을 발견했다.
코드를 분석해보니 MacOS에 기본으로 탑재되어 있던 python2 버전으로 작성되어 있었는데,
MacOS Venture로 업그레이드하면서 OS에 기본 탑재 버전이 python3 으로 변경되면서 생긴 호환 문제였다.
동그리a님의 코드를 기본으로, Ventura에서도 사용 가능하도록 코드를 일부 수정했다.
알프레드에 직접 코드를 입력하여 사용할 경우 아래 코드를 참조하면 된다.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# epost, v2.0
#
import sys
from unicodedata import normalize
import urllib, urllib.parse, urllib.request
import json
import xml.etree.ElementTree as ET
def send_request(q):
params = {
"ServiceKey": "ePOST API KEY", # 코드를 복사해서 사용하실 분은 이곳에 ePOST API Key를 발급받아 넣으면 됩니다.
"srchwrd": q
}
url = "http://openapi.epost.go.kr/postal/retrieveNewAdressAreaCdSearchAllService/retrieveNewAdressAreaCdSearchAllService/getNewAddressListAreaCdSearchAll"
url += "?"+urllib.parse.urlencode(params)
return urllib.request.urlopen(url).read()
if __name__ == '__main__':
try:
query = normalize('NFC', '{query}').encode('utf-8')
except:
query = ""
data = send_request(query)
output = []
tree = ET.fromstring(data)
success = tree.findtext('.//successYN')
if success == 'Y':
for item in tree.findall('newAddressListAreaCdSearchAll'):
zipNo = item.findtext('.//zipNo')
lnmAdres = item.findtext('.//lnmAdres')
rnAdres = item.findtext('.//rnAdres')
output.append({
"title": '(' + zipNo + ') ' + lnmAdres,
"subtitle": rnAdres,
"valid": True,
"arg": zipNo
})
else:
output.append({
'title': tree.findtext('.//errMsg'),
'valid': False
});
rObj = {"items":output}
print(json.dumps(rObj))
다운로드
워크플로우만 다운받아 사용하고 싶을 경우 아래 파일을 다운받아 실행해서 알프레드에 추가하면 된다.
사용하기
알프레드 검색창에 'post 검색할주소' 라고 입력하면 아래에 검색결과가 출력된다.
반응형
'컴퓨터 - 기타' 카테고리의 다른 글
맥에서 일정시간 간격으로 자동 스크린샷 찍기 (0) | 2023.02.07 |
---|---|
맥에서 알림센터 알림 한번에 없애기 (+ Big Sur 업데이트) (5) | 2021.08.21 |
BOSE Soundtouch API 는 외부에서 사용할 수 없다 (0) | 2020.03.18 |
맥 사용자들이 의외로 잘 모르는 활용 팁 (0) | 2017.03.30 |
파일/디렉토리 모니터링해서 원하는 작업하기 - incrontab (0) | 2017.02.28 |