http://comjoy21.tistory.com/89
트위터에 글쓰는 프로그래밍을 하려면 우선 트위터에 애플리케이션을 등록해야 합니다. 물론 트위터 계정이 있어야 하고요. 로그인 후http://dev.twitter.com/apps 에 접속합니다.

등록한 애플리케이션이 하나도 없다면 이 목록에는 아무것도 보이지 않습니다. 오른쪽에 있는 ‘Register a new app’를 클릭하여 애플리케이션 등록 화면으로 넘어갑니다.


Application Name에 이 예제와는 다른 이름을 입력해야 합니다. 다른 사람이 등록한 이름은 사용할 수 없습니다.
Application Type은 꼭 ‘Client’를 선택해야 합니다.
Default Access type은 ‘Read & Write’를 선택해야 합니다.
캡차(CAPCHA) 문자를 입력 후 ‘Register application’ 단추를 클릭합니다. ‘TWITTER API TERMS OF SERVICE‘ 창이 뜨는데, ‘I Accept’를 클릭하면 애플리케이션 등록되며, 등록된 애플리케이션의 상세 정보를 보여 줍니다.


컨슈머 키(Consumer key)와 비밀번호(Consumer secret)를 메모장에 잘 복사해 둡니다. 이 정보를 애플리케이션이 사용해야 합니다. OAuth로 인증할 때 필요합니다.
이렇게 트위터 사이트에 글을 쓸 수 있는 애플리케이션을 마련하였습니다. 이제 파이썬에서 트위터에 글을 쓸 수 있는 라이브러리를 설치해야 합니다. 트위피(tweepy) 라이브러리가 있습니다.
http://tweepy.googlecode.com/files/tweepy-1.4-py3.tar.gz
에서 Tweepy for python 3 파일을 다운로드합니다.
물론 python 3을 미리 설치해 놓아야 합니다. 파이썬 3은
http://www.python.org/ftp/python/3.1.4/python-3.1.4.msi
에서 다운로드 받아 설치합니다.
64비트 운영체제를 사용한다면
http://www.python.org/ftp/python/3.1.4/python-3.1.4.amd64.msi
를 다운로드 받아 설치해야 합니다. 리눅스(우분투)에서는 소프트웨어 센터에서 파이썬 3.1.4 버전을 설치합니다. 아래 내용은 MS 윈도우 운영체제용으로 설명합니다.
다운로드 받은 트위피 파일은 확장자가 .tar.gz이므로 알집 등의 유틸리티 프로그램으로 압축 해제합니다. 압축 해제한 파일들을 c:tweepy 폴더에 복사합니다. ‘명령 프롬프트’ 실행 후, cd c:tweepy 명령으로 c:tweep 폴더로 갑니다. 그리고 dir 명령을 실행했을 경우 다음과 같이 나타나야 합니다.


http://python-distribute.org/
에서 목록 중 distribute_setup.py 파일에 마우스 놓고 우클릭하여 단축메뉴 중 ‘다른 이름으로 대상 저장’을 클릭하고 c:tweepy 폴더에 저장합니다. 윈도우 탐색기 창에서 c:tweepy 폴더에 있는 distribute_setup.py 파일을 더블클릭하여 실행합니다. 그러면 필요한 파일들을 설치합니다.
다시 ‘명령 프롬프트’ 창 c:tweepy 폴더에서
c:Python31python.exe setup.py install
을 실행합니다.


이렇게 윈도우에 트위피 라이브러리를 설치하였습니다.
리눅스(우분투)에서 트위피 라이브러리를 설치하려면 다음과 같습니다.
위에서 언급한 Tweepy for python 3 파일을 다운로드 한 후, tweepy 폴더를 만들고 그곳에 압축을 풉니다.
우분투 소프트웨어 센터에서 python3-setuptools를 설치 후, 터미널에서 조금 전에 만든 tweepy 폴더가 있는 부모 폴더에 갑니다. 예를 들어 부모 폴더가 ‘다운로드’ 라면,
> cd 다운로드
> sudo easy_install3 tweepy
이렇게 리눅스(우분투)에 트위피 라이브러리를 설치하였습니다.
이제 OAuth 인증을 받아야 합니다.
위에 있는 파일을 다운로드 받은 후 파이썬 3으로 엽니다.
이 파일은 트위터에 애플리케이션 등록 시에 받은 컨슈머 키와 비밀 번호를 이용하여 OAuth 인증을 받을 수 있게 해 줍니다. 메모장에 저장해 둔 컨슈머 키(Consumer key)와 비밀번호(Consumer secret)를 복사하여 아래 그림에 표시한 부분에 차례차례 붙여넣습니다. 이 때 꼭 따옴표를 지우면 안 됩니다.

