コード例 #1
0
def render_defaults(feedback):
    defaults, types = plumb.GetDefaults(False)
    tradier_key_warning = ""
    if ("tradier key" in defaults):
        if (defaults['tradier key'] == ""
                or defaults['tradier key'] == "demo"):
            tradier_key_warning = "Remember to obtain your lifetime API key from tradier, this is needed for getting the market calendar and quotes"
    IEX_key_warning = ""
    if ("IEX key" in defaults):
        if (defaults['IEX key'] == "" or defaults['IEX key'] == "demo"):
            IEX_key_warning = "Remember to obtain your lifetime API key from IEX cloud, this is needed for getting company ticker information"
    coin_key_warning = ""
    if ("coin key" in defaults):
        if (defaults['coin key'] == "" or defaults['coin key'] == "demo"):
            coin_key_warning = "Remember to obtain your lifetime API key from coin market cap, this is needed for getting cryptocoin information"
    table, column_options, name_options, folder_options = plumb.PrintDefaults(
        False)
    hide_folder = ""
    if (name_options == ""):
        hide_folder = "hidden"
    notes, initialize_day = plumb.GetAIMNotes(10, False)
    if os.name == 'nt':
        pid = plumb.get_pid("poll_stocks.py")
    else:
        pid = plumb.get_pid("folder_daemon.py")
    daemon_check = ""
    daemon_color = "green;"
    daemon_action = ""
    if (pid == []):
        daemon_check = "WARNING: stock polling is not running, your stocks are not updating, please start"
        daemon_color = "red;"
        daemon_action = "start"
    else:
        daemon_check = "stock polling is running on pid: {0}".format(pid[0])
        daemon_action = "restart"
    daemon_table, status = plumb.PrintDaemon("all", False)
    daemon_info = ""
    checkOpen = plumb.Holiday(False)
    if checkOpen:
        if (checkOpen['status'] == "closed"):
            daemon_info = checkOpen['description']
        else:
            daemon_info = "{0}, Last active status: {1}".format(
                checkOpen['description'], status)
    return (render_template('defaults.html',
                            table=table,
                            feedback=feedback,
                            column_options=column_options,
                            notes=notes,
                            daemon_table=daemon_table,
                            daemon_check=daemon_check,
                            daemon_color=daemon_color,
                            daemon_info=daemon_info,
                            daemon_action=daemon_action,
                            name_options=name_options,
                            folder_options=folder_options,
                            hide_folder=hide_folder,
                            tradier_key_warning=tradier_key_warning,
                            IEX_key_warning=IEX_key_warning,
                            coin_key_warning=coin_key_warning))
コード例 #2
0
def do_something(verbose):
    start = True
    log = {}
    log['status'] = "start"
    log['pid'] = os.getpid()
    log['working directory'] = os.getcwd()
    log['username'] = getpass.getuser()
    log['script'] = os.path.basename(__file__)[:-3]
    plumb.LogDaemon(log, verbose)
    plumb.Holiday(verbose)
    while True:
        defaults, types = plumb.GetDefaults(verbose)
        dm = 0
        if (defaults['poll minutes'] is None):
            dm = 10
        else:
            dm = defaults['poll minutes']
        df = ""
        if (defaults['folder name'] is None):
            log['status'] = 'error'
            log['content'] = "folder name is missing in defaults, cannot continue"
            plumb.LogDaemon(log, verbose)
            break
        else:
            df = plumb.GetDB(False)
        log['poll minutes'] = dm
        log['dbase name'] = df
        market_open = False
        if plumb.DayisOpen(False) and (not plumb.DayisClosed(False)):
            market_open = True
            log['open'] = defaults['open']
            log['final poll'] = time.ctime()
            log['status'] = 'wake'
            plumb.LogDaemon(log, False)
        else:
            log['status'] = 'closed'
            plumb.LogDaemon(log, verbose)
        log['status'] = 'sleep'
        plumb.LogDaemon(log, verbose)

        result, resultError, exceptionError = price_poll(
            True, verbose)  # always poll because crypto is open 24/7
        if not result:
            if resultError > "":
                log['status'] = 'error'
                log['content'] = resultError
                plumb.LogDaemon(log, verbose)
            if exceptionError > "":
                log['status'] = 'exception'
                log['content'] = exceptionError
                plumb.LogDaemon(log, verbose)
        else:
            log['status'] = 'success'
            plumb.LogDaemon(log, verbose)

        time.sleep(dm * 60)
