Browse Source

qhp-hap-transfer: blacklisting

master
Denis Tereshkin 5 years ago
parent
commit
4fbe2e766c
  1. 44
      qhp-hap-transfer.py

44
qhp-hap-transfer.py

@ -8,7 +8,7 @@ import json
import csv import csv
import datetime import datetime
import struct import struct
import termcolor import re
from pytz import timezone from pytz import timezone
def sec_from_period(period): def sec_from_period(period):
@ -147,6 +147,24 @@ def convert_ticker(s, data):
else: else:
return s return s
def load_blacklist(filename):
result = []
with open(filename, 'r') as f:
lines = f.readlines()
for line in lines:
line = line.strip()
if line != "":
result.append(re.compile(line))
return result
def allow_ticker(blacklist, ticker):
for rx in blacklist:
if rx.match(ticker):
return False
return True
def main(): def main():
parser = argparse.ArgumentParser(description='QHP-HAP transfer agent') parser = argparse.ArgumentParser(description='QHP-HAP transfer agent')
parser.add_argument('-q', '--qhp', action='store', dest='qhp', help='QHP endpoint', required=True) parser.add_argument('-q', '--qhp', action='store', dest='qhp', help='QHP endpoint', required=True)
@ -156,6 +174,7 @@ def main():
parser.add_argument('-p', '--period', action='store', dest='period', help='Timeframe', required=True) parser.add_argument('-p', '--period', action='store', dest='period', help='Timeframe', required=True)
parser.add_argument('-d', '--time-delta', action='store', dest='time_delta', help='Add given time delta (in seconds)') parser.add_argument('-d', '--time-delta', action='store', dest='time_delta', help='Add given time delta (in seconds)')
parser.add_argument('-z', '--timezone', action='store', dest='timezone', help='Timezone') parser.add_argument('-z', '--timezone', action='store', dest='timezone', help='Timezone')
parser.add_argument('-b', '--blacklist-file', action='store', dest='blacklist_file', help='File with blacklisted tickers')
args = parser.parse_args() args = parser.parse_args()
@ -178,18 +197,27 @@ def main():
timedelta = datetime.timedelta(seconds=0) timedelta = datetime.timedelta(seconds=0)
if args.time_delta is not None: if args.time_delta is not None:
timedelta = datetime.timedelta(seconds=int(args.time_delta)) timedelta = datetime.timedelta(seconds=int(args.time_delta))
blacklist = []
if args.blacklist_file is not None:
blacklist = load_blacklist(args.blacklist_file)
max_retries = 3 max_retries = 3
for ticker in tickers: for ticker in tickers:
for trynum in range(0, max_retries): for trynum in range(0, max_retries):
print("Requesting ticker from QHP: {}".format(ticker)) if allow_ticker(blacklist, ticker):
data = get_data(qhp, ticker, start_time, end_time, args.period, tz, timedelta) print("Requesting ticker from QHP: {}".format(ticker))
if data is not None: data = get_data(qhp, ticker, start_time, end_time, args.period, tz, timedelta)
if len(data) > 0: if data is not None:
upload_data(hap, data, convert_ticker(ticker, data), args.period) if len(data) > 0:
break upload_data(hap, data, convert_ticker(ticker, data), args.period)
break
else:
print("Timeout, retry {} of {}".format(trynum + 1, max_retries))
else: else:
print("Timeout, retry {} of {}".format(trynum + 1, max_retries)) print("Skipping blacklisted ticker: {}".format(ticker))
if __name__ == '__main__': if __name__ == '__main__':
main() main()

Loading…
Cancel
Save