import requests from common import root import os import csv import sys import zipfile, io import shutil import pandas as pd from pandas.tseries.offsets import BDay from db import serenitasdb from import_quotes import insert_cds, insert_index from sqlalchemy import create_engine def convertToNone(v): return v if v else None def download_cds_data(payload): r = requests.get('https://www.markit.com/export.jsp', params=payload) f2 = open(os.path.join(root, "Tranche_data", "CDS", "cds eod {0}.csv".format(payload['date'])), "wb") with zipfile.ZipFile(io.BytesIO(r.content)) as z: for f in z.namelist(): if "csv" in f: f1 = z.open(f) next(f1) next(f1) shutil.copyfileobj(f1, f2) f1.close() f2.close() def download_composite_data(payload): for report in ['COMPOSITES', 'TRANCHE_COMPOSITES']: for family in ['CDX', 'ITRAXX-EUROPE']: payload.update({'family': family, 'report': report}) r = requests.get('https://www.markit.com/export.jsp', params=payload) try: with zipfile.ZipFile(io.BytesIO(r.content)) as z: for f in z.namelist(): if "csv" in f: z.extract(f, path=os.path.join(root, "Tranche_data", "Composite_reports")) except zipfile.BadZipfile: print(r.content) continue if __name__=="__main__": if len(sys.argv) > 1: workdate = pd.datetime.strptime(sys.argv[1], "%Y-%m-%d") else: workdate = pd.datetime.today()-BDay(1) strworkdate = pd.datetime.strftime(workdate, "%Y%m%d") payload = {'user': 'GuillaumeHorel', 'password': 'password', 'version': '5', 'format': 'csv', 'report': 'FIXED_COUPON', 'date': strworkdate, 'type': 'CDS'} download_cds_data(payload) payload.update({'type':'CredIndex','version':4}) download_composite_data(payload) engine = create_engine('postgresql://serenitas_user@debian/serenitasdb') insert_cds(serenitasdb, workdate.date()) insert_index(engine, workdate.date()) serenitasdb.close()