見出し画像

Pythonによる Twitter完全自動化ロードマップ ①自動ツイート

初めまして。
未経験からデータ分析エンジニア目指して爆進中の、叢咲(むらさき)といいます。

プログラミングを始め、基礎的なことはそれなりにやったものの、次に何をすれば良いか悩んだことはありませんか?私も、勉強を終えて次に何するか悩み 仕方なく教科書の2周目に突入した経験があります笑


プログラミングの学習で大事なのは
「自分で何かを作成してみること」
だけです。今まで学習したことを、実際に使ってみないことには面白くありませんよね。しかも、インプットするよりもアウトプットをする方が遥かに学習効率が高いことがわかっています。
実際に手を動かしながら、必要になった事柄をもう一度調べて一行のコードを付け加えるだけで、あなたのスキルはどんどん上がっていきます。

画像1

今回、私の最初の記事として選んだのが今回のタイトルにもあります「PythonによるTwitter完全自動化ロードマップ」です。
今回の記事を読めば、pythonでツイートを呟かせるだけでなく 何もしなくても全自動で指定のツイートを呟いてくれるbotが出来上がります。

冒頭でも紹介した通り、基礎事項を習得し終えた方向けに記事を作成しました。基礎を習得し終えた方の、次のステップとしてこのチュートリアルを実践していただければと思います。

これはすごい! Twitter自動化によるメリット

画像2

ここでは、実際にbotを組み込んだアカウントを運用してみて気づいたメリットを紹介していきます。

①ツイートする手間が半減
これはかなり大きいです。いちいちツイートを作成するの、大変ですよね。毎日同じツイートをしているのなら、その部分は完全に自動化できます。

現に僕も「おはようツイート」「おやすみツイート」「今日の積み上げツイート」は自動化してしまっています。作成するだけで手間な上記のツイートが、勝手につぶやかれたら楽ですよね笑


これが全部自動になったら、楽ですし 一日の振り返りにもなっていいですよね!

②拡散のスピードが上がる
これも、自動化してみてびっくりしました。自動でハッシュタグ付きのツイートが呟かれるので、いつの間にか拡散されているケースが出てきました。自分の発信したい内容が拡散されれば、それだけインパクトを与えられることになります。

③フォロワーが自動的に増えていく
大変ありがたいことに、botから流入してきたフォロワー様が何名もいらっしゃいます。彼らにとって有益な情報を発信し続けられるためにも、面倒なルーティンツイートは自動にしちゃいたいですよね。

④データ分析に使える
完全に個人的な話ですが、機械学習使ったデータ分析を学習している身としては非常にありがたいです。欲しいデータをいくらでも自動で収集してくれるのですから。

どうですか?ワクワクしてきませんか??
Twitterを自動化することで、表現の幅が広がり 有益なことに割く時間が増えていきます。きっと、楽しみながらスキルを伸ばして多くのフォロワーも応援してくれるはずです😁

では、チュートリアルに入っていきましょう!
もし、自分のPCですでにpythonによる開発が行える環境があるのなら、③Twitter Developper登録 まで飛ばしてしまってOKです。

Twitter自動化ロードマップ① pythonの基礎事項習得

ここでTwitterの基礎事項を全て解説してしまうと、解説だけで200ページくらいの教科書になっちゃうので割愛します笑
基礎事項はprogate +α程度で十分です。ぜひ、やってみてください。月額1000円程度とは思えないクオリティの学習サイトです。

Twitter自動化ロードマップ② 環境構築

さて、基礎事項を終えたらいよいよ実践です。その前に自分のPCで環境構築を行なってしまいましょう。
環境構築とは、自分のPC上にプログラミング開発環境を実装することです(そのまんまか)。progateのような学習サイトが出現するまでは、この環境構築で9割の学習者が脱落 とも言われていた鬼門です。今回は、途中で挫折しないようにコピペで済むようにしました。

ここまで、お疲れ様でした!最後にpythonのコードを編集するアプリケーションをインストールして終了です!以下の「Atom」と言うエディタが優秀なので、インストールして使ってみましょう!

以上で、環境構築は終了です。お疲れ様でした!

Twitter自動化ロードマップ③ Twitter Developer登録

スクリーンショット 2020-06-06 18.28.55

次に、Twitterを自動化するために必要なキーの取得を行います。
Twitter Developerと言うページに入り、自分の使っているアカウントを登録しましょう。

