An open API service indexing awesome lists of open source software.

https://github.com/0x61nas/pinterest-login

Simple crate to login to Pinterest and get the cookies via Chromiumoxide to simulate a browser (open a real browser actually), to use the Pinterest API without needing a developer account or an API key or anything that costs money :).
https://github.com/0x61nas/pinterest-login

authentication pinterest pinterest-api pinterest-autentication pinterest-auth pinterest-rs

Last synced: about 1 year ago
JSON representation

Simple crate to login to Pinterest and get the cookies via Chromiumoxide to simulate a browser (open a real browser actually), to use the Pinterest API without needing a developer account or an API key or anything that costs money :).

Awesome Lists containing this project

README

          

Simple crate to login to Pinterest and get the cookies via Chromiumoxide to simulate a browser (open a real browser actually), to use the Pinterest API without needing a developer account or an API key or anything that costs money :).

[![crates.io](https://img.shields.io/crates/v/pinterest-login.svg)](https://crates.io/crates/pinterest-login)
[![docs.rs](https://docs.rs/pinterest-login/badge.svg)](https://docs.rs/pinterest-login)
[![downloads](https://img.shields.io/crates/d/pinterest-login.svg)](https://crates.io/crates/pinterest-login)
[![license](https://img.shields.io/crates/l/pinterest-login.svg)][mit]

Asynchronous, and uses async-std as the runtime by default (you can use tokio if you want)

> WARNING: This project isn't officially supported by Pinterest, and it's not affiliated with Pinterest in any way.

## Examples

### With the `async-std` runtime

```rust
use pinterest_login::config_builder::DefaultBrowserConfigBuilder;
use pinterest_login::login;
use pinterest_login::login_bot::DefaultBrowserLoginBot;

#[async_std::main]
async fn main() {
let email = std::env::var("PINTEREST_EMAIL").unwrap();
let password = std::env::var("PINTEREST_PASSWORD").unwrap();

let bot = DefaultBrowserLoginBot::new(email.as_str(), password.as_str());
let config_builder = DefaultBrowserConfigBuilder::default();

match login(&bot, &config_builder).await {
Ok(cookies) => {
// Store the cookies in a file or something, and do whatever you want with them
// I like the cookies bay the way
// ...
println!("{}", cookies.len());
println!("{:?}", cookies);
}
Err(e) => {
// The login was unsuccessful
eprintln!("The login was unsuccessful: {}", e);
}
};
}
```
```rust
use pinterest_login::config_builder::DefaultBrowserConfigBuilder;
use pinterest_login::login;
use pinterest_login::login_bot::DefaultBrowserLoginBot;
use std::time::Duration;

#[async_std::main]
async fn main() {
let email = std::env::var("PINTEREST_EMAIL").unwrap();
let password = std::env::var("PINTEREST_PASSWORD").unwrap();

let bot = DefaultBrowserLoginBot::new(email.as_str(), password.as_str());

// Show the browser, and set the request timeout to 2 seconds
let config_builder = DefaultBrowserConfigBuilder::new(false, Duration::from_secs(2).into(), None);

match login(&bot, &config_builder).await {
Ok(cookies) => {
// ...
}
Err(e) => {
// The login was unsuccessful
eprintln!("The login was unsuccessful: {}", e);
}
};
}
```

### With `tokio` runtime
```rust
use pinterest_login::config_builder::DefaultBrowserConfigBuilder;
use pinterest_login::login;
use pinterest_login::login_bot::DefaultBrowserLoginBot;
use std::time::Duration;

#[tokio::main]
async fn main() {
let email = std::env::var("PINTEREST_EMAIL").unwrap();
let password = std::env::var("PINTEREST_PASSWORD").unwrap();

let bot = DefaultBrowserLoginBot::new(email.as_str(), password.as_str());

// Show the browser, and set the request timeout to 2 seconds
let config_builder = DefaultBrowserConfigBuilder::new(false, Duration::from_secs(2).into(), None);

match login(&bot, &config_builder).await {
Ok(cookies) => {
// ...
}
Err(e) => {
// The login was unsuccessful
eprintln!("The login was unsuccessful: {}", e);
}
};
}
```

## Features
* `async-std-runtime`: Use the async-std runtime instead of tokio (enabled by default)
* `tokio-runtime`: Use the tokio runtime instead of async-std
* `debug`: Enable debug logging

## Contributing
I'm happy to accept any contributions, just consider reading the [CONTRIBUTING.md](https://github.com/0x61nas/pinterest-login/blob/aurora/CONTRIBUTING.md) guide first. to avoid waste waste our time on some unnecessary things.

> the main keywords are: **signed commits**, **conventional commits**, **no emojis**, **linear history**, **try to compine the commits if posoble**

## License
This project is licensed under ether the [MIT license][mit] or the [Unlicense license][unlicense], you can choose which one you want.

[mit]: https://github.com/0x61nas/pinterest-login/blob/aurora/LICENSE
[unlicense]: https://github.com/0x61nas/pinterest-login/blob/aurora/LICENSE-UNLICENSE

> This project is part of the [pinterest-rs](https://github.com/0x61nas/pinterest-rs) project

## Dependencies graph

![deps graph](./_deps.png)

> Generated with [cargo-depgraph](https://crates.io/crates/cargo-depgraph)