| Crates.io | pexels-api |
| lib.rs | pexels-api |
| version | 0.0.5 |
| created_at | 2024-12-31 10:46:36.031398+00 |
| updated_at | 2025-01-15 17:02:15.788225+00 |
| description | A Rust client for the Pexels API |
| homepage | https://github.com/houseme/pexels |
| repository | https://github.com/houseme/pexels.git |
| max_upload_size | |
| id | 1499899 |
| size | 114,564 |
Pexels API is a Rust library for interacting with the Pexels API. It allows you to search for photos, videos, and collections, as well as retrieve individual media items by their ID.
Add the following to your Cargo.toml:
[dependencies]
dotenvy = "0.15.7"
pexels-api = { version = "0.0.5" }
reqwest = { version = "0.12.11", features = ["json"] }
serde = { version = "1.0.217", features = ["derive"] }
serde_json = "1.0.135"
thiserror = "2.0.9 "
tokio = { version = "1", features = ["full"] }
url = "2.5.4"
Before using the library, make sure to set your Pexels API key in a .env file:
PEXELS_API_KEY=your_api_key_here
Here is a basic example of how to use the library:
use dotenvy::dotenv;
use pexels_api::{Pexels, MediaType, MediaSort};
use std::env;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
/// Load the environment variables from the .env file
dotenv().ok();
/// Get the Pexels API key from the environment
let api_key = env::var("PEXELS_API_KEY")?;
/// Create a new Pexels client
let client = Pexels::new(api_key);
/// Search for photos
let photos = client.search_photos("nature", 10, 1).await?;
for photo in photos.photos {
println!("{:?}", photo);
}
/// Get a photo by ID
let photo = client.get_photo(10967).await?;
println!("{:?}", photo);
/// Search for videos
let videos = client.search_videos("nature", 10, 1).await?;
for video in videos.videos {
println!("{:?}", video);
}
/// Get a video by ID
/// Note: The video ID is just an example. You should replace it with a valid video ID.
/// You can get a video ID by searching for videos or collections.
/// # Example video ID: 25460961
let video = client.get_video(25460961).await?;
println!("{:?}", video);
/// Search for collections
let collections = client.search_collections(10, 1).await?;
for collection in collections.collections {
println!("{:?}", collection);
}
/// Search for media
let media_response = client.search_media("nature", 10, 1, MediaType::Photo, MediaSort::Latest).await?;
for media in media_response.media {
println!("{:?}", media);
}
Ok(())
}
The main client for interacting with the Pexels API.
new(api_key: String) -> Self: Creates a new Pexels client.search_photos(query: &str, per_page: usize, page: usize) -> Result<PhotosResponse, PexelsError>: Searches for
photos.get_photo(id: u32) -> Result<Photo, PexelsError>: Retrieves a photo by its ID.search_videos(query: &str, per_page: usize, page: usize) -> Result<VideosResponse, PexelsError>: Searches for
videos.get_video(id: u32) -> Result<Video, PexelsError>: Retrieves a video by its ID.search_collections(per_page: usize, page: usize) -> Result<CollectionsResponse, PexelsError>: Searches for
collections.search_media(query: &str, per_page: usize, page: usize, media_type: MediaType, sort: MediaSort) -> Result<MediaResponse, PexelsError>:
Searches for media.
For detailed documentation, please refer to Documentation.
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 or MIT license, shall be dual licensed as above, without any additional terms or conditions.