Система для получения курсов валют с официального сайта Центрального Банка России и конвертер валют.Репозиторий пакетаgithub.comdrandin/exchange-rateТребованияВерсия PHP 7.3 и выше.УстановкаДля установки пакета следует выполнить команду:composer require drandin/exchange-rateПолучение курсов валютПример 1. Запрос данных о курсах валют, которые Центробанк России установил на дату 2020–02–19:use CentralBankRussian\ExchangeRate\CBRClient; use CentralBankRussian\ExchangeRate\Exceptions\ExceptionIncorrectData; use CentralBankRussian\ExchangeRate\Exceptions\ExceptionInvalidParameter; use CentralBankRussian\ExchangeRate\ExchangeRate; $exchangeRate = new ExchangeRate(new CBRClient()); try { $currencyRateCollection = $exchangeRate ->setDate(new DateTime('2020-02-19')) ->getCurrencyExchangeRates(); var_dump($currencyRateCollection); } catch (ExceptionIncorrectData | ExceptionInvalidParameter $e) { echo $e->getMessage(); }Результат (фрагмент):object(CentralBankRussian\ExchangeRate\Collections\CurrencyRateCollection)[819] private 'currencyRates' => array (size=35) 'AUD' => object(CentralBankRussian\ExchangeRate\Models\CurrencyRate)[823] private 'name' => string 'Австралийский доллар' (length=39) private 'exchangeRate' => float 42.6046 private 'quantity' => int 1 private 'numericCode' => string '36' (length=2) private 'symbolCode' => string 'AUD' (length=3) 'AZN' => object(CentralBankRussian\ExchangeRate\Models\CurrencyRate)[822] private 'name' => string 'Азербайджанский манат' (length=41) private 'exchangeRate' => float 37.589 private 'quantity' => int 1 private 'numericCode' => string '944' (length=3) private 'symbolCode' => string 'AZN' (length=3) 'GBP' => object(CentralBankRussian\ExchangeRate\Models\CurrencyRate)[824] private 'name' => string 'Фунт стерлингов Соединенного королевства' (length=77) private 'exchangeRate' => float 82.7987 private 'quantity' => int 1 private 'numericCode' => string '826' (length=3) private 'symbolCode' => string 'GBP' (length=3) 'AMD' => object(CentralBankRussian\ExchangeRate\Models\CurrencyRate)[825] private 'name' => string 'Армянский драм' (length=27) private 'exchangeRate' => float 13.327 private 'quantity' => int 100 private 'numericCode' => string '51' (length=2) private 'symbolCode' => string 'AMD' (length=3) 'BYN' => object(CentralBankRussian\ExchangeRate\Models\CurrencyRate)[826] private 'name' => string 'Белорусский рубль' (length=33) private 'exchangeRate' => float 28.931 private 'quantity' => int 1 private 'numericCode' => string '933' (length=3) private 'symbolCode' => string 'BYN' (length=3) ...Пример 2. Запрос данных валюты USD актуальных на дату 2020–07–12:use CentralBankRussian\ExchangeRate\CBRClient; use CentralBankRussian\ExchangeRate\Exceptions\ExceptionIncorrectData; use CentralBankRussian\ExchangeRate\Exceptions\ExceptionInvalidParameter; use CentralBankRussian\ExchangeRate\ExchangeRate; $exchangeRate = new ExchangeRate( new CBRClient() ); try { $currencyRate = $exchangeRate ->setDate(new DateTime('2020-07-12')) ->getCurrencyExchangeRates() ->getCurrencyRateBySymbolCode('AMD'); var_dump($currencyRate); } catch (ExceptionIncorrectData | ExceptionInvalidParameter $e) { echo $e->getMessage(); }В этом примере мы запрашиваем коллекцию курсов валют CurrencyRateCollection и при помощи метода getCurrencyRateBySymbolCode(‘AMD’) получаем элемент коллекции для валюты с символьным кодом AMD (Армянский драм)Результат:object(CentralBankRussian\ExchangeRate\Models\CurrencyRate)[825] private 'name' => string 'Армянский драм' (length=267) private 'exchangeRate' => float 14.6383 private 'quantity' => int 100 private 'numericCode' => string '51' (length=2) private 'symbolCode' => string 'AMD' (length=3)Обратите внимание на свойство quantity. Для валюты Армянский драм quantity равняется 100. Это значит, что 100 армянских драм стоят 14.6383 рублей.Пример 3. Получение курса валюты AMD по отношению к рублю на указанную дату — 2020–09–30:use CentralBankRussian\ExchangeRate\CBRClient; use CentralBankRussian\ExchangeRate\Exceptions\ExceptionIncorrectData; use CentralBankRussian\ExchangeRate\Exceptions\ExceptionInvalidParameter; use CentralBankRussian\ExchangeRate\ExchangeRate; $exchangeRate = new ExchangeRate( new CBRClient() ); try { $rateInRubles = $exchangeRate ->setDate(new DateTime('2020-09-30')) ->getRateInRubles('AMD'); echo $rateInRubles; } catch (ExceptionIncorrectData | ExceptionInvalidParameter $e) { echo $e->getMessage(); }Результат:0.1641Мы получили курс 1 армянского драма в рублях, который Центробанк установил на дату 2020–09–30.Конвертация курсов валютПример конвертации 73 224 долларов США в Евро по курсу, который был актуален 2020–06–10:use CentralBankRussian\ExchangeRate\CBRClient; use CentralBankRussian\ExchangeRate\Exceptions\ExceptionIncorrectData; use CentralBankRussian\ExchangeRate\Exceptions\ExceptionInvalidParameter; use CentralBankRussian\ExchangeRate\ExchangeRate; $exchangeRate = new ExchangeRate( new CBRClient() ); try { $rateInRubles = $exchangeRate ->setDate(new DateTime('2020-09-30')) ->getRateInRubles('AMD'); echo $rateInRubles; } catch (ExceptionIncorrectData | ExceptionInvalidParameter $e) { echo $e->getMessage(); }Результат:65012.8773 224 доллара США соответствуют 65 012.87 евро по курсу Центробанка РФ, который был установлен на дату 2020–06–10.Получение справочника по кодам валютПример 1. Получение перечня ежедневных валют:use CentralBankRussian\ExchangeRate\CBRClient; use CentralBankRussian\ExchangeRate\Exceptions\ExceptionIncorrectData; use CentralBankRussian\ExchangeRate\ReferenceData; $referenceData = new ReferenceData(new CBRClient()); try { $currencyCollection = $referenceData->getCurrencyCodesDaily(); var_dump($currencyCollection); } catch (ExceptionIncorrectData $e) { echo $e->getMessage(); }Результат (фрагмент):object(CentralBankRussian\ExchangeRate\Collections\CurrencyCollection)[819] private 'currencies' => array (size=58) 'AUD' => object(CentralBankRussian\ExchangeRate\Models\Currency)[822] private 'name' => string 'Австралийский доллар' (length=39) private 'nameEng' => string 'Australian Dollar' (length=17) private 'quantity' => int 1 private 'numericCode' => string '36' (length=2) private 'symbolCode' => string 'AUD' (length=3) private 'internalCode' => string 'R01010' (length=6) private 'internalCommonCode' => string 'R01010' (length=6) 'ATS' => object(CentralBankRussian\ExchangeRate\Models\Currency)[818] private 'name' => string 'Австрийский шиллинг' (length=37) private 'nameEng' => string 'Austrian Shilling' (length=17) private 'quantity' => int 1000 private 'numericCode' => string '40' (length=2) private 'symbolCode' => string 'ATS' (length=3) private 'internalCode' => string 'R01015' (length=6) private 'internalCommonCode' => string 'R01015' (length=6) 'AZN' => object(CentralBankRussian\ExchangeRate\Models\Currency)[823] private 'name' => string 'Азербайджанский манат' (length=41) private 'nameEng' => string 'Azerbaijan Manat' (length=16) private 'quantity' => int 1 private 'numericCode' => string '944' (length=3) private 'symbolCode' => string 'AZN' (length=3) private 'internalCode' => string 'R01020A' (length=7) private 'internalCommonCode' => string 'R01020' (length=6) 'GBP' => object(CentralBankRussian\ExchangeRate\Models\Currency)[824] private 'name' => string 'Фунт стерлингов Соединенного королевства' (length=77) private 'nameEng' => string 'British Pound Sterling' (length=22) private 'quantity' => int 1 private 'numericCode' => string '826' (length=3) private 'symbolCode' => string 'GBP' (length=3) private 'internalCode' => string 'R01035' (length=6) private 'internalCommonCode' => string 'R01035' (length=6) 'AON' => object(CentralBankRussian\ExchangeRate\Models\Currency)[825] private 'name' => string 'Ангольская новая кванза' (length=44) private 'nameEng' => string 'Angolan new Kwanza' (length=18) private 'quantity' => int 100000 private 'numericCode' => string '24' (length=2) private 'symbolCode' => string 'AON' (length=3) private 'internalCode' => string 'R01040F' (length=7) private 'internalCommonCode' => string 'R01040' (length=6) 'AMD' => object(CentralBankRussian\ExchangeRate\Models\Currency)[826] private 'name' => string 'Армянский драм' (length=27) private 'nameEng' => string 'Armenia Dram' (length=12) private 'quantity' => int 1000 private 'numericCode' => string '51' (length=2) private 'symbolCode' => string 'AMD' (length=3) private 'internalCode' => string 'R01060' (length=6) private 'internalCommonCode' => string 'R01060' (length=6) 'BYN' => object(CentralBankRussian\ExchangeRate\Models\Currency)[827] private 'name' => string 'Белорусский рубль' (length=33) private 'nameEng' => string 'Belarussian Ruble' (length=17) private 'quantity' => int 1 private 'numericCode' => string '933' (length=3) private 'symbolCode' => string 'BYN' (length=3) private 'internalCode' => string 'R01090B' (length=7) private 'internalCommonCode' => string 'R01090' (length=6) ...Пример 2. Получение перечня ежемесячных валют:use CentralBankRussian\ExchangeRate\CBRClient; use CentralBankRussian\ExchangeRate\Exceptions\ExceptionIncorrectData; use CentralBankRussian\ExchangeRate\ReferenceData; $referenceData = new ReferenceData(new CBRClient()); try { $currencyCollection = $referenceData->getCurrencyCodesMonthly(); var_dump($currencyCollection); } catch (ExceptionIncorrectData $e) { echo $e->getMessage(); }Результат (фрагмент):object(CentralBankRussian\ExchangeRate\Collections\CurrencyCollection)[819] private 'currencies' => array (size=85) 'ALL' => object(CentralBankRussian\ExchangeRate\Models\Currency)[822] private 'name' => string 'Албанский лек' (length=25) private 'nameEng' => string 'Albanian Lek' (length=12) private 'quantity' => int 100 private 'numericCode' => string '8' (length=1) private 'symbolCode' => string 'ALL' (length=3) private 'internalCode' => string 'R01025' (length=6) private 'internalCommonCode' => string 'R01025' (length=6) 'DZD' => object(CentralBankRussian\ExchangeRate\Models\Currency)[818] private 'name' => string 'Алжирский динар' (length=29) private 'nameEng' => string 'Algerian Dinar' (length=14) private 'quantity' => int 100 private 'numericCode' => string '12' (length=2) private 'symbolCode' => string 'DZD' (length=3) private 'internalCode' => string 'R01030' (length=6) private 'internalCommonCode' => string 'R01030' (length=6) 'AOA' => object(CentralBankRussian\ExchangeRate\Models\Currency)[824] private 'name' => string 'Ангольская кванза' (length=33) private 'nameEng' => string 'Angolan Kwanza' (length=14) private 'quantity' => int 100 private 'numericCode' => string '973' (length=3) private 'symbolCode' => string 'AOA' (length=3) private 'internalCode' => string 'R01040E' (length=7) private 'internalCommonCode' => string 'R01040' (length=6) 'ARS' => object(CentralBankRussian\ExchangeRate\Models\Currency)[823] private 'name' => string 'Аргентинское песо' (length=33) private 'nameEng' => string 'Argentine Peso' (length=14) private 'quantity' => int 10 private 'numericCode' => string '32' (length=2) private 'symbolCode' => string 'ARS' (length=3) private 'internalCode' => string 'R01055' (length=6) private 'internalCommonCode' => string 'R01055' (length=6) 'AFN' => object(CentralBankRussian\ExchangeRate\Models\Currency)[825] private 'name' => string 'Афганский афгани' (length=31) private 'nameEng' => string 'Afghanistan Afgani' (length=18) private 'quantity' => int 100 private 'numericCode' => string '971' (length=3) private 'symbolCode' => string 'AFN' (length=3) private 'internalCode' => string 'R01065' (length=6) private 'internalCommonCode' => string 'R01065' (length=6) 'BHD' => object(CentralBankRussian\ExchangeRate\Models\Currency)[826] private 'name' => string 'Бахрейнский динар' (length=33) private 'nameEng' => string 'Bahraini Dinar' (length=14) private 'quantity' => int 1 private 'numericCode' => string '48' (length=2) private 'symbolCode' => string 'BHD' (length=3) private 'internalCode' => string 'R01080' (length=6) private 'internalCommonCode' => string 'R01080' (length=6) 'BOB' => object(CentralBankRussian\ExchangeRate\Models\Currency)[827] private 'name' => string 'Боливийский боливиано' (length=41) private 'nameEng' => string 'Bolivian Boliviano' (length=18) private 'quantity' => int 10 private 'numericCode' => string '68' (length=2) private 'symbolCode' => string 'BOB' (length=3) private 'internalCode' => string 'R01105' (length=6) private 'internalCommonCode' => string 'R01105' (length=6) ...Свойства модели CurrencyRateМодель CentralBankRussian\ExchangeRate\Models\CurrencyСвойства модели CurrencyМодель CentralBankRussian\ExchangeRate\Models\CurrencyСсылка на описание web-сервиса ЦБ РФwww.cbr.ruВеб-сервис для получения ежедневных данных (курсы валют, учетные цены драг. металлов и другие) | Банк России#PHP #IT #центробанк #цб
Надо глянуть позже поближе. На python пробовал. На пыхе пока нет.
На питоне удачно?
Хотел добавить совсем простой php-вариант выгрузки курса на сайт, но, оказывается, код нельзя сюда вставлять (
А нет подобной библиотеки только для драгметаллов?