diff --git a/currency_converter.py b/currency_converter.py new file mode 100644 index 0000000..0c23ba3 --- /dev/null +++ b/currency_converter.py @@ -0,0 +1,242 @@ +#Below is not my code. I wanted to try and reverse engineer someone elses. +# +#http://www.codecoms.com/2014/09/Currency-Converter-in-Python/ + +#!/usr/bin/python +import sys, os, os.path, urllib2, re, cookielib, time, datetime, locale + +file = 'conv_rates.txt' #file containing the exchange rates + +locale.setlocale( locale.LC_ALL, '' ) + +def check_file(file): + #check that the file exists and it's not empty + if os.path.exists(file) == False or os.stat(file).st_size == 0: + grab_web_rates() + + #check that the file is no more than 24 hours old + if time.time() - os.path.getmtime(file) > 86400: #file older than 24 hours + #grab the currency exchange data form the internet + grab_web_rates() + else: #file is up to date + return create_exchange_dict() + +def create_exchange_dict(): + exchange_rates_dict = {} + conversion_rates = open (file, 'r') #open file read only + + for line in conversion_rates: + exchange_rates_dict[line.split(",")[0]] = line.split(",")[1] + + conversion_rates.close() + return exchange_rates_dict + +def grab_web_rates(): + conversion_rates = open (file, 'w') + web = urllib2.urlopen('http://www.x-rates.com/table/?from=USD') + html = web.read() + line = 1 + titles = re.findall(r' + ', html) + for title in titles: + title = title.replace("amp;to=", "") + title = title.replace("&", "-") + title = title.replace("'>", ",") + title = title.replace("", " ") + title = title.replace(" ", "") + title = title.rstrip() + conversion_rates.write(title + ' \n') + line += 1 + if line >= 23: + break + conversion_rates.close() + +def get_result(choice, amount): + dict = create_exchange_dict() + for exchange,rate in dict.items(): + if exchange == choice: + result = amount * float(rate) + return rate, result + break + else: + error = "Exchange not found! -get_result()- " + +def format_currency(value): + return "{:,.2f}".format(value) + +def checkChoice(choice): + if str.isdigit(choice): #check that the selection is a digit or exit + return True + else: + os.system('clear') + print "Thanks for using Currency Calculator! \n" + exit() + +def main(): + os.system('clear') + print ''' + Chose the Conversion: + 1. US Dollar -> Euro + 2. Euro -> US Dollar + 3. US Dollar -> British Pound + 4. British Pound -> US Dollar + 5. US Dollar -> Canadian Dollar + 6. Canadian Dollar -> US Dollar + 7. US Dollar -> Chines Yuan + 8. Chines Yuan -> US Dollar + 9. US Dollar -> Peso Argentino + 10. Peso Argentino -> US Dollar + 0. Exit + ''' + choice = raw_input("\t") + + checkChoice(choice) + choice = int(choice) + + #Exit script if the selection is not whithin the allowed range + if choice == 0 or choice > 10: + os.system('clear') + print "Thanks for using Currency Calculator! \n" + exit() + + while choice != 0: + check_file(file) + amount = raw_input("Amount: ") + + #Strips commas if found + if ',' in amount: + amount = ''.join(e for e in amount if e.isdigit() or e == '.') + amount = float(amount) + else: + amount = float(amount) + + if choice == 1: #USD->Euro + os.system('clear') + choice = "USD-EUR" + r = get_result(choice, amount) + result = r[1] + rate = r[0] + e=u'\u20ac' #euro symbol + amount = locale.currency( amount, grouping=True ) + print "Your amount (USD): ", amount + print "Converts to (EUR): ", e, format_currency(result) + print "The Euro (EUR) -> US Dollar exchange rate is: ", rate + break + + elif choice == 2: #EURO->USD + os.system('clear') + choice = "EUR-USD" + r = get_result(choice, amount) + result = r[1] + rate = r[0] + e=u'\u20ac' #euro symbol + amount = format_currency(amount) + print "Your amount (EUR): ", e, amount + print "Converts to (USD): ", locale.currency(result, grouping=True) + print "The US Dollar -> Euro (EUR) exchange rate is: ", rate + break + + elif choice == 3: #GBP->USD + choice = "USD-GBP" + os.system('clear') + r = get_result(choice, amount) + result = r[1] + rate = r[0] + e = u'\xA3' #British Pound symbol + amount = locale.currency( amount, grouping=True ) + print "Your amount (USD): ", amount + print "Converts to (GBP): ", e, format_currency(result) + print "The US Dollar -> British Pound (GBP) exchange rate is: ", rate + break + + elif choice == 4: #USD->GBP + choice = "GBP-USD" + os.system('clear') + r = get_result(choice, amount) + result = r[1] + rate = r[0] + e = u'\xA3' #British Pound symbol + amount = format_currency(amount) + print "Your amount (GBP): ", e, amount + print "Converts to (USD): ", locale.currency(result, grouping=True ) + print "The British Pound (GBP) -> US Dollar exchange rate is: ", rate + break + + elif choice == 5: #CAD->USD + choice = "USD-CAD" + os.system('clear') + r = get_result(choice, amount) + result = r[1] + rate = r[0] + amount = locale.currency( amount, grouping=True ) + result = locale.currency( result, grouping=True ) + print "Your amount (USD): ", amount + print "Converts to (CAD): ", result + print "The US Dollar -> Canadian Dollar (CAD) exchange rate is: ", rate + break + + elif choice == 6: #USD->CAD + choice = "CAD-USD" + os.system('clear') + r = get_result(choice, amount) + result = r[1] + rate = r[0] + amount = locale.currency( amount, grouping=True ) + result = locale.currency( result, grouping=True ) + print "Your amount (CAD): ", amount + print "Converts to (USD): ", result + print "The Canadian Dollar (CAD) -> US Dollar exchange rate is: ", rate + break + + elif choice == 7: #USD->CNY + choice = "USD-CNY" + os.system('clear') + r = get_result(choice, amount) + result = r[1] + rate = r[0] + amount = locale.currency( amount, grouping=True ) + print "Your amount (CNY): ", amount + print "Converts to Yuan (USD): " , format_currency(result) + print "The US Dollar -> Chinese Yuan (CNY) exchange rate is: ", rate + break + + elif choice == 8: #CNY->USD + choice = "CNY-USD" + os.system('clear') + r = get_result(choice, amount) + result = r[1] + rate = r[0] + print "Your amount (CNY): ", format_currency(amount) + print "Converts to Yuan (USD): " , locale.currency( result, grouping=True ) + print "The Chinese Yuan (CNY) -> US Dollar exchange rate is: ", rate + break + + elif choice == 9: #USD->ARS + choice = "USD-ARS" + os.system('clear') + r = get_result(choice, amount) + result = r[1] + rate = r[0] + amount = locale.currency( amount, grouping=True ) + print "Your amount (USD): ", amount + print "Converts in Peso Argentino (ARS): " , format_currency(result) + print "The US Dollar -> Peso Argentino (ARS) exchange rate is: ", rate + break + + elif choice == 10: #ARS->USD + choice = "ARS-USD" + os.system('clear') + r = get_result(choice, amount) + result = r[1] + rate = r[0] + print "Your amount (ARS): ", format_currency(amount) + print "Converts to US Dollar (USD): " , locale.currency(result, grouping=True) + print "The Peso Argentino (ARS) -> US Dollar exchange rate is: ", rate + break + + elif choice > 10: + exit() + break + +#execution +main()