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]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(())}

Validate IMDB ID

use imdb_api::validate_imdb_id;fnmain(){let is_valid = validate_imdb_id("tt0111161");// truelet is_invalid = validate_imdb_id("invalid");// false}

Check if Title Exists

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(())}

Available Methods

Title Methods

MethodDescription
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

MethodDescription
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

MethodDescription
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

MethodDescription
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

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

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]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(())}

Validate IMDB ID

use imdb_api::validate_imdb_id;fnmain(){let is_valid = validate_imdb_id("tt0111161");// truelet is_invalid = validate_imdb_id("invalid");// false}

Check if Title Exists

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(())}

Available Methods

Title Methods

MethodDescription
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

MethodDescription
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

MethodDescription
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

MethodDescription
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

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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]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(())}

Validate IMDB ID

use imdb_api::validate_imdb_id;fnmain(){let is_valid = validate_imdb_id("tt0111161");// truelet is_invalid = validate_imdb_id("invalid");// false}

Check if Title Exists

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(())}

Available Methods

Title Methods

MethodDescription
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

MethodDescription
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

MethodDescription
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

MethodDescription
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

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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]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(())}

Validate IMDB ID

use imdb_api::validate_imdb_id;fnmain(){let is_valid = validate_imdb_id("tt0111161");// truelet is_invalid = validate_imdb_id("invalid");// false}

Check if Title Exists

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(())}

Available Methods

Title Methods

MethodDescription
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

MethodDescription
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

MethodDescription
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

MethodDescription
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

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

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]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(())}

Validate IMDB ID

use imdb_api::validate_imdb_id;fnmain(){let is_valid = validate_imdb_id("tt0111161");// truelet is_invalid = validate_imdb_id("invalid");// false}

Check if Title Exists

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(())}

Available Methods

Title Methods

MethodDescription
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

MethodDescription
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

MethodDescription
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

MethodDescription
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

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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]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(())}

Validate IMDB ID

use imdb_api::validate_imdb_id;fnmain(){let is_valid = validate_imdb_id("tt0111161");// truelet is_invalid = validate_imdb_id("invalid");// false}

Check if Title Exists

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(())}

Available Methods

Title Methods

MethodDescription
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

MethodDescription
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

MethodDescription
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

MethodDescription
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

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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]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(())}

Validate IMDB ID

use imdb_api::validate_imdb_id;fnmain(){let is_valid = validate_imdb_id("tt0111161");// truelet is_invalid = validate_imdb_id("invalid");// false}

Check if Title Exists

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(())}

Available Methods

Title Methods

MethodDescription
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

MethodDescription
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

MethodDescription
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

MethodDescription
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

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

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]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(())}

Validate IMDB ID

use imdb_api::validate_imdb_id;fnmain(){let is_valid = validate_imdb_id("tt0111161");// truelet is_invalid = validate_imdb_id("invalid");// false}

Check if Title Exists

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(())}

Available Methods

Title Methods

MethodDescription
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

MethodDescription
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

MethodDescription
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

MethodDescription
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

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages