SkillAgentSearch skills...

Mwhich

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

Install / Use

/learn @dacort/Mwhich
About this skill

Quality Score

0/100

Supported Platforms

Universal

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.

View on GitHub
GitHub Stars74
CategoryContent
Updated2mo ago
Forks11

Languages

Ruby

Security Score

95/100

Audited on Jan 3, 2026

No findings