An open API service indexing awesome lists of open source software.

https://github.com/dacort/mwhich

Generic API to search for movies or TV shows across Netflix, Hulu, iTunes, and Amazon Video on Demand
https://github.com/dacort/mwhich

Last synced: 3 months ago
JSON representation

Generic API to search for movies or TV shows across Netflix, Hulu, iTunes, and Amazon Video on Demand

Awesome Lists containing this project

README

        

= NOTE: THIS CODE IS NO LONGER MAINTAINED
Netflix shut down their public API. :(
Please take a look at http://www.canistream.it and {this Ruby gem for canistream.it API}[https://github.com/KevinBongart/canistreamit].

= MWhich

Because searching Netflix, Amazon, Hulu, and iTunes sucks rocks!

== INSTALLATION

If you've downloaded this code from the repository or as an archive, just run

rake install

== DESCRIPTION

MWhich was created because I'm lazy, and that laziness led to a loss of money.
Many times I end up watching on movie on iTunes simply because it is the first
place I look, even though had I taken another minute I would have found the
same movie available via Netflix Instant Play, or cheaper on Amazon's Video on
Demand service.

== API ACCESS

Of course there is no easy standard for accessing this movie data, Tim
Berners-Lee's wishes be damned. Here is how these services are accessed:

* Netflix: OData via odata.netflix.com[http://odata.netflix.com]
* Amazon: ECS
* Hulu: Some hack of their publisher tool endpoint
* iTunes: Their Store Web Service Search API via AffiliatesSearch2.1.pdf[http://www.apple.com/itunesaffiliates/API/AffiliatesSearch2.1.pdf]

== REQUIREMENTS

You'll need the following gems:

* yajl-ruby
* nokogiri
* ruby-hmac

== USAGE

This is very bare bones right now:

To create a basic MWhich instance:

m = MWhich::Client.new

Search for a movie:

m.search("The Prestige")
# => {:amazon=>[], :hulu=>[], :itunes=>["feature-movie: The Prestige ($9.99)"], :netflix=>["Movie: The Prestige"]}

At this time, this merely returns a hash of key/value pairs indicating which
services the movie or TV show was found on. The value is a simple string with
the type of media found and the title. Comments specific to each service
may also appear. For example:

* If available on Netflix Instant Play, "Watch now!" will show up.
* Hulu sometimes links to external content, "Not on hulu!" will identify this.
* iTunes prices will be displayed

An array of services can be passed to the MWhich instance to limit the search.

Only want to search Netflix and Hulu?

m = MWhich::Client.new(:services => [:netflix, :hulu])
m.search("Knight Rider")
# => {:hulu=>["episode: I Love the Knight Life", "episode: Knight and the City", "episode: Fly By Knight", "episode: Fight Knight", "episode: Exit Light, Enter Knight", "episode: Knight to King's Pawn", "episode: Day Turns Into Knight", "episode: Don't Stop the Knight", "episode: Knight Fever", "episode: Knight of the Zodiac"], :netflix=>["Series: Knight Rider", "Series: Knight Rider"]}

This is obviously imperfect, but does provide an initial abstracted search.