pythonからTwitterAPI触ってみた(主に画像取得
pythonの勉強にTwitterAPIを触ってみただけ。
※python-twitterは使いません
アプリケーション登録
先人が居るのでそちらを参考に
website-planner.com
ここで取得した
- ConsumerKey
- ConstumerSecret
- AccessToken
- AccessTokenSecret
を使用するのでどこかにメモって置く
OAuth認証
pythonからOAuth認証は requests_oauthlib ライブラリを使う
コマンドは下記
pip install requests_oauthlib
requests_oauthlib がインストール出来たら認証の処理を書くが、
毎回処理を書くのもしんどいので、
別のpythonファイルに切り出しておいてimportする方が楽
from requests_oauthlib import OAuth1Session CONSUMER_KEY = "Consumer Key" CONSUMER_SECRET = "Consumer Secret" ACCESS_TOKEN = "Access Token" ACCESS_TOKEN_SECRET = "Access Token Secret" def CreateOAuthSession(): return OAuth1Session(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_TOKEN,ACCESS_TOKEN_SECRET)
ここで分けて置くと、別のpythonファイルに記述するとき
import ファイル名
twitter = ファイル名.CreateOAuthSession()
だけで完結するので便利
投稿してみる
import sys import OAuth #OAuth認証 twitter = OAuth.CreateOAuthSession() #投稿用エンドポイント url = "https://api.twitter.com/1.1/statuses/update.json" #引数取得 [1] = 投稿したいメッセージ args = sys.argv #投稿 params = {"status":args[1]} response = twitter.post(url,params=params) #投稿成功判定 if response.status_code == 200: print("success") else: print("error")
簡単。
ダイレクトメッセージも送ってみる
import sys import OAuth #OAuth認証 twitter = OAuth.CreateOAuthSession() #ダイレクトメッセージエンドポイント url = "https://api.twitter.com/1.1/direct_messages/new.json" #引数取得 [1] = ユーザー名 [2] = メッセージ args = sys.argv #送信 params={"screen_name":args[1],"text":args[2]} response = twitter.post(url,params=params) #送信成功判定 if response.status_code == 200: print("success") else: print("error")
URLとparamsが変わっただけ。
引数で@ユーザー名とメッセージを渡すだけで送信できる。
検索ワードから画像だけを取得する
これがやりたかった。
が、ほとんど参考にしただけなのでリンクを置く。
これだけではアレなので・・・
python3系で書く場合は1か所注意が必要
filename = '%s.jpg' % md5hex(urls[0]['media_url'])
この部分が文字コードエラーで通らないため、
UTF-8にencodeしてあげる必要があるので下記に治す。
#そもそも上でmedia_urls = urls[0]['media_url'] してた filename = '%s.jpg' % md5hex(media_urls.encode("utf-8"))
これでキチンと動く。
RWBYのカップリング画像集めが捗りそう。
※同じAPIは15分に15回だけなので注意
参考:
qiita.com