https://github.com/michaelhelmick/python-netflix
A Python Library to interface with Netflix REST API & OAuth
https://github.com/michaelhelmick/python-netflix
Last synced: 2 months ago
JSON representation
A Python Library to interface with Netflix REST API & OAuth
- Host: GitHub
- URL: https://github.com/michaelhelmick/python-netflix
- Owner: michaelhelmick
- Created: 2012-01-07T17:32:44.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2013-08-04T05:02:05.000Z (almost 12 years ago)
- Last Synced: 2025-03-27T10:21:23.423Z (3 months ago)
- Language: Python
- Homepage:
- Size: 58.6 KB
- Stars: 29
- Watchers: 4
- Forks: 19
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Python-Netflix
==============`Python-Netflix` is a Python library to help interface with [Netflix REST API](http://developer.netflix.com/docs/REST_API_Reference "Netflix REST API") & OAuth
Installation
------------
``` $ pip install python-netflix```Usage
-----###### Authorization URL
```python
n = NetflixAPI(api_key='*your app key*',
api_secret='*your app secret*',
callback_url='http://www.example.com/callback/')auth_props = n.get_authentication_tokens()
auth_url = auth_props['auth_url']#Store this token in a session or something for later use in the next step.
oauth_token_secret = auth_props['oauth_token_secret']print 'Connect with Netflix via %s' % auth_url
```Once you click "Allow" be sure that there is a URL set up to handle getting finalized tokens and possibly adding them to your database to use their information at a later date.'
###### Handling the callback
```python
# In Django, you'd do something like
# oauth_token = request.GET.get('oauth_verifier')
# oauth_verifier = request.GET.get('oauth_verifier')oauth_token = *Grab oauth token from URL*
oauth_verifier = *Grab oauth verifier from URL*#Initiate the NetflixAPI class in your callback.
n = NetflixAPI(api_key='*your app key*',
api_secret='*your app secret*',
oauth_token=oauth_token,
oauth_token_secret=session['netflix_session_keys']['oauth_token_secret'])authorized_tokens = n.get_auth_tokens(oauth_verifier)
final_oauth_token = authorized_tokens['oauth_token']
final_oauth_token_secret = authorized_tokens['oauth_token_secret']
final_user_id = authorized_tokens['user_id']# Save those tokens and user_id to the database for a later use?
```###### Return a list of the users Instant Queue.
```python
# Get the final tokens from the database or wherever you have them storedn = NetflixAPI(api_key = '*your app key*',
api_secret = '*your app secret*',
oauth_token=final_tokens['oauth_token'],
oauth_token_secret=final_tokens['oauth_token_secret'])instant_queue = n.get('users/*final_user_id*/queues/instant')
print instant_queue
```###### Add Gabriel Iglesias: Hot and Fluffy to Instant Queue
```python
try:
add_to_queue = n.post('users/*final_user_id*/queues/instant', params={'title_ref': 'http://api.netflix.com/catalog/titles/movies/70072945'})print add_to_queue
# You can also added "position" to the params to set where this media will be positioned on the users queue.
except NetflixAPIError:
# This returns the added item if successful.
# If it's already in the queue, it will return a NetflixAPIError, code 412
```###### Remove Gabriel Iglesias: Hot and Fluffy to Instant Queue
```python
# When querying for the users Queue, when iterating over the Queue items
# you can use the 'id' for the next call. Where it says *final_user_id*
# that is automatically returned from the Netflix Instant Queue response.
del_from_queue = n.delete('http://api-public.netflix.com/users/*final_user_id*/queues/instant/available/2/70072945')print del_from_queue
```###### Rate Gabriel Iglesias: Hot and Fluffy
```python
try:
# Create a new rating
create_rating = n.post('users/*final_user_id*/ratings/title/actual/70072945', params={'rating': '5'})print create_rating
except NetflixAPIError:
# This returns a status message if successful.
# If it's already been rated, it will return a NetflixAPIError, code 422
pass# Update/Clear rating
update_rating = n.put('users/*final_user_id*/ratings/title/actual/70072945', params={'rating': 'no_opinion'})print update_rating
```