ifttt의 webhook은 웹 request를 통하여 자신의 입맛에 맞는 프로젝트를 만들 수 있도록 해주는 애플릿이다. 이 애플릿의 장점은 pushbullet, tasker, MQTT, Eventghost 등과 연동하여 여러가지 프로젝트를 작성할 수 있다는 것이다.
이번 글에서는 나스에서 토렌트가 다운로드 완료 되었을 때, 파이썬 스크립트를 이용하여 webhook 애플릿으로 웹 request를 전송하고, 완료된 토렌트 이름과 시간을 pushbullet으로 보내는 알림 프로젝트를 설명할 것이다.
사전 준비 사항
> python3 설치
> 관리자 권한 명령 프롬프트에서 requests 모듈 설치 (아래와 같이 타이핑하고 엔터)
c:\pip install requests
1. ifttt의 webhook 활성화 및 개인키 확인
https://ifttt.com/maker_webhooks
활성화 후에 우측 상단에 Documentation 링크를 타고 들어가면
b-XXXXXXXXXXXXXXXXXX 형식의 키를 확인할 수 있으며, 메모장 정도에 따로 적어두자.
이 페이지에는 webhooks를 사용하는 대략적인 방법이 나와 있으므로 미리 확인해 보면 좋다.
2. webhook에서 받을 event 설정
https://ifttt.com/create로 가서 새 애플릿을 시작한다.
> this에서 webhooks를 찾아서 Receive a web request 클릭
> event name은 띄어쓰기 없이 영어로 작성하며, 최대한 이해하기 쉽게 적는 것이 좋다. 여기서는 torrent_downloaded 로 설정해보겠다. 'torrent_downloaded'는 나중에도 사용하게 되니 따로 메모장에 적어두자.
> that에서 pushbullet을 찾아서 push a note를 클릭
> 제목(Title)은 적절하게 적으면 되고, Message의 내용에는 그림과 같이 Value1과 Value2가 들어가야 한다. Value1은 토렌트 파일명이 들어가고, Value2에는 다운로드 시각이 들어간다.
> 이제 Create Action을 클릭하여 저장한다.
3. 파이썬 스크립트 작성
> 아까 적어두었던 개인키와 event name을 이용하여 스크립트를 작성해보자. 스크립트의 전체 내용은 아래와 같으니 메모장과 같은 에디터로 편집하여 쓰면 된다.
webhooks의 문서에도 나와있지만 개인키와 event name이 일치하여야 알림을 받을 수 있으니 밑의 스크립트에서 키와 event name을 본인의 것으로 대체하여 사용하자.
---------------------------------------------------------------------------------
import sys
import requests, json
from time import localtime, strftime
#다운로드된 토렌트 이름
name = sys.argv[1]
#다운로드된 시각
current = strftime("%Y-%m-%d %I:%M", localtime())
#ifttt로 보낼 url
url = "https://maker.ifttt.com/trigger/torrent_downloaded/with/key/b-XXXXXXXXXXXXXXXXX"
#ifttt로 request
data = {'value1': name, 'value2': current}
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
r = requests.post(url, data=json.dumps(data), headers=headers)
---------------------------------------------------------------------------------
> notify.py로 적절한 위치에 저장하고 끝낸다.
4. 토렌트 다운로더에 적용
> 우선 명령 프롬프트에서 notify.py "스파이더맨 홈커밍" 정도로 테스트를 해보자. pushbullet으로 알림이 제대로 온다면 잘 설정된 것이다.
> qbittorrent나 utorrent에 설정에 들어가서 위의 테스트 예시처럼 첫번째 변수에 제목에 해당되는 변수를 넣어주면 된다.
방법좀 알려주시면 너무나 감사하겠습니다. ㅜ,.ㅜ
import urllib2 as urllib
response=urllib.urlopen("https://maker.ifttt.com/trigger/torrent_downloaded/with/key/c_XXXXXXXXXXXXXXXXX")
event name과 key값은 알맞게 고치면 됩니다.
파이썬 버전 때문인지, 라이브러리 때문인지는 모르지만 위에 스크립트로는 안되서 저도 이것 저것 해보다가 겨우 찾았습니다.
전송 시간은 좀 걸릴 수가 있으니 참고하세요~
감사합니다.
이제서야 보게되었네요!!! 유용하게 쓰겠습니다.