RSS があれば何でもできる!
MeePet を Android 端末として使う の記事で、 Android の Slideshow アプリを使って MeePet をサイネージ化した。
RSS ファイルをティッカーとして流すことができるので、予定も RSS ファイルにしてしまえばティッカーとして流せる!ということに気づき、やってみることにした。
Android の Web サーバーへファイルをアップロードする
PHP を雑に書いて Web 情報取得(株価指数を大きな文字で表示) の記事で紹介した Termux を MeePet に入れ、 MeePet 内で PHP 環境を完結できるようにした。
基本的には上記記事の通りにやれば構築できる。ただし、 8080 ポートは Slideshow の設定用に使われるので、 Apache Web サーバーのポートを 8008 に移動させた。
次に予定のファイルであるが、Android にファイルを転送するのは面倒なので、 Web サーバーの機能を使うことにする。
予め、奇数行に日時、偶数行に内容を記したファイルを用意しておく(文字コードは UTF-8 で)。
13(金)
TUT-Code記事のアップ
14(土)
PHPスクレイピング記事のアップ
15(日)
MeePetでQPython記事のアップ
MeePet へのファイルアップロードはこちらのサイトをそのまま使った。
スクリプトで RSS ファイルに変換
気象庁予報の JSON ファイルを PHP で RSS 形式に変換してみる で行った方法と同様に行える。
Web サーバーにアップロードしたファイルを、 PHP ファイルを実行することで RSS に変換する。
<?php
$lines = file('../data/schedule.txt');
$fp = fopen("../rss/schedule.xml", "w");
fwrite($fp, "\xEF\xBB\xBF");
fwrite($fp, '<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>予定</title>
<link>http://localhost/</link>
<description>予定</description>
<lastBuildDate>'.gmdate("D, d M Y H:i:s T").'</lastBuildDate>
');
foreach ($lines as $line_num => $line) {
if ($line_num % 2 == 0) {
fwrite($fp, '<item><title>' . $line . '</title>');
} else {
fwrite($fp, '<description>' . $line . '</description></item>');
}
}
fwrite($fp, '</channel></rss>');
fclose($fp);
echo 'Schedule RSS file generated.';
?>
Slideshow で RSS ファイルを指定する
あとは、出来上がった RSS ファイルを Slideshow に設定するだけである。
天気 RSS に引き続いて表示させたい。
2つ以上の RSS はカンマを挟んで列挙すれば続けてティッカー表示させることができる。
が、ここでカンマの後ろに余分なスペースを空けてしまい、2本目がエラーで読み込まれない事態に。
スペースを入れずに列挙する。