英語のニュースを日本語に翻訳してストリーミングでAlexaに喋らす試み　その2

[前回](http://qiita.com/sitopp/items/a2c692a7b6c1eba99a92)の続きです。



## 全然関係ないですが、欧州サッカーファンの皆様、リーグ戦開幕おめでとうございます！


# 目次：

1. Google Cloud Platform準備
2. 英語のニュースRSSを取得するコード書く　←今日はここから
3. Google Translate APIで英語のテキストを日本語に翻訳
4. Amazon Polly に日本語テキストを渡して読み上げさせ、音声ファイルを生成し、S3にアップロード
5. 上記をストリーミングするAlexa Skillを作成

# 2.英語のニュースRSSを取得するコード書く

特に新しいものは用意しません。[アーセナル](https://www.arsenal.com/)の公式ニュースのフィードを取得しする[既存スクリプト](http://qiita.com/sitopp/items/048f84b84ada2b297174)を使います。
ソースは先日バグを直して故障箇所を直して[Github](https://github.com/sitopp/Alexa_FlashBriefing_ArsenalFeed)にコミットしたものを使います。

# Alexa と名前が似ている某クラブのエースについて

本当にどうでもいいですが、「Alexa」と「Alexis」は似ていますね。アレクシスサンチェス。アーセナルに残って欲しいところですが、ラカゼットが馴染みつつあるのと、ジルーが意地を見せて、スーパーサブで良い所で試合を決める、とゆー働きをしているので、もしかしたら出場機会はグッと減るかもしれません。
とはいえアーセナルには魔の１１月がありますから、（CLがなくなってもヨーロッパリーグが有るからむしろ移動がとんでもない僻地）ターンオーバーは必須なんですが。

移籍するんですかね。シティですかね。ネイマールの穴が空いたバルサですかね。どっちもスペイン語は通じる人多そうですね。
![スクリーンショット 2017-07-28 23.25.55.png](https://qiita-image-store.s3.amazonaws.com/0/173392/b06cdb88-9203-8395-b0da-aad60999c905.png)
つうかあんまりサッカーの事ばかりかくとQiitaの運営様に**また**消されそうなのでここでやめておきます。


# 3. Google Translate APIで英語のテキストを日本語に翻訳



前回、GCPのダッシュボードでテケトーなプロジェクト「Translateほにゃらら」を作り、
そのプロジェクトに於いて「Translate API」を有効にしました。

再びダッシュボードにログインし、使いたいプロジェクトを選択した状態で、API検索窓でTranslation APIを探します。

GCPダッシュボード
https://console.cloud.google.com/
![gcp_console.png](https://qiita-image-store.s3.amazonaws.com/0/173392/d813e7e2-2bc7-1808-ffff-fd4682959a7c.png)
↓
ドキュメント
https://cloud.google.com/translate/docs/getting-started?csw=1
軽く目を通します。「注: Google Compute Engine VM を使用している場合は、すでにそのイメージに Cloud SDK がプリインストールされています。」とあります。
このAlexa Skillの本体はAWSのEC2に置こうとしてましたが、GCPでインスタンスを立ててTlanslation APIを呼び出すのが良さそう。
アマゾンなのにグーグル。。。
**おらワクワクしてきたぞ！**

↓
![gcp_tlanslaton_console.png](https://qiita-image-store.s3.amazonaws.com/0/173392/112c1d32-49ea-6ebf-e28f-7bf345faca6a.png)
「API Explorerで試す」をクリックすると、
Google Cloud Translation API v2に含まれる５つのAPIを、フォーム形式で動作確認できます。

|APIの名前|説明|
|:---|:---|:---|
|language.detections.detect|Detects the language of text within a request.|
|language.detections.list|Detects the language of text within a request.|
|language.languages.list|Returns a list of supported languages for translation.|
|language.translations.list|Translates input text, returning translated text.|
|language.translations.translate|Translates input text, returning translated text.|

このうち、「language.translations.list」を使ってみます。

「q」が翻訳したい文字列なので、ここに「壊れかけのレディオ」と入力し、
「Target」に英語を示すであろう「en」を入力します。

![スクリーンショット 2017-08-14 2.06.13.png](https://qiita-image-store.s3.amazonaws.com/0/173392/ffbe4460-768c-ce72-244f-cfe9a5cf418f.png)
executeを力一杯押します。すると、
「q」をurlエンコードしてtranslate/v2 APIに渡します。

↓
![スクリーンショット 2017-08-14 2.06.28.png](https://qiita-image-store.s3.amazonaws.com/0/173392/26402f6f-86f4-1c29-9e2a-0115cbd28bea.png)
すると翻訳した結果を「Broken Radio」と返却してきます。
レディオがちゃんとradioになってるのが嬉しいですね。
あと入力時には指定しなかった、「detectedSourceLanguage」が「ja」と推察されて書かれています。

[説明はあるにはある](https://cloud.google.com/translate/docs/getting-started?csw=1
)んですが、上のどのAPIを使えば良いかが全く書いてなくて、逆に以下の基本的なことが書いてあります。
・GETリクエストの長さは、パラメータ含めて2000文字未満
・URLエンコードしたものを指す。そうじゃないと空白で切れちゃうからね。

へー。
なお、「language.translations.list」以外の４つは、使い方がさっぱりわからないのでスルーします。

そろそろ寝ないといけないので、今日はこれくらいにしておきます。

次のTodoは、
・GCPにインスタンスを立てる
・アーセナルの公式ニュースのRSSを取ってくるphpのスクリプトを改造して、英語から日本語へ、Translation APIを使って自動翻訳する
これでもまだ「3」です。いつになったら「4」にたどり着けるのか。。笑