Fetches and converts data between Facebook, Google+, Instagram, and Twitter native APIs, ActivityStreams, microformats2 HTML and JSON, Atom, and more.
Project description
|Granary|
This is a library and REST API that fetches and converts social network
data between a wide variety of formats:
- Facebook, Google+, Instagram, and Twitter native APIs
- `ActivityStreams <http://activitystrea.ms/>`__
- `microformats2 <http://microformats.org/wiki/microformats2>`__ HTML
- `microformats2 <http://microformats.org/wiki/microformats2>`__ JSON
- `Atom <http://atomenabled.org/>`__
- XML
You can try it out with these interactive demos:
http://facebook-activitystreams.appspot.com/
http://twitter-activitystreams.appspot.com/
http://instagram-activitystreams.appspot.com/
`Check out the docs for more! <https://github.com/snarfed/granary>`__
License: This project is placed in the public domain.
Using
-----
The library and REST API are both based on the
`OpenSocial Activity Streams service <http://opensocial-resources.googlecode.com/svn/spec/2.0.1/Social-API-Server.xml#ActivityStreams-Service>`__.
Let's start with an example. This code using the library:
.. code:: python
from granary import twitter
...
tw = twitter.Twitter(ACCESS_TOKEN_KEY, ACCESS_TOKEN_SECRET)
tw.get_activities(group_id='@friends')
is equivalent to this ``HTTP GET`` request:
::
https://twitter-activitystreams.appspot.com/@me/@friends/@app/
?access_token_key=ACCESS_TOKEN_KEY&access_token_secret=ACCESS_TOKEN_SECRET
They return the authenticated user's Twitter stream, ie tweets from the
people they follow. Here's the JSON output:
.. code:: json
{
"itemsPerPage": 10,
"startIndex": 0,
"totalResults": 12
"items": [{
"verb": "post",
"id": "tag:twitter.com,2013:374272979578150912"
"url": "http://twitter.com/evanpro/status/374272979578150912",
"content": "Getting stuff for barbecue tomorrow. No ribs left! Got some nice tenderloin though. (@ Metro Plus Famille Lemay) http://t.co/b2PLgiLJwP",
"actor": {
"username": "evanpro",
"displayName": "Evan Prodromou",
"description": "Prospector.",
"url": "http://twitter.com/evanpro",
},
"object": {
"tags": [{
"url": "http://4sq.com/1cw5vf6",
"startIndex": 113,
"length": 22,
"objectType": "article"
}, ...],
},
}, ...]
...
}
`Check out the docs for more! <https://github.com/snarfed/granary>`__
This is a library and REST API that fetches and converts social network
data between a wide variety of formats:
- Facebook, Google+, Instagram, and Twitter native APIs
- `ActivityStreams <http://activitystrea.ms/>`__
- `microformats2 <http://microformats.org/wiki/microformats2>`__ HTML
- `microformats2 <http://microformats.org/wiki/microformats2>`__ JSON
- `Atom <http://atomenabled.org/>`__
- XML
You can try it out with these interactive demos:
http://facebook-activitystreams.appspot.com/
http://twitter-activitystreams.appspot.com/
http://instagram-activitystreams.appspot.com/
`Check out the docs for more! <https://github.com/snarfed/granary>`__
License: This project is placed in the public domain.
Using
-----
The library and REST API are both based on the
`OpenSocial Activity Streams service <http://opensocial-resources.googlecode.com/svn/spec/2.0.1/Social-API-Server.xml#ActivityStreams-Service>`__.
Let's start with an example. This code using the library:
.. code:: python
from granary import twitter
...
tw = twitter.Twitter(ACCESS_TOKEN_KEY, ACCESS_TOKEN_SECRET)
tw.get_activities(group_id='@friends')
is equivalent to this ``HTTP GET`` request:
::
https://twitter-activitystreams.appspot.com/@me/@friends/@app/
?access_token_key=ACCESS_TOKEN_KEY&access_token_secret=ACCESS_TOKEN_SECRET
They return the authenticated user's Twitter stream, ie tweets from the
people they follow. Here's the JSON output:
.. code:: json
{
"itemsPerPage": 10,
"startIndex": 0,
"totalResults": 12
"items": [{
"verb": "post",
"id": "tag:twitter.com,2013:374272979578150912"
"url": "http://twitter.com/evanpro/status/374272979578150912",
"content": "Getting stuff for barbecue tomorrow. No ribs left! Got some nice tenderloin though. (@ Metro Plus Famille Lemay) http://t.co/b2PLgiLJwP",
"actor": {
"username": "evanpro",
"displayName": "Evan Prodromou",
"description": "Prospector.",
"url": "http://twitter.com/evanpro",
},
"object": {
"tags": [{
"url": "http://4sq.com/1cw5vf6",
"startIndex": 113,
"length": 22,
"objectType": "article"
}, ...],
},
}, ...]
...
}
`Check out the docs for more! <https://github.com/snarfed/granary>`__