Страница 14 из 18

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

Добавлено: Вс сен 02, 2018 3:59 pm
Skull
Подскажете как это делается ?
Вроде ж написано- You can upload intent files in JSON format.
Я гружу именно JSON

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

Добавлено: Вс сен 02, 2018 4:01 pm
Gelezako
пересмотрите видео обучающее, я всё показываю. Вам нужны выставить расширение для файла json

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

Добавлено: Вс сен 02, 2018 4:06 pm
Skull
Я смотрел его раз 5 )) И загружаю именно json файл вроде )
Изображение

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

Добавлено: Вс сен 02, 2018 4:13 pm
Gelezako
судя по скрину у вас верное расширение файла, тут всё норм. Я только что сам импортировал этот файл и всё прошло без ошибок. Честно говоря я не знаю почему у вас не импортируется файл. Уже много людей это настроили и с такой проблемой ни кто не сталкивался.

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

Добавлено: Вс сен 02, 2018 4:23 pm
Skull
Файл был скопирован из Гитхаба, по адресу из видео. Попробовал грузить другие интенты, выскакивает то же сообщение ((

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

Добавлено: Вс сен 02, 2018 4:55 pm
Gelezako
не подскажу в чём у вас проблема, я только что успешно импортировал файл из гитхаба.

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

Добавлено: Вс ноя 11, 2018 2:20 pm
webms
*удалил*

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

Добавлено: Пн ноя 12, 2018 12:22 am
Rus_Lan
Skull писал(а):
Вс сен 02, 2018 4:23 pm
Файл был скопирован из Гитхаба, по адресу из видео. Попробовал грузить другие интенты, выскакивает то же сообщение ((
Сталкивался с такой же ситуацией.
Помогло копирование открытого кода (в окне просмотра кода на Гитхаб), последующая его вставка в Notepad и сохранение в формат JSON. Далее, привычный Uplaud на API.AI.

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

Добавлено: Вс дек 02, 2018 1:35 pm
adzam
Прошу помощи у студии.
Хочу добавить стрелочки роста валют exchange_rate.rostdol;exchange_rate.rosteur
и на сколько exchange_rate.deltadol;exchange_rate.deltaeur
НО почему-то не работает где-то накосячил, подскажите пож в чем проблема, изменения вносил в файл ExchangeRates.class в modules.
СпойлерПоказать
<?php
/**
* ExchangeRates
* @package project
* @author Alex Sokolov <admin@gelezako.com>
* @copyright Alex Sokolov http://blog.gelezako.com (c)
* @version 0.1 (wizard, 10:02:10 [Feb 06, 2017])
*/
//
//
class ExchangeRates extends module {
/**
* ExchangeRates
*
* Module class constructor
*
* @access private
*/
public function ExchangeRates() {
$this->name="ExchangeRates";
$this->title="Курс валют";
$this->module_category="<#LANG_SECTION_APPLICATIONS#>";
$this->checkInstalled();
}
/**
* saveParams
*
* Saving module parameters
*
* @access public
*/
public function saveParams($data=0) {
$p=array();
if (IsSet($this->id)) {
$p["id"]=$this->id;
}
if (IsSet($this->view_mode)) {
$p["view_mode"]=$this->view_mode;
}
if (IsSet($this->edit_mode)) {
$p["edit_mode"]=$this->edit_mode;
}
if (IsSet($this->tab)) {
$p["tab"]=$this->tab;
}
return parent::saveParams($p);
}
/**
* getParams
*
* Getting module parameters from query string
*
* @access public
*/
public function getParams() {
global $id;
global $mode;
global $view_mode;
global $edit_mode;
global $tab;
if (isset($id)) {
$this->id=$id;
}
if (isset($mode)) {
$this->mode=$mode;
}
if (isset($view_mode)) {
$this->view_mode=$view_mode;
}
if (isset($edit_mode)) {
$this->edit_mode=$edit_mode;
}
if (isset($tab)) {
$this->tab=$tab;
}
}
/**
* Run
*
* Description
*
* @access public
*/
public function run() {
global $session;
$out=array();
if ($this->action=='admin') {
$this->admin($out);
} else {
$this->usual($out);
}
if (IsSet($this->owner->action)) {
$out['PARENT_ACTION']=$this->owner->action;
}
if (IsSet($this->owner->name)) {
$out['PARENT_NAME']=$this->owner->name;
}
$out['VIEW_MODE']=$this->view_mode;
$out['EDIT_MODE']=$this->edit_mode;
$out['MODE']=$this->mode;
$out['ACTION']=$this->action;
$this->data=$out;
$p=new parser(DIR_TEMPLATES.$this->name."/".$this->name.".html", $this->data, $this);
$this->result=$p->result;
}
/**
* BackEnd
*
* Module backend
*
* @access public
*/

/*
protected function SetAutoUpdate()
{
injectObjectMethodCode('ClockChime.onNewHour','ExchangeRates','
include_once(DIR_MODULES . "ExchangeRates/ExchangeRates.class.php");
$app_exRate = new ExchangeRates();
$app_exRate->SaveAutoUpdate();
');
}

*/

public function SaveAutoUpdate(){
//Начало парсинга Приватбанк АПИ
libxml_use_internal_errors(true);
$url = 'https://api.privatbank.ua/p24api/pubinf ... coursid=11';
$xml = @simplexml_load_file($url);
if (!$xml) {
$out["notification"]="<#LANG_ER_APP_NOTIF#>";
sg("exchange_rate.eurobuy","");
sg("exchange_rate.eurosale","");
sg("exchange_rate.usdbuy","");
sg("exchange_rate.usdsale","");
sg("exchange_rate.rurbuy","");
sg("exchange_rate.rursale","");
Debmes("Не удалось обновить курс валют");
}
else if (false === $xml) {
$out["notification"]="<#LANG_ER_APP_NOTIF#>";
sg("exchange_rate.eurobuy","");
sg("exchange_rate.eurosale","");
sg("exchange_rate.usdbuy","");
sg("exchange_rate.usdsale","");
sg("exchange_rate.rurbuy","");
sg("exchange_rate.rursale","");
Debmes("Не удалось обновить курс валют");
}
else if($xml) {
$i=0;
//получаем курс евро
foreach($xml->row[1]->exchangerate->attributes() as $key => $exchangerate){
if($i==2){
sg("exchange_rate.eurobuy",round((float)$exchangerate,1));
}
else if($i==3){
sg("exchange_rate.eurosale",round((float)$exchangerate,1));
}
++$i;
}

//получаем курс доллара
$j=0;
foreach($xml->row[0]->exchangerate->attributes() as $key => $exchangerate){
if($j==2){
sg("exchange_rate.usdbuy",round((float)$exchangerate,1));
}
else if($j==3){
sg("exchange_rate.usdsale",round((float)$exchangerate,1));
}
++$j;
}

//получаем курс рубля
$k=0;
foreach($xml->row[2]->exchangerate->attributes() as $key => $exchangerate){
if($k==2){
sg("exchange_rate.rurbuy",round((float)$exchangerate,2));
}
else if($k==3){
sg("exchange_rate.rursale",round((float)$exchangerate,2));
}
++$k;
}
sg("exchange_rate.date1",date("Y-m-d H:i:s"));
}
//Конец парсинга Приватбанк АПИ

//Начало парсинга ЦБР
$file = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp ... ate("d/m/Y"));
if (false === $file) {
//throw new Exception("Cannot load xml source.\n");
Debmes("Не удалось обновить курс валют");
$out["notification2"]="<#LANG_ER_APP_NOTIF2#>";
sg("exchange_rate.dollarrur","");
sg("exchange_rate.eurorur","");
}
else if($file) {
$xml = $file->xpath("//Valute[@ID='R01235']");
$valute = strval($xml[0]->Value);
$dollar = str_replace(",",".",$valute);
sg("exchange_rate.dollarrur",round((float)$dollar,4));

$xml = $file->xpath("//Valute[@ID='R01239']");
$valute = strval($xml[0]->Value);
$euro = str_replace(",",".",$valute);
sg("exchange_rate.eurorur",round((float)$euro,4));
sg("exchange_rate.date2",date("d.m.Y H:i:s"));
}
//Конец парсинга ЦБР

//Начало парсинга ЦБР на вчера
$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("Не удалось обновить курс валют");
$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));

}

//Конец парсинга ЦБР на вчера

// Начало парсинга курсов от Минфин
ini_set("user_agent","MajorDomo-ExchangeRates/0.1");
$file_nbu = file_get_contents('http://api.minfin.com.ua/nbu/434f685ddc ... 3a0/',true);
$file_nbu = json_decode($file_nbu);
if ($file_nbu){
$d=$file_nbu->usd->ask;
sg("exchange_rate.usdnbu",round((float)$d,2));
sg("exchange_rate.euronbu",round((float)$file_nbu->eur->ask,2));
sg("exchange_rate.rurnbu",round((float)$file_nbu->rub->ask,2));
sg("exchange_rate.date3",date("Y-m-d H:i:s"));
}
else{Debmes("Не удалось обновить курс валют");}

// Начало парсинга курсов Нац Банка Казахстана
$url = "http://www.nationalbank.kz/rss/rates_all.xml";
$dataObj = simplexml_load_file($url);
if (false === $dataObj) {
$out["notification4"]="<#LANG_ER_APP_NOTIF2#>";
sg("exchange_rate.kztusd","");
sg("exchange_rate.kzteur","");
Debmes("Не удалось обновить курс валют");
}
else{
foreach ($dataObj->channel->item as $item) {
if ($item->title =='USD') {
sg('exchange_rate.date4',$item->pubDate);
sg('exchange_rate.kztusd',$item->description);
}
if ($item->title =='EUR') {
sg('exchange_rate.date4',$item->pubDate);
sg('exchange_rate.kzteur',$item->description);
}
}
}
// Конец парсинга курсов Нац Банка Казахстана



}

public function admin(&$out) {
libxml_use_internal_errors(true);
$url = 'https://api.privatbank.ua/p24api/pubinf ... coursid=11';
$xml = @simplexml_load_file($url);
if (!$xml) {
$out["notification"]="<#LANG_ER_APP_NOTIF#>";
sg("exchange_rate.eurobuy","");
sg("exchange_rate.eurosale","");
sg("exchange_rate.usdbuy","");
sg("exchange_rate.usdsale","");
sg("exchange_rate.rurbuy","");
sg("exchange_rate.rursale","");
Debmes("Не удалось обновить курс валют");
}
else if (false === $xml) {
$out["notification"]="<#LANG_ER_APP_NOTIF#>";
sg("exchange_rate.eurobuy","");
sg("exchange_rate.eurosale","");
sg("exchange_rate.usdbuy","");
sg("exchange_rate.usdsale","");
sg("exchange_rate.rurbuy","");
sg("exchange_rate.rursale","");
Debmes("Не удалось обновить курс валют");
}
else{
global $eurohr;
if(isset($eurohr)){
$i=0;
//получаем курс евро
foreach($xml->row[1]->exchangerate->attributes() as $key => $exchangerate){
if($i==2){
sg("exchange_rate.eurobuy",round((float)$exchangerate,1));
$out["eurobuy"]=round((float)$exchangerate,1);
}
else if($i==3){
sg("exchange_rate.eurosale",round((float)$exchangerate,1));
$out["eurosale"]=round((float)$exchangerate,1);
}
++$i;
}}


global $usdhr;
if(isset($usdhr)){
//получаем курс доллара
$j=0;
foreach($xml->row[0]->exchangerate->attributes() as $key => $exchangerate){
if($j==2){
sg("exchange_rate.usdbuy",round((float)$exchangerate,1));
$out["usdbuy"]=round((float)$exchangerate,1);
}
else if($j==3){
sg("exchange_rate.usdsale",round((float)$exchangerate,1));
$out["usdsale"]=round((float)$exchangerate,1);
}
++$j;
}}

global $rurhr;
if(isset($rurhr)){
//получаем курс рубля
$k=0;
foreach($xml->row[2]->exchangerate->attributes() as $key => $exchangerate){
if($k==2){
sg("exchange_rate.rurbuy",round((float)$exchangerate,2));
$out["rurbuy"]=round((float)$exchangerate,2);
}
else if($k==3){
sg("exchange_rate.rursale",round((float)$exchangerate,2));
$out["rursale"]=round((float)$exchangerate,2);
}
++$k;
}}
sg("exchange_rate.date1",date("Y-m-d H:i:s"));
$out["date1"]=date("Y-m-d H:i:s");
} //Конец парсинга хмл от ПриватБанка

// Начало парсинга хмл банка России
global $dollarrur,$eurorur;
$file = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp ... ate("d/m/Y"));
if (!$file) {
$out["notification2"]="<#LANG_ER_APP_NOTIF2#>";
sg("exchange_rate.dollarrur","");
sg("exchange_rate.eurorur","");
Debmes("Не удалось обновить курс валют");
}
else if (false === $file) {
$out["notification2"]="<#LANG_ER_APP_NOTIF2#>";
sg("exchange_rate.dollarrur","");
sg("exchange_rate.eurorur","");
Debmes("Не удалось обновить курс валют");
}
else{
if(isset($dollarrur)){
$xml = $file->xpath("//Valute[@ID='R01235']");
$valute = strval($xml[0]->Value);
$dollar = str_replace(",",".",$valute);
sg("exchange_rate.dollarrur",round((float)$dollar,4));
$out["dollarrur"]=round((float)$dollar,4);
$dol = round((float)$dollar,4);
}
if(isset($eurorur)){
$xml = $file->xpath("//Valute[@ID='R01239']");
$valute = strval($xml[0]->Value);
$euro = str_replace(",",".",$valute);
sg("exchange_rate.eurorur",round((float)$euro,4));
$out["eurorur"] = round((float)$euro,4);
$eur = round((float)$euro,4);
}
sg("exchange_rate.date2",date("d.m.Y"));
$out["date2"]=date("d.m.Y");
}
libxml_clear_errors();
libxml_use_internal_errors($use_errors);

// Начало парсинга хмл банка России на вчера
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("Не удалось обновить курс валют");
}
else if (false === $file) {
$out["notification2"]="<#LANG_ER_APP_NOTIF2#>";
sg("exchange_rate.dollarrurold","");
Debmes("Не удалось обновить курс валют");
}
else{
if(isset($dollarrur)){
$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($eurorur)){
$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);

}
$dol = gg("exchange_rate.dollarrur");
$eur = gg("exchange_rate.eurorur");
$dolold = gg("exchange_rate.dollarrurold");
$eurold = gg("exchange_rate.eurorurold");

