#!/usr/bin/perl
use warnings "all";
use strict;
use POSIX qw(strftime);

# берём курс валют с сайта ЦБ РФ
my $data = `curl -s http://www.cbr.ru/scripts/RssCurrency.asp | iconv -f cp1251 -t utf8`;

$data = (split(/\[CDATA\[ /, $data))[1];
$data = (split(/\]\]/, $data))[0];
my @data = split(/<br> /, $data);
$data = undef;

my ($usd, $eu, $gbp, $swf, $jy, $chy);
foreach (@data){
	if ($_ =~ /^Швейцарский франк/) { $swf = (split(/ \- /, $_))[1]; $swf =~ s/\,/\./; }
	if ($_ =~ /^Фунт стерлингов Соединенного королевства/) { $gbp = (split(/ \- /, $_))[1]; $gbp =~ s/\,/\./; }
	if ($_ =~ /^Доллар США/) { $usd = (split(/ \- /, $_))[1]; $usd =~ s/\,/\./; }
	if ($_ =~ /^Евро/) { $eu = (split(/ \- /, $_))[1]; $eu =~ s/\,/\./; }
	if ($_ =~ /^Японская иена/){ $jy = (split(/ \- /, $_))[1]; $jy =~ s/\,/\./; $jy =~ s/<br>//;}
	if ($_ =~ /^Китайский юань/) { $chy = (split(/ \- /, $_))[1]; $chy =~ s/\,/\./; }
}

# Берём цену бочки нефти с портала mfd.ru
my $date = strftime "%d.%m.%Y", localtime;
my $oil = `curl -s -q 'http://mfd.ru/export/handler.ashx/_Brent_Crude_Oil_15min_09122015_09122015.txt?TickerGroup=2&Tickers=1*&Alias=false&Period=4&timeframeValue=1&timeframeDatePart=day&StartDate=$date&EndDate=$date&SaveFormat=0&SaveMode=0&FileName=_Brent_Crude_Oil_15min_09122015_09122015.txt&FieldSeparator=%253b&DecimalSeparator=.&DateFormat=yyyyMMdd&TimeFormat=HHmmss&DateFormatCustom=&TimeFormatCustom=&AddHeader=true&RecordFormat=2&Fill=true'`;
my @a = split(/\n/, $oil);
$oil = $a[@a - 1];
$oil = (split(/;/, $oil))[4];

# берём цену бакса и еврика у альфабанка
$data = `curl -q -s https://alfabank.ru/_/rss/_currency.html|iconv -f cp1251 -t utf8`;
my ($alfadollarbuy, $alfadollarsell, $alfaeurobuy, $alfaeurosell);
if ($data =~ /<td id="Доллар СШАcashBy">(\d+\,?\d*)<\/td>/){
	$alfadollarbuy = $1;
	$alfadollarbuy =~ s/,/\./;
}
if ($data =~ /<td id="Доллар СШАcashSell">(\d+\,?\d*)<\/td>/){
	$alfadollarsell = $1;
	$alfadollarsell =~ s/,/\./;
}

if ($data =~ /<td id="ЕвроcashBy">(\d+\,?\d*)<\/td>/){
	$alfaeurobuy = $1;
	$alfaeurobuy =~ s/,/\./;
}
if ($data =~ /<td id="ЕвроcashSell">(\d+\,?\d*)<\/td>/){
	$alfaeurosell = $1;
	$alfaeurosell =~ s/,/\./;
}

# берём цену бакса и еврика у банка москвы
$data = `curl -s -q http://www.bm.ru/ru/personal/services/exchange/`;
my($bmdollarbuy, $bmdollarsell, $bmeurobuy, $bmeurosell);
if($data =~ /Доллар США\s+<\/td>\s+<td>\s+(\d\d\,\d\d)\s+<\/td>\s+<td>\s+(\d\d\,\d\d)\s+<\/td>/){
	$bmdollarsell = $2;
	$bmdollarbuy = $1;
	$bmdollarsell =~ s/,/\./;
	$bmdollarbuy =~ s/,/\./;
}
if($data =~ /ЕВРО\s+<\/td>\s+<td>\s+(\d\d\,\d\d)\s+<\/td>\s+<td>\s+(\d\d\,\d\d)\s+<\/td>/){
	$bmeurosell = $2;
	$bmeurobuy = $1;
	$bmeurosell =~ s/,/\./;
	$bmeurobuy =~ s/,/\./;
}

# берём цену бакса и еврика у райффазена
$data = `curl -s -q http://www.raiffeisen.ru/currency_rates/`;
my ($raifdollarbuy, $raifdollarsell, $raifeurobuy, $raifeurosell);
if($data =~ /"USD":{"UNITS":1,"RUR_BUY":"(\d+\.\d+)","RUR_SALE":"(\d+\.\d+)","USD_BUY":.+,"USD_SALE":1}/){
	$raifdollarbuy = $1;
	$raifdollarsell = $2;
}
if($data =~ /"EUR":{"UNITS":1,"RUR_BUY":"(\d+\.\d+)","RUR_SALE":"(\d+\.\d+)","USD_BUY":.+,"USD_SALE":.+}/){
	$raifeurobuy = $1;
	$raifeurosell = $2;
}

# берём цену бакса и еврика у сбера
$data = `curl -s -q http://data.sberbank.ru/moscow/ru/quotes/currencies/?base=beta|iconv -f cp1251 -t utf8`;
my $sberdollarbuy = (split(/\s+</, (split (/<td style="vertical\-align:middle;font\-size:16px;color:#[a-f|0-9]+">\s*/, $data))[1]))[0];
$sberdollarbu =~ s/,/\./;
my $sberdollarsell = (split(/\s+</, (split (/<td style="vertical\-align:middle;font\-size:16px;color:#[a-f|0-9]+">\s*/, $data))[2]))[0];
$sberdollarsel =~ s/,/\./;
my $sbereurobuy = (split(/\s+/, (split (/<td style="vertical\-align:middle;font\-size:16px;color:#[a-f|0-9]+">\s*/, $data))[3]))[0];
$sbereurobuy =~ s/,/\./;
my $sbereurosell = (split(/\s+/, (split (/<td style="vertical\-align:middle;font\-size:16px;color:#[a-f|0-9]+">\s*/, $data))[4]))[0];
$sbereurosel =~ s/,/\./;

# берём цену бакса и еврика у втб24
$data = `curl -s -q 'http://www.vtb24.ru/_vti_bin/Vtb24.Internet/CurrencyRateWebService.svc/GetCurrencyRatesJson?filter=8'`;
my ($vtbdollarbuy, $vtbdollarsell, $vtbeurobuy, $vtbeurosell);
if($data =~ /Buy.:.(\d+\,\d+).+USD.+Sell.:.(\d+\,\d+).+Title.:.Доллар США./){
	$vtbdollarbuy =  $1;
	$vtbdollarsell = $2;
	$vtbdollarbuy =~ s/,/\./;
	$vtbdollarsell =~ s/,/\./;
}
if($data =~ /Buy.:.(\d+\,\d+).+EUR.+"Sell":"(\d*\,\d+)"\,.+"Title":"Евро"/){
	$vtbeurobuy = $1;
	$vtbeurosell = $2;
	$vtbeurobuy =~ s/,/\./;
	$vtbeurosell =~ s/,/\./;
}


open (DATA, ">/var/cache/munin/currency.txt");
print DATA <<TEXT;
usd:$usd
eu:$eu
gbp:$gbp
swf:$swf
jy:$jy
chy:$chy
oil:$oil
alfadollarbuy:$alfadollarbuy
alfadollarsell:$alfadollarsell
alfaeurobuy:$alfaeurobuy
alfaeurosell:$alfaeurosell
bmdollarbuy:$bmdollarbuy
bmdollarsell:$bmdollarsell
bmeurobuy:$bmeurobuy
bmeurosell:$bmeurosell
raifdollarbuy:$raifdollarbuy
raifdollarsell:$raifdollarsell
raifeurobuy:$raifeurobuy
raifeurosell:$raifeurosell
sberdollarbuy:$sberdollarbuy
sberdollarsell:$sberdollarsell
sbereurobuy:$sbereurobuy
sbereurosell:$sbereurosell
vtbdollarbuy:$vtbdollarbuy
vtbdollarsell:$vtbdollarsell
vtbeurobuy:$vtbeurobuy
vtbeurosell:$vtbeurosell
TEXT

exit 0;

