• This repository has been archived on 19/Apr/2023
  • Stars
    star
    224
  • Rank 177,792 (Top 4 %)
  • Language
    Python
  • License
    Other
  • Created over 7 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Who The Hill: An MMS-based facial recognition service for members of Congress.

Who The Hill

What is Who The Hill?

Shazam, but for House members faces.

Who The Hill is an MMS-based facial recognition service for members of Congress. Reporters covering Congress can text pictures of members of Congress to a number we’ve set up and they’ll get back:

  1. A list of all the members of Congress recognized in their picture
  2. Numbers indicating how confident Amazon is about the recognition
  3. Colors corresponding to each member of Congress recognized
  4. The picture they sent, but with a box around each member of Congress in the color corresponding to them

Who The Hill in the flesh

Local Installation

Before getting the app running, you'll need a Twilio account (with an operational MMS number), an Amazon Rekognition account and an Amazon S3 or Google Cloud Storage account.

Who The Hill also requires Python3 and works best with virtualenv and virtualenvwrapper. For more on how NYT Interactive News sets up our Python environment, check out this blog post by Sara Simon.

git clone https://github.com/newsdev/who-the-hill.git && cd who-the-hill
mkvirtualenv whothehill
pip install -r requirements.txt

To run the app locally, you will need some environment variables.

Three sets of AWS (or AWS-like) keys are needed:

  • AWS Rekognition credentials
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION
  • AWS S3-like service endpoint and credentials
AWS_S3_ENDPOINT
AWS_GCS_ACCESS_KEY_ID
AWS_GCS_SECRET_ACCESS_KEY

(You can find more information about the AWS and AWS-like credentials here.)

You will also need credentials and a number from Twilio.:

TWILIO_ACCOUNT_SID
TWILIO_AUTH_TOKEN
TWILIO_NUMBER

To check whether results returned from Rekognition are actually members of Congress, you can either use the json dump of members of Congress (as well as variations on spellings of their name) included in this repo, or use your own API endpoint that returns similarly formatted json. If you don't set this environment variable, Who The Hill will default to using the included json file:

NICKNAMES_ENDPOINT

You can store your environment variables in a dev.env file...

export AWS_ACCESS_KEY_ID='<YOUR_ID>'
export AWS_SECRET_ACCESS_KEY='<YOUR_ACCESS_KEY>'
export AWS_DEFAULT_REGION='<YOUR_PREFERRED_REGION>'
export TWILIO_ACCOUNT_SID='<YOUR_ACCOUNT_SID>'
export TWILIO_AUTH_TOKEN='<YOUR_AUTH_TOKEN>'
...

...and run source dev.env. This will export your credentials to your environment.

Running the App

You can run the app locally as a web service that integrates with Twilio or as a CLI for examining a folder full of images to recognize.

As a web application

Run the app locally python who_the_hill/web/pub.py and tunnel with ngrok so that you can integrate with Twilio, which needs a public-facing endpoint to POST data to.

As a CLI for recognition

Put the images within which you'd like to recognize members of Congress into a folder like /tmp/to_recognize and then call the CLI like this:

python who_the_hill/cli --directory /tmp/to_recognize/

The app will examine the images, find and recognize faces, and produce a JSON report. Note: The CLI still requires working S3/GCS tokens and (obviously) access to the AWS Rekognition API. It does not require Twilio credentials, though.

Acknowledgements

Jennifer Steinhauer came up with the original idea behind Who The Hill and was an enthusiastic sponsor and tester.

Who The Hill was developed by Interactive News interns Gautam Hathi and Sherman Hewitt in the summer of 2017 and partially rewritten in the spring of 2018 by Jeremy Bowers, all under the watchful eye of Rachel Shorey.

More Repositories

1

ai2html

A script for Adobe Illustrator that converts your Illustrator artwork into an html page.
JavaScript
897
star
2

archieml-js

JavaScript parser for the Archie Markup Language (ArchieML)
JavaScript
205
star
3

about-int

Meet the Interactive News Technology (INT) desk at The New York Times
180
star
4

elex

A wrapper for the AP v2 Elections API.
Python
171
star
5

stevedore

search document dumps: ingest and explore in one extensible framework
JavaScript
124
star
6

archieml.org

The archieml.org website and hub for specification development
HTML
81
star
7

driveshaft

Google Drive → JSON → S3
Ruby
74
star
8

foialawya

an app for keeping track of your FOIAs and getting alerts when they're (over) due
Python
53
star
9

adcom

Admin Components
JavaScript
53
star
10

ai-scripts

A collection of useful Illustrator scripts
JavaScript
39
star
11

nyt-clerk

A set of Python modules for downloading, parsing, and outputting data related to the Supreme Court.
Python
39
star
12

archieml-ruby

Ruby parser for the Archie Markup Language (ArchieML)
Ruby
30
star
13

rocketdocket

The fastest, cleanest, most reproducible ways to OCR a document.
Shell
27
star
14

nyt-pyfec

