Skip to content

raj/rust-imdb-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rust IMDB API

Rust IMDB client using the IMDB JSON web service made available for their iOS app. Inspired by imdb-apios Ruby gem.

API Terminology

  • Title - This can be a movie, TV show, video, documentary, etc.
  • Name - This can be a credit, cast member, or any person.

Installation

Add this to your Cargo.toml:

[dependencies]
imdb-api = "0.1"

Usage

Basic Example

use imdb_api::ImdbClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = ImdbClient::new();

    // Get title information
    let title = client.get_title("tt0111161").await?;
    println!("{:?}", title);

    // Search for titles
    let results = client.search("The Dark Knight").await?;
    println!("{:?}", results);

    Ok(())
}

Validate IMDB ID

use imdb_api::validate_imdb_id;

fn main() {
    let is_valid = validate_imdb_id("tt0111161");  // true
    let is_invalid = validate_imdb_id("invalid");  // false
}

Check if Title Exists

use imdb_api::ImdbClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = ImdbClient::new();
    let exists = client.title_exists("tt0111161").await?;
    println!("Title exists: {}", exists);
    Ok(())
}

Available Methods

Title Methods

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

Name Methods

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

Search Methods

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

Validation

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

Error Handling

All methods return Result<T, ImdbApiError> where ImdbApiError can be:

  • RequestError - HTTP request error
  • JsonError - JSON parsing error
  • InvalidImdbId - Invalid IMDB ID format
  • ApiError - API error
  • TitleNotFound - Title not found
  • AuthenticationError - Authentication error

Example Project

See /Users/rajdeenoo/Documents/code/rails/rust-imdb-example for a comprehensive example project.

Requirements

  • Rust 1.70 or later

Running the Examples

cargo run --example basic
cd /Users/rajdeenoo/Documents/code/rails/rust-imdb-example
cargo run

Running the Tests

cargo test

Development

Project Structure

rust-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

Dependencies Used

  • reqwest - HTTP client
  • serde / serde_json - JSON serialization
  • hmac / sha2 - Cryptographic signing
  • base64 - Base64 encoding
  • regex - IMDB ID validation
  • chrono - Date/time handling
  • thiserror - Error handling
  • url - URL parsing
  • urlencoding - URL encoding

License

MIT License - see LICENSE file for details.

Contributing

Bug reports and pull requests are welcome on GitHub.

Acknowledgments

About

Rust IMDB client using the IMDB JSON web service made available for their iOS app

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages