from tiingo import TiingoClient
from sp500 import *
import pandas as pd

class clsfunctions():
    def getTicker(self,i):
        tickers = [
'A',
'AAL',
'AAP',
'AAPL',
'ABBV',
'ABC',
'ABMD',
'ABT',
'ACN',
'ADBE',
'ADI',
'ADM',
'ADP',
'ADS',
'ADSK',
'AEE',
'AEP',
'AES',
'AFL',
'AGN',
'AIG',
'AIV',
'AIZ',
'AJG',
'AKAM',
'ALB',
'ALGN',
'ALK',
'ALL',
'ALLE',
'ALXN',
'AMAT',
'AMCR',
'AMD',
'AME',
'AMG',
'AMGN',
'AMP',
'AMT',
'AMZN',
'ANET',
'ANSS',
'ANTM',
'AON',
'AOS',
'APA',
'APC',
'APD',
'APH',
'APTV',
'ARE',
'ARNC',
'ATO',
'ATVI',
'AVB',
'AVGO',
'AVY',
'AWK',
'AXP',
'AZO',
'BA',
'BAC',
'BAX',
'BBT',
'BBY',
'BDX',
'BEN',
'BHGE',
'BIIB',
'BK',
'BKNG',
'BLK',
'BLL',
'BMY',
'BR',
'BSX',
'BWA',
'BXP',
'C',
'CAG',
'CAH',
'CAT',
'CB',
'CBOE',
'CBRE',
'CBS',
'CCI',
'CCL',
'CDNS',
'CE',
'CELG',
'CERN',
'CF',
'CFG',
'CHD',
'CHRW',
'CHTR',
'CI',
'CINF',
'CL',
'CLX',
'CMA',
'CMCSA',
'CME',
'CMG',
'CMI',
'CMS',
'CNC',
'CNP',
'COF',
'COG',
'COO',
'COP',
'COST',
'COTY',
'CPB',
'CPRI',
'CPRT',
'CRM',
'CSCO',
'CSX',
'CTAS',
'CTL',
'CTSH',
'CTVA',
'CTXS',
'CVS',
'CVX',
'CXO',
'D',
'DAL',
'DD',
'DE',
'DFS',
'DG',
'DGX',
'DHI',
'DHR',
'DIS',
'DISCA',
'DISCK',
'DISH',
'DLR',
'DLTR',
'DOV',
'DRE',
'DRI',
'DTE',
'DUK',
'DVA',
'DVN',
'DXC',
'EA',
'EBAY',
'ECL',
'ED',
'EFX',
'EIX',
'EL',
'EMN',
'EMR',
'EOG',
'EQIX',
'EQR',
'ES',
'ESS',
'ETFC',
'ETN',
'ETR',
'EVRG',
'EW',
'EXC',
'EXPD',
'EXPE',
'EXR',
'F',
'FANG',
'FAST',
'FB',
'FBHS',
'FCX',
'FDX',
'FE',
'FFIV',
'FIS',
'FISV',
'FITB',
'FL',
'FLIR',
'FLS',
'FLT',
'FMC',
'FOX',
'FOXA',
'FRC',
'FRT',
'FTI',
'FTNT',
'FTV',
'GD',
'GE',
'GILD',
'GIS',
'GLW',
'GM',
'GOOG',
'GOOGL',
'GPC',
'GPN',
'GPS',
'GRMN',
'GS',
'GWW',
'HAL',
'HAS',
'HBAN',
'HBI',
'HCA',
'HCP',
'HD',
'HES',
'HFC',
'HIG',
'HII',
'HLT',
'HOG',
'HOLX',
'HON',
'HP',
'HPE',
'HPQ',
'HRB',
'HRL',
'HSIC',
'HST',
'HSY',
'HUM',
'IBM',
'ICE',
'IDXX',
'IFF',
'ILMN',
'INCY',
'INFO',
'INTC',
'INTU',
'IP',
'IPG',
'IPGP',
'IQV',
'IR',
'IRM',
'ISRG',
'IT',
'ITW',
'IVZ',
'JBHT',
'JCI',
'JEC',
'JEF',
'JKHY',
'JNJ',
'JNPR',
'JPM',
'JWN',
'K',
'KEY',
'KEYS',
'KHC',
'KIM',
'KLAC',
'KMB',
'KMI',
'KMX',
'KO',
'KR',
'KSS',
'KSU',
'L',
'LB',
'LEG',
'LEN',
'LH',
'LIN',
'LKQ',
'LLY',
'LMT',
'LNC',
'LNT',
'LOW',
'LRCX',
'LUV',
'LW',
'LYB',
'M',
'MA',
'MAA',
'MAC',
'MAS',
'MCD',
'MCHP',
'MCK',
'MCO',
'MDLZ',
'MDT',
'MET',
'MGM',
'MHK',
'MKC',
'MKTX',
'MLM',
'MMC',
'MMM',
'MNST',
'MO',
'MOS',
'MPC',
'MRK',
'MRO',
'MS',
'MSCI',
'MSFT',
'MSI',
'MTB',
'MTD',
'MU',
'MXIM',
'MYL',
'NBL',
'NCLH',
'NDAQ',
'NEE',
'NEM',
'NFLX',
'NI',
'NKE',
'NKTR',
'NLSN',
'NOC',
'NRG',
'NSC',
'NTAP',
'NTRS',
'NUE',
'NVDA',
'NWL',
'NWS',
'NWSA',
'O',
'OKE',
'OMC',
'ORCL',
'ORLY',
'OXY',
'PAYX',
'PBCT',
'PCAR',
'PEG',
'PEP',
'PFE',
'PFG',
'PG',
'PGR',
'PH',
'PHM',
'PKG',
'PKI',
'PLD',
'PM',
'PNC',
'PNR',
'PNW',
'PPG',
'PPL',
'PRGO',
'PRU',
'PSA',
'PSX',
'PVH',
'PWR',
'PXD',
'PYPL',
'QCOM',
'QRVO',
'RCL',
'RE',
'REG',
'REGN',
'RF',
'RHI',
'RHT',
'RJF',
'RL',
'RMD',
'ROK',
'ROL',
'ROP',
'ROST',
'RSG',
'RTN',
'SBAC',
'SBUX',
'SCHW',
'SEE',
'SHW',
'SIVB',
'SJM',
'SLB',
'SLG',
'SNA',
'SNPS',
'SO',
'SPG',
'SPGI',
'SRE',
'STI',
'STT',
'STX',
'STZ',
'SWK',
'SWKS',
'SYF',
'SYK',
'SYMC',
'SYY',
'T',
'TAP',
'TDG',
'TEL',
'TFX',
'TGT',
'TIF',
'TJX',
'TMK',
'TMO',
'TPR',
'TRIP',
'TROW',
'TRV',
'TSCO',
'TSN',
'TSS',
'TTWO',
'TWTR',
'TXN',
'TXT',
'UA',
'UAA',
'UAL',
'UDR',
'UHS',
'ULTA',
'UNH',
'UNM',
'UNP',
'UPS',
'URI',
'USB',
'UTX',
'V',
'VAR',
'VFC',
'VIAB',
'VLO',
'VMC',
'VNO',
'VRSK',
'VRSN',
'VRTX',
'VTR',
'VZ',
'WAB',
'WAT',
'WBA',
'WCG',
'WDC',
'WEC',
'WELL',
'WFC',
'WHR',
'WLTW',
'WM',
'WMB',
'WMT',
'WRK',
'WU',
'WY',
'WYNN',
'XEC',
'XEL',
'XLNX',
'XOM',
'XRAY',
'XRX',
'XYL',
'YUM',
'ZBH',
'ZION',
'ZTS',
'SPY',
'GLD'
    ]
        return tickers[i]

    def tiingo(self, startNum, endNum):
        fx = clsfunctions()
        config = {}
        config['session'] = True
        config['api_key'] = ""
        client = TiingoClient(config)

        for i in range(startNum, endNum):
            ticker = fx.getTicker(i)

            data = client.get_ticker_price(ticker,
                                           fmt='json',
                                           startDate='1993-01-29',
                                           endDate='2019-07-12',
                                           frequency='daily')

            columns = ['date', 'open', 'high', 'low', 'close', 'volume']

            df = pd.DataFrame(data, columns=columns)
            df['ticker'] = ticker

            df.to_csv('c:/users/paul/desktop/tickers/' + ticker + '.csv')

