#!/usr/bin/perl # use strict; use warnings; use RRDs; use Data::Dumper; use Template; my $file = $ARGV[0] or die("Usage: $0 csv\n"); my $rrdpath = "/var/www/localhost/rrd"; my $cryptoMap = { "AAVE" => "AAVE", "ALGO" => "Algorand", "BTC" => "Bitcoin", "CVC" => "Civic", "DNT" => "district0x", "DOGE" => "Dogecoin", "EGLD" => "Elrond eGold", "ETH" => "Etherium", "EOS" => "EOS", "LRC" => "Loopring", "RAD" => "Radicle", "REN" => "REN", "SHIB" => "Shiba Inu", "SNX" => "Synthetix", "XLM" => "Stellar Lumen", "XTZ" => "Tezos", "ZRX" => "Ox", }; my $v; $v->{GENERATED} = localtime; sub getCurrentPrice { my ($symbol) = @_; my ($start,$step,$name,$data) = RRDs::fetch("${rrdpath}/crypto-${symbol}.rrd","LAST","--start","-10m"); return($data->[0]->[0]); } sub getLastWeekValue { my ($symbol) = @_; my ($start,$step,$name,$data) = RRDs::fetch("${rrdpath}/crypto-${symbol}.rrd","AVERAGE","--start","-7d"); return($data->[0]->[0] || 1); } open(CSV,"<$file") or die("open($file): $!\n"); while () { my ($date,$currency,$coin,$price,$fee,$buyrate,$selltresh) = split /;/; my $x = { DATE => $date, NAME => $cryptoMap->{$currency}, CURRENCY => $currency, COIN => $coin, PRICE => $price, FEE => $fee, BUYRATE => $buyrate, }; $x->{CURRENT_PRICE} = &getCurrentPrice($currency); $x->{LAST_WEEK_PRICE} = &getLastWeekValue($currency); $x->{IMAGE} = `curl -s 'http://localhost/cgi-bin/graph.pl?width=540&height=200&graph=crypto-${currency}&start=-14d' --output - | base64`; push @{$v->{DATA}},$x; } close(CSV); my $template = Template->new({ INCLUDE_PATH => '/var/www/localhost/tmpl', INTERPOLATE => 1, }); $|++; $template->process('cryptoReport.tmpl',$v) or die($!); print "\n"; #print Dumper($v);