Raspberry PiからTwitterにツイートしてみる(TwitterAPI申請〜ツイート)
- 2020.08.07
- IoT

前回の続きからです。
Raspberry PiからTwitterにツイートしてみる(TwitterAPI申請〜Sambaサーバーの構築)
TwitterAPIを取得し、実際にツイートしてみます。
TwitterAPIの申請方法は以下を参考にする。
Twitter APIを触ってみたくなったら最初に見る記事
基本的に英語での申請となるためGoogle翻訳を利用しながら進めていく。
また、Twitterとの連携で必要となるアクセストークンの確認方法は以下のツールを使うと楽なので共有。
Twitter API のアクセストークンを確認するやつ
以上でTwitterから情報を得るために必要なコンシューマーキー、アクセストークンなどが準備できたので実装に取り掛かる。
コードを先に載せてしまいます。
指定フォルダにある画像を4枚までまとめてツイートし、終わったらそれらの画像は消す様な流れです。(コード自体はかなりシンプルなので説明は省く)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
#!/usr/bin/env python import subprocess import datetime import tweepy import os import glob CONSUMER_KEY = '' CONSUMER_SECRET = '' # アクセストークン ACCESS_KEY = '' ACCESS_SECRET = '' auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) auth.set_access_token(ACCESS_KEY, ACCESS_SECRET) api = tweepy.API(auth) #ツイートしたい画像を4枚まで保持する images = [] #画像のIDを保持 media_ids = [] #共有フォルダ内にあるjpgを読み込む count = 0 for file in glob.glob(ファイルの場所 + '/*.jpg'): base, ext = os.path.splitext(file) #画像は4枚まで if count == 4: break if ext == ".jpg": print(file) images.append(file) img = api.media_upload(images[count]) media_ids.append(img.media_id_string) count += 1 #ツイートする内容 message = 'TwitterAPIテスト\r\n画像いれてみた\r\n\r\n' + '#raspberrypi' #写真をtwitterへ投稿 api.update_status(status=message, media_ids=media_ids) # ツイートした画像は削除する for img in images: cmd = 'rm ' + img subprocess.run(cmd, shell=True) |
実行してみてもツイートする画像名が表示されるのみ。
でもツイートはちゃんとできてるみたいですね。(ツイート内容はちょっと変えてます)
ちなみに画像のサイズが1枚でも5MBを超えてしまった場合はエラーになる模様。
APIでは圧縮できないので自分でやる必要がありますね。
今回で画像へのアップロード及びそれらをツイートする仕組みができたものの、4枚まとめてアップロードするとかなり重く、ラズパイ側でコマンドをやフォルダを立ち上げていると接続が切れたりするためあんまりスムーズとは行かない…
また、Twitterを直接利用している際には勝手に画像の圧縮をしてくれてましたが、API経由だとそれがないのも不便。
写真を溜めといて指定時間になったらツイートする仕組みなどの方が負荷が掛からず良いかもしれないので、圧縮の件も含めてこれからまた改良を重ねていこうと思います。
-
前の記事
Raspberry PiからTwitterにツイートしてみる(Sambaサーバーの構築) 2020.07.30
-
次の記事
ラズパイケースの紹介(Argon ONE Raspberry Pi 4) 2020.08.15