Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/env python
- import sys
- import os
- sys.path.append('/home/mikee/progs/gnucash-maint/lib/python2.7/site-packages')
- import gnucash
- from gnucash import Session, Account, Split
- import gnucash
- import datetime
- from fractions import Fraction
- FILE = "./bare.gnucash"
- url = "xml://"+FILE
- # Read data from file
- f = open('GB00B4PQW151.L')
- data = []
- while 1:
- tmp = f.readline()
- if(len(tmp)<2):
- break
- data.append(tmp)
- f.close()
- stock_date = []
- stock_price = []
- for i in range(1,len(data)):
- year = int(data[i].rsplit(',')[1].rsplit('/')[0])
- month = int(data[i].rsplit(',')[1].rsplit('/')[1])
- day = int(data[i].rsplit(',')[1].rsplit('/')[2])
- stock_date.append(datetime.datetime(year,month,day))
- stock_price.append(float(data[i].rsplit(',')[5]))
- # Initialize Gnucash session
- session = Session(url, True, False, False)
- root = session.book.get_root_account()
- book = session.book
- account = book.get_root_account()
- pdb = book.get_price_db()
- commod_table = book.get_table()
- stock = commod_table.lookup('FUND', 'GB00B4PQW151.L')
- cur = commod_table.lookup('CURRENCY', 'GBP')
- # Add the prices
- pdb = book.get_price_db()
- # Get stock data
- pl = pdb.get_prices(stock,cur)
- if len(pl)<1:
- print 'Need at least one database entry to clone ...'
- pl0 = pl[0]
- for i in range(1,len(pl)):
- pdb.remove_price(pl[i])
- for i in range(0,len(stock_date)):
- p_new = pl0.clone(book)
- p_new = gnucash.GncPrice(instance=p_new)
- print 'Adding',i,stock_date[i],stock_price[i]
- p_new.set_time(stock_date[i])
- v = p_new.get_value()
- v.num = int(Fraction.from_float(stock_price[i]).limit_denominator(100000).numerator)
- v.denom = int(Fraction.from_float(stock_price[i]).limit_denominator(100000).denominator)
- p_new.set_value(v)
- pdb.add_price(p_new)
- # Clean up
- session.save()
- session.end()
- session.destroy()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement