スクリーンショット_2019-07-31_21

【非エンジニア向け】PythonでTwitterのツイート・いいね・リツイート・フォロー・ブロック・DM送信を自動化


今回紹介するプログラムを扱えるようになれば、Twitterから提供されているデータの範囲でなら大抵のことができるようになります👏

とくに普段Twitterをよく使っている方は、Twitterを自動で運用できれば、他の仕事やTwitterの分析などに多く時間を使えるようになるので、オススメです。


****** 注意 ******
この記事は公開後1日間は無料で、その後有料記事となります。
他のプログラミングチュートリアル記事も公開後1日間は無料になるので、無料で読みたい方は、noteのフォローをオススメします( ・v・)b

フォローはこちらから → https://note.mu/virtual_surfer


# 1. はじめに

こんにちは。仮想サーファー(@virtual_techX)です!


今回は、「【非エンジニア向け】PythonでTwitterのツイート・いいね・リツイート・フォロー・ブロック・DM送信を自動化」という記事です!


上の記事でTwitterのBotを作る方法を紹介していますが、上の記事とこの記事の内容を合わせれば、Twitterでのほぼ全ての操作を自動で動くTwitter Botで完結することができます!



それでは最初に、今回のチュートリアルでできるようになることを簡単にまとめておきますね。



できるようになることは?

以下、今回のチュートリアルでできるようになることです。

・自動で画像つきツイートする/返信する/削除する
・自動でいいね/いいねを消す
・自動でリツイート/リツイートを消す/引用リツイートする
・自動でフォロー/フォローを外す
・自動でミュート/ミュートを外す
・自動でブロック/ブロックを外す
・自動でDMを送信する
・自動でリストを作成する/リストにユーザー追加/リストからユーザー外す
・Herokuにデプロイして自動で操作し続けてくれるようにする

「Twitterを自動で操作したい!」となったときに必要になるであろう操作のほとんどをこの記事で網羅しました( ・v・)/



どんな人に読んでもらいたい?

こちらのnoteは、プログラミングほとんどやったことないけど、Twitterの自動化・効率化してみたい!という方向けのコンテンツになっています。

・エンジニアじゃないけど、Twitterの操作を自動でやってみたい。
・プログラミング少しProgateやってみたくらいだけど、実践的な・日常で使えるプログラムを書いてみたい。

上のいずれかに該当する方に読んでもらいたいと思っています!

「プログラミングは絶対にやりたくない!」という方や、「Twitterなんて興味ない!」という方は、このチュートリアルを読み進めても確実に無駄になってしまうので、これ以上読み進めない方がいいです。



このチュートリアルで具体的に何が学べるの?

このチュートリアルを通して学べるプログラミング技術は以下のものです。

① Pythonの基本的なプログラミング
② Twitter APIへのアクセス・操作(Twitter上のデータ取得)
③ Herokuへアプリケーションのデプロイ(自動で②が動くようにする)

チュートリアルの最後③まで進めることで、Twitterを操作するのを完全自動で定期的に動くよう設定することができます。

とはいえ、いきなり③まで進めることが難しい場合もあるかもしれません。そんな方は、欲しい時に自動でTwitterの操作ができるだけでも、できることの幅が大きく広がります。まずは②の最後まで進めることを目指すとよいです。

③までは、プログラミング経験があまりない方だと3~4時間程度、プログラミング経験がある方だと1~2時間程度で進められる想定です。



読む前に必要な準備はある?

・MacのPC
・インターネットに接続できる環境(このnoteが普通に読めていればOK)
・ツイッターのアカウント

上に書いているもの以外、事前の準備は必要ありません。
すべてチュートリアル内の情報だけで完結できるように設計しています。

ちなみに、プログラミングの知識が少しでもあると読み進めていく中で理解が早いと思うので、ProgateのGit、Command Line、Pythonの内容を軽くやってみると良いです。

画像1

