0

I'm trying to utilize pygci to pull voting district data for a particular address. I've enabled the Google Civic Information API for the listed key, but all I'm getting is

"Response was not valid Json"

when I try to run this code:

*from pygci import GCivicInfo, GCivicInfoError
API_KEY = 'AIzaSyA1EBhUzaHBaaFB8H7LiWfVQsf0KnuwRSs'
address = "4935 Spruce St. Philadelphia, PA 19139"



CivicInfo = GCivicInfo(api_key=API_KEY)
try:
    CivicInfo.get_representative_by_address(params=address)
except GCivicInfoError as e:
    print(e)*
pppery
  • 3,731
  • 22
  • 33
  • 46
nerkes
  • 1
  • 1

1 Answers1

0

Looking at the docs for the underlying API, it ultimately needs the address to have the keyword "address" encoded as a URL parameter:

GET https://civicinfo.googleapis.com/civicinfo/v2/representatives?address=4935%20Spruce%20St.%20Philadelphia%2C%20PA%2019139&key=your_api_key

With the requests library, you encode parameters into the URL this way by passing it a dict. So I was going to suggest you try:

CivicInfo.get_representative_by_address(params={"address": address})

But looking at pygci, it appears get_representative_by_address overwrites params with ''. If you still get an error, there's may be a bug in the library, or I've misunderstood its code. https://github.com/moosh3/pygci/blob/f80c336a4417f57ce80495e02f0a4a45eb0f4ce1/pygci/endpoints.py#L33

def get_representative_by_address(self, params):
    """Looks up political geography and representative
    information for a single address
    :param address: (optional) type=string
    :param includeOffices: (optional) type=boolean, default=True
    """
    address = ''
    return self.get('/representatives?', params=address)
Jack Deeth
  • 3,062
  • 3
  • 24
  • 39
  • You could try changing `pygci` so the line is `return self.get('/representatives?', params=params)`. If that doesn't work, try removing the question mark. – Jack Deeth Feb 06 '22 at 15:59