69 lines
2.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import requests, re, json, os
from bs4 import BeautifulSoup
# Config
Ali1USDPageURL = os.environ.get('ALI1USD_PAGE_URL', 'https://aliexpress.ru/item/32892046259.html')
CBRFApiSiteURL = os.environ.get('CBRF_APISITE_URL', 'https://www.cbr-xml-daily.ru/daily_json.js')
MetricServerURL = os.environ.get('METRIC_SERVER_URL', 'http://192.168.0.100:8428/')
KursAli = ""
KursCBRF = ""
# Ali
site = requests.get(Ali1USDPageURL)
if (site.status_code != 200):
print("Ali request error: " + str(site.status_code))
exit()
soup = BeautifulSoup(site.content, "html.parser")
tmpstring = " "*20
for tag in soup.find_all("div"):
if "руб." in tag.text:
if len(tmpstring) > len(tag.text):
tmpstring = tag.text
print(tmpstring)
KursAli = (''.join(x for x in tmpstring if (x.isdigit() or x == ','))).replace(',','.')
print("Курс Ali: " + KursAli)
# ЦБ РФ
site = requests.get(CBRFApiSiteURL)
if (site.status_code != 200):
print("Kurs request error: " + str(site.status_code))
exit()
KursCBRF = str(json.loads(site.text)["Valute"]["USD"]["Value"])
print("Курс ЦБ РФ: " + KursCBRF)
print("Разница Ali и CBRF", round(max(float(KursAli), float(KursCBRF)) - min(float(KursAli), float(KursCBRF)), 2))
# Send metrics ↓
url = MetricServerURL + 'api/v1/import/csv?format=1:label:source,2:metric:exchange_usd_rub'
if KursCBRF != '':
x = requests.post(url, "Central Bank Of Russia," + KursCBRF)
if (x.status_code != 200 and x.status_code != 204):
print("Не удалось отправить метрику: " + str(x.status_code))
else:
print("Курс ЦБ РФ пуст")
if KursAli != '':
x = requests.post(url, "AliExpress," + KursAli)
if (x.status_code != 200 and x.status_code != 204):
print("Не удалось отправить метрику: " + str(x.status_code))
else:
print("Курс Али пуст")
if KursCBRF != '' and KursAli != '':
x = requests.post(url, "Diff Ali CBRF," + str(round(max(float(KursAli), float(KursCBRF)) - min(float(KursAli), float(KursCBRF)), 2)))
if (x.status_code != 200 and x.status_code != 204):
print("Не удалось отправить метрику: " + str(x.status_code))
else:
print("Один из курсов пуст")