[Модуль] Курс валют (ExchangeRates)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Модуль "Курсы валют" (ПриватБанк+Банк России)

Сообщение Gelezako » Вс дек 24, 2017 5:35 pm

ахах, а я подумал что добавление иконки хорошая идея )
надеюсь добавленный значок валюты на самой странице возле цифр не режет?
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль "Курсы валют" (ПриватБанк+Банк России)

Сообщение nick7zmail » Вс дек 24, 2017 6:15 pm

В самом модуле - пофигу)) Может даже и красивее стало...а вот в названии...ну не...во первых выбивается из общего стиля панели управления, во-вторых ascii иконки не самые красивые я б сказал...но даже если воткнуть бутстраповскую иконку - ну не...не то...всё таки панель управления строгой должна быть...а то сперва иконки, потом буквы разноцветные в названии, рамки всякие, анимации...кто на что горазд...потом зайти туда страшно будет)))
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Модуль "Курсы валют" (ПриватБанк+Банк России)

Сообщение Gelezako » Вс дек 24, 2017 6:20 pm

ну ок, убираю из названия, желание пользователя - закон )
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
Аватара пользователя
dioxin
Сообщения: 175
Зарегистрирован: Вт фев 14, 2017 4:43 pm
Откуда: Иваново
Благодарил (а): 15 раз
Поблагодарили: 46 раз

Re: Модуль "Курсы валют" (ПриватБанк+Банк России)

Сообщение dioxin » Чт янв 25, 2018 7:20 pm

Тащу доллар и евро на сегодня-завтра с центробанка:
СпойлерПоказать

Код: Выделить всё

$data=date("d/m/Y");
$file = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".$data);
sg("cbr.uptime", $data); // кидаем сегодняшнюю дату
$xml = $file->xpath("//Valute[@ID='R01235']");
$valute = strval($xml[0]->Value);
$dollar = str_replace(",",".",$valute);
sg('cbr.dollar', $dollar);
$dollar = substr($dollar,0,-2);
$dollar1 = $dollar;
$format='mini';
$dollar = priceToRublesAndKopeck($dollar, $format);
sg("cbr.USD", $dollar); //кидаем курс доллара
$format='full';
$dollar1 = priceToRublesAndKopeck($dollar1, $format);
sg("cbr.USD_full", $dollar1); //кидаем курс доллара для алисы
$xml = $file->xpath("//Valute[@ID='R01239']");
$valute = strval($xml[0]->Value);
$euro = str_replace(",",".",$valute);
sg('cbr.evrik', $euro);
$euro = substr($euro,0,-2);
$euro1 = $euro;
$format='mini';
$euro = priceToRublesAndKopeck($euro, $format);
sg("cbr.EURO",$euro); //кидаем курс евро
$format='full';
$euro1 = priceToRublesAndKopeck($euro1, $format);
sg("cbr.EURO_full", $euro1); //кидаем курс евро для алисы

// Получаем курс на завтра
$data1 = strtotime("+1 day");
$data1 = date("d/m/Y", $data1);
$file = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".$data1);
sg("cbr.uptime1", $data1); //кидаем завтравшнюю дату
$xml = $file->xpath("//Valute[@ID='R01235']");
$valute = strval($xml[0]->Value);
$dollar = str_replace(",",".",$valute);
sg('cbr.dollar_zavtra',$dollar);
$dollar = substr($dollar,0,-2);
$format='mini';
$dollar = priceToRublesAndKopeck($dollar, $format);
sg("cbr.USD1", $dollar); //кидаем курс доллара на завтра
$xml = $file->xpath("//Valute[@ID='R01239']");
$valute = strval($xml[0]->Value);
$euro = str_replace(",",".",$valute);
sg('cbr.evrik_zavtra',$euro);
$euro = substr($euro,0,-2);
$format='mini';
$euro = priceToRublesAndKopeck($euro, $format);
sg("cbr.EURO1",$euro); //кидаем курс евро на завтра
$raz_euro = (gg('cbr.evrik_zavtra')-gg('cbr.evrik'));
$raz_dollar = (gg('cbr.dollar_zavtra')-gg('cbr.dollar'));
if (stristr($raz_dollar,'-') === FALSE) {$raz_dollar = '+'.$raz_dollar;}
if (stristr($raz_euro,'-') === FALSE) {$raz_euro = '+'.$raz_euro;}
$raz_dollar = substr($raz_dollar,0,5);
$raz_euro = substr($raz_euro,0,5);
sg('cbr.raz_dollar',$raz_dollar);
sg('cbr.raz_euro',$raz_euro);

