# 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://crates.io/crates/pinterest-login)
[](https://docs.rs/pinterest-login)
[](https://crates.io/crates/pinterest-login)
[][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**, **the PR shouldn't have more than tree commits most of the time**
## 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
License: MIT OR Unlicense