Exemplo n.º 1
0
def _otp():
    url = 'https://www.otpbank.com.ua/'
    response = requests.get(url)
    soup = bs(response.content, 'html.parser')
    currency_block = soup.find('tbody', class_='currency-list__body')
    currency_block = currency_block.select("tbody tr")

    for tr_tag in currency_block:
        curr = tr_tag.find('td', class_='currency-list__type').text
        if curr in {'USD', 'EUR'}:
            if curr == 'USD':
                currency = mch.CURR_USD
            else:
                currency = mch.CURR_EUR

            values = tr_tag.findAll('td', class_='currency-list__value')

            rate_kwargs = {
                'currency': currency,
                'buy': Decimal(values[0].text),
                'sale': Decimal(values[1].text),
                'source': mch.SR_OTP
            }

            new_rate = Rate(**rate_kwargs)
            last_rate = Rate.objects.filter(currency=currency,
                                            source=mch.SR_OTP).last()
            save_rate(last_rate, new_rate)
Exemplo n.º 2
0
def _vkurse():
    url = 'http://vkurse.dp.ua/course.json'
    response = requests.get(url)
    r_json = response.json()

    for curr in r_json:
        if curr == 'Dollar':
            currency = mch.CURR_USD
        elif curr == 'Euro':
            currency = mch.CURR_EUR
        else:
            currency = mch.CURR_RUB

        buy = r_json[curr]['buy'].replace(',', '.')
        sale = r_json[curr]['sale'].replace(',', '.')

        rate_kwargs = {
            'currency': currency,
            'buy': Decimal(buy),
            'sale': Decimal(sale),
            'source': mch.SR_VKURSE
        }

        new_rate = Rate(**rate_kwargs)
        last_rate = Rate.objects.filter(currency=currency,
                                        source=mch.SR_VKURSE).last()
        save_rate(last_rate, new_rate)
Exemplo n.º 3
0
def _mono():
    url = 'https://api.monobank.ua/bank/currency'
    response = requests.get(url)
    r_json = response.json()

    if r_json != {'errorDescription': 'Too many requests'}:
        for rate in r_json:
            if (rate['currencyCodeA']
                    in {840, 978, 643}) and (rate['currencyCodeB'] == 980):
                if rate['currencyCodeA'] == 840:
                    currency = mch.CURR_USD
                elif rate['currencyCodeA'] == 978:
                    currency = mch.CURR_EUR
                elif rate['currencyCodeA'] == 643:
                    currency = mch.CURR_RUB

                rate_kwargs = {
                    'currency': currency,
                    'buy': Decimal(str(round(rate['rateBuy'], 3))),
                    'sale': Decimal(str(round(rate['rateSell'], 3))),
                    'source': mch.SR_MONO
                }

                new_rate = Rate(**rate_kwargs)
                last_rate = Rate.objects.filter(currency=currency,
                                                source=mch.SR_MONO).last()
                save_rate(last_rate, new_rate)
Exemplo n.º 4
0
def _oshchad():
    url = 'https://www.oschadbank.ua/ua'
    response = requests.get(url, verify=False)
    soup = bs(response.content, 'html.parser')
    currs = {'USD', 'EUR', 'RUB'}

    for i in currs:
        if i == 'USD':
            currency = mch.CURR_USD
            buy = soup.find('strong', class_='buy-USD').text.strip()
            sale = soup.find('strong', class_='sell-USD').text.strip()
        elif i == 'EUR':
            currency = mch.CURR_EUR
            buy = soup.find('strong', class_='buy-EUR').text.strip()
            sale = soup.find('strong', class_='sell-EUR').text.strip()
        else:
            currency = mch.CURR_RUB
            buy = soup.find('strong', class_='buy-RUB').text.strip()
            sale = soup.find('strong', class_='sell-RUB').text.strip()

        rate_kwargs = {
            'currency': currency,
            'buy': Decimal(buy),
            'sale': Decimal(sale),
            'source': mch.SR_OSHCHAD
        }

        new_rate = Rate(**rate_kwargs)
        last_rate = Rate.objects.filter(currency=currency,
                                        source=mch.SR_OSHCHAD).last()

        save_rate(last_rate, new_rate)
Exemplo n.º 5
0
def _privat():
    url = 'https://api.privatbank.ua/p24api/pubinfo?json&exchange&coursid=5'
    response = requests.get(url)
    r_json = response.json()

    for rate in r_json:
        if rate['ccy'] in {'USD', 'EUR', 'RUR'}:
            if rate['ccy'] == 'USD':
                currency = mch.CURR_USD
            elif rate['ccy'] == 'EUR':
                currency = mch.CURR_EUR
            else:
                currency = mch.CURR_RUB

            rate_kwargs = {
                'currency': currency,
                'buy': Decimal(rate['buy'][:6]),
                'sale': Decimal(rate['sale'][:6]),
                'source': mch.SR_PRIVAT
            }

            new_rate = Rate(**rate_kwargs)
            last_rate = Rate.objects.filter(currency=currency,
                                            source=mch.SR_PRIVAT).last()
            save_rate(last_rate, new_rate)
Exemplo n.º 6
0
def _pumb():
    url = 'https://www.pumb.ua/'
    response = requests.get(url)
    soup = bs(response.content, 'html.parser')
    currency_block = soup.find('div', class_='exchange-rate')
    currency_block = currency_block.select("table tr")
    target_blocks = [currency_block[1], currency_block[2], currency_block[3]]

    for block in target_blocks:
        if block.text.strip().split('\n')[0] == 'USD':
            currency = mch.CURR_USD
        elif block.text.strip().split('\n')[0] == 'EUR':
            currency = mch.CURR_EUR
        else:
            currency = mch.CURR_RUB

        block = block.find_all('td')
        buy = block[1].text
        sale = block[2].text

        rate_kwargs = {
            'currency': currency,
            'buy': Decimal(buy),
            'sale': Decimal(sale),
            'source': mch.SR_PUMB
        }

        new_rate = Rate(**rate_kwargs)
        last_rate = Rate.objects.filter(currency=currency,
                                        source=mch.SR_PUMB).last()

        save_rate(last_rate, new_rate)