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 connmlpdb from import_cds_quotes import insert_cds 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) insert_cds(connmlpdb, workdate.date()) connmlpdb.close()