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

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

Модератор: immortal

Аватара пользователя
adzam
Сообщения: 602
Зарегистрирован: Сб дек 08, 2012 10:28 pm
Откуда: Кишинев
Благодарил (а): 20 раз
Поблагодарили: 138 раз

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

Сообщение adzam » Пн дек 03, 2018 5:26 am

А Вы сможете добавить сами, я был бы очень признателен, думаю многим это пригодится или скажите в какие файлы вносить изменения.
Мне не нужно чтоб все добавленное появлялось в настройках , просто чтоб появилось в свойствах обьекта.
Мои проекты здесь...https://connect.smartliving.ru/profile/41/blog213.htm
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
Аватара пользователя
adzam
Сообщения: 602
Зарегистрирован: Сб дек 08, 2012 10:28 pm
Откуда: Кишинев
Благодарил (а): 20 раз
Поблагодарили: 138 раз

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

Сообщение adzam » Пн дек 03, 2018 8:25 am

Спасибо всем за ответ, разобрался.
Мои проекты здесь...https://connect.smartliving.ru/profile/41/blog213.htm
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

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

Сообщение Gelezako » Пн дек 03, 2018 12:19 pm

если разобрались и всё работает делайте пул реквест вот сюда со своими изменениями https://github.com/Gelezako/MajorDomo-ExchangeRates
так всё сообщество Мажордомо сможет воспользоваться вашими наработками
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
Аватара пользователя
adzam
Сообщения: 602
Зарегистрирован: Сб дек 08, 2012 10:28 pm
Откуда: Кишинев
Благодарил (а): 20 раз
Поблагодарили: 138 раз

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

Сообщение adzam » Сб дек 08, 2018 8:57 am

Да нет не доразобрался.
То глючит то грузится.
Прошу помощи у знатоков.
Сначало добавил парсинг валюты на вчера:
СпойлерПоказать
//Начало парсинга ЦБР на вчера
$file = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".date('d.m.Y', strtotime('yesterday')));
if (false === $file) {
//throw new Exception("Cannot load xml source.\n");
Debmes("Не удалось обновить курс валют3");
$out["notification2"]="<#LANG_ER_APP_NOTIF2#>";
sg("exchange_rate.dollarrurold","");
sg("exchange_rate.eurorurold","");

}
else if($file) {
$xml = $file->xpath("//Valute[@ID='R01235']");
$valute = strval($xml[0]->Value);
$dollar = str_replace(",",".",$valute);
sg("exchange_rate.dollarrurold",round((float)$dollar,4));

$xml = $file->xpath("//Valute[@ID='R01239']");
$valute = strval($xml[0]->Value);
$euro = str_replace(",",".",$valute);
sg("exchange_rate.eurorurold",round((float)$euro,4));

}

//Конец парсинга ЦБР на вчера
Затем получаем курс на вчера вот так :
СпойлерПоказать
// Начало парсинга хмл банка России на вчера
global $dollarrurold,$eurorurold;
$file = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".date('d.m.Y', strtotime('yesterday')));
if (!$file) {
$out["notification2"]="<#LANG_ER_APP_NOTIF2#>";
sg("exchange_rate.dollarrurold","");
sg("exchange_rate.eurorurold","");
Debmes("Не удалось обновить курс валют10");
}
else if (false === $file) {
$out["notification2"]="<#LANG_ER_APP_NOTIF2#>";
sg("exchange_rate.dollarrurold","");
Debmes("Не удалось обновить курс валют11");
}
else{
if(isset($dollarrurold)){
$xml = $file->xpath("//Valute[@ID='R01235']");
$valute = strval($xml[0]->Value);
$dollar = str_replace(",",".",$valute);
sg("exchange_rate.dollarrurold",round((float)$dollar,4));
$out["dollarrurold"]=round((float)$dollar,4);
$dolold=round((float)$dollar,4);
}
if(isset($eurorurold)){
$xml = $file->xpath("//Valute[@ID='R01239']");
$valute = strval($xml[0]->Value);
$euro = str_replace(",",".",$valute);
sg("exchange_rate.eurorurold",round((float)$euro,4));
$out["eurorurold"]=round((float)$euro,4);
$eurold=round((float)$euro,4);


$deltadol = abs($dol-$dolold); // определяем разницу в долларе за сутки
sg("exchange_rate.deltadol",$deltadol); //сохраняем величину изменения курса доллара

$deltaeur = abs($eur-$eurold); // определяем разницу в евро за сутки
sg("exchange_rate.deltaeur",$deltaeur); //сохраняем величину изменения курса евро

if ($eur > $eurold){ //определяем направление изменения курса евро
$roste='1';
}elseif ($eur < $eurold){
$roste='2';
}else {
$roste='0';
}
sg("exchange_rate.rosteur",$roste); //сохраняем направление изменения курса евро

if ($dol > $dolold){ //определяем направление изменения курса доллара
$rostd='1';
}elseif ($dol < $dolold){
$rostd='2';
}else{
$rostd='0';
}
sg("exchange_rate.rostdol",$rostd); //сохраняем направление изменения курса доллара

}
}