if ($dol > $dolold){ $rost='1';
}else if ($dol < $dolold){ $rost='2';
}else{ $rost='0';}
sg("exchange_rate.rostdol",$rost);

$deltadol = abs($dol-$dolold);
$deltadol1 = round($deltadol,4);
sg("exchange_rate.deltadol",$deltadol1);

if ($eur > $eurold){ $roste='1';
}else if ($eur < $eurold){ $roste='2';
}else { $roste='0';}
sg("exchange_rate.rosteur",$roste);

$deltaeur = abs($eur-$eurold);
$deltaeur1 = round($deltaeur,4);
sg("exchange_rate.deltaeur",$deltaeur1);

}

libxml_clear_errors();
libxml_use_internal_errors($use_errors);



// Начало парсинга курсов от Минфин
global $euronbu,$usdnbu,$rurnbu;
ini_set("user_agent","MajorDomo-ExchangeRates/0.1");
$file_nbu = file_get_contents('http://api.minfin.com.ua/nbu/434f685ddc ... 3a0/',true);
$file_nbu = json_decode($file_nbu);
if (!$file_nbu) {
$out["notification3"]="<#LANG_ER_APP_NOTIF3#>";
sg("exchange_rate.rurnbu","");
sg("exchange_rate.usdnbu","");
sg("exchange_rate.euronbu","");
}
else{
if(isset($usdnbu)){
$d=$file_nbu->usd->ask;
sg("exchange_rate.usdnbu",round((float)$d,2));
$out["usdnbu"]=round((float)$d,2);
}
if(isset($euronbu)){
sg("exchange_rate.euronbu",round((float)$file_nbu->eur->ask,2));
$out["euronbu"]=round((float)$file_nbu->eur->ask,2);
}
if(isset($rurnbu)){
sg("exchange_rate.rurnbu",round((float)$file_nbu->rub->ask,2));
$out["rurnbu"]=round((float)$file_nbu->rub->ask,2);
}
sg("exchange_rate.date3",date("Y-m-d H:i:s"));
$out["date3"]=date("Y-m-d H:i:s");
}
//Конец парсинга курсов от Минфин