いきなり英語でドン引きする方出ると思いますが、安心してください。ネットに優良な記事がたくさんありますので、参考にしてみましょう(2020年6月 下記リンク検閲済み)

Twitter自動化ロードマップ④ tweepyでツイートを呟かせてみよう

さて、ここまで長くなってしまい申し訳ございませんでした!早速、Twitterを操作していきましょう! 

まず最初に、Twitterを操作する際に必要なライブラリである「tweepy」と言うライブラリを読み込んでみましょう。ターミナルに以下のように入力してください。

pip install tweepy

これで、tweepyのインストールは完了です。もちろん無料です。

次にAtomを立ち上げて、pythonのコードを書いていきましょう。pythonでTwitterを操作する際、必要なお約束ごとがあるので真似して書いてみましょう。

import tweepy
CK = "Twitter Developperから取得したConsumer Key"
CS = "Twitter Developperから取得したConsumer Secret"
ATS = "Twitter Developperから取得したAccess Token Secret"
AT = "Twitter Developperから取得したAcccess Token"

auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, ATS)
api = tweepy.API(auth)

簡単に解説します。
一行目でtweepyをインポートします。その後、Developperで取得したキーを文字列型で保管し、それらを認証に使います。次に、api = tweepy.API(auth)とすることで、すべてのリクエストで認証にOAuthを使用します。

上記の流れは、今後毎回書くことになるので、とりあえず「お約束」だと思ってください。

以上で、全ての準備は整いました!!
では、実際にpythonからツイートをしてみましょう!以下の文をAtomにコピペし、「test_tweet1.py」で保存しターミナル上で実行してみてください。

import tweepy
CK = "Twitter Developperから取得したConsumer Key"
CS = "Twitter Developperから取得したConsumer Secret"
ATS = "Twitter Developperから取得したAccess Token Secret"
AT = "Twitter Developperから取得したAcccess Token"

auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, ATS)
api = tweepy.API(auth)

tweet_text = "チュートリアル実践中!! \n #駆け出しエンジニアと繋がりたい  #プログラミング初心者  #勉強垢  https://note.com/ilovephys/n/n04e211116a02"



api.update_status(status=tweet_text)

如何だったでしょうか?以下のように表示されれば成功です!

スクリーンショット 2020-06-02 23.05.05

どうですか?意外と簡単だったのではないでしょうか。
簡単に、今回使ったメソッドを紹介します。また、その後に一題練習問題をつけておきました!ぜひやってみてください👍

API.update_statusstatus [,media_ids ]

さて、今回使ったメソッドは上記の「api.update_status()」です。str型引数のstatusに、投稿したい内容を入れてください。
また、[, media_ids]の部分は省略可です。もし、画像をツイートしたい場合はTweepyのapi.media_upload()メソッドを使用して、media_idを取得してからリストにしましょう(練習問題①)

file_names=["AAA.jpg", "BBB.jpg", "CCC.jpg"] #追加したいメディアのURL 
media_ids = []
for filename in file_names:
   res = api.media_upload(filename)
   print(res)
   media_ids.append(res.media_id)

重要なのは res = api.media_upload(filename) を噛ませて、一度Mediaオブジェクトを作成している点です。Mediaオブジェクトの中身は以下のようになっています。

Media(_api=<tweepy.api.API object at 0x104ec9438>, media_id=1269219685263798272, media_id_string='1269219685263798272', size=84378, expires_after_secs=86400, image={'image_type': 'image/jpeg', 'w': 634, 'h': 390})

update_status(status, media_ids)で画像をツイートするためには、画像のmedia_idが保管されているリストが必要ですから

res.media_id

としてmedia_idを取り出し、それをリストに追加していけばいいわけです。

さて、今回紹介したのはほんの一部です。update_statusの引数にはもっとたくさんの種類が存在します。今回紹介したのは、ほんの一部です。興味がある方は、公式のAPI Referenceを参照してみてください!

Twitter自動化ロードマップ⑤ 練習問題①

では、今回学んだことを応用して次の問題を解いてみてください。

これから作成する「test_tweet2.py」と同じ階層に「木星」「朝焼けの海」「月」の写真を保存してください。
これら3枚の画像をツイートするスクリプトを書いてください。

今回のツイートが成功すると次のようになります。

スクリーンショット 2020-06-03 22.47.34