libxml_clear_errors();
libxml_use_internal_errors($use_errors);
Подправьте, пожалуйста,ведь я не профи а только изучаю помалехо.
Мои проекты здесь...https://connect.smartliving.ru/profile/41/blog213.htm
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
Аватара пользователя
dioxin
Сообщения: 175
Зарегистрирован: Вт фев 14, 2017 4:43 pm
Откуда: Иваново
Благодарил (а): 15 раз
Поблагодарили: 46 раз

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

Сообщение dioxin » Сб дек 08, 2018 11:12 am

У меня так:
СпойлерПоказать

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

$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);//Разница курса dollar
sg('cbr.raz_euro',$raz_euro);//Разница курса 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;
    }}
За это сообщение автора dioxin поблагодарили (всего 2):
adzam (Сб дек 08, 2018 1:06 pm) • Chainik (Сб дек 08, 2018 1:36 pm)
Рейтинг: 2.33%
Алиска прописана на Debian 11 | Мой канал на youtube по MajorDomo
Аватара пользователя
adzam
Сообщения: 602
Зарегистрирован: Сб дек 08, 2012 10:28 pm
Откуда: Кишинев
Благодарил (а): 20 раз
Поблагодарили: 138 раз

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

Сообщение adzam » Сб дек 08, 2018 1:08 pm

Спасибо, просто, надежно и со вкусом.
Добавил от себя направление изменения.
За это сообщение автора adzam поблагодарил:
dioxin (Сб дек 08, 2018 4:37 pm)
Рейтинг: 1.16%
Мои проекты здесь...https://connect.smartliving.ru/profile/41/blog213.htm
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
Аватара пользователя
dioxin
Сообщения: 175
Зарегистрирован: Вт фев 14, 2017 4:43 pm
Откуда: Иваново
Благодарил (а): 15 раз
Поблагодарили: 46 раз

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

Сообщение dioxin » Сб дек 08, 2018 4:36 pm

Я всегда всё сам пишу, чтобы удобнее было.. Чужих модулей практически не использую. Когда люди спрашивают, отвечаю с душой. Мой канал в подписи.
Алиска прописана на Debian 11 | Мой канал на youtube по MajorDomo
Аватара пользователя
adzam
Сообщения: 602
Зарегистрирован: Сб дек 08, 2012 10:28 pm
Откуда: Кишинев
Благодарил (а): 20 раз
Поблагодарили: 138 раз

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

Сообщение adzam » Сб дек 08, 2018 5:37 pm

А запускать лучше скриптом или cronom?
В крон ведь можно вставить скрипт и пускай запускает по времени.
Мои проекты здесь...https://connect.smartliving.ru/profile/41/blog213.htm
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
Аватара пользователя
dioxin
Сообщения: 175
Зарегистрирован: Вт фев 14, 2017 4:43 pm
Откуда: Иваново
Благодарил (а): 15 раз
Поблагодарили: 46 раз

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

Сообщение dioxin » Вс дек 09, 2018 5:16 am

Я на cron повесил. На системный.
Алиска прописана на Debian 11 | Мой канал на youtube по MajorDomo
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

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

Сообщение Logrus » Вс дек 09, 2018 5:33 am

adzam писал(а):
Сб дек 08, 2018 1:08 pm
Спасибо, просто, надежно и со вкусом.
Добавил от себя направление изменения.
В коннекте как год выложен и пример и шаблон, для просто и со вкусом :D
За это сообщение автора Logrus поблагодарил:
Samir77 (Вс фев 16, 2020 10:52 pm)
Рейтинг: 1.16%
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Ответить