// Начало парсинга курсов Нац Банка Казахстана
global $kztusd,$kzteur;
$url_kz = "http://www.nationalbank.kz/rss/rates_all.xml";
$dataObj = simplexml_load_file($url_kz);
if (!$dataObj or false === $dataObj) {
$out["notification4"]="<#LANG_ER_APP_NOTIF4#>";
sg("exchange_rate.kztusd","");
sg("exchange_rate.kzteur","");
}
else{
foreach ($dataObj->channel->item as $item) {
if ($item->title =='USD') {
sg('exchange_rate.date4',$item->pubDate);
sg('exchange_rate.kztusd',$item->description);
$out["kztusd"]=$item->description;
}
if ($item->title =='EUR') {
sg('exchange_rate.date4',$item->pubDate);
sg('exchange_rate.kzteur',$item->description);
$out["kzteur"]=$item->description;
}
}
}
sg("exchange_rate.date4",date("Y-m-d H:i:s"));
$out["date4"]=date("Y-m-d H:i:s");
// Конец парсинга курсов Нац Банка Казахстана
}




/**
* FrontEnd
*
* Module frontend
*
* @access public
*/
public function usual(&$out) {
$this->admin($out);
}
/**
* Install
*
* Module installation routine
*
* @access private
*/
public function install($data='') {
$className = 'ExchangeRates'; //имя класса
$objectName = array('exchange_rate');//имя обьектов
//$objDescription = array('Курс валют');
$rec = SQLSelectOne("SELECT ID FROM classes WHERE TITLE LIKE '" . DBSafe($className) . "'");

if (!$rec['ID']) {
$rec = array();
$rec['TITLE'] = $className;
$rec['DESCRIPTION'] = "Курс Валют";
$rec['ID'] = SQLInsert('classes', $rec);
}
for ($i = 0; $i < count($objectName); $i++) {
$obj_rec = SQLSelectOne("SELECT ID FROM objects WHERE CLASS_ID='" . $rec['ID'] . "' AND TITLE LIKE '" . DBSafe($objectName[$i]) . "'");
if (!$obj_rec['ID']) {
$obj_rec = array();
$obj_rec['CLASS_ID'] = $rec['ID'];
$obj_rec['TITLE'] = $objectName[$i];
//$obj_rec['DESCRIPTION'] = $objDescription[$i];
$obj_rec['ID'] = SQLInsert('objects', $obj_rec);
}
}

//$this->SetAutoUpdate();
subscribeToEvent($this->name, 'HOURLY'); //событие HOURLY которое совершается раз в час
parent::install();
}

