2018-02-01 15:23 | カテゴリ:コンピュータ

天気予報が正常に稼働する様になりました。
調子に乗って、「ニュース」もWEBから取り込めないかと検索していたら、ありました!


「ゆとり」さんのこちらのサイトです
https://iamiotjoshi.moe/?p=460#Google_APIより引用させていただきました



こちらのサイトでは、ニュースを読み込んで、それをしゃべらせる所まで実現されています。
私もこちらを見習って早速テストしてみることにしました。
果たしてどうなるのでしょうか?



続きは、、、、



WEBから天気予報を取り込んで表示、発声するところまでは、前回に見様見真似でできる所まで進めました。
RasPiは、そういう目的の為に多くの関数(?)やらメソッドが備わっていて、素人にも便利に利用できそうです。

今回はニュースです。
以前、ブロ友の6jiroさんが、小さなLCDディスプレイにニュースを表示させておられたのを拝見し、是非ともと、思っていました。
6jiroさんは、確かArdiunoを利用されていたと記憶していますが、私は持っていませんので、Raspiでトライしてみたいと思います。

幸いにも、先の「ゆとり」さんのブログに、説明されていましたので、その通りに進めてみます。

(1)まずは、仕組みです。


「ゆとり」さんのブログによると、「Google ニュース API」と言うものを利用するらしいです。

所定の書式にのっとって、WEBをアクセスすると、指定されたパラメータによって、各種のニュースのトピックスが返されるようです。

例えば、


http://news.google.com/news?hl=ja&ned=us&ie=UTF-8&oe=UTF-8&output=rss&topic=po

と、すると、最後のtopic=poに指定された、「話題のニュース」に関する文字情報が返されます。

他には、

ir ピックアップ
y 社会
w 国際
b ビジネス
p 政治
e エンタメ
s スポーツ
t テクノロジー
po 話題のニュース

のパラメータがあります。

また、指定されたキーワードに関してのニュースを得たいのなら、

http://news.google.com/news?hl=ja&ned=us&ie=UTF-8&oe=UTF-8&output=rss&topic=t&q=iot

最後のtopic=t&q=iotで、t:テクノロジーに関して、iot:「iot」の文字を含むニュースをピックアップすると言う事だそうです。


(2)自分で組み込む

次に、先日の「天気予報表示発声」プログラムの中に、この部分を組み込んでみました。


まずは、定義部分です。

(News-0102)
News-0102.jpg


処理部分です。


(News-0103)
News-0103.jpg


(News-0104)
News-0104.jpg

話題のニュースというカテゴリーで絞り込んで取得し、まずは、PRINT文でコンソールにそのまま表示させました。
ちゃんと話題のニュースが表示されたようです。

プログラム上では、それをそのまま自作ドットマトリクスLEDに送って、美咲フォントで表示させるように組んだのですが、途中でエラーになって終了しています。

(News-0105)
News-0105.jpg


なかなか一筋縄ではいかないようです。

エラーの内容を良く見てみると、

ord(msg[i])は一文字分の文字コードを出力する指定ですが、これが一文字ではなく29個のデータが見つかった、と指摘。
ひょっとすると、msg[0]は、一文字ではなく29文字が格納されているのでは?と考え、msg[0][0]を二次元の指定にしてみました。

すると、やはり、最初の一文字がちゃんと表示されました。

(News-0106)
News-0106.jpg


「金融庁」の「金」の文字がちゃんととらえられています。
やれやれ、こういう方法で、行けばよさそうです。
つまり、トピック毎に文字配列にちゃんと分けて入れられていたわけです。
そういえば、プログラム中に、文字列にappendしていましたが、この度に文字配列に自動的に格納されていたようです。(便利ですね)

試に、項目数をカウントしてみました。

(News-0107)
News-0107.jpg


プログラム中に、ニュースの項目数をカウントするmsg_lengと最初の項目の文字数をカウントするmsg_leng2を定義。(番号<1>)


項目の数が、10、最初の項目の文字数か、37と出ました。
(番号<2>)

そして、実際に表示されていたニュースの項目数と文字数を見ると、ちゃんと正しくなっていました。
(番号<3>)

(News-0108)
News-0108.jpg

ここまでわかれば、何とかなりそうです。

次回に続く、、、、
関連記事

管理者のみに表示する