function priceToRublesAndKopeck($price, $format) {
    if ($format == 'mini') {
            $rub_u = " р."; $kop_u = " к.";
        }
    if ($format == 'medium') {
            $rub_u = " руб."; $kop_u = " коп.";
        }
    if ($format == 'full') {
            $rub_u = " рублей"; $kop_u = " копеек";
        }
    if ($price != 0) {
 
        $point = strpos($price, '.');
        // Отделяем рубли от копеек
        if ( !empty($point) ) {
            $rub = substr($price, 0, $point);
            $kop = substr($price, $point + 1);
        }
        // Формируем строку
        if ($rub == 0) $result = $kop.$kop_u;
            else $result = $rub.$rub_u." ".$kop.$kop_u;
        // Возвращаем результат
        return $result;
    }
    else {
        $result = "0".$rub_u." 0".$kop_u;
        return $result;
    }}
 
Ну и криптовалюту тоже вывожу:
СпойлерПоказать

Код: Выделить всё

//==========Биткоин=====
$result = shell_exec("/usr/bin/curl https://api.coindesk.com/v1/bpi/currentprice/USD.json");
$result = json_decode($result,true);
$price = sprintf("%.2f",$result["bpi"]["USD"]["rate_float"]);
sg('ESP82660014aa2b.btc_of',$price);
$result = shell_exec("/usr/bin/curl https://api.exmo.com/v1/ticker/");
$result = json_decode($result,true);
$price = sprintf("%.2f",$result[BTC_USD][buy_price]);
$timen = date('H:i',$result[BTC_USD][updated]);
sg('ESP82660014aa2b.time_btc',$timen);
sg('ESP82660014aa2b.btc',$price);
//==========Рипл=====
$price = sprintf("%.2f",$result[XRP_USD][buy_price]);
$timen = date('H:i',$result[XRP_USD][updated]);
sg('ESP82660014aa2b.time_xrp',$timen);
sg('ESP82660014aa2b.xrp',$price);
 
Вложения
2018-01-25_19-15-53.jpg
2018-01-25_19-15-53.jpg (21.55 КБ) 4285 просмотров
За это сообщение автора dioxin поблагодарили (всего 2):
webms (Пт янв 26, 2018 11:33 am) • Amarok (Сб янв 27, 2018 8:48 am)
Рейтинг: 2.33%
Алиска прописана на Debian 11 | Мой канал на youtube по MajorDomo
Аватара пользователя
webms
Сообщения: 498
Зарегистрирован: Чт дек 15, 2016 3:13 am
Благодарил (а): 221 раз
Поблагодарили: 88 раз

Re: Модуль "Курсы валют" (ПриватБанк+Банк России)

Сообщение webms » Пт янв 26, 2018 11:42 am

dioxin, спасибо большое, то что надо!
Аватара пользователя
Amarok
Сообщения: 1425
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Модуль "Курсы валют" (ПриватБанк+Банк России)

Сообщение Amarok » Сб янв 27, 2018 8:54 am

dioxin писал(а):Ну и криптовалюту тоже вывожу:

Код: Выделить всё

$result = shell_exec("/usr/bin/curl https://api.exmo.com/v1/ticker/");
sg('ESP82660014aa2b.btc',$price); 
А роскомнадзор exmo.com - забанил. :D
И, да, а каким образом ESP в майнинге учавствует?
Алиска живёт на Ubuntu Server 14.04.3 LTS
connect, группа в Telegram, Яндекс.Деньги для благодарностей за помощь: 41001355945165
Аватара пользователя
dioxin
Сообщения: 175
Зарегистрирован: Вт фев 14, 2017 4:43 pm
Откуда: Иваново
Благодарил (а): 15 раз
Поблагодарили: 46 раз

Re: Модуль "Курсы валют" (ПриватБанк+Банк России)

Сообщение dioxin » Вс янв 28, 2018 6:17 pm

Amarok писал(а):
dioxin писал(а):Ну и криптовалюту тоже вывожу:

Код: Выделить всё

$result = shell_exec("/usr/bin/curl https://api.exmo.com/v1/ticker/");
sg('ESP82660014aa2b.btc',$price);
А роскомнадзор exmo.com - забанил. :D
И, да, а каким образом ESP в майнинге учавствует?
Строку $result = shell_exec("/usr/bin/curl https://api.exmo.com/v1/ticker/"); заменить на $result = shell_exec("/usr/bin/curl https://api.exmo.me/v1/ticker/");
Это если будут проблемы с доступом, а так вроде домен третьего уровня api.exmo.com не забанен.

Кто про майнинг тут чего сказал?
Тут про получение курсов валют тема.
Алиска прописана на Debian 11 | Мой канал на youtube по MajorDomo
Аватара пользователя
webms
Сообщения: 498
Зарегистрирован: Чт дек 15, 2016 3:13 am
Благодарил (а): 221 раз
Поблагодарили: 88 раз

Re: Модуль "Курсы валют" (ПриватБанк+Банк России)

Сообщение webms » Ср мар 21, 2018 5:05 pm

dioxin писал(а):Тащу доллар и евро на сегодня-завтра с центробанка:
СпойлерПоказать

Код: Выделить всё

$data=date("d/m/Y");
$file = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".$data);
sg("cbr.uptime", $data); // кидаем сегодняшнюю дату
$xml = $file->xpath("//Valute[@ID='R01235']");
$valute = strval($xml[0]->Value);
$dollar = str_replace(",",".",$valute);
sg('cbr.dollar', $dollar);
$dollar = substr($dollar,0,-2);
$dollar1 = $dollar;
$format='mini';
$dollar = priceToRublesAndKopeck($dollar, $format);
sg("cbr.USD", $dollar); //кидаем курс доллара
$format='full';
$dollar1 = priceToRublesAndKopeck($dollar1, $format);
sg("cbr.USD_full", $dollar1); //кидаем курс доллара для алисы
$xml = $file->xpath("//Valute[@ID='R01239']");
$valute = strval($xml[0]->Value);
$euro = str_replace(",",".",$valute);
sg('cbr.evrik', $euro);
$euro = substr($euro,0,-2);
$euro1 = $euro;
$format='mini';
$euro = priceToRublesAndKopeck($euro, $format);
sg("cbr.EURO",$euro); //кидаем курс евро
$format='full';
$euro1 = priceToRublesAndKopeck($euro1, $format);
sg("cbr.EURO_full", $euro1); //кидаем курс евро для алисы

// Получаем курс на завтра
$data1 = strtotime("+1 day");
$data1 = date("d/m/Y", $data1);
$file = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".$data1);
sg("cbr.uptime1", $data1); //кидаем завтравшнюю дату
$xml = $file->xpath("//Valute[@ID='R01235']");
$valute = strval($xml[0]->Value);
$dollar = str_replace(",",".",$valute);
sg('cbr.dollar_zavtra',$dollar);
$dollar = substr($dollar,0,-2);
$format='mini';
$dollar = priceToRublesAndKopeck($dollar, $format);
sg("cbr.USD1", $dollar); //кидаем курс доллара на завтра
$xml = $file->xpath("//Valute[@ID='R01239']");
$valute = strval($xml[0]->Value);
$euro = str_replace(",",".",$valute);
sg('cbr.evrik_zavtra',$euro);
$euro = substr($euro,0,-2);
$format='mini';
$euro = priceToRublesAndKopeck($euro, $format);
sg("cbr.EURO1",$euro); //кидаем курс евро на завтра
$raz_euro = (gg('cbr.evrik_zavtra')-gg('cbr.evrik'));
$raz_dollar = (gg('cbr.dollar_zavtra')-gg('cbr.dollar'));
if (stristr($raz_dollar,'-') === FALSE) {$raz_dollar = '+'.$raz_dollar;}
if (stristr($raz_euro,'-') === FALSE) {$raz_euro = '+'.$raz_euro;}
$raz_dollar = substr($raz_dollar,0,5);
$raz_euro = substr($raz_euro,0,5);
sg('cbr.raz_dollar',$raz_dollar);
sg('cbr.raz_euro',$raz_euro);

function priceToRublesAndKopeck($price, $format) {
    if ($format == 'mini') {
            $rub_u = " р."; $kop_u = " к.";
        }
    if ($format == 'medium') {
            $rub_u = " руб."; $kop_u = " коп.";
        }
    if ($format == 'full') {
            $rub_u = " рублей"; $kop_u = " копеек";
        }
    if ($price != 0) {
 
        $point = strpos($price, '.');
        // Отделяем рубли от копеек
        if ( !empty($point) ) {
            $rub = substr($price, 0, $point);
            $kop = substr($price, $point + 1);
        }
        // Формируем строку
        if ($rub == 0) $result = $kop.$kop_u;
            else $result = $rub.$rub_u." ".$kop.$kop_u;
        // Возвращаем результат
        return $result;
    }
    else {
        $result = "0".$rub_u." 0".$kop_u;
        return $result;
    }}
