名前が決めれない(RaspberryPi)

ラズベリーパイを使ったプログラムを公開します

日経平均株価表示スクリプト

日経平均株価【998407】:国内指数 - Yahoo!ファイナンス
のHTMLを解析して、日経平均株価を表示するスクリプト

HTML::TreeBuilderよりjQueryのほうが楽だな。

ソース
kenichihanasaki / my-rpi-rgb-led-matrix / source / watch_nikkei225.pl — Bitbucket

#! /usr/bin/perl

use feature ':5.10';
use utf8;
use Encode;
use WWW::Curl::Easy;

#cpan HTML::TreeBuilder
use HTML::TreeBuilder;

#cpan HTML::TreeBuilder::XPath
use HTML::TreeBuilder::XPath;

#cpan HTML::Selector::XPath
use HTML::Selector::XPath qw/selector_to_xpath/;

my $interval = 60 * 5;

my $html = "";

my $curl = new WWW::Curl::Easy;
my $url = "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=998407.O";

$curl->setopt(CURLOPT_URL, $url);
$curl->setopt(CURLOPT_WRITEDATA, \$html);



while(1)
{
    $html = "";
    $curl->perform;
    
    if($curl->getinfo(CURLINFO_HTTP_CODE) == 200)
    {
        #printf($html);

        my $treeBuilder = HTML::TreeBuilder->new;
        
        $treeBuilder->parse($html);
        $treeBuilder->eof();

        my $tr = $treeBuilder->findnodes(selector_to_xpath("table.stocksTable tr"))->shift;
        
        $stoksPrice = $tr->look_down("class", "stoksPrice")->as_text;
        $change = $tr->look_down("class", "change")->look_down("class", qr/yjMSt/)->as_text;

        $stoksPrice = decode("utf-8", $stoksPrice);
        $change = decode("utf-8", $change);

        $message = sprintf("日経平均株価 %s円 前日比 %s", $stoksPrice, $change);
        
        if(index($change, "+") != -1)
        {
            $option = "--string.color=0x160000";
        }
        else
        {
            $option = "--string.color=0x000016";
        }
        
        $command = sprintf("echo '%s' | sudo /home/pi/display16x32/my-rpi-rgb-led-matrix/led_matrix_16x32_string_screen --input.stdin %s", $message, $option);
        $command = encode("utf-8", $command);

        printf($command . "\n");
        system($command);

        $treeBuilder = $treeBuilder->delete;
    }

    printf("sleep %d seconds\n", $interval);
    sleep($interval);
}

実行

perl watch_nikkei225.pl