참고로 윗 그림 첫 줄에 있는 ‘import tweepy’를 위해, 즉 트위피 라이브러리를 임포트시키기 위해 트위피 등을 다운로드 받고 설치한 것입니다.
컨슈머 키와 비밀 번호를 수정하고 실행(F5)시키면 다음과 같은 화면입니다.

빨갛게 표시한 부분을 복사하여 웹 브라우저 주소창에 붙여넣고 엔터를 치면 아래 그림과 같은 창이 나타납니다.

트위터 아이디와 비밀번호를 입력하고 ‘애플리케이션 승인’ 단추를 클릭하면 다음과 같은 화면이 나옵니다.

PIN 숫자를 복사하여 아래와 같이 붙여넣으면, 접근 키(ACCESS_KEY)와 비밀 번호(ACCESS_SECRET)를 알려줍니다.

여기서 알려준 접근 키와 비밀번호도 메모장에 잘 저장해 둡니다. 메모장에 저장한 컨슈머 키와 비밀 번호, 접근 키와 비밀 번호, 이 4개로 트위터에 글을 쓸 수 있게 됩니다.
이렇게 트위터에 글을 쓸 수 있는 기본적인 준비를 마쳤습니다. 이제 파이썬 3으로 트위터에 글을 쓰는 프로그래밍을 하면 됩니다. 프로그래밍 내용은 다음과 같습니다.
import tweepy
import urllibdef send_to_twitter(msg):
CONSUMER_KEY = ‘컨슈머 키’
CONSUMER_SECRET = ‘비밀 번호’
ACCESS_KEY = ‘엑세스 키’
ACCESS_SECRET = ‘비밀번호’
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth)
api.update_status(msg)
def get_data() :
page = urllib.request.urlopen(“http://www.kma.go.kr/forecast/mid-term_02.jsp“)
text = page.read().decode(“euc-kr”)
where = text.find(‘tl_mid_term1.gif’)
start_of_data = where + 85
end_of_data = start_of_data + 128
return text[start_of_data:end_of_data]
data_now = input(“기상정보를 지금 보내기를 원합니까(y/n)?”)
if data_now == “y” :
send_to_twitter(“[기상정보]” + get_data())
else :
send_to_twitter(“천천히 여유롭게 잠시 쉬었다 지혜를 모아 다시 해 봅시다!”)
프로그래밍을 한 코드를 살펴보면 다음과 같습니다.
import urllib
def send_to_twitter(msg):
CONSUMER_KEY = ‘컨슈머 키’
CONSUMER_SECRET = ‘비밀 번호’
ACCESS_KEY = ‘엑세스 키’
ACCESS_SECRET = ‘비밀번호’
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth)
api.update_status(msg)
def get_data() :
page = urllib.request.urlopen(“http://www.kma.kr/02.jsp“)
text = page.read().decode(“euc-kr”)
where = text.find(‘tl_mid_term1.gif’)
start_of_data = where + 85
end_of_data = start_of_data + 128
return text[start_of_data:end_of_data]
기상 정보 중 트위터에 올리고 싶은 내용 중 첫 단어로 검색을 합니다. 이 내용은 꼭 ‘tl_mid_term1.gif’라는 문자로부터 85자 다음에 시작합니다. 그리고 트위터에 글을 쓸 때 140자까지만 가능하기도 하고 기상 정보 내용이 평균적으로 120자에서 130자이므로, 시작 단어로부터 128자까지의 내용을 트위터에 올리기로 하였습니다. 이 내용을 get_data 값에 저장합니다. 이는 인터넷 기상 정보 페이지에서 가져온 모든 문자를 리스트로 저장해 놓았는데, 그 중에 해당하는 부분만 가져온 것입니다. text 변수에 페이지의 모든 문자가 리스트 형태로 저장되었습니다. 그 중 start_of_data에서부터 end_of_data까지의 문자만 가져오는 것입니다.
data_now = input(“기상정보를 지금 보내기를 원합니까(y/n)?”)
if data_now == “y” :
send_to_twitter(“[기상정보]” + get_data())
else :
send_to_twitter(“천천히 여유롭게 잠시 쉬었다가 다시 해 봅시다!”)
기상 정보를 지금 트위터로 보낼 것인지를 묻습니다. ‘y’를 누르면, ‘[기상정보]’라는 머릿글을 포함하여 트위터에 기상정보를 자동으로 써 줍니다. ‘n’을 타이핑하면, ‘천천히 여유롭게 잠시 쉬었다가 다시 해 봅시다!’라는 문구를 트위터에 올려줍니다. 이를 응용하시면 다양한 정보를 필요할 때마다 골라 트위터에 올리실 수 있을 듯 합니다.
프로그래밍 소스 파일 :
http://www.kma.go.kr/weather/forecast/mid-term_02.jsp
이 주소가 너무 길어 짧게 표현했습니다. 이 주소에 가서 [보기 – 원본] 메뉴를 실행하고 다음과 같이 작업합니다.


TwitterOAuth.py
답글 남기기