#!/usr/bin/python
import sys
import urllib2
import psycopg2
import sys
import ConfigParser
from xml.dom.minidom import parseString
def getText(nodelist):
v = ""
for node in nodelist:
if node.nodeType == node.TEXT_NODE:
v = v + node.data
return v
def getData(elm, tagname):
p = elm.getElementsByTagName(tagname)
return getText(p[0].childNodes)
currency = ("USD", "GBP", "CHF", "JPY")
config = ConfigParser.ConfigParser()
config.read("db.cfg")
try:
PG_HOST = config.get("postgres", "host")
PG_USER = config.get("postgres", "user")
PG_PASSWD = config.get("postgres", "passwd")
PG_DATABASE = config.get("postgres", "database")
except (ConfigParser.NoSectionError, ConfigParser.NoOptionError), e:
print "error: config: %s" % (str(e))
sys.exit(1)
try:
db = psycopg2.connect(host=PG_HOST, user=PG_USER, password=PG_PASSWD, database=PG_DATABASE)
except Exception, e:
print "error: pgsql connect: %s" % (str(e))
sys.exit(1)
if __name__ == "__main__":
if len(sys.argv) < 2:
print "usage: python gengi.py <yyyy-mm-dd>"
sys.exit(1)
dags = sys.argv[1]
fields = dags.split('-')
sdags = fields[2] + "." + fields[1] + "." + fields[0]
f = urllib2.urlopen("http://www.sedlabanki.is/?PageID=289&dagur=" + sdags)
data = f.read()
f.close()
doc = parseString(data)
cursor = db.cursor()
for mynt in doc.getElementsByTagName("mynt"):
myntnafn = getData(mynt, "myntnafn")
if myntnafn not in currency:
continue
kaupgengi = getData(mynt, "kaupgengi")
midgengi = getData(mynt, "midgengi")
solugengi = getData(mynt, "solugengi")
cursor.execute("""
INSERT INTO gengi (
dags,
myntnafn,
kaupgengi,
midgengi,
solugengi)
VALUES (%s,
%s,
%s,
%s,
%s)
""", (dags, myntnafn, kaupgengi, midgengi, solugengi))
db.commit()