-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcurrencyList.py
93 lines (78 loc) · 2.82 KB
/
currencyList.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import json
import urllib
import urllib2
import re
import time
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.Utils import COMMASPACE, formatdate
#import calendar
import sys
defaultCurrencyFromList=["USD","GBP"]
defaultCurrencyToList=["INR"]
fromEmail="[email protected]"
bccEmail=""
subject="Currency Exchange Rate Notification"
def makeServiceCall(from_curr,currency):
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
opener.addheaders = [('Accept-Charset', 'utf-8')]
url = "http://markets.ft.com/RESEARCH/Remote/UK/Markets/CurrencyConverter"
params = {'nQuantity':1, 'sCurrencyFrom':from_curr, 'sCurrencyTo': currency}
data = urllib.urlencode(params)
req = urllib2.Request(url, data)
response = json.loads(urllib2.urlopen(req).read())
return response
def send_email(fromAddr, toAddr, bccAddr, subject, body):
toAddrsList = toAddr.split(",")
bccAddrsList = bccAddr.split(",")
msg = MIMEMultipart('alternative')
msgPart = MIMEText(body, 'html')
msg['Subject'] = subject
msg['From'] = fromAddr
msg['To'] = toAddr
msg['BCC'] = bccAddr
msg['Date'] = formatdate(localtime=True)
msg.attach(msgPart)
allAddrsList = toAddrsList + bccAddrsList
s = smtplib.SMTP('localhost')
s.sendmail(fromAddr, allAddrsList, msg.as_string())
s.quit()
def process(toEmail, currencyFromList, currencyToList):
global fromEmail,bccEmail,subject
exchangeTextFrom = "Exchange rate:"
exchangeTextTo = "</div>"
mailMessage = ""
for fromCurr in currencyFromList:
finalFromCurr = fromCurr
for curr in currencyToList:
response = makeServiceCall(fromCurr,curr)
respHtml = response["html"]
exchangeFrom = respHtml.find(exchangeTextFrom)
if exchangeFrom != -1:
finalExchangeFrom = exchangeFrom + len(exchangeTextFrom)
exchangeTo = respHtml.find(exchangeTextTo,exchangeFrom)
if exchangeTo != -1:
exchangeRate = float(respHtml[finalExchangeFrom:exchangeTo])
mailMessage += fromCurr+" to "+curr+" : "+str(exchangeRate)+" <br />\n"
print mailMessage
if mailMessage != "":
send_email(fromEmail, toEmail, bccEmail, subject, mailMessage)
argLen = len(sys.argv)
if argLen == 2:
toEmail = sys.argv[1]
currencyFrom = defaultCurrencyFromList
currencyTo = defaultCurrencyToList
elif argLen == 3:
toEmail = sys.argv[1]
currencyFrom = sys.argv[2].split(",")
currencyTo = defaultCurrencyToList
elif argLen == 4:
toEmail = sys.argv[1]
currencyFrom = sys.argv[2].split(",")
currencyTo = sys.argv[3].split(",")
else:
print "Incorrect number of arguments. Correct usage: python ",sys.argv[0], " toEmail currencyFrom(csv) currencyTo(csv)"
exit(0)
process(toEmail, currencyFrom, currencyTo)