(画像:Progateのコース選択画面



何の役に立つの?

Twitter上の操作を自動化したい時に活用できます。
以下、今回のチュートリアルをすることでできるようになることの例。

・Twitterの操作を自動化して、自分の興味のあるテーマでツイートし、フォローするTwitter Botを作成する
・定期的に映画、本などの公開情報を自動でツイートする
・Amazonの本が安売りになったタイミングでツイートする
・特定ユーザーのツイート/特定ユーザーに対してのツイートに対して自動でいいねやリツイートをする
...などなど。

今回のチュートリアルをやり終えることで、上にあげたもの以外でも何らかの規則性・条件を持ったTwitter上の操作を完全に自動化することができるので、発想次第でできることはかなり増えます。



# 2. チュートリアル実践

それでは、チュートリアルに入っていきます!


Pythonの実行環境の準備

今回はPythonというプログラミング言語でプログラミングをしていくので、まずは、Pythonを実行することができる環境を準備していきます。

* 注意 *
すでにPythonを実行できる環境がある方は、「Twitterのデータにアクセスできるようになる」の箇所まで読み飛ばしてください。


①Terminalの用意

Finder > Applications > Terminalと遷移し、Macに標準で搭載されているアプリケーションTerminalを開きます。

Terminalって何?という方は、命令文を打ち込むことでパソコンを操作できる便利ツールだと捉えるとよいです。

画像2

上の画像のように黒い画面(Terminal)に命令文を打ち込んでいくことで、プログラムやPCに操作をさせることができます。

試しに、$マークの後ろに「$ echo Pythonのチュートリアルなう!」と打ち込んで、(Enterボタンを押して)命令文を実行してみてください。

画像3

「Pythonのチュートリアルなう!」という文章が表示されたはずです。「echo」という命令文は、「その後に続く文章をTerminalに表示する」という命令文を意味するので、このように文章を表示することができました。


②Homebrewのインストール

Terminalを使う準備ができたら、次にPythonを使用できるように準備していきましょう。まずは、PythonをTerminalで簡単にインストールできるように、Homebrewというものをインストールします。

先ほどと同じように、Terminalの$マーク以降の場所に次の命令文を入力します。「$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"」

画像4

「Press RETURN to continue or any other key to abort」と表示されたら、Enterボタンを押してください。また、「Password:」と表示されたら、いつもパソコンにログインする時に使っているパスワードを入力してください。

これによって、Homebrewがインストールされます。

Homebrewのインストールが成功したかどうかは、「$ brew -v」というHomebrewのバージョンを確認する命令文を打ち込むことで確認できます。

試しに「$ brew -v」と打ち込んでみましょう。

画像5

上の画像のように、「$ brew -v」と打ち込んで、「Homebrew 1.7.6」のようにバージョン番号が表示されればインストール成功しています(バージョン番号は異なる場合があります)。


③Pythonのインストール

最後に、Pythonを使えるようにインストールしていきます。

pythonのバージョンは、3のもの(2018年10月現在で最新版)をインストールします。

これまでと同じように、「$ brew install python3」と打ち込みます。

画像6

ぼくはすでにPythonをインストールしているのでErrorとなっていますが、初めてPythonを利用する場合はインストールが成功したような表示がされるはずです。

これで自分のPC環境にPythonがインストールされたはずです。 このPythonを簡単に使えるようにするため、パスの設定をしておきましょう。

Terminalに「$ open ~/.bash_profile」と打ち込みます。

上記の命令文を打ち込むと、「.bash_profile」という名前のファイルが開かれます。

画像7

開いたファイルに、「export PATH=/usr/local/bin:$PATH」という文章をコピペして、ファイルの変更を保存します(「command」ボタンと「S」ボタン同時押しで保存するショートカットおすすめです)。

「command + S」は、Macでファイルの保存をしたい時によく使うショットカットキーです。

ファイルの保存ができたら、ファイルを閉じ、再びTerminalに戻り「$ source ~/.bash_profile」という命令文を打ち込みます。

以上によって、Terminalで「$ python」と打ち込むことで、Pythonを動かせるようになりました。

画像8

入力できる場所が「>>> 」という表示になっていれば、Pythonが起動できています。

試しに、「>>> 1 + 1」と入力して、Enterを押してみてください。

画像9

上の画像のように「2」と表示されていればOKです!

ここまでで、Pythonを動かせる準備は終了です!

僕の周りのプログラミング未経験者のうち1/3の人は、環境構築を完了にたどり着けないので、ここまで達成できただけでも未経験者にとっては大きな進歩です!(僕はプログラミングを初めて2ヶ月間は、できる人に環境構築を任せっきりでした。笑)




Twitterのデータにアクセスできるようになる

Pythonを実行できる環境も整ったので、早速TwitterへアクセスしてTwitterのデータを取得していきます!

* 注意 *
すでにTwitter APIにアクセスすることができる方は、「Twitterでユーザー情報を取得してみる」の箇所まで読み飛ばしてください。


Twitterにアクセスするためには、以下のような手順が必要です。

・Twitterへアクセスするためのアクセストークンを取得する
・Twitterにアクセスするプログラムを書く
・Twitterにアクセスするプログラムを実行する

それでは、順を追って操作手順を説明していきます。


①Twitterへアクセスするためのアクセストークンを取得する

まずはTwitterへプログラムでアクセスするために、アクセストークンを取得していきます。

ツイッターにログインした状態で、以下のリンク先をクリックして、ツイッターのアプリケーション管理画面に移動します。

移動すると、下の画像のような画面になっているはずです。

画像10

上の画面で、「Create an app」というボタンを押して新規アプリケーションを作成するために開発者登録をします。


画像11

Twitter APIの利用用途を聞かれるので、Hobbyistの「Making a bot」をクリックして、「Next」をクリックします。


画像12

アカウントが正しいかどうか聞かれるので、必須項目に情報を入力して「Next」をクリックします。

次の画面でTwitter APIの利用用途を聞かれるのですが、300文字も入力するのは辛いですが、以下の文章も参考に進めてみてください。

(英語がおかしい箇所が見つかってもお許しください。)

I'm using Twitter APIs to tweet some news for my Information gathering. I think Twitter data is precious and I can know many things. It helps me to know what people's insight by using Twitter API. It's going to be limited to personal use. I'm using tweet some text or update some data without breaking the usage restrictions.


最後まで進むとメール認証画面になるので、ツイッターに登録しているメールアドレスの受信メールを確認してメール認証をしましょう。

画像13

認証メールを受信しているので、「Confirm your email」をクリックします。

「Confirm your email」をクリック


メールの認証をすると、下の画像のように「審査するからちょっと待ってね」と言われます。

画像14

1年前に初めてTwitterAPIの登録をした時は承認なしですぐ使えたのですが、徐々に制限が厳しくなっているようです。まだTwitter API登録したことない方は、早めに登録した方が良さそう。


登録したものが承認されると、Appsに表示されています。

Appsの右端の「Details」というボタンをクリック。

画像15

「Keys and tokens」というタブをクリックすると、「API Key」・「API Secret Key」・「Access Token」・「Access Token Secret」の値が表示されています。

画像16

Twitter社はこれらの値を使ってTwitterにアクセスしてきているユーザーを識別しています。これら4つの値は後ほど使うので控えておきましょう。他人に漏れてしまうと悪用できてしまうので注意しましょう。

以上でプログラムでTwitterにアクセスする準備完了です。




Twitterでユーザー情報を取得してみる

手始めに、先ほど用意したAPI Keyなどを利用して、PythonでTwitterの自分のプロフィールのデータを取得してみます。


まずは、tweepyというライブラリ(簡単にTwitterのデータにアクセスすることができる便利なツール)をインストールします。

$ pip install tweepy
Terminalで「$ pip install tweepy」と打ち込んで、実行する。


下のコマンドを実行してtweepyのバージョンが表示されれば、tweepyがインストールできています。

$ pip list | grep tweepy

tweepy                   3.7.0
「$ pip install tweepy」と打ち込んで、tweepyがインストールできているか確認する。


tweepyがインストールできていることが確認できたら、任意の名前のPythonファイル(ここでは、「test.py」というファイル名のファイルを用意します)を作成し、以下のようなコードを書いて実行してみましょう。

import tweepy

# 以下4つ「xxxxx」を、先ほど控えた値で書き換える。
CONSUMER_KEY = 'xxxxx'
CONSUMER_SECRET = 'xxxxx'
ACCESS_TOKEN = 'xxxxx'
ACCESS_TOKEN_SECRET = 'xxxxx'
# ↓探したいユーザーの「@」以降のアカウント名を入れる
screen_name = 'virtual_techX'

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth)
user_info = api.get_user(screen_name=screen_name)
print(user_info)


Terminalに「$ python test.py」と打ち込んで実行します。
$ python test.py

User(_api=<tweepy.api.API object at 0x103defa58>, _json={'id': 952004195497816064, 'id_str': '952004195497816064', 'name': '仮想サーファー@webエンジニア', 'screen_name': 'virtual_techX', 'locationofile_location': None, 'description': 'Webサーバーサイドエンジニア@大きめのITベンチャー | 日常生活のあらゆることを自動化する。さぼりプログラム発信してます! https://t.co/bSqczI1eoP', 'url': 'httpsrl': 'https://t.co/AhzcoGbsGy', 'expanded_url': 'http://www.virtual-surfer.com', 'display_url': 'virtual-surfer.com', 'indices': [0, 23]}]}, 'description': {'urls': [{'url': 'https://t.co/bSqczI1eoP', 'expanded_url': 'https://note.mu/virtual_surfer', 'display_url': 'note.mu/virtual_surfer', 'indices': [64, 87]}]}}, 'protected': False, 'followers_count': 2057, 'friends_count': 220, 'listed_count': 10, 'created_at': 'Sat Jan 13 02:27:42 +0000 2018', 'favourites_count': 311, 'utc_offset': None, 'time_zone': None, 'geo_enabled': False, 'verified': False, 'statuses_count': 1265, 'lang': 'ja', 'status': {'created_at': 'Fri Oct 05 03:42:09 +0000 2018', 'id': 1048055716232101888, 'id_str': '1048055716232101888', 'text': '最近ブロガー界隈で影響力ある人がYouTubeとか動画の可能性に言及の戦場で勝ちにいくと他の戦場に入るの遅れるのかな', 'truncated': False, 'entities': {'hashtags': [], 'symbols': [], 'user_mentions': [], 'urls': []}, 'source': '<a href="http://twitter.com/downloadTwitter for iPhone</a>', 'in_reply_to_status_id': None, 'in_reply_to_status_id_str': None, 'in_reply_to_user_id': None, 'in_reply_to_user_id_str': None, 'in_reply_to_screen_name': None, 'geo': None, 'coordinates': None, 'place': None, 'contributors': None, 'is_quote_status': False, 'retweet_count': 0, 'favorite_count': 0, 'favorited': False, 'retweeted': False, 'lang': 'ja'}, 'contributors_enabled': False, 'is_translator': False, 'is_translation_enabled': False, 'profile_background_color': '000000', 'profile_background_image_url': 'http://abs.twimg.com/images/themes/theme1/bg.png', 'profile_background_image_url_https': 'https://abs.twimg.com/images/themes/theme1/bg.png', 'profile_background_tile': False, 'profile_image_url': 'http://pbs.twimg.com/profile_images/952006494731431936/oERsC_dh_normal.jpg', 'profile_image_url_https': 'https://pbs.twimg.com/profile_images/952006494731431936/oERsC_dh_normal.jpg', 'profile_banner_url': 'https://pbs.twimg.com/profile_banners/952004195497816064/1538287739', 'profile_link_color': '91D2FA', 'profile_sidebar_border_color': '000000', 'profile_sidebar_fill_color': '000000', 'profile_text_color': '000000', 'profile_use_background_image': False, 'has_extended_profile': False, 'default_profile': False, 'default_profile_image': False, 'following': False, 'follow_request_sent': False, 'notifications': False, 'translator_type': 'none', 'suspended': False, 'needs_phone_verification': False}, id=952004195497816064, id_str='952004195497816064', name='仮想サーファー@webエンジニア', screen_name='virtual_techX', locatioile_location=None, description='Webサーバーサイドエンジニア@大きめのITベンチャー | 日常生活のあらゆることを自動化する。さぼりプログラム発信してます! https://t.co/bSqczI1eoP', url='https://t.co/Ah/t.co/AhzcoGbsGy', 'expanded_url': 'http://www.virtual-surfer.com', 'display_url': 'virtual-surfer.com', 'indices': [0, 23]}]}, 'description': {'urls': [{'url': 'https://t.co/bSqczI1eoP', 'expanded_url': 'https://note.mu/virtual_surfer', 'display_url': 'note.mu/virtual_surfer', 'indices': [64, 87]}]}}, protected=False, followers_count=2057, friends_count=220, listed_count=10, created_at=datetime.datetime(2018, 1, 13, 2, 27, 42), favourites_count=311, utc_offset=None, time_zone=None, geo_enabled=False, verified=False, statuses_count=1265, lang='ja', status=Status(_api=<tweepy.api.API object at 0x103defa58>, _json={'created_at': 'Fri Oct 05 03:42:09 +0000 2018', 'id': 1048055716232101888, 'id_str': '1048055716232101888', 'text': '最近ブロガー界隈で影響力ある人がYouTubeとか動画る。\n\nブログっていう一つの戦場で勝ちにいくと他の戦場に入るの遅れるのかな', 'truncated': False, 'entities': {'hashtags': [], 'symbols': [], 'user_mentions': [], 'urls': []}, 'source': '<a href="hrel="nofollow">Twitter for iPhone</a>', 'in_reply_to_status_id': None, 'in_reply_to_status_id_str': None, 'in_reply_to_user_id': None, 'in_reply_to_user_id_str': None, 'in_reply_to_screen_name': None, 'geo': None, 'coordinates': None, 'place': None, 'contributors': None, 'is_quote_status': False, 'retweet_count': 0, 'favorite_count': 0, 'favorited': False, 'retweeted': False, 'lang': 'ja'}, created_at=datetime.datetime(2018, 10, 5, 3, 42, 9), id=1048055716232101888, id_str='1048055716232101888', text='最近ブロガー界隈で影響力ある人がYouTubeとか動画の可能性に言及してること増えてる気るのかな', truncated=False, entities={'hashtags': [], 'symbols': [], 'user_mentions': [], 'urls': []}, source='Twitter for iPhone', source_url='http://twitter.com/download/iphone', in_reply_to_staid=None, in_reply_to_status_id_str=None, in_reply_to_user_id=None, in_reply_to_user_id_str=None, in_reply_to_screen_name=None, geo=None, coordinates=None, place=None, contributors=None, is_quote_status=False, retweet_count=0, favorite_count=0, favorited=False, retweeted=False, lang='ja'), contributors_enabled=False, is_translator=False, is_translation_enabled=False, profile_background_color='000000', profile_background_image_url='http://abs.twimg.com/images/themes/theme1/bg.png', profile_background_image_url_https='https://abs.twimg.com/images/themes/theme1/bg.png', profile_background_tile=False, profile_image_url='http://pbs.twimg.com/profile_images/952006494731431936/oERsC_dh_normal.jpg', profile_image_url_https='https://pbs.twimg.com/profile_images/952006494731431936/oERsC_dh_normal.jpg', profile_banner_url='https://pbs.twimg.com/profile_banners/952004195497816064/1538287739', profile_link_color='91D2FA', profile_sidebar_border_color='000000', profile_sidebar_fill_color='000000', profile_text_color='000000', profile_use_background_image=False, has_extended_profile=False, default_profile=False, default_profile_image=False, following=False, follow_request_sent=False, notifications=False, translator_type='none', suspended=False, needs_phone_verification=False)

