ニュース速報を電光掲示板でまとめて表示 ラズパイで電光掲示板 part5

2017年10月4日

60爺は、前回の記事で、天気予報を電光掲示板に流すことに成功しました。

次は、NHKニュース速報を、電光掲示板に表示します。

手順は上記の通りです。

スポンサーリンク

NHKニュース速報をテキスト出力

NHKニュースに関しては、師匠50オヤジが、毎日、家でしゃべらせてると言うことを聞いていましたので、そのプログラムをもらいました。

もらったプログラムに手を入れて、ニュース速報を一塊にまとめたテキストを吐き出すようにしました。

それが、こちらです。

<?php
header('Content-Type: text/html; charset=UTF-8');
$url = 'https://www3.nhk.or.jp/rss/news/cat0.xml';
$xml = @file_get_contents($url);
$json = simplexml_load_string($xml);
$txt = '';
if($json == '') {
$txt = '残念ですがニュースが取得出来ませんでした。';
exec('/home/pi/python_pg/open_jtalk/jtalk.sh '.$txt);
// exec('/usr/local/bin/jsay '.$txt);
}else{
if(isset($json->channel->lastBuildDate)){
$tmp = $json->channel->lastBuildDate;
$date = explode(' ',$tmp);
$time = explode(':',$date[4]);
$time_str = $date[3].'年'.month_name_conv($date[2]).$date[1].'日'.date_name_conv($date[0]).'、'.$time[0].'時'.$time[1].'分時点の、';
$txt .= $time_str;
}
if(isset($json->channel->description)){
$txt .= $json->channel->description.'をお伝えします。';
}
$i = 0;
while (isset($json->channel->item[$i])) {
if($i == 0) {
$txt .= 'はじめに、';
}else{
$txt .= '次は、';
}
if(isset($json->channel->item[$i]->title)) {
$txt .= $json->channel->item[$i]->title.'についてのニュ ースです。';
}
if(isset($json->channel->item[$i]->description)) {
$txt .= $json->channel->item[$i]->description;
}
$i++;
}
}
$txt .= '以上、'.$time_str.$json->channel->description.'をお伝えいたしました。';
echo $txt;
function date_name_conv($date_name) {
switch (trim($date_name)) {
case 'Mon,':
$date_name = '月曜日';
break;
case 'Tue,':
$date_name = '火曜日';
break;
case 'Wed.':
$date_name = '水曜日';
break;
case 'Thu,':
$date_name = '木曜日';
break;
case 'Fri,':
$date_name = '金曜日';
break;
case 'Sat,':
$date_name = '土曜日';
break;
case 'Sun,':
$date_name = '日曜日';
break;
default:
$date_name = '';
break;
}
return $date_name;
}
function month_name_conv($month_name) {
switch ($month_name) {
case 'Jan':
$month_name = '1月';
break;
case 'Feb':
$month_name = '2月';
break;
case 'Mar':
$month_name = '3月';
break;
case 'Apr':
$month_name = '4月';
break;
case 'May':
$month_name = '5月';
break;
case 'Jun':
$month_name = '6月';
break;
case 'Jul':
$month_name = '7月';
break;
case 'Aug':
$month_name = '8月';
break;
case 'Sep':
$month_name = '9月';
break;
case 'Oct':
$month_name = '10月';
break;
case 'Nov':
$month_name = '11月';
break;
case 'Dec':
$month_name = '12月';
break;
default:
$month_name = '';
break;
}
return $month_name;
}
?>

お約束のエラーの対処

出来上がったテキストをコンバートして、jpgファイルを作成すれば一丁上がりだった・・・んですけど。

pi@raspberrypi:~ $ convert -background white -fill blue -font /usr/share/fonts/truetype/fonts-japanese-gothic.ttf -pointsize 16 label:@/home/pi/2news.txt news.jpg

下記のエラーが出てうまくいかない。

convert: no encode delegate for this image format `LABEL' @ error/constitute.c/WriteImage/1167. 

テキストファイルが長すぎてダメなのかなんて考えて、短くしても同様のエラーが出ます。

きちんと、エラーメッセージの内容を読みましょう!

原因究明

このエラーメッセージは、イメージ形式にエンコードできないと言ってますので、テキストファイルが適当でないと思われます。

たしか、お天気のイメージを作る際、UTF-8で無いとダメと書いてあったような。

そこで、ググルとこんな記事がありました。

PHPでの文字化けを今のところ100%回避している対処法

この中に、「header関数で文字コードを指定する」というのがあって、次の行を<?PHPの直下に入れれば良いようです。

header('Content-Type: text/html; charset=UTF-8'); 

ニュース速報を電光掲示板で流す

テキストファイル作成⇒コンバート

それでは、上記の対処を施して早速やり直してみましょう。上記の行をプログラムにコピーして更新し、再実行してテキストファイルを作成します。

pi@raspberrypi:~ $ php test_nhk_news.php > 2news.txt
pi@raspberrypi:~ $ cat 2news.txt
2017年9月05日火曜日、21時02分時点の、日本放送協会 NHKニュースをお伝えします。はじめに、JAL機緊急着陸 エンジン内部の不具合かについてのニュースです。5日午前 、羽田発ニューヨーク行きの日本航空機が羽田空港に緊急着陸したトラブルで、会社側が・・・・・ 

そして、このテキストファイルをコンバートします。

pi@raspberrypi:~ $ convert -background white -fill blue -font /usr/share/fonts/truetype/fonts-japanese-gothic.ttf -pointsize 16 label:@/home/pi/2news.txt 2news.jpg
pi@raspberrypi:~ $ 

おー、先程のエラーは出ませんね。無事に、jpgファイルを作成できました。

ニュース速報を電光掲示板へ表示

この jpg ファイルを電光掲示板に流してみると、やったー、できました。

以下の動画のように、見事にニュース速報が電光掲示板に流れました。

pi@raspberrypi:~ $ sudo python3 /home/pi/rpi-rgb-led-matrix/python/samples/image-scroller.py --led-no-hardware-pulse yes -c 2 -r 16 -b 50 -i /home/pi/2news.jpg
Press CTRL-C to stop sample 

ラズパイで電光掲示板の記事は、part11まであります。是非、続けてごらんください。

スポンサーリンク

最後に

ラズパイで電光掲示板の記事もpart5となりました。

天気予報をやった後、さらに実用化を兼ねて、今回はニュースを電光掲示板に流すことにしました。

イントロで示した手順に従い、テキストをjpg化して電光掲示板に流して完成のはずが、お約束のエラーが発生して、何度か行きつ戻りつしました。

削rでも、最後は何とかなりましたよ~!

※気づけば電光掲示板の記事も増えてきました

スポンサーリンク
この記事を書いた人

60爺

60路を越え、RaspberryPi と出会い、その関係でブログ開設(2017/2~)となりました。始めてみると、コツコツやるのが性に合ってしまい、漢字の記事から家の補修・将棋・windows10関係・別名・言い方などジャンルを拡大して今に至ってます。まだまだ、元気なので新たな話題を見つけて皆様に提供できればと思っています。「プロフィールはこちら

電光掲示板

Posted by 60爺