pexels

Pexels Project

Build crates.io docs.rs License Crates.io

This project consists of two main components: pexels-api and pexels-cli. The pexels-api is a Rust library for interacting with the Pexels API, while the pexels-cli is a command-line interface for using the pexels-api.

Features

Installation

pexels-api

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"

pexels-cli

  1. Clone the repository:
     git clone https://github.com/houseme/pexels.git
    
  2. Navigate to the project directory:
     cd pexels/pexels-cli
    
  3. Build the project:
     cargo build
    

Usage

Before using the library or CLI, make sure to set your Pexels API key in a .env file:

PEXELS_API_KEY=your_api_key_here

Pexels-api Example

Here is a basic example of how to use the pexels-api library:

use dotenvy::dotenv;
use pexels_api::{Pexels, MediaType, MediaSort};
use std::env;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    dotenv().ok();
    let api_key = env::var("PEXELS_API_KEY")?;
    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
    let video = client.get_video(3401900).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(())
}

Pexels-cli Commands

Documentation

For detailed documentation, please refer to pexels-api Documentation and pexels-cli Documentation.

License

Licensed under either of

at your option.

Contribution

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.