Created
November 9, 2015 07:18
-
-
Save polikeiji/27ef174f564b00071ce6 to your computer and use it in GitHub Desktop.
PythonでTwitter APIを使う ref: http://qiita.com/polikeiji/items/37f89fb4ed1a25fd912c
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@get('/twitter_login') | |
def twitter_login(): | |
auth_url, request_token_key, request_token_secret = twitter.generate_auth_url() | |
# request_token_keyとrequest_token_secretをセッションに保存する。 | |
redirect(auth_url) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@get('/twitter_callback') | |
def twitter_callback(): | |
# セッションに保存したリクエスト・トークン(request_token_key)、シークレット(request_token_secret)を取得する。 | |
oauth_verifier = request.query['oauth_verifier'] | |
access_token_key, access_token_secret = twitter.get_access_token( | |
twitter_connect.request_token_key, | |
twitter_connect.request_token_secret, | |
oauth_verifier) | |
twitter_user = twitter.verify_credentials(access_token_key, access_token_secret) | |
# ユーザー登録とかログインとかの処理 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
import os | |
import urllib2 | |
import os.path | |
import logging | |
import traceback | |
import oauthlib | |
import tweepy | |
CONSUMER_KEY = os.environ.get('TWITTER_CONSUMER_KEY') | |
CONSUMER_SECRET = os.environ.get('TWITTER_CONSUMER_SECRET') | |
CALLBACK_URL = os.environ.get('TWITTER_CALLBACK_URL') | |
# | |
def api(access_token = None, access_token_secret = None, with_callback_url = False): | |
if with_callback_url: | |
auth = tweepy.OAuthHandler( | |
consumer_key = CONSUMER_KEY, | |
consumer_secret = CONSUMER_SECRET, | |
callback_url = CALLBACK_URL) | |
else: | |
auth = tweepy.OAuthHandler( | |
consumer_key = CONSUMER_KEY, | |
consumer_secret = CONSUMER_SECRET) | |
if access_token is not None and access_token_secret is not None: | |
auth.set_access_token(access_token, access_token_secret) | |
return tweepy.API(auth) | |
# API | |
def get_tweets(screen_name = None, hashtag = None, count = 200): | |
if screen_name is not None: | |
cursor = tweepy.Cursor(api().user_timeline, | |
screen_name = screen_name, count = 200, exclude_replies = True) | |
elif hashtag is not None: | |
cursor = tweepy.Cursor(api().search, q = u"#{0}".format(hashtag), count = 200) | |
if count is not None: | |
return cursor.items(count) | |
else: | |
return cursor.items() | |
def tweet_link(tweet): | |
return "https://twitter.com/{screen_name}/status/{tweet_id}".format( | |
screen_name = tweet.user.screen_name, | |
tweet_id = tweet.id_str) | |
def get_friends(screen_name): | |
return tweepy.Cursor(api().friends, screen_name = screen_name, count = 200).items() | |
# OAuth | |
def generate_auth_url(): | |
oauth_handler = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET, CALLBACK_URL) | |
redirect_url = oauth_handler.get_authorization_url(signin_with_twitter = True) | |
request_token = oauth_handler.request_token | |
return redirect_url, request_token['oauth_token'], request_token['oauth_token_secret'], | |
def get_access_token(request_token_key, request_token_secret, oauth_verifier): | |
oauth_handler = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) | |
oauth_handler.request_token = { | |
'oauth_token': request_token_key, | |
'oauth_token_secret': request_token_secret, | |
'oauth_callback_confirmed': True, | |
} | |
oauth_handler.get_access_token(oauth_verifier) | |
return oauth_handler.access_token, oauth_handler.access_token_secret | |
def verify_credentials(access_token, access_token_secret): | |
api = api(access_token, access_token_secret) | |
return api.verify_credentials() | |
# Utility | |
def get_big_profile_image_url(profile_image_url): | |
return profile_image_url.replace('_normal', '') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment