LoginSignup
1
1

More than 1 year has passed since last update.

[Python]ある人の英語ツイートを検知・自動翻訳してツイート

Last updated at Posted at 2021-08-09

目標

こちらが指定した人が英語でツイートをした時、すぐに本文をGoogle翻訳で日本語に翻訳して自分のアカウントでツイートする。

動機

あるスポーツの最新情報をTwitterで発信しているジャーナリストの方がいる。日本を含む世界中で注目度の高い方だが、ツイートは英語。日本人がもっとパッと読みやすい形でタイムラインに流れてくればいいのに、という思いから。

必要な準備

TwitterAPIの取得

Twitterにログインして以下のURLからAPIを取得する。必要なのは「APIキー」「APIシークレットキー」「アクセストークン」「アクセスシークレットトークン」の4つ。
https://developer.twitter.com/en/apps/

Google翻訳のライブラリのインストール

pipコマンドを以下のように使う。「pip install googletrans」だとバージョンが古く、翻訳の部分でエラーが起きるので注意。

pip install googletrans==3.1.0a0

tweepy

無ければtweepyもインストールしておく。

インポート

まずTwitterに関するライブラリ
import tweepy

次にAPI認証の際に使うライブラリ
from requests_oauthlib import OAuth1Session

時間に関するもの
import time

最後に翻訳に使うもの
from googletrans import Translator

APIの認証

取得したキーとトークンを入れる
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)

ツイートに必要な関数の定義

ネット上の他の方のものを参考にしました。「translated」が翻訳した文章の入ったリストで、頭に*をつけることでカッコなど不要なものが外れる。

def main():
    makeAPI().update_status(*translated)

def makeAPI():
    return tweepy.API(auth)

検知の仕組みと事前準備

検知には各ツイートに振られるIDを使う。つまり、1番上のツイートのIDが変わったら「更新された」と考える仕組み。そのためにまず準備として現在の1番上のツイートのIDを知っておく必要がある。

最新のツイートのIDを持ってくる
state = api.user_timeline(screen_name="相手のツイッターのID(@は不要)")
id_form = state[0].id

実行

while True:
  state = api.user_timeline(screen_name="相手のツイッターのID(@は不要)")
  if state:
    id_now = state[0].id
    if id_now != id_form: 
      new_text = state[0].text 
      translator = Translator()
      translated = [translator.translate(new_text ,dest="ja").text] #翻訳
      if __name__ == "__main__":
        main() #ツイートする
        id_form = id_now #新しいidを設定
  else:
    continue
  time.sleep(60)

「while True」 で無限ループ
「if state」でstateに中身があるか確認。たまに空のリストになっている(バグ?)
「dest="ja"」は翻訳先が日本語になるような設定

更新時間は60秒で設定したが、1秒でも回る。

完成

目的の人が半日経ってもツイートしないので、しびれを切らして別の公式アカウントでテスト。うまくいったものの日本語訳が微妙なため、見やすさの観点では当初の理想は叶わず。
image.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1