Minha solução se baseia em quando a URL informar a quantidade(dinheiro), a moeda de origem e a moeda de destino , automaticamente o valor da conversão será mostrado na construção do objeto(URL).
Abaixo as conversões, inclusive funciona com números decimais também:
Quando a URL não tiver essas informações nada acontecerá:
código:
class ExtratorURL:
def __init__(self, url):
self.url = self.__sanitiza_url(url)
self.__valida_url()
self.__cambio()
#código omitido...
def __cambio(self):
compila_padrao = re.compile('(http(s)?://)?(www.)?(bytebank.com)(.br)?(/cambio)')
match = compila_padrao.match(self.url)
if match:
quantidade = self.pega_valor('quantidade')
dolar = 5.14
if self.pega_valor('moedaOrigem') == 'real':
cambio = float(quantidade.replace(',', '.')) / dolar
return print(f'US${cambio:0.2f}'.replace('.', ','))
if self.pega_valor('moedaOrigem') == 'dolar':
cambio = float(quantidade.replace(',', '.')) * dolar
return print(f'R${cambio:0.2f}'.replace('.', ','))
#código omitido...
Se a moeda de destino for a mesma da origem, a origem tem preferencia e automaticamente o destino é considerado a outra moeda.