指定したユーザーのデータを取得することができました。様々なデータが取れていますが、見通しが悪いので欲しいデータだけを取得するように変更してみます。

test.py

import tweepy

# 以下4つ「xxxxx」を、先ほど控えた値で書き換える。
CONSUMER_KEY = 'xxxxx'
CONSUMER_SECRET = 'xxxxx'
ACCESS_TOKEN = 'xxxxx'
ACCESS_TOKEN_SECRET = 'xxxxx'
# ↓探したいユーザーの「@」以降のアカウント名を入れる
screen_name = 'virtual_techX'

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth)
user_info = api.get_user(screen_name=screen_name)

name = user_info.name
screen_name = user_info.screen_name
description = user_info.description
image_url = user_info.profile_image_url_https
follow_count = user_info.friends_count
follower_count = user_info.followers_count

print('【名前】{}\n【アカウント名】{}\n【自己紹介】{}\n【画像URL】{}\n【フォロー数】:{}\n【フォロワー数】:{}'
      .format(name, screen_name, description, image_url, follow_count, follower_count))

ファイルを更新したら、再度ファイルを実行してみます。

「test.py」を更新し、「$ python test.py」を実行する。
$ python test.py

【名前】仮想サーファー@webエンジニア
【アカウント名】virtual_techX
【自己紹介】Webサーバーサイドエンジニア@大きめのITベンチャー | 日常生活のあらゆることを自動化する。さぼりプログラム発信してます! https://t.co/bSqczI1eoP
【画像URL】https://pbs.twimg.com/profile_images/952006494731431936/oERsC_dh_normal.jpg
【フォロー数】:220
【フォロワー数】:2057

欲しいデータだけが並びました!

ちなみに、プログラム中の「screen_name」の箇所を任意のユーザーのものに変えれば、そのユーザーの情報も同様にして取得することができます。

画像17




Twitter APIで画像つきツイートする/返信する/削除する

ここまででTwitter APIをつかってTwitterにアクセスすることができるようになりました。

次は、Twitterで画像をツイートしてみましょう!


Twitter APIでツイート

コードを書いたファイルがこちら。「post_tweet.py」というファイル名で作成しておきます。

post_tweet.py

# coding=utf-8
import tweepy

# 以下4つ「xxxxx」を、先ほど控えた値で書き換える。
CONSUMER_KEY = 'xxxxx'
CONSUMER_SECRET = 'xxxxx'
ACCESS_TOKEN = 'xxxxx'
ACCESS_TOKEN_SECRET = 'xxxxx'

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
API = tweepy.API(auth)

# ↓ツイートしたい文章
TWEET_TEXT = 'Pythonのチュートリアル中...'


def post_tweet(api, text):
    status = api.update_status(text)
    print('「{}」というツイートをしました!'.format(status.text))


post_tweet(API, TWEET_TEXT)
「post_tweet.py」というファイルを作成し、上記のコードを書く。

「xxxxx」の箇所は、上で用意した「API Key」・「API Secret Key」・「Access Token」・「Access Token Secret」の値でそれぞれ書き換えてください。

