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} をフォローしたよ!')