94 lines
2.9 KiB
Python
94 lines
2.9 KiB
Python
from collections import OrderedDict
|
|
from time import sleep
|
|
from datetime import datetime
|
|
import json
|
|
import plotly.offline
|
|
import plotly.graph_objs as go
|
|
import requests
|
|
import configparser
|
|
|
|
config = configparser.ConfigParser()
|
|
config.read('config.ini')
|
|
bea_server="https://apps.bea.gov/api/data"
|
|
|
|
if config['DEFAULT']['APIKEY'] is not None:
|
|
bea_api_key=config['DEFAULT']['APIKEY']
|
|
else:
|
|
print("You must supply an api key in a config.ini")
|
|
exit()
|
|
|
|
args={"UserID":bea_api_key,"method":"GETDATASETLIST"}
|
|
dataSetListResponse=requests.get(bea_server,params=args)
|
|
dataSetListJSON=dataSetListResponse.json()
|
|
#print(json.dumps(dataSetListJSON,sort_keys=True,indent=4))
|
|
|
|
args["method"]="GetParameterList"
|
|
args["datasetname"]="NIPA"
|
|
parameterListResponse=requests.get(bea_server,params=args)
|
|
parameterListJSON=parameterListResponse.json()
|
|
#print(json.dumps(parameterListJSON,sort_keys=True,indent=4))
|
|
|
|
|
|
args["method"]="GetParameterValues"
|
|
args["ParameterName"]="TableName"
|
|
paramaterValuesResponse=requests.get(bea_server,params=args)
|
|
paramaterValuesJSON=paramaterValuesResponse.json()
|
|
print(json.dumps(paramaterValuesJSON,sort_keys=True,indent=4))
|
|
|
|
#args["ParameterName"]="Year"
|
|
#paramaterValuesResponse=requests.get(bea_server,params=args)
|
|
#paramaterValuesJSON=paramaterValuesResponse.json()
|
|
#print(json.dumps(paramaterValuesJSON,sort_keys=True,indent=4))
|
|
|
|
motorVehicleOutput={}
|
|
autoOutput={}
|
|
truckOutput={}
|
|
|
|
tableNames=["T70203A","T70203B"]
|
|
for table in tableNames:
|
|
args["TableName"]=table
|
|
args["method"]="GetData"
|
|
args["Frequency"]="Q"
|
|
args["ShowMillions"]="Y"
|
|
args["Year"]="X"
|
|
#",".join(map(str,range(2000,2018)))
|
|
tableResponse=requests.get(bea_server,params=args)
|
|
tableResponseJSON=tableResponse.json()
|
|
print(json.dumps(tableResponseJSON,sort_keys=True,indent=4))
|
|
for item in tableResponseJSON["BEAAPI"]["Results"]["Data"]:
|
|
#print(item)
|
|
if item["LineDescription"]=="Motor vehicle output":
|
|
motorVehicleOutput[str(item["TimePeriod"]).lower()]=item["DataValue"]
|
|
elif item["LineDescription"]=="Auto output":
|
|
autoOutput[str(item["TimePeriod"]).lower()]=item["DataValue"]
|
|
elif item["LineDescription"]=="Truck output":
|
|
truckOutput[str(item["TimePeriod"]).lower()]=item["DataValue"]
|
|
|
|
sleep(10)
|
|
|
|
motorVehicleOutputSorted=OrderedDict(sorted(motorVehicleOutput.items()))
|
|
autoOutputSorted=OrderedDict(sorted(autoOutput.items()))
|
|
truckOutputSorted=OrderedDict(sorted(truckOutput.items()))
|
|
|
|
print(motorVehicleOutputSorted)
|
|
|
|
traceMotorVehicle=go.Scatter(
|
|
name="Motor Vehicle Output",
|
|
x=list(motorVehicleOutputSorted.keys()),
|
|
y=list(motorVehicleOutputSorted.values())
|
|
)
|
|
|
|
traceAuto=go.Scatter(
|
|
name="Auto Output",
|
|
x=list(autoOutputSorted.keys()),
|
|
y=list(autoOutputSorted.values())
|
|
)
|
|
|
|
traceTruck=go.Scatter(
|
|
name="Truck Output",
|
|
x=list(truckOutputSorted.keys()),
|
|
y=list(truckOutputSorted.values())
|
|
)
|
|
data=[traceAuto, traceMotorVehicle,traceTruck]
|
|
|
|
plotly.offline.plot(data,filename='CarOutPut_'+datetime.now().strftime('%Y%m%d')+'.html') |