## Note: this is deprecated. jq is still awesome, so now we just get JSON all the way # jq JSON parser is awesome: # http://stedolan.github.io/jq/ # The NHTSA API is pretty clunky, requiring you to get a list of all the years, then all the models in that year, then all the makes per model, and then # finally, you get the vehicle IDs needed to query the endpoint for one vehicle at a time. # # I query for JSON for most of the loop, and in the end, I get the Vehicle data in CSV format # Note, there are a lot of errors in the API, because the NHTSA doesn't properly escape the "/" in a car's name. And many other # whitespace related errors. BURL='http://www.nhtsa.gov/webapi/api/SafetyRatings' # get all the years first curl -s "$BURL?format=json" | jq -r '.Results[] .ModelYear' | \ while read year; do echo "$year" echo "######" curl -s "$BURL/modelyear/$year?format=json" | jq -r '.Results[] .Make' | sed 's/ /%20/g' | sed 's/&/_/g' | \ while read -r carmake; do # Get the year and make echo " $carmake" echo " =======" curl -s "$BURL/modelyear/$year/make/$carmake?format=json" | jq -r '.Results[] .Model' | sed 's/ /%20/g' | sed 's/&/_/g' | \ while read -r model; do echo " $model" echo " -------" # Get the year, make, and model curl -s "$BURL/modelyear/$year/make/$carmake/model/$model?format=json" | jq -r '.Results[] .VehicleId' | \ while read -r id; do echo " $id: $year - $carmake - $model" curl -s "$BURL/VehicleId/$id?format=csv" -o "$id.csv" done echo ' ' done done done