{"id":13509519,"url":"https://github.com/sheharyarn/explay","last_synced_at":"2025-03-23T14:31:26.922Z","repository":{"id":57500831,"uuid":"71174806","full_name":"sheharyarn/explay","owner":"sheharyarn","description":"Google Play API in Elixir  :computer:","archived":false,"fork":false,"pushed_at":"2017-06-14T01:46:23.000Z","size":45,"stargazers_count":16,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-18T21:15:47.946Z","etag":null,"topics":["apk","elixir","google-api","playstore","protobuf"],"latest_commit_sha":null,"homepage":"","language":"Protocol Buffer","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sheharyarn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-10-17T19:43:50.000Z","updated_at":"2023-12-18T05:45:26.000Z","dependencies_parsed_at":"2022-08-30T21:01:22.112Z","dependency_job_id":null,"html_url":"https://github.com/sheharyarn/explay","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sheharyarn%2Fexplay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sheharyarn%2Fexplay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sheharyarn%2Fexplay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sheharyarn%2Fexplay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sheharyarn","download_url":"https://codeload.github.com/sheharyarn/explay/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245115838,"owners_count":20563247,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apk","elixir","google-api","playstore","protobuf"],"created_at":"2024-08-01T02:01:08.994Z","updated_at":"2025-03-23T14:31:25.622Z","avatar_url":"https://github.com/sheharyarn.png","language":"Protocol Buffer","funding_links":[],"categories":["Third Party APIs"],"sub_categories":[],"readme":"ExPlay\n======\n\n\u003e Google Play (Android Market) API in Elixir :computer:\n\n(Ported from [`node-google-play`][gp-node])\n\n\n\n## Installation\n\nAdd `explay` to your list of dependencies in `mix.exs`:\n\n```elixir\ndef deps do\n  [{:explay, \"~\u003e 0.1.5\"}]\nend\n```\n\n### Install JS Dependency\n\nRight now, there isn't an erlang/elixir implementation of Google's Protobuf library\nthat can decode v2 data correctly, so we're relying on the npm module `protobufjs`.\nIn your project's root, run:\n\n```bash\nnpm init\nnpm install protobufjs --save\n```\n\nor if you prefer [`yarn`][yarn]:\n\n```bash\nyarn add protobufjs\n```\n\n\n\n## Usage\n\nThere are a lot of modules, each handling their own relevant API calls, but you need\nto be concerned with only two:\n\n - ExPlay.Account\n - ExPlay.Request\n\n\n#### Authentication\n\nTo interact with the Google Play API and get back data, you need a valid and authenticated\nGoogle account (with email, password and device id).\n\n```elixir\n# Save this account object to later use in API requests\n\naccount = %ExPlay.Account{email: \"john@gmail.com\", password: \"12345678\", device_id: \"XXXXXXXX\"}\naccount = ExPlay.Account.authenticate!(account)\n```\n\n#### Get App Details\n\n```elixir\n{:ok, app} = ExPlay.Request.package_details(account, \"com.facebook.katana\")\n\napp.title\n# =\u003e \"Facebook\"\n\napp.descriptionHtml\n# =\u003e \"Keeping up with friends is faster than ever...\"\n\napp.details.appDetails.numDownloads\n# =\u003e \"1,000,000,000+ downloads\"\n\napp.details.appDetails.versionCode\n# =\u003e 41212272\n\n# And lots of other stuff. Use Map.keys(app) to get an idea of the response.\n```\n\n#### Get App Delivery Data\n\nYou can get an app's delivery data using `ExPlay.Request.package_download_info/2`.\nIt will return a map with a downloadable APK url and authorization cookies which\nyou can pass to any HTTP client to download the APK (Even `wget` or `curl`).\n\nNote: The `package` here can be the app's bundle identifier string or a\n`{bundle, version}` tuple.\n\n```elixir\n{:ok, info} = ExPlay.Request.package_download_info(account, \"com.facebook.katana\")\n\ninfo.downloadUrl\n# =\u003e \"https://play.googlezip.net/market/download/Download?packageName=com.facebook.katana\u0026versionCode=41212272\u0026ssl...\"\n\ninfo.downloadAuthCookie\n# =\u003e [%{\"name\" =\u003e \"MarketDA\", \"value\" =\u003e \"09919279757374609811\"}]\n```\n\n#### Download APK\n\nAlternatively, you can let `ExPlay` download the app for you. Specify the package\nyou want to download and a (writable) path where you'd like to save it.\n\nNote: The `package` here can be the app's bundle identifier string or a\n`{bundle, version}` tuple.\n\n```elixir\nExPlay.Request.download!(account, \"com.facebook.katana\", \"/tmp/facebook.apk\")\n# =\u003e :ok\n```\n\n\n\n## Roadmap\n\n - [ ] Write missing Tests\n - [x] Write Documentation\n - [ ] Update documentation with more information and examples\n - [ ] Implement pure Erlang/Elixir Protobuf v2 solution for decoding data\n - [ ] Cover all API calls\n    - [x] Authentication\n    - [x] Package Details\n    - [ ] Bulk Package Details\n    - [ ] Search Apps\n    - [ ] Related Apps\n    - [ ] Categories\n    - [ ] App Reviews\n    - [x] Download App\n    - [ ] Download App Data\n\n\n\n## Contributing\n\n - [Fork][github-fork], Enhance, Send PR\n - Lock issues with any bugs or feature requests\n - Implement something from Roadmap\n - Spread the word\n\n\n\n## License\n\nThis package is available as open source under the terms of the [MIT License][license].\n\n\n\n  [license]:          http://opensource.org/licenses/MIT\n  [github-fork]:      https://github.com/sheharyarn/ex_utils/fork\n\n  [yarn]:             https://github.com/yarnpkg/yarn\n  [gp-node]:          https://github.com/dweinstein/node-google-play\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsheharyarn%2Fexplay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsheharyarn%2Fexplay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsheharyarn%2Fexplay/lists"}