Ну и криптовалюту тоже вывожу:
СпойлерПоказать

Код: Выделить всё

//==========Биткоин=====
$result = shell_exec("/usr/bin/curl https://api.coindesk.com/v1/bpi/currentprice/USD.json");
$result = json_decode($result,true);
$price = sprintf("%.2f",$result["bpi"]["USD"]["rate_float"]);
sg('ESP82660014aa2b.btc_of',$price);
$result = shell_exec("/usr/bin/curl https://api.exmo.com/v1/ticker/");
$result = json_decode($result,true);
$price = sprintf("%.2f",$result[BTC_USD][buy_price]);
$timen = date('H:i',$result[BTC_USD][updated]);
sg('ESP82660014aa2b.time_btc',$timen);
sg('ESP82660014aa2b.btc',$price);
//==========Рипл=====
$price = sprintf("%.2f",$result[XRP_USD][buy_price]);
$timen = date('H:i',$result[XRP_USD][updated]);
sg('ESP82660014aa2b.time_xrp',$timen);
sg('ESP82660014aa2b.xrp',$price);
обновился на php 7.2 и перестал обновляться через крон, как можно исправить?
консоль:

Код: Выделить всё

17:00:01 0.08535200 Error executing job Cron_CBRKursValuti_Cron (19861828): Warning: simplexml_load_file(http://www.cbr.ru/scripts/XML_daily.asp?date_req=21/03/2018): failed to open stream: Redirection limit reached, aborting in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(142) : eval()'d code on line 2
Warning: simplexml_load_file(): I/O warning : failed to load external entity "http://www.cbr.ru/scripts/XML_daily.asp?date_req=21/03/2018" in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(142) : eval()'d code on line 2
Fatal error: Uncaught Error: Call to a member function xpath() on boolean in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(142) : eval()'d code:5
Stack trace:
#0 C:\_majordomo\htdocs\modules\scripts\scripts.class.php(142): eval()
#1 C:\_majordomo\htdocs\lib\common.class.php(720): scripts->runScript('CBRKursValuti', '')
#2 C:\_majordomo\htdocs\modules\objects\objects.class.php(581) : eval()'d code(1): runScript('CBRKursValuti')
#3 C:\_majordomo\htdocs\modules\objects\objects.class.php(581): eval()
#4 C:\_majordomo\htdocs\lib\objects.class.php(937): objects->callMethod('Run', 0)
#5 C:\_majordomo\htdocs\objects\index.php(171) : eval()'d code(1): callMethod('Run')
#6 C:\_majordomo\htdocs\objects\index.php(171): eval()
#7 {main}
thrown in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(142) : eval()'d code on line 5 (C:\_majordomo\htdocs\lib\common.class.php)
в кроне запускаю так

Код: Выделить всё

runScript("CBRKursValuti"); 
вручную обновляется норм
Аватара пользователя
dioxin
Сообщения: 175
Зарегистрирован: Вт фев 14, 2017 4:43 pm
Откуда: Иваново
Благодарил (а): 15 раз
Поблагодарили: 46 раз

Re: Модуль "Курсы валют" (ПриватБанк+Банк России)

Сообщение dioxin » Ср мар 21, 2018 5:41 pm

Зачем обновлять php? Работает и не трогай! Анекдот есть такой еще ;)
php 5.6 debian 8 - полет нормальный!
У Вас похоже не только со скриптом проблема, но и с модулем majordomo.
Алиска прописана на Debian 11 | Мой канал на youtube по MajorDomo
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Модуль "Курсы валют" (ПриватБанк+Банк России)

Сообщение nick7zmail » Ср мар 21, 2018 5:54 pm

dioxin писал(а):Зачем обновлять php? Работает и не трогай! Анекдот есть такой еще ;)
php 5.6 debian 8 - полет нормальный!
У Вас похоже не только со скриптом проблема, но и с модулем majordomo.
Ну типа гитхаб протокол обновили...если пхп "не трогать" - не будет обновляться система...возможно модули тоже...так что это вынужденная мера.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Ответить