예제 #1
0
파일: rutil.py 프로젝트: oggger/stokbot
#!/usr/bin/python 

import os

import logging
from rlog import ogerlogger
########################################### setup logging primitive
log = ogerlogger('util')
_info  = log.info
_debug = log.debug
_warn  = log.warning
_err   = log.error
_crit  = log.critical

class ogerutil:
    def __init__(self, sid): 
        self.stock_id = sid
        
    def stock_id(self, sid): self.stock_id = sid
    def workingdir(self): return "./data/"
    def dbdir(self): return "./db/"

    def monfile(self, year, month):
        filename = (self.workingdir() + '%s_%04dY_%02dM.DAT' % (self.stock_id, year, month))
        _debug('monfile %s' % filename)
        return filename

    def isDBFileExist(self):
        fn = self.dbfile()
        if os.path.exists(fn):
            return True
예제 #2
0
파일: top.py 프로젝트: oggger/stokbot
import time

import os, sys

from rdownload import ogerdownloader
from rcontext import ogercontext
from rdate import ogerdate
from rhtmlwriter import ogerhtmlwriter
from remail import ogeremail
from rtextdump import ogertxtdump
from rutil import ogerutil

import logging
from rlog import ogerlogger
########################################### setup logging primitive
log = ogerlogger('top')
_info  = log.info
_debug = log.debug
_warn  = log.warning
_err   = log.error
_crit  = log.critical

def usage():
    print '\t./stokbot.py update     : update or init db listed in stok.list'
    print ''

def init(stock_id):
    stock_id = int(stock_id)
    d = ogerdownloader(stock_id)
    d.mergemonfile2db()
    d.gendbfile()
예제 #3
0
파일: rdownload.py 프로젝트: oggger/stokbot
#!/usr/bin/python

import random
import urllib2
import os

from rutil import ogerutil
from rdate import ogerdate

import logging
from rlog import ogerlogger
########################################### setup logging primitive
log = ogerlogger('dl')
_info  = log.info
_debug = log.debug
_warn  = log.warning
_err   = log.error
_crit  = log.critical

class ogerdownloader:
    def __init__(self, sid):
        self.stock_id = sid
        self.u = ogerutil(sid)
        self.d = ogerdate()

    def stock_id(self, sid):
        self.stock_id = sid
        self.u.stock_id(sid)

    ### we download a monthly data file.
    def downloadmonfile(self, y, m):
예제 #4
0
파일: rtextdump.py 프로젝트: oggger/stokbot
import sys

import logging
from rlog import ogerlogger
########################################### setup logging primitive
log = ogerlogger('email')
_info  = log.info
_debug = log.debug
_warn  = log.warning
_err   = log.error
_crit  = log.critical

class ogertxtdump:
    def __init__(self, ctx):
        self.ctx = ctx

    def dump(self, date, totmpfile=False):
        if date not in self.ctx.db:
            _warn('fail to dump. %s not exist' % date)
            return
        if totmpfile:
            f = open(".tmp.dump", "w");
            out = f.write
        else:
            out = sys.stdout.write

        t = len(self.ctx.rfields)
        div = 6
        b = 0
        e = div
        sep = ('+' + '-'*17)*div + '+\n'
예제 #5
0
파일: rcontext.py 프로젝트: oggger/stokbot
import os
import csv
import re
import datetime
import sys
import time
from collections import OrderedDict

from rutil import ogerutil
from rdate import ogerdate
from rdownload import ogerdownloader

import logging
from rlog import ogerlogger
########################################### setup logging primitive
log = ogerlogger('ctx')
_info  = log.info
_debug = log.debug
_warn  = log.warning
_err   = log.error
_crit  = log.critical

class ogercontext:
    fields = { 'AllVol'      : [0,  None], # Trading volume in stock smallest unit
               'TurnOver'    : [1,  None], # TurnOver in value $$
               'Open'        : [2,  None], # openned price
               'High'        : [3,  None], # highest price
               'Low'         : [4,  None], # lowest price
               'Close'       : [5,  None], # closed price
               'Diff'        : [6,  None], # daily difference in +/-
               'Trans'       : [7,  None], # number of transaction