# `gpapi` - Google Play API for Rust
[](https://crates.io/crates/gpapi)
[](https://docs.rs/gpapi)
[](./LICENSE)
[](https://github.com/EFForg/rs-google-play/actions/workflows/ci.yml)
A library for interacting with the Google Play API.
## Getting Started
To interact with the API, first you'll have to obtain an OAuth token by visiting the Google
[embedded setup page](https://accounts.google.com/EmbeddedSetup/identifier?flowName=EmbeddedSetupAndroid)
and opening the browser debugging console, logging in, and looking for the `oauth_token` cookie
being set on your browser. It will be present in the last requests being made and start with
"oauth2_4/". Copy this value. It can only be used once, in order to obtain the `aas_token`,
which can be used subsequently. To obtain this token:
```rust
use gpapi::Gpapi;
#[tokio::main]
async fn main() {
let mut api = Gpapi::new("ad_g3_pro", &email);
println!("{:?}", api.request_aas_token(oauth_token).await);
}
```
Now, you can begin interacting with the API by initializing it setting the `aas_token` and
logging in.
```rust
use gpapi::Gpapi;
#[tokio::main]
async fn main() {
let mut api = Gpapi::new("px_7a", &email);
api.set_aas_token(aas_token);
api.login().await;
// do something
}
```
From here, you can get package details, get the info to download a package, or use the library to download it.
```rust
let details = api.details("com.instagram.android").await;
println!("{:?}", details);
let download_info = api.get_download_info("com.instagram.android", None).await;
println!("{:?}", download_info);
api.download("com.instagram.android", None, true, true, &Path::new("/tmp/testing"), None).await;
```
## Docs
Documentation for this crate can be found on [docs.rs](https://docs.rs/gpapi/).
## Todo
This inludes some subset, but not all, of the Google Play API library. Some of the functionality is missing, such as browsing and searching for packages.
## Credits
This library was originally created by David Weinstein, and is currently maintained by Bill Budington.
It follows some of the conventions set by Aurora's [gplayapi java library](https://gitlab.com/AuroraOSS/gplayapi/). It was originally modeled after the [googleplay-api for python](https://github.com/NoMore200/googleplay-api.git) patterns.
License: MIT