木星の衛星写真、図鑑で観たものよりも全然きれいになってて驚きました笑

Hint1 : api.update_status()の使い方

まず、保管した画像のURLパスをlist型で保管します(各要素はstr型)。その各要素に対して「api.update_status()」を通した上で、改めてリストに保管してください。

こんな感じになるはずです!

import tweepy
import os

CK = "Twitter Developperから取得したConsumer Key"
CS = "Twitter Developperから取得したConsumer Secret"
ATS = "Twitter Developperから取得したAccess Token Secret"
AT = "Twitter Developperから取得したAcccess Token"

auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, ATS)
api = tweepy.API(auth)


file_names=["jupiter.jpg", "morning.jpg", "moon.jpg"]
media_ids = []
for filename in file_names:
   res = api.media_upload(filename)
   media_ids.append(res.media_id)
# tweet with multiple images

api.update_status(status='テスト', media_ids=media_ids)

Twitter自動化ロードマップ⑥ 練習問題②

次は、pythonの基本である条件分岐とdateを使って問題を解いてみましょう。dateを使うのは初めてかもしれませんが、ググればすぐに答えが見つかるのでやってみてください!

現在時刻を取得し、6:00 ~ 12:00なら「おはようツイート」 12:00 ~ 18:00なら「こんにちはツイート」 18:00 ~ 24:00なら「こんばんはツイート」 24:00 ~ 6:00なら「おやすみツイート」をしてください。
ただし、ツイート本文で必ず現在時刻を「×
×時××分」の形式で宣言してください。

今回のスクリプトが通れば、こんな感じになると思います。

スクリーンショット 2020-06-03 22.37.53

先ほどの画像ツイートと違って、花がないツイートですね...笑
ただ、datetimeを操れると ツイートを条件付きで検索する場合などに非常に便利です。せっかくなので、使えるようになっておきましょう。

Hint1 : if文で条件分岐
progate終えたばかりの人は、少し怪しいかもしれません。pythonでもJavaでもphpでも出現する文法です。確実に押さえておきましょう。

Hint2 : datetimeの使い方
datetimeをimportして使いましょう。現在時刻は

import datetime
DT = datetime.datetime.now()

で取得できます。また、取得したdatetimeオブジェクトのパラメーターを指定してやれば

DT.year
DT.month
DT.day
DT.hour
DT.minute
DT.second
DT.microsecond

のようにして、欲しい単位の時刻を得ることができます。今回は、現在時刻で分岐させたいので DT.hour でif文回してあげれば良さそうですね。

mport tweepy
import os

CK = os.environ["CK"]
CS = os.environ["CS"]
ATS = os.environ["ATS"]
AT = os.environ["AT"]

auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, ATS)
api = tweepy.API(auth)

DT = datetime.datetime.now()
newDT = DT.strftime('%H時%M分')
tweet = "ただいまの時刻は"+newDT+"です。\n"

if DT.hour > 6 and DT.hour <= 12:
   tweet+="おはようございます!\n"
elif DT.hour >= 12 and DT.hour < 18:
   tweet+="こんにちは〜〜〜\n"
elif DT.hour > 18 and DT.hour < 24:
   tweet+="こんばんは。\n"

api.update_status(status = tweet)

Twitter自動化ロードマップ⑤ Herokuにスクリプトをデプロイしてツイートを自動化しよう

さて、ここまでくれば最終段階です!
いよいよ これまで書いたスクリプトをコンピューターで自動操作する方法について学んでいきましょう!!😊
ここまでクリアできれば、自分の使っているTwitterアカウントが全自動で動き始めることになります。

今回の「Pythonによる Twitter完全自動化ロードマップ」は連載記事なので、Pythonの実行を自動化する方法については記事を分けました。もちろん、無料です。

如何でしょうか。Twitterが自動で動き始めましたか???

最後に

以上で、今回のチュートリアルは終了となります。今回は単純にツイートをして終わりでしたが、次回は 自動でツイートを収集して フォロー RT まで行います。

Twitterの自動化、便利で非常に楽しいのですが 全て自動だとフォロワーからは「価値のないアカウント」と認定されてしまうでしょう。
あくまでも、ルーチンワークをなかったことにするための便利ツールだと思ってください。

それでは、また次回お会いしましょう〜〜〜✌️
あ。Twitterのフォローもお待ちしていますね!笑





この記事が気に入ったらサポートをしてみませんか?