☆☆ 新着記事 ☆☆
2019年5月28日火曜日
Python Google Translatorを使ってみた
1. pipでインストール
(venv) C:\Users\User名\Desktop\top>pip install googletrans
Collecting googletrans
2.使う
from googletrans import Translator
text='Hello, world!'
translator = Translator()
ja = Translator().translate(text, src='en', dest='ja')
>>> print(ja)
Translated(src=en, dest=ja, text=こんにちは世界!, pronunciation=None, extra_data="{'translat..
.")
>>> print(ja.text)
こんにちは世界!
--->
ja.textとしてTextデータだけを格納しないと、text/string 属性のデータベースには格納できない。
エラーになる。
(Memo: )
for i in tweets:
print(i.created_at)
print(i.id)
print(i.full_text)
ja_pre =strip_emoji(i.full_text)
ja_google_obj = Translator().translate(ja_pre , src='en', dest='ja')
print(ja_google_obj)
print("==================================")
#Output
==================================
2019-07-26 22:37:00
1154883345546928128
Wow! Big VICTORY on the Wall. The United States Supreme Court overturns lower court injunction, allows Southern Border W
all to proceed. Big WIN for Border Security and the Rule of Law!
Translated(src=en, dest=ja, text=うわー!壁に大きな勝利。米国最高裁判所は、下級裁判所の差し止め命令を覆し、Southern Bord
er Wallが続行することを許可します。国境警備と法の支配に大勝利!, pronunciation=None, extra_data="{'translat...")
==================================
2019-07-26 22:18:26
1154878670739300358
https://t.co/nr9bDv3Ktq
Translated(src=en, dest=ja, text=https://t.co/nr9bDv3Ktq, pronunciation=None, extra_data="{'translat...")
==================================
☆これで動くので忘れないようにメモ
import tweepy as tw
import pandas as pd
from credentials import *
import pytz
import datetime
from googletrans import Translator
import json
import pprint
def twitter_setup():
auth = tw.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tw.API(auth,wait_on_rate_limit=True)
return api
extractor = twitter_setup()
def index():
# Retrieve Tweets
tweets = extractor.user_timeline(screen_name="realDonaldTrump",
count=3,include_rts=True,tweet_mode="extended")
tweet = tweets[0]
b=tweet._json
c = b["full_text"]
print("C is \t")
print(c)
ja = Translator().translate(c, src='en', dest='ja')
print(ja)
tweet = tweets[1]
aa=tweet._json
bb =aa["full_text"]
print("bb is \t")
print(bb)
ja2 = Translator().translate(bb, src='en', dest='ja')
print(ja2)
i=0
for i in range(len(tweets)):
tweet = tweets[i]
aa=tweet._json
bb =aa["full_text"]
print("bb loop is \t")
print(bb)
ja2 = Translator().translate(bb, src='en', dest='ja')
print(ja2)
i += 1
#print(text_ja)
index()
◇Emojiとか入ってるとエラーになるのを取り除く。
https://gist.github.com/Alex-Just/e86110836f3f93fe7932290526529cd1
RE_EMOJI = re.compile('[\U00010000-\U0010ffff]', flags=re.UNICODE)
def strip_emoji(text):
return RE_EMOJI.sub(r'', text)
print(strip_emoji('🙄🤔'))
☆Twitterのテキストを翻訳する場合
上記のままだと、以下のエラーコード。
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
参考)
あまり見てないけど、丁寧そう。
https://www.codeproject.com/Tips/1236705/How-to-Use-Google-Translator-in-Python
☆ ある日突然、つかえないことに、、、、
今までつかえていたのに、
File "/home/tw_virtualenv/lib/python3.7/site-packages/googletrans/client.py", line 172, in translate
data = self._translate(text, dest, src)
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
などと、エラーが。。。
他のサーバーではできる。
なんと
Googletrans: Free and Unlimited Google translate API for Python
と書いているのに、Google自身がBanしてくることがあるらしい。
>>> from googletrans.gtoken import TokenAcquirer
>>> acquirer = TokenAcquirer()
>>> text = 'test'
>>> tk = acquirer.do(text)
>>> tk
'222835.391456'
というTokenを使って管理しているらしい。 このTokenを
googletrans stopped working with error 'NoneType' object has no attribute 'group'
https://stackoverflow.com/questions/52455774/googletrans-stopped-working-with-error-nonetype-object-has-no-attribute-group
で、リセットするようにするらしいが、どうもイタチごっこで、上手く行くときも、いかないときもあるよう
24時間、待つと良くなることもあるようなので待ってみる。
こんな時でも、別サーバーは動く。
>>> from googletrans import Translator
>>> text = "Hello World!"
>>> print(text)
Hello World!
>>> translator=Translator()
>>> ja=Translator().translate(text,src='en',dest='ja')
>>> print(ja)
Translated(src=en, dest=ja, text="こんにちは世界", pronunciation=None, extra_data="{'translat...")
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