Initial checkin

--HG--
branch : sandbox
This commit is contained in:
Andreas
2009-06-24 19:11:31 +00:00
parent e554144922
commit 773d4dfe6c
17 changed files with 2313 additions and 0 deletions

62
src/batch_rename.py Normal file
View File

@@ -0,0 +1,62 @@
""" flatex broker server """
import getopt
import sys
import os
import re
import logging
mylog = logging.getLogger('batch_rename')
class Usage(Exception):
def __init__(self, message):
Exception.__init__(message)
class Error(Exception):
def __init__(self, message):
Exception.__init__(message)
# Star.Trek.The.Next.Generation.1x01-02.Encounter.At.Farpoint.DVDRip-AMC.[tvu.org.ru].avi
# Star Trek TNG - 1x01-2 - Encounter At Farpoint - DVDRip-AMC.divx.avi
def main(argv = None):
if argv == None:
argv = sys.argv
mylog.info("starting [%s]" % (argv[0],))
try:
try:
opts, args = getopt.getopt(argv[1:], "h", ["help"])
print "opts: ", opts, "args:", args
except getopt.error, msg:
raise Usage(msg)
# more code, unchanged
p = re.compile("Star\.Trek\.The\.Next\.Generation.(.*?)\.(.*)\.(DVDRip-.*)\.\[tvu.org.ru\]\.avi")
tng = "e:\\share\\movies\\star trek tng"
os.chdir(tng)
for (dirpath, dirnames, filenames) in os.walk(tng):
for f in filenames:
mot = re.match(p, f)
if mot is not None:
# print mot.group()
print mot.groups()
ver = mot.group(1)
title0 = mot.group(2)
title1 = title0.replace('.', ' ')
nf = "Star Trek TNG - %s - %s - %s.divx.avi" % (ver, title1, mot.group(3))
# os.rename(f, nf)
print 'ren "%s" "%s"' % (f, nf)
except Error, err:
mylog.error(err.message)
return 1
except Usage, err:
mylog.error(err.message)
mylog.error("for help use --help")
return 2
if __name__ == '__main__':
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s',
datefmt='%H:%M:%S')
sys.exit(main())

6
src/ftpget.py Normal file
View File

@@ -0,0 +1,6 @@
from ftplib import FTP
ftp = FTP('ftp.asstr.org') # connect to host, default port
ftp.login() # user anonymous, passwd anonymous@
print ftp.getwelome()
ftp.retrbinary('RETR README', open('README', 'wb').write)

97
src/histogram.py Normal file
View File

@@ -0,0 +1,97 @@
""" walk histogram
"""
import sys
import re
import datetime
mol = re.compile("\S+\s(\S+?)\|.{5}(.{6}).\|(.*)\|(.*)")
def main(argv = None):
if argv == None:
argv = sys.argv
ifn = "e:/livefeed/20070829/GDAXI.csv"
ofn = "e:/eclipse/workspace/filter/var/GDAXI_histogram.csv"
tick_list = [ ]
histogram = { }
print "Converting [%s] to [%s]" % (ifn, ofn)
try:
ifh = open(ifn, "r")
ofh = open(ofn, "w")
except IOError:
print "open [%s] failed" % ifn
return 2
try:
for line in ifh:
tick_list.append(parseCsv(line))
for i in xrange(1, len(tick_list)):
diff = tick_list[i].last - tick_list[i-1].last
key = int( diff * 100 )
if key not in histogram:
histogram[key] = 1
else:
histogram[key] += 1
# for key in sorted(histogram.keys()):
for i in xrange(-1000, 1000):
if i in histogram:
print >> ofh, float(i)/100, ",", histogram[i]
else:
print >> ofh, float(i)/100, ",0"
finally:
ifh.close()
ofh.close()
print "Done."
time_pattern = re.compile("(..):(..):(..).(\d+)")
def parseCsv(line):
flds = line.split(',')
mot = re.match(time_pattern, flds[0])
(hh, mm, ss, ms) = mot.group(1, 2, 3, 4)
time = datetime.time(int(hh), int(mm), int(ss), int(ms)*1000)
# pid = flds[1]
bid = flds[2]
ask = flds[3]
last = flds[4]
return Tick(time, float(bid), float(ask), float(last))
class Tick:
""" VDO helper class """
def __init__(self, ti, bid, ask, last):
self.time = ti
self.bid = bid
self.ask = ask
self.last= last
def __cmp__(self, other):
return cmp(self.time, other.time)
class Roi:
""" VDO helper class """
def __init__(self, buy_time, sell_time, pnl):
self.buy_time = buy_time
self.sell_time = sell_time
self.pnl = pnl
def pnl_per_minute(self):
dt = time_in_minutes(self.sell_time) - time_in_minutes(self.buy_time)
try:
ppm = self.pnl / dt
except ZeroDivisionError:
return self.pnl
return ppm
def __cmp__(self, other):
return cmp(self.pnl_per_minute(), other.pnl_per_minute())
def __repr__(self):
return "%s,%s,%.2f,%.2f" % (self.buy_time, self.sell_time,
self.pnl, self.pnl_per_minute())
def time_in_minutes(ti):
return ti.hour * 60 + ti.minute + float(ti.second) / 60
if __name__ == '__main__':
sys.exit(main(sys.argv))