では、このファイルを実行してみましょう。

「$ python post_tweet.py」を実行
$ python post_tweet.py

「Pythonのチュートリアル中...」というツイートをしました!

ファイルを実行すると、下の画像のようにTwitterでツイートすることができているはずです。

画像18

「post_tweet.py」に書いている「TWEET_TEXT = 'Pythonのチュートリアル中...'」の箇所を変更すれば、任意の文章でツイートすることができます。


Twitter APIで画像付きツイート

つぎに、画像付きのツイートをしてみましょう!

「post_tweet_with_image.py」という名前でファイルを作成し、以下のようなコードを書きます。

post_tweet_with_image.py

# coding=utf-8
import tweepy

# 以下4つ「xxxxx」を、先ほど控えた値で書き換える。
CONSUMER_KEY = 'xxxxx'
CONSUMER_SECRET = 'xxxxx'
ACCESS_TOKEN = 'xxxxx'
ACCESS_TOKEN_SECRET = 'xxxxx'

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
API = tweepy.API(auth)

# ↓ツイートしたい文章
TWEET_TEXT = 'Pythonのチュートリアル中です...'
# ↓添付したい画像のファイル名
FILE_NAME = 'question.png'


def post_tweet_with_image(api, text, filename):
    status = api.update_with_media(filename=filename, status=text)
    print('「{}」というファイル名の画像つきで「{}」とツイートをしました!'.format(filename, status.text))


post_tweet_with_image(API, TWEET_TEXT, FILE_NAME)
下の画像のように、適当に画像ファイルを用意します。
(下の画像を「question.png」という名前のファイルで保存していたとします。)

画像19

先ほど作成した「post_tweet_with_image.py」と同じディレクトリ(ファイル階層)に「question.png」をおいてください。

画像20


上記の状態にできたら、「post_tweet_with_image.py」を実行してみましょう。画像付きツイートができるはずです。

「$ post_tweet_with_image.py」を実行
$ python post_tweet_with_image.py 

「question.png」というファイル名の画像つきで「Pythonのチュートリアル中です... https://t.co/ZTafEcvyxA」とツイートをしました!


Twitterを確認してみると、実際にツイートできていることが確認できます。

画像21



Twitter APIで特定のツイートに返信をする

