Skip to content

9b/chirp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chirp

Chirp is a metadata platform built on top of Google Alerts meant to manage monitors, alerts and notifications. It's built on an unofficial abstraction API from the web interface, written in python.

Demo interface of Chirp filled with alerts

Getting Started

Install MongoDB and ensure it's running:

https://www.mongodb.com/

Setup a virtual environment for Python3:

$ sudo virtualenv -p python3 venv3

Activate your container:

$ source venv3/bin/activate

Install the requirements:

$ (venv3) pip install -r requirements.txt

Start redis:

$ redis-server

Start RabbiqMQ:

$ rabbitmq-server

Start the Celery beat:

$ (venv3) sudo celery worker -A celery_worker.celery --loglevel=info -B --concurrency=1

Start the server:

$ (venv3) sudo python server.py run

How Does it Work?

Chirp takes a set of Google credentials and makes use of the python Google alerts abstract library to create, update and delete monitors. Each monitor is turned into an RSS feed and then managed within Chirp. Asynchronous jobs poll the RSS feeds for new articles, summarizing the content, deriving tag data and then presenting them within the interface. All alert data is presented in one location with additional metadata paired from the user.

Why?

Google Alerts by themselves are great for a small number of focused monitors. If you want to direct the Google machine to a larger set of queries, it can quickly become overwhelming for managing and then handling alerts. Chirp was built for cases where Google Alerts was managing a lot of monitors and users needed a way to prioritize the alerting information that came back. Chirp completely abstracts away the Google Alert interface and provides a framework for collecting data on specific topics using Google scale.

State of the Project

This platform is a work in progress and is being developed on an "as needed" basis. In other words, not all functionality is implemented and it's far from polished.