35
src/pricefeed.py Normal file
View File

@@ -0,0 +1,35 @@
""" pricefeed file filter
*.log: "20070905 09:04:56.841|DE000DB0M091|4.430|4.440"
*.csv: "09:04:56.841,DB0M09,4.430,4.440"
"""
import sys
import re
mol = re.compile("\S+\s(\S+?)\|.{5}(.{6}).\|(.*)\|(.*)")
def main(argv = None):
if argv == None:
argv = sys.argv
if (len(argv) != 2):
print "Usage: filter.py <filename.log>"
return 2
ifn = argv[1]
ofn = "".join((ifn.split(".")[0], ".csv"))
print "Converting [%s] to [%s]" % (ifn, ofn)
try:
ifh = open(ifn, "r")
ofh = open(ofn, "w")
except IOError:
print "open [%s] failed" % ifn
return 2
try:
for line in ifh:
flds = mol.match(line)
print >>ofh, ",".join(flds.groups())
finally:
ifh.close()
ofh.close()
if __name__ == '__main__':
sys.exit(main(sys.argv))

94
src/roimatrix.py Normal file
View File

@@ -0,0 +1,94 @@
""" roi matrix
"""
import sys
import re
import datetime
mol = re.compile("\S+\s(\S+?)\|.{5}(.{6}).\|(.*)\|(.*)")
def main(argv = None):
if argv == None:
argv = sys.argv
ifn = "e:/livefeed/20070829/GDAXI.csv"
ofn = "e:/eclipse/workspace/filter/var/GDAXI_roi.csv"
tick_list = [ ]
roi_list = [ ]
print "Converting [%s] to [%s]" % (ifn, ofn)
try:
ifh = open(ifn, "r")
ofh = open(ofn, "w")
except IOError:
print "open [%s] failed" % ifn
return 2
try:
for line in ifh:
tick_list.append(parseCsv(line))
for (i, buy_tick) in enumerate(tick_list[0::300]):
print buy_tick.time
for sell_tick in tick_list[0::300]:
if (buy_tick > sell_tick):
continue
pnl = ( sell_tick.last - buy_tick.last ) * 25.0 - 11.80
# print buy_tick.last, sell_tick.last, pnl
roi_list.append(Roi(buy_tick.time, sell_tick.time, pnl))
for roi in roi_list:
print >> ofh, str(roi)
finally:
ifh.close()
ofh.close()
print "Done."
time_pattern = re.compile("(..):(..):(..).(\d+)")
def parseCsv(line):
flds = line.split(',')
mot = re.match(time_pattern, flds[0])
(hh, mm, ss, ms) = mot.group(1, 2, 3, 4)
time = datetime.time(int(hh), int(mm), int(ss), int(ms)*1000)
# pid = flds[1]
bid = flds[2]
ask = flds[3]
last = flds[4]
return Tick(time, float(bid), float(ask), float(last))
class Tick:
""" VDO helper class """
def __init__(self, ti, bid, ask, last):
self.time = ti
self.bid = bid
self.ask = ask
self.last= last
def __cmp__(self, other):
return cmp(self.time, other.time)
class Roi:
""" VDO helper class """
def __init__(self, buy_time, sell_time, pnl):
self.buy_time = buy_time
self.sell_time = sell_time
self.pnl = pnl
def pnl_per_minute(self):
dt = time_in_minutes(self.sell_time) - time_in_minutes(self.buy_time)
try:
ppm = self.pnl / dt
except ZeroDivisionError:
return self.pnl
return ppm
def __cmp__(self, other):
return cmp(self.pnl_per_minute(), other.pnl_per_minute())
def __repr__(self):
return "%s,%s,%.2f,%.2f" % (self.buy_time, self.sell_time,
self.pnl, self.pnl_per_minute())
def time_in_minutes(ti):
return ti.hour * 60 + ti.minute + float(ti.second) / 60
if __name__ == '__main__':
sys.exit(main(sys.argv))

52
src/wget_batch.py Normal file
View File

@@ -0,0 +1,52 @@
""" broker quote request recorder engine """
import logging
import getopt
import sys
import datetime
mylog = logging.getLogger()
class Usage(Exception):
def __init__(self, message):
Exception.__init__(message)
class Error(Exception):
def __init__(self, message):
Exception.__init__(message)
def main(argv = None):
if argv == None:
argv = sys.argv
mylog.info("starting [%s]" % (argv[0],))
try:
try:
opts, args = getopt.getopt(argv[1:], "h", ["help"])
print "opts: ", opts, "args:", args
except getopt.error, msg:
raise Usage(msg)
# set up stderr logging
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s',
datefmt='%H:%M:%S')
# main code starts here
ofh = open("e:/install/asstr_get", "w")
for i in xrange(56546,57096):
# print >> ofh, "wget http://www.literotica.com/stories/showstory.php?id=%i" % i
print >> ofh, "wget http://www.asstr.org/files/Collections/Alt.Sex.Stories.Moderated/Year2007/%i" % i
ofh.close()
except Error, err:
mylog.error(err.message)
return 1
except Usage, err:
mylog.error(err.message)
mylog.error("for help use --help")
return 2
if __name__ == '__main__':
sys.exit(main())