TheMovieDB 0.1.0

A robust and idiomatic Rust API wrapper for The Movie Database (TMDb) v3 API.
Documentation
# TheMovieDB Rust API Wrapper

[![Rust CI](https://github.com/Junaid433/TheMovieDB/actions/workflows/rust.yml/badge.svg)](https://github.com/Junaid433/TheMovieDB/actions/workflows/rust.yml)
[![Run Examples](https://github.com/Junaid433/TheMovieDB/actions/workflows/examples.yml/badge.svg)](https://github.com/Junaid433/TheMovieDB/actions/workflows/examples.yml)

This repository hosts `TheMovieDB`, a robust and idiomatic Rust API wrapper for The Movie Database (TMDb) v3 API. This library is designed to provide a comprehensive and user-friendly interface for interacting with TMDb's extensive dataset, enabling developers to effortlessly fetch and manage data related to movies, TV shows, people, and more. It is an ideal solution for applications requiring seamless integration with TMDb, such as media management tools, recommendation systems, or data analysis platforms.

## Key Features

`TheMovieDB` offers extensive coverage of the TMDb API, including:

-   **Account Management**: Programmatic interaction with user accounts, encompassing list management, marking favorite content, and submitting ratings.
-   **Authentication**: Secure handling of user authentication and guest sessions to facilitate personalized and authorized API requests.
-   **Changes**: Mechanisms to track and retrieve recent updates and modifications to movie, TV show, and personnel data within the TMDb ecosystem.
-   **Configuration**: Access to essential TMDb API configuration data, such as country codes, job roles, supported languages, and timezones, vital for developing localized applications.
-   **Discover**: Advanced functionalities for discovering movies and TV shows based on diverse criteria, including genre, release date, popularity, and more.
-   **Find**: Efficient retrieval of TMDb data using external identifiers from other prominent databases (e.g., IMDb, TVDB, Freebase).
-   **Genres**: Comprehensive lists of movie and TV show genres, enabling effective content categorization and filtering.
-   **Movies**: Detailed information retrieval for movies, including cast and crew details, trailers, reviews, release dates, and associated collections. Access to data concerning production companies and keywords is also provided.
-   **People**: In-depth information on actors, directors, and other crew members, including biographies, filmographies, and social media links.
-   **Search**: Robust search capabilities to locate movies, TV shows, people, collections, companies, and keywords across the entire TMDb database.
-   **TV**: Detailed information for television series, individual seasons, and specific episodes, encompassing data on networks, episode groups, and air dates.

## Installation

To integrate `TheMovieDB` into your Rust project, add the following dependency to your `Cargo.toml` file:

```toml
[dependencies]
TheMovieDB = "0.1.0"
```

## API Key Configuration

Access to the TMDb API necessitates an API key. If you do not possess one, it can be readily obtained by registering on the [official TMDb website](https://www.themoviedb.org/documentation/api).

For secure and convenient access, it is recommended to configure your API key as an environment variable named `TMDB_API_KEY`:

```bash
export TMDB_API_KEY="your_api_key_here"
```

## Usage Examples

Below is a fundamental example illustrating how to retrieve movie information using the library:

```rust
use TheMovieDB::movies::Movies;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Initialize the Movies API client with a movie ID (e.g., 550 for Fight Club)
    let movies = Movies::new(550);
    let movie_info = movies.info(None).await;
    println!("Movie Info: {:#?}", movie_info);

    Ok(())
}
```

## Usage Examples

For a comprehensive understanding of the library's capabilities and a wider array of API call demonstrations, please consult the `examples/` directory within this repository. Each example showcases specific functionalities and serves as a practical guide for implementation.

## Documentation

Detailed and automatically generated documentation for `TheMovieDB` is available in the `docs/` directory. This documentation provides in-depth information on every module, function, and data structure, serving as the primary reference for developers.

## Contributing

Contributions to `TheMovieDB` are highly encouraged. If you have suggestions for improvements, new feature implementations, or bug fixes, please feel free to open an issue or submit a pull request. Prior to contributing, kindly review our [CONTRIBUTING.md](CONTRIBUTING.md) guidelines to ensure adherence to project standards.

## License

This project is distributed under the [MIT License](LICENSE). Refer to the `LICENSE` file for complete licensing details.

## Support and Contact

For any inquiries, issues, or general communication, please utilize the following channels:

-   Open an issue on the [GitHub repository](https://github.com/Junaid433/TheMovieDB/issues)
-   Directly contact the maintainer via [GitHub](https://github.com/Junaid433)

We appreciate your interest in `TheMovieDB` and look forward to your contributions and feedback. Happy coding! 🎬