A Python library for downloading, parsing and cleaning Federal Election Commission filings.
Python
27
star
15

odf

Scripts and tools to help in parsing the Olympic Data Feed from the International Olympic Committee
Ruby
25
star
16

nyt-entity-service

A web service for disambiguating and canonically storing entities.
Python
25
star
17

compstat_parser

Parse the NYPD's weekly per-precinct crime complaints stats to CSV or MySQL
Ruby
24
star
18

elex-loader

The NYT AP election loader scripts
Shell
22
star
19

nyt-forcible-entry

Deaths resulting from forcible-entry search warrant raids from 2010 to 2016
21
star
20

nyt-fec

a smaller, cleaner, campaign finance app that complements the new FEC site
Python
21
star
21

geoip-legacy

A simple, Node-based service for providing geolocation data based on a user's IP address. Also includes a client-side implementation to help use geolocation information in client-side apps.
JavaScript
16
star
22

nyt-docket

A Python client for parsing SCOTUS cases from the granted/noted and orders dockets. https://pypi.python.org/pypi/nyt-docket
Python
15
star
23

apfake

A command-line tool for generating AP API JSON files for testing elections applications.
Python
15
star
24

capital_git

Use git as a database. Wrapper around https://github.com/libgit2/rugged
Ruby
13
star
25

int-newsapps-template

A template for creating new INT News Apps applications in Django or Flask
HTML
13
star
26

context

Securely stores and conveniently retrieves environment variables in etcd or Redis.
Go
12
star
27

nyt-scotus

A Django app for accessing and editing Supreme Court data.
Python
11
star
28

fec2json

turn fec files into json
Python
10
star
29

ap-deja-vu

A small web service that will replay captured JSON from an AP election test.
HTML
8
star
30

nyt-scotusbot

A SlackBot for notifying NYTimes reporters and editors about changes to the Supreme Court's docket, grants and orders.
Python
8
star
31

nyt-campfinbot

A SlackBot for notifying NYTimes reporters and editors about filings to the Federal Election Commission's web site.
Python
8
star
32

lambda-gem-builder

Build Ruby Gems using AWS Lambda and host them statically on S3
JavaScript
8
star
33

nyt-nj-campfin

Scrapers for NJ campaign finance data
Python
8
star
34

fec-csv-sources

CSV headers and column sources for parsing FEC filings.
7
star
35

elex-ftp-loader

A simple loader for AP FTP elections results.
Python
7
star
36

moving_summonses_parser

Ruby
7
star
37

readme_templates

We want our repos to have more and better developer documentation. Here are some templates for READMEs for different kinds of projects that you can copy (and edit, and contribute to).
7
star
38

nyt_inmates

Methodology notes and data from the series on discipline and parole in New York State
7
star
39

ap-precinct-parser

Parses precinct-level AP election results
Python
6
star
40

datasettr

A Python library for wrangling CSVs into SQLite databases for serving with Datasette.
6
star
41

elex-admin

A CRUD admin for editing AP election results data, including names and race calls.
HTML
6
star
42

longshore

Build server for Docker.
Go
6
star
43

archieml-loader

A very quick and simple Webpack loader for ArchieML files.
JavaScript
5
star
44

SEC

Data for S.E.C. Enforcement Story
5
star
45

kubernetes-dns-reverse-proxy

Proxy server to route traffic to the right kubernetes local hostname
Go
4
star
46

promise

An active HTTP reverse-proxy backed by etcd.
Go
4
star
47

docker-rails

The base Ruby image with additions to support Rails.
Dockerfile
4
star
48

nyt-pyiap

A set of Python functions and middlewares for common frameworks for validating JWT tokens set by Google IAP.
Python
4
star
49

euro

Our XML parser for the 2016 Euro data from Opta sports.
PHP
4
star
50

nyt-entity-uploader

A Python wrapper for making requests to the NYT Entity Service API
Python
4
star
51

nyt-elections-admin

A simple Django-based administration interface for an election loader.
Python
4
star
52

nyt-screenshot-service

A lightweight screenshotting service backed by Google Cloud Storage.
Python
3
star
53

nyt-scotus-loader

A set of bash scripts for loading Supreme Court data into a Postgres database.
Shell
3
star
54

campfin-loader

archived on 2022-05-31 as a cleanup of old campaign finance code
Python
2
star
55

simple-wind

JavaScript
2
star
56

elex-micro

Everything you like about Elex, only less.
Python
2
star
57

replay-ap

An UPDATED, RE-NAMED engine for recording, storing, and replaying Associated Press elections.
Python
2
star
58

nyt-prb-scraper

A scraper and parser for the Periodic Review Secretariat's web pages for Guantanamo detainees.
Python
1
star
59

stevedore-uploader

the uploader for stevedore (github.com/newsdev/stevedore)
Ruby
1
star
60

remora

A utility for tracking a Docker container using etcd.
Go
1
star
61

newsapps-scraper-txair

An air emissions events scraper for Climate.
Python
1
star
62

kube-test-app

Simple dockerized Node.js app
JavaScript
1
star