#初めに
tweepyのインストールはすでに終了してるという前提で話を進めさせていただきます。
※主はプログラミング歴数か月の初心者です。ところどころ知識不足が目立つかもしれませんが温かい目で見守っていただけると幸いです。
#開発環境
python-3.8.5
tweepy-3.9.0
editor-Atom
#プログラミング初心者の方へ
主は初心者といえど多少の経験はあります。
完全に初心者という方は、ほかの記事等を見て、基礎知識を身に着けてからまた戻ってきてください。
#本編
それでは本編です。
##コード
###必須コード
import tweepy
CONSUMER_KEY = "ここに対応する文字列を入力"
CONSUMER_SECRET = ""
ACCESS_KEY = ""
ACCESS_SECRET = ""
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)
###実際に書いていくコード
今回は、リプライ、リツイートを除いたツイート10件をprintするコードを書いていきます。
a = 0
public_tweets = api.home_timeline()
for tweet in public_tweets:
if a < 10:
if tweet.text[:2] == 'RT' or tweet.text[:1] == '@':
pass
else:
print(' ')
print('-----------------')
print(' ')
print(tweet.text)
a += 1
#####解説
a = 0
動作を10回行ったら終了するために必要な定義。
public_tweets = api.home_timeline()
api.home_timeline()
の呼び出しを楽にやるために public_tweets
にぶちこんでます。
for tweet in public_tweets:
tweet
っていう変数に取得したツイートのオブジェクトをぶちこむやつです。
if a < 10:
動作を10回で抑えるためのチェック。
1行目必須。
if tweet.text[:2] == 'RT' or tweet.text[:1] == '@':
pass
リツイートまたはリプライのツイートだった場合に無視する用のやつ。
基本的に、リツイート、リプライのツイートを tweet.text
でprintすると
RT @ユーザーID メッセージ内容
または
@ユーザーID メッセージ内容
って感じで、最初にRTまたは@がつくのでそれを判断する用です。
else:
print(' ')
print('-----------------')
print(' ')
print(tweet.text)
a += 1
else:
は、5,6行目の条件に当てはまらなかったら動作するってやつ。
printの上三行は取得したツイート内容の区別をわかりやすくするためのやつなのでなくても一応大丈夫。
print(tweet.text)
は、ツイート内容をprintするってやつ。
a +=1
は、aっていう変数の数値を1プラスするってやつ。
何回動作したかの確認のために必須のコード。
ちなみにこれを動作させると、
-----------------
メッセージ内容1(念のため隠します)
-----------------
メッセージ内容2(念のため隠します)
-----------------
メッセージ内容3(念のため隠します)
-----------------
メッセージ内容4(念のため隠します)
-----------------
メッセージ内容5(念のため隠します)
-----------------
メッセージ内容6(念のため隠します)
-----------------
メッセージ内容7(念のため隠します)
-----------------
メッセージ内容8(念のため隠します)
-----------------
メッセージ内容9(念のため隠します)
-----------------
メッセージ内容10(念のため隠します)
ってなります。
###次に
次は、ユーザー名を表示する機能を追加していきます。
実行結果が
-------
ユーザー名
|
ツイート内容
-------
.
.
.
となるようにしていきます。
では早速コードを書いていきます。
ゆうてちょっと追加するだけなのでそんな難しくないと思います。
はいコードぽん
a = 0
public_tweets = api.home_timeline()
for tweet in public_tweets:
if a < 10:
if tweet.text[:2] == 'RT' or tweet.text[:1] == '@':
pass
else:
print(' ')
print('-----------------')
print(' ')
print(tweet.user.name)
print('|')
print(tweet.text)
a += 1
7行目までは一緒なのでぶったぎって、ポン
print(' ')
print('-----------------')
print(' ')
print(tweet.user.name)
print('|')
print(tweet.text)
a += 1
変わったところは、4,5行目だけ!
しかも追加だけ!削除なし!
これは特に解説する必要がない気がするのでパスで。
実行結果はこんな感じ
-----------------
ユーザー名1(ユーザーIDではない)
|
メッセージ内容1(念のため隠します)
-----------------
ユーザー名2(ユーザーIDではない)
|
メッセージ内容2(念のため隠します)
-----------------
ユーザー名3(ユーザーIDではない)
|
メッセージ内容3(念のため隠します)
-----------------
ユーザー名4(ユーザーIDではない)
|
メッセージ内容4(念のため隠します)
-----------------
ユーザー名5(ユーザーIDではない)
|
メッセージ内容5(念のため隠します)
-----------------
ユーザー名6(ユーザーIDではない)
|
メッセージ内容6(念のため隠します)
-----------------
ユーザー名7(ユーザーIDではない)
|
メッセージ内容7(念のため隠します)
あれ?7個しかツイートが取得できてない??
そうなんです。今回はツイートが7個しか取得できていないんです。
考えられる原因は一つ、
#####この条件に合うツイートを10件取得しきる前に、そもそも取得できるツイートの数の限界が来てしまった
まあたぶんこれが原因でしょう。
あと何回かやってれば結果変わると思います。めんどくさいのでやりませんが。
###ラストオオオ!!!
最後に挑戦するのが、ユーザー名の右にTwitterIDも書く!!
これだけやって今回は終了としたいと思います。
では早速。
今回は思考から書いていきますよお
まず、ユーザー名とTwitterIDを同じ列に書きたいので、なにかしら変数を決めないといけないです。
(まあ変数使わなくてもやる方法はありますが)
今回は name
という変数を使っていきます。
name = tweet.user.name
先ほどもやりましたが、これでユーザー名を取得します。
そして次。
UserIDを取得します。
どこから取得すればいいのかわからないのでObjectを探っていると...
screen_name
という、それっぽいやつがありました。
試しにTwitterで検索してみると...
はい、うまくいきました。
(知らない人のUserIDなので画像なしです)
ということで、これを使えばTwitterIDを取得できるということがわかりました。
じゃああとは簡単ですね。
こいつらを結合して...
name = tweet.user.name + ':@' + tweet.user.screen_name
たぶんこれでいけるでしょう!
試しに実行してみた結果...
-----------------
ユーザー名:@TwitterID
|
メッセージ内容1(念のため隠します)
-----------------
ユーザー名:@TwitterID
|
メッセージ内容2(念のため隠します)
-----------------
ユーザー名:@TwitterID
|
メッセージ内容3(念のため隠します)
-----------------
ユーザー名:@TwitterID
|
メッセージ内容4(念のため隠します)
-----------------
ユーザー名:@TwitterID
|
メッセージ内容5(念のため隠します)
-----------------
ユーザー名:@TwitterID
|
メッセージ内容6(念のため隠します)
-----------------
ユーザー名:@TwitterID
|
メッセージ内容7(念のため隠します)
-----------------
ユーザー名:@TwitterID
|
メッセージ内容8(念のため隠します)
-----------------
ユーザー名:@TwitterID
|
メッセージ内容9(念のため隠します)
-----------------
ユーザー名:@TwitterID
|
メッセージ内容10(念のため隠します)
はい、うまくいきました。そりゃそうですよね。
#最後に
では、今回はこれで終わりたいと思います。
次回は、作りたい内容が思いつき次第更新したいと思います。
Qiitaって書いてるとタイピングの安定性上がるし、文章力も上がる気がするのでいいですね。
人に教えることにより自分もさらに深く知ることができるし。
一石三鳥じゃないですか!
みなさんもぜひ記事を書いてみてくださいね!
では、ノシ
#Re:ゼロから始めるTwitterBot開発生活シリーズ
#1 当記事
#2 ※準備中※
・当シリーズが更新され次第、随時こちらも更新していきます。