Published Date : 2019年5月12日4:53
| 1 | 自動ツイート |
|---|---|
| 2 | 自動リツイート |
| 3 | 自動いいね |
| 4 | 自動フォロー |
| 5 | 自動フォロバ |
| 6 | デプロイ、定期実行 |

















# DateTimeで”年”、”月”、”日”などを
# 表示させようとしたら
# エラーになったので、
# こちらの方法を使うとエラーが出なくなりました。
import local
locale.setlocale(locale.LC_ALL, '')
# 日付情報などを扱うためインポート
import datetime
# こちら本題のツイッター自動操作用パッケージ
import tweepy
# 上の画像で説明した、
# 各種4つの必要となるキーを変数としてセットする。
CONSUMER_KEY = 'Your Consumer Key'
CONSUMER_SECRET = 'Your Consumer Secret Key'
ACCESS_TOKEN = 'Your Access Token'
ACCESS_SECRET = 'Your Access Secret Token'
# apiを取得
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
#利用制限にひっかかた時に必要時間待機する
api = tweepy.API(auth, wait_on_rate_limit = True)
# ツイートする文字列を決めておく。
# 別にこの方法でなくても
# Input関数を使ったり、
# 直に書いたり、色々試してみてね。
tweet = "ツイート"
# 数は適当、今回は6回ツイート。
for i in range(6):
# 今の日時を取得して、
# それをStrftime関数で文字に直す。
now=datetime.datetime.now().strftime('%Y年%m月%d日 %H時%M分%S秒')
# 文字列に直した日時と
# ツイートする文字と回数を合体。
status=f"{tweet}{i+1}回目 -> {now}"
# update_statusメソッドを使い、
# 自動ツイートさせる。
api.update_status(status=status)
# 同時にコンソールにもどんな感じに
# ツイートされたか確認のため表示。
print(status)
# 別にやらなくてもいいけど、
# 一回のツイートごとに10秒間待機させてみた。
time.sleep(10)


# ここでAPIを作る為の認証作業を行うイメージ auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) # ここでAPIを通してデータやアプリを操作できるようにするため # 必要となる2つのキーをセットする。 auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET) # 最後にAPIを作成すると同時に、 # PythonプログラムとAPIを繋げることができる、 # apiという名前のオブジェクトを作る。 #(便宜上の名前なのでなんでもよい helloでもいいよ) # ちなみにツイッターでは一回に使用できる制限 #(例えばツイート数)などがあり、 # その制限を超えてしまった場合、 # 強制的にお預け期間を設けるように設定できる。 # APIを作成する関数に # wait_on_rate_limitというキーワード引数を入れ、 # Trueに設定するだけ。 api = tweepy.API(auth, wait_on_rate_limit = True)
# 全てが揃っている用語
# つまり、ツイート等にモーニング娘とハロプロが
# 一緒にあることが条件。
words=['モーニング娘','ハロプロ']
# うるせぇ!男は黙って一つに集中
# って人はこんな感じでやっちゃいなYO!
# word='モーニング娘'
# 何件取得するか選ぼう!
# 今回は様子見で10件
set_count = 10
# apiは上で作ったAPIのオブジェクト。
# 用意されているsearchメソッドを使い、
# 結果を取得。
# q=には探すワードが入る。
# count=には何件探すかが入る。
results = api.search(q=words, count=set_count)
# resultsには取得したユーザーの情報が一つずつ格納されている。
for result in results:
# user._json['screen_name']にはユーザーの@から始まる名前が入っている。
username = result.user._json['screen_name']
# 一意の数字の羅列であるIDナンバー
user_id = result.id
# 出力
print("ユーザーID:"+str(user_id))
# ユーザー名取得。
user = result.user.name
# 出力
print("ユーザー名:"+user)
# ツイートの内容
tweet = result.text
# 出力
print("ユーザーのコメント:"+tweet)
# 例外は嫌いだよ。
# 40秒で支度しな!
# もし、フォローしてたら、
# もし、リツイートしてたら、
# 例外が投げられるので、
# そこで処理を止めないため、
# Try Except 文を使いMASU。
try:
# create_favoriteメソッドで「いいね」するよ!
api.create_favorite(user_id)
# create_friendshipメソッドで「フォロー」するよ!
api.create_friendship(username)
# 出力!
print(user+"をフォローと「いいね」をしました\n\n")
except:
# フォローしてたらこっちを表示。
# で、処理を続ける。
print(user+"はもうフォローしてます\n\n")
# 今度はリツイートの処理。
try:
# リツイート実行
api.retweet(user_id)
print(user+"をリツイートしました\n\n")
except:
print(user+"はもうリツイートしてます\n\n")

# Cursorとはページネーションをしてくれるよ!
# これを使わないと表示範囲内だけでフォロワーなどを取ってくるので
# 全体の数が合わないよ!
followers = [follower for follower in tweepy.Cursor(api.followers).items()]
following = [friend for friend in tweepy.Cursor(api.friends).items()]
# idは一意の値なので、判断材料にするよ!
followers_id=[follower.id for follower in followers]
following_id=[follow.id for follow in following]
# IDが格納されたリストをインデックス番号と一緒にループさせる。
for i,follower_id in enumerate(followers_id):
# もし、フォローしている人達に含まれていれば、
if follower_id in following_id:
print(f'{followers[i].name} はもうフォローしてるよ!')
# そうでないなら、フォローしてないので、
# followメソッドで「フォロー」するよ!
else:
followers[i].follow()
print(f'{followers[i].name} をフォローしたよ!')

