gnippy icon indicating copy to clipboard operation
gnippy copied to clipboard

Python library for GNIP

gnippy: Python library for GNIP

.. image:: https://badge.fury.io/py/gnippy.svg :target: https://pypi.python.org/pypi/gnippy

.. image:: https://img.shields.io/pypi/dm/gnippy.svg :target: https://pypi.python.org/pypi/gnippy

.. image:: https://travis-ci.org/abh1nav/gnippy.svg?branch=master :target: https://travis-ci.org/abh1nav/gnippy

gnippy provides an easy way to access the Power Track <http://gnip.com/twitter/power-track/>_ stream provided by GNIP. You can also use gnippy to programatically add rules to your Power Track stream.

Install

.. code-block:: python

pip install gnippy

Quickstart

Create a .gnippy file and place it in your home directory. It should contain the following:

.. code-block:: text

[Credentials]
username = [email protected]
password = mypassword

[PowerTrack]
url = https://my.gnip.powertrack/url.json
rules_url = https://api.gnip.powertrack/rules.json

Fire up the client:

.. code-block:: python

#!/usr/bin/env python
import time
from gnippy import PowerTrackClient

# Define a callback
def callback(activity):
    print activity

# Create the client
client = PowerTrackClient(callback)
client.connect()

# Wait for 2 minutes and then disconnect
time.sleep(120)
client.disconnect()

Configuration

If you don't want to create a config file or you want it put it in another location:

.. code-block:: python

client = PowerTrackClient(callback, config_file_path="/etc/gnippy")
# OR ... provide the url and authentication credentials to override any config files
client = PowerTrackClient(callback, url="http://my.gnip.powertrack/url.json", auth=("uname", "pwd"))

You can also configure gnippy using environment variables:

.. code-block:: text

GNIPPY_URL
GNIPPY_RULES_URL
GNIPPY_AUTH_USERNAME
GNIPPY_AUTH_PASSWORD

Adding PowerTrack Rules

If you want to add rules <http://support.gnip.com/apis/powertrack/rules.html>_ to your PowerTrack:

.. code-block:: python

from gnippy import rules
from gnippy.errors import RuleAddFailedException

# Synchronously add rules
try:
    rules.add_rule('(Hello OR World OR "this is a test") lang:en', tag="MyRule")
    rules.add_rule('Rule without a tag')
except RuleAddFailedException:
    pass

# OR ... synchronously add multiple rules at once
rule_list = []
rule_list.append(rules.build("Hello World", tag="asdf"))
rule_list.append(rules.build("Rule Without a Tag"))
try:
    rules.add_rules(rule_list)
except RuleAddFailedException:
    pass

# OR ... manually pass in params - overrides any config files
rules.add_rule("My Rule String", tag="mytag", rules_url="https://api.gnip.powertrack/rules.json", \
               auth=("uname", "pwd"))

Listing Active PowerTrack Rules

.. code-block:: python

from gnippy import rules from gnippy.errors import RulesGetFailedException

try: rules_list = rules.get_rules() # rules_list is in the format: # [ # { "value": "(Hello OR World) AND lang:en" }, # { "value": "Hello", "tag": "mytag" } # ] except RulesGetFailedException: pass

Deleting PowerTrack Rules

.. code-block:: python

from gnippy import rules
from gnippy.errors import RuleDeleteFailedException, RulesGetFailedException

try:
    rules_list = rules.get_rules()
    # Suppose I want to delete the first rule in the list
    rules.delete_rule(rules_list[0])
    # OR ... I want to delete ALL rules
    rules.delete_rules(rules_list)

except RuleDeleteFailedException, RulesGetFailedException:
    pass

Source available on GitHub: http://github.com/abh1nav/gnippy/