function processSubscription($event_name, $details='') {
if ($event_name=='HOURLY') {
$this->SaveAutoUpdate();
say("Выполняю обновление курсов валют");
}
}

public function uninstall()
{
SQLExec("delete from pvalues where property_id in (select id FROM properties where object_id in (select id from objects where class_id = (select id from classes where title = 'ExchangeRates')))");
SQLExec("delete from properties where object_id in (select id from objects where class_id = (select id from classes where title = 'ExchangeRates'))");
SQLExec("delete from objects where class_id = (select id from classes where title = 'ExchangeRates')");
SQLExec("delete from classes where title = 'ExchangeRates'");

unsubscribeFromEvent($this->name, 'HOURLY');
parent::uninstall();
}
// --------------------------------------------------------------------
}
/*
*
* TW9kdWxlIGNyZWF0ZWQgRmViIDA2LCAyMDE3IHVzaW5nIFNlcmdlIEouIHdpemFyZCAoQWN0aXZlVW5pdCBJbmMgd3d3LmFjdGl2ZXVuaXQuY29tKQ==
*
*/

Да и подскажите как запускать обновление вручную при настройке а то ждать час как-то долговато.

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

Добавлено: Пн дек 03, 2018 3:39 am
Gelezako
adzam, что бы отобразились ваши стрелочки вам надо редактировать ещё файл шаблона. Если хотите самостоятельно их добавить, то вам придётся разобраться с шаблонизатором, который используется в МЖД. Я не понял почему вы ждёте час что бы увидеть обновление. Ваши локальные изменения должны отображаться мгновенно.