- 페이스북의 그래프 API를 이용해 특정 포스트에 "좋아요"하거나 댓글을 단 사람을 추출한다.
- 추출된 명단에서 N 명을 무작위 선택한다.
- 파이썬 3.6 이상 (+ requests 모듈)
- 페이스북 개발자 계정: https://developers.facebook.com
- 페이스북 그래프 API 토큰: 페이스북 그래프 API 탐색기(https://developers.facebook.com/tools/explorer)에서 발급
- 대상 포스트의 ID: 포스트에서 업로드 시간의 링크를 살펴보면,
https://www.facebook.com/groups/pythonkorea/permalink/1542798332469989/
형식으로 되어 있다. 여기서1542798332469989
에 대응하는 번호가 포스트의 ID다.
- 토큰은 발급후 수 분 내에 만료된다. 유효시간이 지나면 새로 발급해야 한다.
- 발급된 토큰은 대상 포스트에 접근할 권한이 있어야 한다.
- 게시물의 "좋아요" 정보는 제공되는 필드가 제한적이다. 예컨대, 사용자의 ID를 구할 수 없어 동명이인을 서로 구별하지 못한다. 또한, "좋아요" 한 날을 구할 수 없어, 마감일에 의한 걸러내기가 불가하다. 단, 댓글 정보에서는 이런 문제가 없다.
- 앱 사용 권한 문제로 인해, 게시물을 공유한 사람은 API를 이용해 구하는 것이 현실적으로 어렵다. (관련 정보: https://developers.facebook.com/bugs/1404733043148335/) 만약, 포스트 공유자 중에서 추첨하고자 한다면 페이스북 사이트에서 당신의 눈과 손으로 직접 공유자를 추출해야 할 가능성이 높다. 건투를 빈다.
페이스북 포스트에서 "좋아요" 누른 사람 또는 댓글 단 사람을 추출해 낸다.
파이썬 3.6 이상의 인터프리터로 nominate.py 모듈을 실행한다. 실행 인자 지정 규칙은 다음과 같다.
python nominate.py [--duedate YYYY-MM-DD] edge post_id token
edge
: (필수) 추출 후보군. "좋아요" 한 사람(likers
) 또는 댓글 단 사람(commentors
)으로 지정post_id
: (필수) 포스트의 IDtoken
: (필수) 그래프 API의 접근 토큰--duedate
: (선택) 댓글 마감일. ISO 표준 형식으로 지정(예:2019-12-09
). 2019년 12월 9일로 지정했다면, 2019년 12월 8일 23시 59분의 댓글은 인정되나 2019년 12월 9일 0시 0분의 댓글은 인정되지 않는다.
"좋아요" 한 사람 추출:
python nominate.py likers 1542798332469989 EAACEdEose0cBAAlGZBDoqfEMYTmzlsW7mJdzaSJMXdYFIQcjTpBZCafrB1nYMKjthoks7vNjj7K9mVk6BOrDfr2ObcZCfROzZC8k4DHipJG0WSdKTL403Bo1CAZBmxUI7465haf4VXdy3K2LPccniFLQtwVtvQbg8ScdhshqvyfA0Sy1WkHK9MZBcUl6DlNumoEhZBhkSZCQEAZDZD
2017년 12월 5일이 되기 전 댓글 단 사람 추출:
python nominate.py --duedate=2017-12-05 commentors 1542798332469989 EAACEdEose0cBAAlGZBDoqfEMYTmzlsW7mJdzaSJMXdYFIQcjTpBZCafrB1nYMKjthoks7vNjj7K9mVk6BOrDfr2ObcZCfROzZC8k4DHipJG0WSdKTL403Bo1CAZBmxUI7465haf4VXdy3K2LPccniFLQtwVtvQbg8ScdhshqvyfA0Sy1WkHK9MZBcUl6DlNumoEhZBhkSZCQEAZDZD
출력 결과를 파일로 저장하고자 한다면 bash의 리디렉션(> filename
) 기능을 활용하라. 예를 들어, 결과를 candidates 파일로 저장하려면 다음과 같이 한다.
python nominate.py --duedate=2017-12-05 commentors 1542798332469989 EAACEdEose0cBAAlGZBDoqfEMYTmzlsW7mJdzaSJMXdYFIQcjTpBZCafrB1nYMKjthoks7vNjj7K9mVk6BOrDfr2ObcZCfROzZC8k4DHipJG0WSdKTL403Bo1CAZBmxUI7465haf4VXdy3K2LPccniFLQtwVtvQbg8ScdhshqvyfA0Sy1WkHK9MZBcUl6DlNumoEhZBhkSZCQEAZDZD > candidates
이미 후보가 추출되었을 때, 후보군이 저장된 파일에서 몇 명을 추첨한다.
파이썬 3.6 이상의 인터프리터로 choose.py 모듈을 실행한다. 실행 인자 지정 규칙은 다음과 같다.
python choose.py filename n
filename
: (필수) 후보군 리스트가 저장된 파일. 각 파일의 한 행당 후보가 하나씩 저장되어 있어야 한다.n
: (필수) 후보군에서 무작위로 선택할 항목의 개수. 후보군 크기보다 작아야 한다.
후보자가 저장된 파일 candidates 에서 5명 추첨:
python choose.py candidates 5
- 사용권: MIT License
- 제작자 이메일: bakyeono@gmail.com
- 제작자 웹사이트: https://bakyeono.net
- 파이썬 프로그래밍 입문서(가제): https://python.bakyeono.net
- 페이스북 그래프 API 개요: https://developers.facebook.com/docs/graph-api/overview