コード例 #3
0
def main(argv):
    verbose = False
    test = False
    quote = ""
    symbol = ""
    key = ""
    item = ""
    printout = False
    zap = False
    log = ""
    when = False
    get = False
    run = False
    daemon = False
    kill = False
    crypto = False
    try:
        opts, args = getopt.getopt(argv, "rdkgwl:zcpi:k:hvts:q:", [
            "help", "verbose", "test", "quote=", "key=", "symbol=", "item=",
            "print", "zap", "log=", "when", "get", "run", "daemon", "kill",
            "crypto"
        ])
    except getopt.GetoptError as err:
        print(err)
        usage()
        sys.exit(2)
    for o, a in opts:
        if o in ("-v", "--verbose"):
            verbose = True
        elif o in ("-t", "--test"):
            test = True
        elif o in ("-g", "--get"):
            get = True
        elif o in ("-r", "--run"):
            run = True
        elif o in ("-d", "--daemon"):
            daemon = True
        elif o in ("-c", "--crypto"):
            crypto = True
        elif o in ("-k", "--kill"):
            kill = True
        elif o in ("-w", "--when"):
            when = True
        elif o in ("-z", "--zap"):
            zap = True
        elif o in ("-p", "--print"):
            printout = True
        elif o in ("-h", "--help"):
            usage()
            exit()
        elif o in ("-i", "--item"):
            item = a
        elif o in ("-q", "--quote"):
            quote = a.upper()
        elif o in ("-s", "--symbol"):
            symbol = a.upper()
        elif o in ("-k", "--key"):
            key = a
        elif o in ("-l", "--log"):
            log = a.lower()
        else:
            assert False, "unhandled option"
    if (test):
        testResult = plumb.TestDefaults(False, verbose)
        print(testResult)
        exit()
    if (key > "" and item > ""):
        if item > "":
            result = plumb.UpdateDefaultItem(key, item, verbose)
            if (result):
                print("saved.")
            else:
                print("failed.")
        else:
            print("you must use --item switch with the --key switch")
        exit()
    if (quote > "" and not crypto):
        quoteResult = plumb.QuoteTradier(quote, verbose)
        pprint.pprint(quoteResult)
        exit()
    if (symbol > "" and not crypto):
        companyResult = plumb.Company(symbol, verbose)
        pprint.pprint(companyResult)
        exit()
    if (quote > "" and crypto):
        quoteResult = plumb.QuoteCrypto(quote, verbose)
        pprint.pprint(quoteResult)
        exit()
    if (symbol > "" and crypto):
        companyResult = plumb.CryptoCompany(symbol, verbose)
        pprint.pprint(companyResult)
        exit()
    if (printout):
        printResult, column_options, name_options, folder_options = plumb.PrintDefaults(
            verbose)
        pprint.pprint(printResult)
        pprint.pprint(column_options)
        pprint.pprint(folder_options)
        pprint.pprint(name_options)
        exit()
    if (zap):
        endResult = plumb.ResetDefaults(verbose)
        if (endResult):
            print("saved.")
        else:
            print("failed.")
        exit()
    if (run):
        if os.name == 'nt':
            runResult = plumb.run_script("poll_stocks.py")
        else:
            runResult = plumb.run_script("./folder_daemon.py")
        exit()
    if (daemon):
        if os.name == 'nt':
            checkResult = plumb.get_pid("poll_stocks.py")
        else:
            checkResult = plumb.get_pid("folder_daemon.py")
        if (checkResult != []):
            log = "stock polling app is running at pid: {0}".format(
                checkResult)
            print(log)
        else:
            print("stock polling app is not running")
        exit()
    if (kill):
        if os.name == 'nt':
            checkResult = plumb.get_pid("poll_stocks.py")
        else:
            checkResult = plumb.get_pid("folder_daemon.py")
        if (checkResult != []):
            plumb.kill_pid(checkResult[0])
        else:
            print("stock polling app is not running")
        exit()
    if (log > ""):
        logResult, status = plumb.PrintDaemon(log, verbose)
        if (logResult > ""):
            pprint.pprint(logResult)
        else:
            print("failed.")
        print("last status: {0}".format(status))
        exit()
    if (when):
        whenResult = plumb.Holiday(verbose)
        if (whenResult):
            pprint.pprint(whenResult)
        else:
            print("failed.")
        exit()
    if (get):
        getResult, types = plumb.GetDefaults(verbose)
        if (getResult):
            pprint.pprint(getResult)
        else:
            print("failed.")
        exit()
    usage()
