Computer >> 컴퓨터 >  >> 프로그래밍 >> Ruby

Ruby로 Twitter API 활용하기: 단계별 실전 가이드

Ruby를 사용해 트위터(Twitter) 애플리케이션을 만들어 보고 싶으신가요? 그렇다면 잘 찾아오셨습니다!

이 글에서는 Twitter API와 상호작용하는 프로그램을 만드는 방법을 단계별로 소개합니다. 특정 키워드 검색, 자동 답글 전송 같은 기능까지 직접 구현해 볼 수 있습니다.

그럼 바로 시작해 볼까요?

환경 설정

가장 먼저 twitter 젬(gem)을 설치해야 합니다. 설치 방법은 아주 간단합니다.

gem install twitter

설치가 끝나면 https://apps.twitter.com/ 에 접속해 새 애플리케이션을 등록해야 합니다. 오른쪽의 'Create New App' 버튼을 클릭하세요.

Ruby로 Twitter API 활용하기: 단계별 실전 가이드

그다음 양식을 작성하면 됩니다. 지금 단계에서는 입력 내용이 크게 중요하지 않습니다. 예제에서 사용한 값은 다음과 같습니다.

Ruby로 Twitter API 활용하기: 단계별 실전 가이드

웹사이트 필드는 신경 쓰지 않아도 괜찮습니다. https://example.com 같은 임시 주소를 입력해도 무방합니다.

'Yes, I agree'에 체크해 트위터 이용약관에 동의한 뒤, 'Create your Twitter application' 버튼을 클릭합니다.

모든 과정이 정상적으로 완료되었다면 다음과 같은 화면을 볼 수 있습니다.

Ruby로 Twitter API 활용하기: 단계별 실전 가이드

이제 'Keys and Access Tokens' 메뉴로 이동합니다. 이 페이지에는 Twitter API에 연결하는 데 필요한 API 키들이 들어 있습니다. 바로 이 키들을 얻기 위해 지금까지의 설정 과정을 거친 것입니다.

다음은 아래 템플릿에 본인의 정보를 채워 넣는 단계입니다.

require 'twitter'

client = Twitter::REST::Client.new do |config|
  config.consumer_key        = "YOUR_CONSUMER_KEY"
  config.consumer_secret     = "YOUR_CONSUMER_SECRET"
  config.access_token        = "YOUR_ACCESS_TOKEN"
  config.access_token_secret = "YOUR_ACCESS_SECRET"
end

마지막 두 개의 값(access token, access token secret)은 'Generate access tokens' 버튼을 클릭해 발급받아야 합니다.

여기까지 완료했다면 이제 API를 자유롭게 사용할 준비가 된 것입니다.

트윗 다루기

client 객체를 통해 Twitter API의 거의 모든 기능에 접근할 수 있습니다. 예제로 @rubyinside 계정의 최근 20개 트윗을 가져와 YAML 파일로 저장한 뒤, 나중에 분석할 수 있도록 만들어 보겠습니다.

특정 사용자의 타임라인을 가져올 때는 user_timeline 메서드를 사용합니다.

예제:

tweets = client.user_timeline('rubyinside', count: 20)

이 메서드는 Tweet 객체 배열을 반환합니다. 그런데 이 객체들은 어떻게 다뤄야 할까요?

공식 문서를 찾아볼 수도 있지만, 더 재미있는 방법은 pry를 활용하는 것입니다. 코드를 pry 안에서 실행하면 ls Twitter::Tweet 명령으로 특정 객체나 클래스의 모든 메서드 목록을 한눈에 확인할 수 있습니다.

실행 결과는 다음과 같습니다.

Ruby로 Twitter API 활용하기: 단계별 실전 가이드

full_text라는 메서드가 있다는 것을 알 수 있습니다. 이 메서드를 사용해 트윗 내용을 출력해 보겠습니다.

tweets.each { |tweet| puts tweet.full_text }

다른 메서드들도 하나씩 시도해 보면 재미있는 발견이 많을 것입니다 :)

트윗 저장하기

가져온 트윗으로 무엇을 할 수 있을까요? 예를 들어 파일로 저장해 나중에 분석하는 방법이 있습니다. YAML 형식을 활용하면 아주 간단하게 처리할 수 있습니다.

require 'yaml'

# ... 나머지 코드 ...

File.write('tweets.yml', YAML.dump(tweets))

저장된 트윗은 YAML.load_file 메서드로 손쉽게 불러올 수 있습니다.

require 'yaml'
require 'twitter'

tweets = YAML.load_file('tweets.yml')

불러온 트윗은 API에서 새로 요청한 것처럼 원래 형태 그대로 바로 사용할 수 있습니다. 참 편리하지 않나요? :)

트윗 보내기

이 외에도 다양한 작업이 가능합니다. 예를 들어 특정 키워드를 포함한 트윗을 올린 사용자에게 자동으로 메시지를 보내는 기능은 어떨까요?

새 트윗을 게시할 때는 update 메서드를 사용합니다.

client.update("I'm having some fun with the Twitter gem!")

이를 응용하면 다음과 같은 코드를 작성할 수 있습니다.

client.search('#ruby').take(3).each do |tweet|
  client.update("@#{tweet.user} Hey I love Ruby too, what are your favorite blogs? :)")
end

또 다른 방법으로는 스트리밍(Streaming) API를 활용하는 것이 있습니다. 스트리밍 API를 사용하면 이벤트가 발생하는 순간 실시간으로 데이터를 받아볼 수 있습니다. 자세한 내용은 공식 문서를 참고하세요.

마무리

Twitter 젬을 사용하면 초기 설정만 마치면 Twitter API 관련 작업이 무척 쉬워집니다. 이제 여러분 차례입니다. 직접 재미있는 프로젝트를 만들어 보세요!

참고: 이 글에서 소개하는 방식은 Twitter API v1.1 기준입니다. 현재 X(구 Twitter)로 서비스명이 변경되면서 API 정책과 인증 방식, 유료 제도 등이 달라졌을 수 있으니 최신 개발자 문서를 함께 확인하시길 권합니다.

이 글이 도움이 되셨다면 공유 부탁드립니다. 더 좋은 글을 계속 쓸 수 있는 큰 동력이 됩니다 :)