Files
congress-legislators/scripts/house_contact_list.py
2014-04-03 13:15:38 -04:00

65 lines
1.8 KiB
Python
Executable File

#!/usr/bin/env python
# Use the House' member labels file to update some basic info, including bioguide IDs, for members.
# Assumes state and district are already present.
import csv, re
import utils
from utils import load_data, save_data
def run():
house_labels = "labels-113.csv"
names = utils.flags().get('names', False)
y = load_data("legislators-current.yaml")
by_district = { }
for m in y:
last_term = m['terms'][-1]
if last_term['type'] != 'sen':
full_district = "%s%02d" % (last_term['state'], int(last_term['district']))
by_district[full_district] = m
for rec in csv.DictReader(open(house_labels)):
full_district = rec['113 ST/DIS']
# empty seat - IL-02
if full_district not in by_district:
if full_district == "IL02":
continue
else:
raise "No!!"
rec["MIDDLE"] = rec["MIDDLE"].decode("utf8").strip()
rec["NICK"] = None
m = re.match('^(.*) \u201c(.*)\u201d$', rec["MIDDLE"])
if m:
rec["MIDDLE"] = m.group(1)
rec["NICK"] = m.group(2)
by_district[full_district]['terms'][-1]['office'] = rec["ADDRESS"].strip()
# only set name fields if we've been asked to (as a stopgap)
if names:
by_district[full_district]["name"]["first"] = rec["FIRST"].decode("utf8").strip()
if rec["MIDDLE"]:
by_district[full_district]["name"]["middle"] = rec["MIDDLE"]
if rec["NICK"]:
by_district[full_district]["name"]["nickname"] = rec["NICK"]
by_district[full_district]["name"]["last"] = rec["LAST"].decode("utf8").strip()
if rec["BIOGUIDE ID"] == "G000574":
# The Clerk has the wrong ID for Alan Grayson!
rec["BIOGUIDE ID"] = "G000556"
by_district[full_district]["id"]["bioguide"] = rec["BIOGUIDE ID"]
print("[%s] Saved" % full_district)
save_data(y, "legislators-current.yaml")
if __name__ == '__main__':
run()