デジタルフォトフレームを簡易モニターとして使う(日めくりカレンダー)


今回は、WEBページからイメージファイルを抜き出して表示する方法を紹介します。
日めくりカレンダーというのがありますが、ずぼらな私は新年しばらくは日めくりをするのですが、
そのうちメンドーになっていつの間にか気がついたら、1ヶ月前のカレンダーのまま...ということが良くあります。
そこで、デジタル日めくりカレンダーを紹介します。

このページで「猫友日めくりカレンダー」が公開されています ので、このWEBページからイメージファイルを抜き出して
フォトフレームに表示してみます。

【STEP1】pythonスクリプト

このページのソースを見ると「今日の猫ちゃん」の画像ファイ ルは

num=myDate.getDate();
document.write("<img src='http://www.neko-tomo.net/main-ph/main_" + num + ".jpg' alt='きょうの猫ちゃん' width=392 />");

で表示していることが分かります。
そこで、「http://www.neko-tomo.net/main-ph/main_XX.jpg」をダウンロードするスクリプトを作りま した。
#! /usr/bin/env python
# -*- coding:utf-8 -*-
import sys
import urllib2
import datetime

if __name__ == '__main__':
    argv = sys.argv  # コマンドライン引数を格納したリストの取得
    argc = len(argv) # 引数の個数

    if argc == 1:
      print "usage:"+argv[0]+" FilePath"
      sys.exit()

    NowDate = datetime.datetime.now()
#    print NowDate.day
    url = 'http://www.neko-tomo.net/main-ph/main_{0:d}.jpg'.format(NowDate.day)
#    print 'url='+url
    opener = urllib2.build_opener()
    img = opener.open( url )

    fname = argv[1]
#    print 'fname='+fname
    localfile = open( fname, 'wb')
    localfile.write(img.read())
    img.close()
    localfile.close()


【STEP2】pythonスクリプトの実行

上記のスクリプトを「SaveImages.py」の名前で保存してください。
起動時の引数にはイメージファイル保存先のパスを指定します。

$ python /home/pi/neko/SaveImages.py /tmp/image000.jpg

イメージファイルが「/tmp/image000.jpg」に保存されます。
保存されたイメージファイルをフォトフレーム側にダウンロードしてやれば、フォトフレームに日めくりカレンダーを表示することができます。

【STEP3】全体のシェルスクリプト

全体のスクリプトは以下の様になります。
今回はSONYのディジタルフォトフレームを使ったので、ここで紹介しているオートマ ウントを使いました。
USB-SWはGPIO15でON/OFFしています。

#!/bin/bash
#
#Imageのダウンロード
OutFile="/tmp/image000.jpg"
python /home/pi/neko/SaveImages.py ${OutFile}

#USB-SWのON
sudo sh -c "echo 15 > /sys/class/gpio/export"
sudo sh -c "echo out > /sys/class/gpio/gpio15/direction"
sudo sh -c "echo 1 > /sys/class/gpio/gpio15/value"

#マウントチェック
for i in `seq 1 30`
do
    Check=`df | grep -c /media/usb0`
    if test $Check -eq 1 ; then
        break;
    fi
    sleep 1
done

#内蔵メモリ内のImageファイルをすべて削除
files=`find /media/usb0 -name "*.jpg" -print`
if test -n "$files" ; then
    sudo rm /media/usb0/*.jpg
fi

#新しいImageファイルをコピー
sudo cp ${OutFile} /media/usb0/
sync
sync
sync
sleep 5

#
内蔵メモリの アンマウント
sudo umount -l /media/usb0/

#USB-SWのOFF
sudo sh -c "echo 0 > /sys/class/gpio/gpio15/value"
sudo sh -c "echo 15 > /sys/class/gpio/unexport"


フォトフレームへの表示は以下の様になります。




次回は、もう1例、イメージファイルを抜き出して表示する方法を紹介する予定です。