Python初心者がTwitterAPIを使ってつぶやいてみた。（2021年7月の情報）

#著者の実行環境
OSはWindows10、Pythonのバージョンは3.7.8となっています。VS CodeでPythonを実行しています。
初心者ではありますが、環境構築は済んでいるのでスキップさせていただきます。

#はじめに
著者は初心者なので、なるべく正確な情報を記述するように心がけていますが、情報に誤りがあるかもしれません。あらかじめご了承ください。

#コードを書く前に準備！
###TwitterAPIへのアクセス権限の取得
アクセス権限を得るために、自分のTwitterアカウントをデベロッパーアカウントに昇格させましょう。
（Twitterアカウントにメールアドレスと電話番号を紐づける必要があります）
以下のサイトにアクセスします。
https://developer.twitter.com/en/apply-for-access
![スクリーンショット (69).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/2e525357-0bcd-11fe-999f-61445a0f17b5.png)
"Apply for a developer account"をクリックします。

![スクリーンショット (72).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/b97d87be-825c-c5d1-70ce-649280f8c95b.png)
はじめに、"Professional"（プロ） "Hobbyist"（趣味でやる人） "Academic"（勉強のために使う人）の３択があるので、自分に合うものを選んでください。
次に、"Making a bot"（ボットを作る） "Building tools for Twitter users"（ツイッターユーザーのためのツールを作る） "Exploring the API"（APIを探求する）の3択があるので、自分の目的に近いものを選んでください。

![スクリーンショット (73).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/917aecb5-4a33-1e88-3137-b14b10a0d38f.png)
上から順に説明します。
"What would you like us to call you?" →　呼び名を入力してください。
"What country do you live in?" →　居住国を入力してください。
"What's your current coding skill level?" →　現段階のプログラミングレベルを入力してください。
未経験なら"No experience"　ちょっとなら"Some experience"　ゴリゴリあるなら"Highly experienced" を選びましょう。

![スクリーンショット (74).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/05789d57-eada-ce7d-f25f-c00a3fe6d3db.png)
ここからが一番大変なのですが、がんばりましょう。
"How will use the Twitter API or Twitter Data?"（TwitterのAPIとデータをどのように使いますか？）
という質問に対する返答を200字以上の英語で回答しましょう。
I would like to ~ を使って大雑把なAPIの利用目的を記述し、For exampleを使って具体的な利用方法を記述すると、頑張れば200字は埋められます。（2行くらいで200字になります）

![スクリーンショット (75).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/3a6f8468-89d7-afc4-768c-e0837d15f324.png)
Twitterのデータも分析してみたいという人はYesにし、どのようにTwitterのデータを活用するか100字以上で記述しましょう。

![スクリーンショット (76).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/a05da5b6-54b7-7828-1abb-c5d78fd46b9a.png)
ツイート機能を利用したいので、Yesにします。どのようにツイート、リツイート、ライク、フォロー、DM機能を利用するか、100字以上の英語で書きましょう。

![スクリーンショット (77).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/7d3e9d04-95f2-dabb-33ae-d2ebbd1a8e6c.png)
集計したデータをTwitter以外の場で開示したい場合はYesにしましょう。どこで、どのように開示するか記述しましょう。

![スクリーンショット (78).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/c661f412-bcaf-8531-71b5-6f2419c010fc.png)
TwitterAPIを用いて作ったプログラムを政府機関（教育機関は除く）も利用可能にする場合、Yesにします。（ほとんどの人の場合該当しません）
（スクショの画像ではYesになっていますが、スクショ後Noにして申請しました）

![スクリーンショット (80).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/dd3dac92-cda9-1ce5-1d10-74eb7cee4e26.png)
規約書を読み、チェックボックスをクリックして同意します。

![スクリーンショット (81).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/8fc05eaa-e787-61c6-03a7-200762644555.png)
このような画面が表示され、認証メールが送られますので、メールボックスをチェックしましょう。

![スクリーンショット (82).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/ae209079-f6e5-dd57-3730-dea67b5afe68.png)
このようなメールが届いているはずです。Confirm your emailをクリックしましょう。これで
開発者アカウントに昇格完了です！以下のサイトにアクセスしましょう。
https://developer.twitter.com/en/portal/dashboard

![スクリーンショット (83).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/2723b38f-a0e9-382e-e250-84cfcc4a746d.png)
Create Projectをクリックします。

![スクリーンショット (84).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/fb177b95-5482-99fe-6ed9-431518a7b1bb.png)
プロジェクト名を決めて入力しましょう。（何でもいい）

![スクリーンショット (86).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/b47c91bd-92b6-ea04-eee3-73b9cf5b8306.png)
使う目的を選択します。今回は"Exporing the API"でいきます。

![スクリーンショット (87).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/9b2c4195-23c0-fe5c-e2f4-601772c7bbb0.png)
プロジェクトの概要を記述しましょう。著者は"Tweet something using Twitter API."にしました。

![スクリーンショット (88).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/141296aa-3a93-f68e-5caa-887fe29b30f8.png)
アプリ名を決めて入力しましょう。

![スクリーンショット (89).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/3e304ee3-f41b-1e80-b04d-968644ac5637.png)
API Key、API Secret Key、Bearer Tokenを取得できました。これらの情報を見れるのは最初で最後なので、Windowsのメモ帳にメモするのをお勧めします。（情報をなくしたとしても、再生成はできる）（メモ内容は見られないように管理する）

![スクリーンショット (90).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/a86c94b1-7538-3901-d793-e4f1507628ad.png)
アプリの権限を変更してツイッターのデータに書き込んだり、DMできるようにしましょう。"Edit"をクリックします。

![スクリーンショット (91).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/be4d34ac-f3f1-8335-2290-2c2033405e45.png)
Read＋Write+Direct Messagesを選択して、Saveをクリックします。

![スクリーンショット (92).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/3ca8e8d6-8784-4959-a852-0087acbaff98.png)
Keys and tokensの項目にジャンプしましょう。

![スクリーンショット (93).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/3e93e94b-51db-b1d6-6e7b-02bd790d3de1.png)
Access Token and SecretをGenerateしましょう。

![スクリーンショット (94).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/33cfbfd6-0519-90df-24fe-7a669465c176.png)
これらもメモ帳にコピペしておきます。
これでTwitter側での操作は完了です。

###tweepyライブラリのインストール
![スクリーンショット (95).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/20dae6b4-014b-828b-1b38-ac594b6b8748.png)
著者はコマンドプロントにてインストールをしました。(Anacondaを利用している場合のインストール方法はわからないのでご了承ください。）

#コードを書く！
```python
import tweepy

API_KEY = "******************"
API_SECRET = "*****************"
ACCESS_TOKEN = "******************"
ACCESS_TOKEN_SECRET = "*****************"

auth = tweepy.OAuthHandler(API_KEY, API_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

api = tweepy.API(auth)

api.update_status("テスト")
```
API Keyなどは先ほどメモしたものを入力すればオッケーです。
api.update_statusの引数がツイート内容となっています。

![image_72192707.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1819316/628e2cd9-a17c-b00a-5521-eaca04bca274.jpeg)
無事投稿できました！

```python
tweets = api.search(q='"#python"', lang='ja', result_type='recent',count=5)

for tweet in tweets:
    print (tweet)
```
上のコードを実行するとツイート情報を取得できます。
q=検索キーワード、lang=言語、result_type=取得するツイートの種類、count=ツイートの取得数となっています。
result_typeにはpopular（人気のツイート）、recent（最新のツイート）、mixed（すべてのツイート）の3種類があるみたいです。

#参考サイト
https://dividable.net/programming/python/python-twitter-api-get-followers-count
https://qiita.com/soma_sekimoto/items/6b9f32552f4ab50be452
https://syncer.jp/Web/API/Twitter/REST_API/GET/search/tweets/