コード例 #4
0
ファイル: folder_daemon.py プロジェクト: tonylom3/mark-plumb
def do_something():
    start = True
    log = {}
    log['status'] = "start"
    log['pid'] = os.getpid()
    log['working directory'] = os.getcwd()
    log['username'] = getpass.getuser()
    log['script'] = os.path.basename(__file__)[:-3]
    filename = "/tmp/{0}_{1}.txt".format(log['username'], log['script'])
    log['filename'] = filename
    plumb.LogDaemon(log, False)
    plumb.Holiday(False)
    while True:
        defaults, types = plumb.GetDefaults(False)
        dm = 0
        if (defaults['poll minutes'] is None):
            dm = 10
        else:
            dm = defaults['poll minutes']
        df = ""
        if (defaults['folder name'] is None):
            log['status'] = 'error'
            log['content'] = "folder name is missing in defaults, cannot continue"
            with open(filename, "a") as f:
                f.write("pid: {0}, error: {1}, continuing".format(log['pid'], log['content']))
            plumb.LogDaemon(log, False)
            break
        else:
            df = plumb.GetDB(False)
        log['poll minutes'] = dm
        log['dbase name'] = df
        if plumb.DayisOpen(False) and (not plumb.DayisClosed(False)):
            log['open'] = defaults['open']
            log['final poll'] = time.ctime()
            log['status'] = 'wake'
            plumb.LogDaemon(log, False)
            result, resultError, exceptionError = price_poll()
            if not result:
                if resultError > "":
                    log['status'] = 'error'
                    log['content'] = resultError
                    plumb.LogDaemon(log, False)
                    with open(filename, "a") as f:
                        f.write("pid: {0}, error: {1}, continuing".format(log['pid'], resultError))
                if exceptionError > "":
                    log['status'] = 'exception'
                    log['content'] = exceptionError
                    plumb.LogDaemon(log, False)
                    with open(filename, "a") as f:
                        f.write("pid: {0}, exception: {1}, continuing".format(log['pid'], exceptionError))
            else:
                log['status'] = 'success'
                plumb.LogDaemon(log, False)
                with open(filename, "w") as f:
                    f.write("pid: {0}, {1} updated on: {2}. (sleeping for {3} minutes)".format(log['pid'], df, time.ctime(), dm))
        else:
            log['status'] = 'closed'
            plumb.LogDaemon(log, False)
            with open(filename, "w") as f:
                f.write("pid: {0}, now: {1}, open: {2}".format(log['pid'], time.ctime(), defaults['open']))
        log['status'] = 'sleep'
        plumb.LogDaemon(log, False)
        time.sleep(dm * 60)