BLOG main image
T2B 서비스는 http://t2b.kr 에서 이용하실 수 있습니다.

▶ T2B 서비스 종료 공지 보기


T2B는 크게 2가지로 구분됩니다.
회원가입 및 트위터 인증 및 블로그 정보를 등록하는 PHP로 구성된 웹 영역과
하루에 한번씩 실행되면서 등록된 트윗들을 모아서 각각의 블로그로 보내주는 파이썬으로 만들어진 엔진이 있습니다.

이 중 엔진을 공개합니다.(사실 엔진이라는 표현을 쓰긴 좀 부끄럽네요.ㅎㅎ)
웹 영역은 소스도 지저분하고 별로 도움이 안되기 때문에 진짜 T2B의 중심이라고 할 수 있는 엔진이 도움이 될 것 같아요.

파이썬으로 제작되었고, 소스코드는 단순한 편입니다.
프로그래밍을 처음 시작하시는 학생 분들이나 T2B 같은 서비스를 만들려는 분들에게 도움이 되었으면 합니다.

그럼 간단한 설명을 시작합니다.
* 아래 설명을 이해하시려면 몇가지 기본 지식이 있어야 합니다.
1. 파이썬 프로그래밍 언어를 기본으로 알고 있어야 합니다.
2. OAuth 에 관한 기본지식이 있어야 합니다.
3. 트위터 API 문서를 볼 수 있어야 합니다.
4. BlogAPI에 관한 기본 지식이 있어야 합니다.




1. 파이썬
T2B는 파이썬이라는 스크립트 언어로 제작되었습니다.
파이썬에 관해서는 별도로 공부 하셔야 합니다.

국내 파이썬 커뮤니티 : http://www.python.or.kr/

2. T2B 엔진이 하는 일
T2B엔진은 트위터의 Search API를 이용합니다.
아래와 같은 형식입니다.
아래의 Request를 보내면 트위터는 해당 날짜의 트윗들을 ATOM으로 돌려줍니다.
http://search.twitter.com/search.atom?from=sadrove&since=2011-01-01&until=2011-10-10&rpp=100
이 ATOM문서에서 날짜에 맞는 트윗들을 뽑아내어 리스트에 담아둔 후 차례대로 해당 블로그에 BlogAPI를 이용해 포스팅 합니다.

3. 각 파일의 구성
1. t2b_delivery_list.sql
t2b.py 에서 해당 테이블의 정보를 불러다가 씁니다. 이 테이블 내용 중에 특별한 것은 아래와 같습니다.

member_idx : 멤버 테이블과 연결하기 위한 인덱스 번호입니다.(멤버테이블은 첨부파일에 없습니다. 알아서 구성하셔도 됩니다. 엔진만 단독 실행할 때는 아무 값이나 입력해도 됩니다.)

blog_type : 블로그 서비스별 타입입니다.
0 싸이월드블로그,  1 이글루스, 2 티스토리, 3 네이버블로그


2. info.py
DB 접속을 위한 정보가 들어있습니다.


3. blogpost.py
BlogAPI를 이용해 블로그에 글을 포스팅 하기 위한 코드입니다.
소스에 보시면 "#테스트용 블로그 정보"라고 주석 달린 부분이 있는데 해당 변수에 값만 입력하고 blogpost.py를 실행하시면 해당 블로그에 글이 포스팅 되는걸 테스트 해보실 수 있습니다.


4. t2b.py
이 부분이 실제 T2B입니다.
이 파일에서 거의 모든 일을 다합니다.
주석이 꽤 많이 달아놔서 자세히 들어다보시면 이해하실 듯 합니다.^^
몇가지 특별한 것만 설명드릴께요.

로그파일
실행되다가 블로그 하나가 오류가 나면 로그를 남기고 계속 진행합니다.
해당 로그는 t2b_history.log 라는 이름에 계속 이어서 기록됩니다.

카테고리 지정
카테고리에 맞게 포스팅 할 수 있는 건 티스토리와 이글루스만 가능합니다.(코드 186번째 줄 참고)

수동 실행
t2b.py 94 2011-08-30 같은 형태로 실행하면 t2b_delivery_list 테이블에서 94 idx 레코드의 데이터를 기반으로 2011년 8월 30일 트윗을 블로그로 보냅니다.

자동실행
crontab 기능을 이용합니다. crontab은 검색해 보세요.^^

history.log에 계속 찍히는 에러 내용
로그파일을 보시면 IndexError: list index out of range가 계속 찍혀 있습니다.
이건 왜냐면 144번째 줄에 보면 while 루프를 도는 부분이 있는데
while '' != getContent.entries[i].content[0].value:
while 루프를 종료시키는 부분이 없습니다. 즉, 리스트를 돌다가 끝을 만나면 에러를 내고, except로 루프 밖으로 나가게끔 되어 있습니다.
왜 이렇게 했냐면, 리스트를 끝을 어떻게 알아야 할지 방법을 못 찾아서입니다.^^;

코드 중간중간 주석처리 해 놓은 부분은 제가 동작 테스트를 할때 쓰던 것들입니다.
그냥 주석으로 남겨두었습니다. 테스트 하실 때 주석을 풀어서 사용하시면 됩니다.




잘짜여진 코드가 아니기 때문에 분석하기 어떨지 모르겠습니다.
그래도 그렇게 복잡한 코드는 아니니까 파이썬을 하시는 분들이라면 이해하긴 어렵지 않을꺼예요.^^;;

도움이 필요하시면 sadrove@gmail.com 이나 트위터 @sadrove로 말씀해 주시고요.
이것으로 소스 설명을 마칩니다.




다들 행복하세요!
Posted by 회땡겨

카테고리

분류 전체보기 (12)
T2B 공지사항 (7)
T2B 개선사항 (3)
Twitter (0)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백