クソリプbotを作ろう<Twitterで自分のタイムラインを取得する>
経緯
「自分が面白いと思ったものを作った方が良いよ」僕「中々思いつかないんですよね〜〜」「クソリプAIとか」僕「クソおもしろそう」
— Virtualもやし (@moyashiZZ) 2018年9月21日
『クソリプ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)
TwitterはOAuth認証とやらが必要らしく最初にrequests_oauthlibのOAuth1Sessionをimportしている
んでOAuthってなんぞという話なんですが
ユーザーがアクセス権限を承諾した証明書を発行するやつみたいな認識
そしてそれをうまいことやってくれるのがOAuth1Sessionなのかなぁと
多分Twitterで外部連携するときに○○に△△の許可を与えますか?とか出てくるヤツ
1.アプリがAPIへのアクセストークンをリクエスト
2.Twitterがユーザーに権限を与えるか聞く
3.許可
4.アクセストークン発行
5.アプリがAPIを利用可に
1と4をやってくれるのがOAuth1Sessionです。たぶん。
最後にコマンドプロンプトで実行
python getTimelines.py
出たーーーーーーーー!!!!!
取り敢えずTLが取得できたので今日はここまで
先は長い
作業用BGM