場末

プログラミング素人の雑記

クソリプbotを作ろう<Twitterで自分のタイムラインを取得する>

f:id:moyashiZZ:20180921234938j:plain
バケモンにはバケモンをぶつけんだよ

経緯


クソリプAIとクソリプAIを戦わせて最強のクソリプAIを作り上げる』という貞子 vs 伽椰子で聞いたような言葉にいたく感銘を受けました

 

ぶっちゃけ何番煎じなんそれ?というネタではある
というか某氏が既に作っていて放流したまま放置しておりどこかでクソリプを送りあっているという
ただ飽きっぽい自分の中でおもしろそうだなという気持ちがかなり沸き起こってるのとn番煎じという事は情報が転がってる確率が高いので比較的組みやすいのでは?と安易に考えている

まずはAPIの使い方を覚えるために色々触ってみるのだ

TwitterAPIでタイムラインを取得する

使用言語はPython
Pythonの知識はProgateを一通りとUdemyで画像判定AI(講師のコードを写経)を作った程度の知識

TwitterAPIのアクセスキーは省略
というか以前JavaでTwitterAPI使ってみようと既に作成してた
Javaで同じことやるのめちゃくちゃめんどくさいし情報少なかった


config.py

CONSUMER_KEY =  ""
CONSUMER_SECRET = ""
ACCESS_TOKEN = ""
ACCESS_TOKEN_SECRET = ""


アクセスキーの設定
アクセスキーとか見られたらマズいものはファイルを分けてから使いたい場所でimportしてやれば良いんですね。
なるほど


getTimelines.py

#標準JSONモジュールとconfig.pyの読み込み
import json, config

#OAuthのライブラリの読み込み
from requests_oauthlib import OAuth1Session

CK = config.CONSUMER_KEY
CS = config.CONSUMER_SECRET
AT = config.ACCESS_TOKEN
ATS = config.ACCESS_TOKEN_SECRET

#認証処理
twitter = OAuth1Session(CK, CS, AT, ATS)

#タイムライン取得エンドポイント
url = "https://api.twitter.com/1.1/statuses/user_timeline.json"

#取得数
params = {'count' : 5}
res = twitter.get(url, params = params)

#正常通信出来た場合
if res.status_code == 200:
#レスポンスからタイムラインリストを取得
timelines = json.loads(res.text)

#タイムラインリストをループ処理
for line in timelines:
print(line['user']['name'] + '::' + line['text'])
print(line['created_at'])
print('*******************************************')

#正常通信できなかった場合
else:
print("Failed. : %d" % res.status_code)


TwitterOAuth認証とやらが必要らしく最初にrequests_oauthlibのOAuth1Sessionをimportしている

んでOAuthってなんぞという話なんですが
ユーザーがアクセス権限を承諾した証明書を発行するやつみたいな認識
そしてそれをうまいことやってくれるのがOAuth1Sessionなのかなぁと
多分Twitterで外部連携するときに○○に△△の許可を与えますか?とか出てくるヤツ


1.アプリがAPIへのアクセストークンをリクエス
2.Twitterがユーザーに権限を与えるか聞く
3.許可
4.アクセストークン発行
5.アプリがAPIを利用可に


1と4をやってくれるのがOAuth1Sessionです。たぶん。


最後にコマンドプロンプトで実行


コマンドプロンプト

python getTimelines.py

f:id:moyashiZZ:20180922005614p:plain


出たーーーーーーーー!!!!!
取り敢えずTLが取得できたので今日はここまで
先は長い


参考ページ
qiita.com
qiita.com


作業用BGM