Skip to content

Instantly share code, notes, and snippets.

@gryf
Forked from dulek/nbp-rates.py
Last active March 20, 2020 11:22
Show Gist options
  • Select an option

  • Save gryf/023a36839115a16b94218e8450cb3de0 to your computer and use it in GitHub Desktop.

Select an option

Save gryf/023a36839115a16b94218e8450cb3de0 to your computer and use it in GitHub Desktop.
Gets you average NBP rate for given date and currency.
#!/usr/bin/env python
"""
Get exchange rate from NBP service for USD (default) and provided day (or now)
"""
import argparse
from datetime import datetime
import requests
def date_type(string):
try:
datetime.strptime(string, "%Y-%m-%d")
except ValueError:
msg = "Not a valid date: '{0}'.".format(string)
raise argparse.ArgumentTypeError(msg)
return string
def get_exchangerate(date, currency):
url = (f'http://api.nbp.pl/api/exchangerates/rates/a/{currency}/{date}/'
f'?format=json')
response = requests.get(url)
if response.status_code != 200:
return (f'No currency echange found for {date}, or there is a '
f'problem with nbp.pl service '
f'(returned {response.status_code}).')
return response.json()['rates'][0]['mid']
def main():
parser = argparse.ArgumentParser(description='Gets average NBP rate for a '
'given day.')
parser.add_argument('-d', '--date', type=date_type,
default=datetime.now().strftime('%Y-%m-%d'),
help='Date to get the rate - format DD-MM-YYYY. Today'
' by default.')
parser.add_argument('-c', '--currency', default='USD',
help="Currency code (ISO 4217). USD by default")
args = parser.parse_args()
print(get_exchangerate(args.date, args.currency))
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment