Project

netflix

0.02
Repository is archived
No commit activity in last 3 years
No release in over 3 years
Ruby Netflix API wrapper
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0

Runtime

>= 0
>= 0
 Project Readme

ATTENTION: NETFLIX HAS CLOSED THE PUBLIC API. ALL FURTHER DEVELOPMENT ON THIS GEM HAS CEASED

Netflix API for Ruby

Copyright (c) 2012 Dean Holdren

To install: gem install netflix

This gem uses Netflix's OAuth REST API, you first need to register an application with Netflix at http://developer.netflix.com/apps/register/

This will provide you with a "consumer key", "consumer secret", and "application name"

To use authenticated features (i.e. queue management):

  • Set the consumer/developer config:

    Netflix::Client.consumer_key = <your consumer/developer key>
    Netflix::Client.consumer_secret = <your consumer/developer secret>
  • Do OAuth dance: (This is a one-time per user step, save the result somewhere.)

    1. Interactive (commandline/irb):
      This will open a netflix.com web page to ask the user to authenticate, and provide a pin.
    access_token = Netflix::Client.new.oauth
    1. or Web application (Rails/Sinatra/etc), define a URL that can handle the callback
    request_token, auth_url = Netflix::Client.new.oauth_via_callback(my_callback_url)
    session[:request_token] = request_token
    redirect_to auth_url

    Then in the handler for "my_callback_url" (i.e. a Rails controller action) retrieve the :oauth_verifier out of the request params

    oauth_verifier = params[:oauth_verifier]
    request_token = session[:request_token]
    access_token = Netflix::Client.new.handle_oauth_callback(request_token, oauth_verifier)
  • After OAuth credentials are established:

    access_token = access_token.token
    access_secret = access_token.secret
    user_id = access_token.params["user_id"]

(Record these, for example in a User table in a database)

client = Netflix::Client.new(access_token, access_token_secret)
user = client.user(user_id)
queue = user.available_disc_queue
discs = queue.discs
disc_one = discs[0]
puts "#{disc_one.title} #{disc_one.id}"
queue.remove(1) #queue is 1-based, so this is first disc

TODO

  • unauthenticated features (catalog search)

Credits

This work is based on: REST API documentation of Netflix (http://developer.netflix.com), with some help from twitter gem for OAuth ideas https://github.com/jnunemaker/twitter/