It’s not on CRAN yet, but there’s a devtools
-installable R package for getting data from the OMDB API.
It covers all of the public API endpoints:
find_by_id
: Retrieve OMDB info by IMDB ID searchfind_by_title
: Retrieve OMDB info by title searchget_actors
: Get actors from an omdb object as a vectorget_countries
: Get countries from an omdb object as a vectorget_directors
: Get directors from an omdb object as a vectorget_genres
: Get genres from an omdb object as a vectorget_writers
: Get writers from an omdb object as a vectorprint.omdb
: Print an omdb resultsearch_by_title
: Lightweight omdb title search
Here’s a bit of it in action:
devtools::install_github("hrbrmstr/omdbapi") library(dplyr) library(pbapply) search_by_title("Captain America") # Source: local data frame [10 x 4] # # Title Year imdbID Type # 1 Captain America: The First Avenger 2011 tt0458339 movie # 2 Captain America: The Winter Soldier 2014 tt1843866 movie # 3 Captain America 1990 tt0103923 movie # 4 Captain America 1979 tt0078937 movie # 5 Iron Man and Captain America: Heroes United 2014 tt3911200 movie # 6 Captain America II: Death Too Soon 1979 tt0078938 movie # 7 Captain America 1944 tt0036697 movie # 8 Captain America 1966– tt0206474 series # 9 Captain America: Super Soldier 2011 tt1740721 game # 10 Comic Book Origins: Captain America - Winter Soldier 2014 tt3618126 movie search_by_title("Captain America", year_of_release=2013) # Source: local data frame [1 x 4] # # Title Year imdbID Type # 1 A Look Back at 'Captain America' 2013 tt3307378 movie games <- search_by_title("Captain America", type="game") glimpse(games) # Observations: 2 # Variables: # $ Title (chr) "Captain America: Super Soldier", "Captain America and the A... # $ Year (chr) "2011", "1991" # $ imdbID (chr) "tt1740721", "tt0421939" # $ Type (chr) "game", "game" find_by_title(games$Title[1]) # Title: Captain America: Super Soldier # Year: 2011 # Rated: N/A # Released: 2011-07-19 # Runtime: N/A # Genre: Action # Director: Michael McCormick, Robert Taylor # Writer: Christos N. Gage # Actors: Hayley Atwell, Chris Evans, Sebastian Stan, Neal McDonough # Plot: You play the Sentinel of Liberty as you raid the Red Skull's scientist # minion, Armin Zola's, lair. # Language: English # Country: USA # Awards: N/A # Poster: http://ia.media-imdb.com/images/M/ # MV5BMTUwMzQ0NjE5N15BMl5BanBnXkFtZTgwODI3MzQxMTE@._V1_SX300.jpg # Metascore: N/A # imdbRating: 7.2 # imdbVotes: 271 # imdbID: tt1740721 # Type: game find_by_title("Game of Thrones", type="series", season=1, episode=1) # Title: Winter Is Coming # Year: 2011 # Rated: TV-MA # Released: 2011-04-17 # Runtime: 62 min # Genre: Adventure, Drama, Fantasy # Director: Timothy Van Patten # Writer: David Benioff (created by), D.B. Weiss (created by), George R.R. # Martin ("A Song of Ice and Fire" by), David Benioff, D.B. # Weiss # Actors: Sean Bean, Mark Addy, Nikolaj Coster-Waldau, Michelle Fairley # Plot: Jon Arryn, the Hand of the King, is dead. King Robert Baratheon plans # to ask his oldest friend, Eddard Stark, to take Jon's # place. Across the sea, Viserys Targaryen plans to wed his # sister to a nomadic warlord in exchange for an army. # Language: English # Country: USA # Awards: N/A # Poster: http://ia.media-imdb.com/images/M/ # MV5BMTk5MDU3OTkzMF5BMl5BanBnXkFtZTcwOTc0ODg5NA@@._V1_SX300.jpg # Metascore: N/A # imdbRating: 8.5 # imdbVotes: 12584 # imdbID: tt1480055 # Type: episode get_genres(find_by_title("Star Trek: Deep Space Nine", season=5, episode=7)) # [1] "Action" "Adventure" "Drama" get_writers(find_by_title("Star Trek: Deep Space Nine", season=4, episode=6)) # [1] "Gene Roddenberry (based upon \"Star Trek\" created by)" # [2] "Rick Berman (created by)" # [3] "Michael Piller (created by)" # [4] "David Mack" # [5] "John J. Ordover" get_directors(find_by_id("tt1371111")) # [1] "Tom Tykwer" "Andy Wachowski" "Lana Wachowski" get_countries(find_by_title("The Blind Swordsman: Zatoichi")) # [1] "Japan" ichi <- search_by_title("Zatoichi") bind_rows(lapply(ichi$imdbID, function(x) { find_by_id(x, include_tomatoes = TRUE) })) -> zato par(mfrow=c(3,1)) boxplot(zato$tomatoUserMeter, horizontal=TRUE, main="Tomato User Meter", ylim=c(0, 100)) boxplot(zato$imdbRating, horizontal=TRUE, main="IMDB Rating", ylim=c(0, 10)) boxplot(zato$tomatoUserRating, horizontal=TRUE, main="Tomato User Rating", ylim=c(0, 5))
You can find out more at it’s github repo
8 Comments
Looking forward to using this. Noticed that the poster urls just lead to blank page
Thx. That’s also interesting. Not sure if OMDB folks have an “issues” forum but I’ll see if I can relay this to them.
Actually http://ia.media-imdb.com/images/M/MV5BMTk5MDU3OTkzMF5BMl5BanBnXkFtZTcwOTc0ODg5NA@@.V1SX300.jpg works (Game of Thrones, I think…I don’t watch the show).
Yep sorry about that. I think copying and pasting from above I forgot to delete a #
I’m unfamiliar with OMDB. Do they rely on people posting data?? For instance, I was trying to collect Seinfeld data. but a large proportion are not found
e.g. findbytitle(“Seinfeld”, type=”series”, season=2, episode=5)
Series or episode not found!
data frame with 0 columns and 0 rows
The imdb page can be found here
http://www.imdb.com/title/tt0697713/?ref=ttepep5
Aye. It’s a crowdsourced site. I was also thinking of adding an API for https://www.themoviedb.org/documentation/api as well.
I suppose just scraping imdb or rotten tomatoes etc. hits legal issues? Although, say, the plot summaries that are available are a stright crib
Aye. Both IMDb & RT have ToS that expressly forbid scraping and they’ll come find folks who turn that data into an API, esp Amazon. There are a cpl other movie & TV databases with free[mium] APIs that i’ll eventually get to :-)
Very nice package! Been testing it out for a couple of days now.
Just recently however there was an update to the OMDb API, which allows you to get all episode info per season: quote “10/18/15 – You can now return all episodes by using just the “Season” parameter: http://www.omdbapi.com/?t=Game of Thrones&Season=1″ . Would it be possible for you to update your “omdbapi” package to allow a search with an option for only season and not specific episode?
Thanks in advance!
3 Trackbacks/Pingbacks
[…] que curte cinema vai gostar disto: OMDB API.Testei com alguns filmes. Não tem muita coisa, mas dá para começar a se divertir. Por exemplo, […]
[…] an API to make searches and if you donate you can get the full database. And of course, there is an R package to use the API. This is better option for […]
[…] an API to make searches and if you donate you can get the full database. And of course, there is an R package to use the API. This is better option for […]