Rust IMDB client using the IMDB JSON web service made available for their iOS app. Inspired by imdb-apios Ruby gem.
Title- This can be a movie, TV show, video, documentary, etc.Name- This can be a credit, cast member, or any person.
Add this to your Cargo.toml:
[dependencies]
imdb-api = "0.1"use imdb_api::ImdbClient;#[tokio::main]asyncfnmain() -> Result<(),Box<dyn std::error::Error>>{let client = ImdbClient::new();// Get title informationlet title = client.get_title("tt0111161").await?;println!("{:?}", title);// Search for titleslet results = client.search("The Dark Knight").await?;println!("{:?}", results);Ok(())}use imdb_api::validate_imdb_id;fnmain(){let is_valid = validate_imdb_id("tt0111161");// truelet is_invalid = validate_imdb_id("invalid");// false}use imdb_api::ImdbClient;#[tokio::main]asyncfnmain() -> Result<(),Box<dyn std::error::Error>>{let client = ImdbClient::new();let exists = client.title_exists("tt0111161").await?;println!("Title exists: {}", exists);Ok(())}| Method | Description |
|---|---|
get_title(id) | Returns title information |
get_title_genres(id) | Returns title genres information |
get_title_credits(id) | Returns title credits information |
get_title_quotes(id) | Returns title quotes information |
get_title_ratings(id) | Returns title ratings information |
get_title_connections(id) | Returns title connections information |
get_title_similarities(id) | Returns title similarities information |
get_title_videos(id) | Returns title videos information |
get_title_news(id) | Returns news |
get_title_trivia(id) | Returns trivia |
get_title_soundtracks(id) | Returns soundtracks information |
get_title_goofs(id) | Returns "goofs" information |
get_title_technical(id) | Returns technical information |
get_title_companies(id) | Returns information about companies |
get_title_episodes(id) | Returns season and episodes information |
get_title_plot(id) | Returns title plot information |
get_title_plot_synopsis(id) | Returns title plot synopsis information |
get_title_awards(id) | Returns title awards information |
get_title_releases(id) | Returns releases information |
get_title_versions(id) | Returns versions information |
get_title_user_reviews(id) | Returns user review information |
get_title_metacritic_reviews(id) | Returns metacritic review information |
get_title_images(id) | Returns title images information |
| Method | Description |
|---|---|
get_name(id) | Returns person/name information |
get_name_filmography(id) | Returns person/name filmography information |
get_name_images(id) | Returns person/name images information |
get_name_videos(id) | Returns person/name videos information |
| Method | Description |
|---|---|
search(query) | Returns search results for titles or names |
get_popular_titles() | Returns popular titles |
get_popular_shows() | Returns popular TV shows |
get_popular_movies() | Returns popular movies |
| Method | Description |
|---|---|
validate_imdb_id(id) | Returns true if IMDB ID is valid, false otherwise |
title_exists(id) | Returns true if title exists on IMDB, false otherwise |
All methods return Result<T, ImdbApiError> where ImdbApiError can be:
RequestError- HTTP request errorJsonError- JSON parsing errorInvalidImdbId- Invalid IMDB ID formatApiError- API errorTitleNotFound- Title not foundAuthenticationError- Authentication error
See /Users/rajdeenoo/Documents/code/rails/rust-imdb-example for a comprehensive example project.
- Rust 1.70 or later
cargo run --example basic
cd /Users/rajdeenoo/Documents/code/rails/rust-imdb-example
cargo runcargo testrust-imdb-api/
├── src/
│ ├── client.rs # Main API client
│ ├── constants.rs # API constants
│ ├── error.rs # Error types
│ ├── signer.rs # AWS3-style authentication
│ └── lib.rs # Public API
├── examples/
│ └── basic.rs # Basic usage example
└── Cargo.toml
reqwest- HTTP clientserde/serde_json- JSON serializationhmac/sha2- Cryptographic signingbase64- Base64 encodingregex- IMDB ID validationchrono- Date/time handlingthiserror- Error handlingurl- URL parsingurlencoding- URL encoding
MIT License - see LICENSE file for details.
Bug reports and pull requests are welcome on GitHub.
- Inspired by imdb-apios (Ruby)