次は、特定のツイートに対して返信をしてみましょう。上でツイートした画像付きツイートに返信してみます。

post_reply.py

# coding=utf-8
import tweepy

# 以下4つ「xxxxx」を、先ほど控えた値で書き換える。
CONSUMER_KEY = 'xxxxx'
CONSUMER_SECRET = 'xxxxx'
ACCESS_TOKEN = 'xxxxx'
ACCESS_TOKEN_SECRET = 'xxxxx'

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
API = tweepy.API(auth)

# ↓リプライしたい文章
REPLY_TEXT = 'Pythonおもしろいよな!'
# ↓リプライしたい対象のツイートのツイートID
REPLY_ID = 1156873103839862784


def post_reply(api, text, reply_id):
    status = api.update_status(status=text, in_reply_to_status_id=reply_id)
    print('「{}」とリプライをしました!'.format(status.text))


post_reply(API, REPLY_TEXT, REPLY_ID)

「REPLY_ID = 1156873103839862784」の箇所は、返信をしたい対象のツイートのIDで書き換えてください。

画像22

ツイート詳細画面のURLに記載されている数字の羅列が、ツイートIDです。

「$ post_reply.py」を実行してみる。
 $ python post_reply.py 

「Pythonおもしろいよな!」とリプライをしました!

「post_reply.py」を実行してみると、返信ができていることがわかりますね。

画像23


Twitter APIで特定のツイートを削除する

最初にツイートした以下のツイートを削除してみます。

画像24

「delete_tweet.py」というファイルを作成し、「TWEET_ID = 1156774356162248704」という箇所を削除したいツイートのIDで書き換え、実行します。

delete_tweet.py

# coding=utf-8
import tweepy

# 以下4つ「xxxxx」を、先ほど控えた値で書き換える。
CONSUMER_KEY = 'xxxxx'
CONSUMER_SECRET = 'xxxxx'
ACCESS_TOKEN = 'xxxxx'
ACCESS_TOKEN_SECRET = 'xxxxx'

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
API = tweepy.API(auth)

# ↓削除したい対象のツイートのツイートID
TWEET_ID = 1156774356162248704


def destroy_tweet(api, tweet_id):
    status = api.destroy_status(tweet_id)
    print('「{}」というツイートを削除しました!'.format(status.text))


destroy_tweet(API, TWEET_ID)


「$ delete_tweet.py」を実行
$ python delete_tweet.py 

「Pythonのチュートリアル中...」というツイートを削除しました!

Twitter上で確認してみると、ツイートが削除されて画面にアクセスできないようになっていることがわかります。

画像25




Twitter APIでいいね/いいねを消す

次は、特定のツイートへの「いいね」と「いいね」を取り消す処理を書いていきましょう。


特定のツイートへのいいねをする

下のツイートに対して「いいね」をしてみます。

画像26


「TWEET_ID」の箇所をいいねしたい対象のツイートのツイートIDに書き換えて、「favorite_tweet.py」というファイルを作成します。

favorite_tweet.py

# coding=utf-8
import tweepy

# 以下4つ「xxxxx」を、先ほど控えた値で書き換える。
CONSUMER_KEY = 'xxxxx'
CONSUMER_SECRET = 'xxxxx'
ACCESS_TOKEN = 'xxxxx'
ACCESS_TOKEN_SECRET = 'xxxxx'

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
API = tweepy.API(auth)

# ↓いいねしたい対象のツイートのツイートID
TWEET_ID = 1156873103839862784


def favorite_tweet(api, tweet_id):
    status = api.create_favorite(tweet_id)
    print('「{}」というツイートをいいねしました!'.format(status.text))


favorite_tweet(API, TWEET_ID)
「$ favorite_tweet.py」を実行します。
$ python favorite_tweet.py 

「Pythonのチュートリアル中です... https://t.co/ZTafEcvyxA」というツイートをいいねしました!


画像27

Twitterで確認すると、♡が赤くなっていて、「いいね」ができていることがわかりますね。


特定のツイートへのいいねを消す

上で実施した「いいね」を取り消してみましょう。以下のようなコードを書いた「delete_favorite_tweet.py」というファイルを作成します。

delete_favorite_tweet.py

ここから先は

30,564字 / 30画像
この記事のみ ¥ 980

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