仕方ないからTwitter APIの基本的な使い方を教えてあげる。
はじめに
株式会社DOKOSOREエンジニアのタカギです。
Twitterを自由自在に操るためには、Twitter APIをマスターする必要があります。しかし、Twitter APIは人によって書き方が大きく異なるため、初学者は戸惑うことが多いと思います。僕自身も素人寄りなのですが、最近「あれ?この書き方を守ったら、ずっと綺麗に書けるやん」という書き方が見えてきたので記事にしたいと思います。書くモチベーションになるので、いいねとかコメントとかいただければありがたいです。
言語はPythonを使います。
Twitter APIの申請とかは他でわかりやすく記事にまとめられているので、そちらを参考にしてください。
OAuth認証オブジェクトの作成
まずはOAuth認証オブジェクトを作成します。(ここの書き方は改善の余地があると思います。)
CONFIG = {
"CONSUMER_KEY": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"CONSUMER_SECRET": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"ACCESS_TOKEN": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"ACCESS_SECRET": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3",
}
#! /usr/bin/python3
# -*- coding: utf-8 -*-
from config import CONFIG
from requests_oauthlib import OAuth1Session
# --------------------------------------------------------------------
def define_client_proc():
CONSUMER_KEY = CONFIG["CONSUMER_KEY"]
CONSUMER_SECRET = CONFIG["CONSUMER_SECRET"]
ACCESS_TOKEN = CONFIG["ACCESS_TOKEN"]
ACCESS_TOKEN_SECRET = CONFIG["ACCESS_SECRET"]
# OAuthの認証オブジェクトの作成
twitter = OAuth1Session(
CONSUMER_KEY,
CONSUMER_SECRET,
ACCESS_TOKEN,
ACCESS_TOKEN_SECRET)
return twitter
config.pyで認証キーを設定して、define_client.pyで認証オブジェクトを作成しています。
以降は別ファイルでdefine_client_proc()を呼び出して、認証オブジェクトを使用します。
from define_client import define_client_proc
twitter = define_client_proc()
ぼくのかんがえたさいきょうの書き方
ここからはお好きなファイルを用意してください。(今回はmain.pyに書きます)
まずは認証オブジェクトの呼び出しをして、twitterという変数に格納します。
#! /usr/bin/python3
# -*- coding: utf-8 -*-
from define_client import define_client_proc
# OAuthの認証オブジェクトの作成
twitter = define_client_proc()
次に使用したいURLを用意します。
URLとは、Twitter APIのドキュメントに出てくるResourceURLのことです。
このURLは
Tweetを検索したいときは(SearchAPI)
Tweetを投稿したいときは(UpdateAPI)
のように、用途によって異なります。
都度、Twitter APIのドキュメントから持ってきてください。
まずはツイートを投稿するAPIを使ってみます。
#! /usr/bin/python3
# -*- coding: utf-8 -*-
from define_client import define_client_proc
# OAuthの認証オブジェクトの作成
twitter = define_client_proc()
tweetUrl = 'https://api.twitter.com/1.1/statuses/update.json'
次にツイートする内容を変数に格納します。
#! /usr/bin/python3
# -*- coding: utf-8 -*-
from define_client import define_client_proc
# OAuthの認証オブジェクトの作成
twitter = define_client_proc()
tweetUrl = 'https://api.twitter.com/1.1/statuses/update.json'
# --------------------------------------------------------------------
def tweet():
# ツイートする内容を記述
tweet_text = "Pythonを使ってTwitterAPIからツイートします。"
# params変数に格納する
params = {
"status": tweet_text,
}
paramsには、TwitterAPIドキュメントに書かれているパラメータを入れます。
今回使用しているstatuses/updateのページには、次のようなパラメータが書かれています。
あとはOAuthの認証オブジェクトを呼び出して、postしてあげるだけです。
#! /usr/bin/python3
# -*- coding: utf-8 -*-
from define_client import define_client_proc
# OAuthの認証オブジェクトの作成
twitter = define_client_proc()
tweetUrl = 'https://api.twitter.com/1.1/statuses/update.json'
# --------------------------------------------------------------------
def tweet():
# ツイートする内容を記述
tweet_text = "Pythonを使ってTwitterAPIからツイートします。"
# params変数に格納する
params = {
"status": tweet_text,
}
# OAuth認証オブジェクトを呼び出して、postする。
response = twitter.post(url=tweetUrl, data=params)
# エラーを検知出来るように
if response.status_code < 200 or response.status_code > 299:
print("ツイート失敗")
実行結果↓
ツイートを投稿することが出来ました。
この書き方の良いところは、目的ごとにURLとparamsを書き換えてあげるだけなので可読性が高く、メンテナンスしやすいところにあります。
紹介したい書き方は以上になります。
せっかくなので色々試してます。
色々試してみる
#! /usr/bin/python3
# -*- coding: utf-8 -*-
from define_client import define_client_proc
# OAuthの認証オブジェクトの作成
twitter = define_client_proc()
tweetUrl = 'https://api.twitter.com/1.1/statuses/update.json'
showUrl = 'https://api.twitter.com/1.1/statuses/show.json'
timelineUrl = "https://api.twitter.com/1.1/statuses/user_timeline.json"
# --------------------------------------------------------------------
# ツイートを投稿する。
def post_tweet():
# ツイートする内容を記述
tweet_text = "Pythonを使ってTwitterAPIからツイートします。"
# params変数に格納する
params = {
"status": tweet_text,
}
# OAuth認証オブジェクトを呼び出して、postする。
response = twitter.post(url=tweetUrl, data=params)
# エラーを検知出来るように
if response.status_code < 200 or response.status_code > 299:
print("ツイート失敗")
# リプライを投稿する
def post_reply():
# ツイートする内容を記述
reply_text = "Pythonを使ってTwitterAPIからツイートします。"
# params変数に格納する
params = {
"status": tweet_text,
# リプライしたいツイートのTweetIDを記入
"in_reply_to_status_id": tweet_id
}
# postする。
twitter.post(url=tweetUrl, data=params)
# ツイートの基本情報を取得
def get_tweet_info():
getInfoParams = {
"id": tweet_id
}
# paramsを指定してgetする
tweetInfo_response = twitter.get(url=showUrl, params=getInfoParams)
tweetInfo = tweetInfo_response.json()
print(tweetInfo)
# 自分のタイムラインを取得
def getTargetTimeline():
getTimelineParams = {
# だれのタイムラインを取得するか
"screen_name": screen_name,
# 何個集めるか
"count": 100
}
twitter.get(url=timelineUrl, params=getTimelineParams)
こんな感じで色々と書くことが出来ます。
今回はここまで。
反応が多ければ、他にもTwitterAPIを使って遊んでみようと思うので、ぜひコメントください。
株式会社DOKOSOREのプロダクト紹介
せっかくなので、プロダクトの紹介
Yondle(ヨンドル) スマホで読書が出来るようになる電子書籍リーダー(開発中)
GOTSUGO(ゴツゴー) あなたのカレンダーから空いている時間を自動抽出します。日程調整の際に使ってください
Discussion
開発頑張って下さい!
ありがとうございます!頑張ります!💪🏼