{"id":13551499,"url":"https://github.com/ClaudiuGeorgiu/PlaystoreDownloader","last_synced_at":"2025-04-03T01:33:09.896Z","repository":{"id":38290753,"uuid":"100208095","full_name":"ClaudiuGeorgiu/PlaystoreDownloader","owner":"ClaudiuGeorgiu","description":"A command line tool to download Android applications directly from the Google Play Store by specifying their package name (an initial one-time configuration is required)","archived":true,"fork":false,"pushed_at":"2024-07-27T12:07:16.000Z","size":3944,"stargazers_count":1132,"open_issues_count":0,"forks_count":219,"subscribers_count":44,"default_branch":"master","last_synced_at":"2024-09-26T22:24:08.067Z","etag":null,"topics":["android","apk","downloader","google","playstore"],"latest_commit_sha":null,"homepage":"","language":"Python","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/ClaudiuGeorgiu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"docs/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/SECURITY.md","support":"docs/SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-08-13T22:22:37.000Z","updated_at":"2024-09-14T13:52:50.000Z","dependencies_parsed_at":"2024-08-01T12:29:17.799Z","dependency_job_id":null,"html_url":"https://github.com/ClaudiuGeorgiu/PlaystoreDownloader","commit_stats":{"total_commits":112,"total_committers":9,"mean_commits":"12.444444444444445","dds":0.4821428571428571,"last_synced_commit":"0567dfef9342ce47fa08e772c7c24d87f535d8d6"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClaudiuGeorgiu%2FPlaystoreDownloader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClaudiuGeorgiu%2FPlaystoreDownloader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClaudiuGeorgiu%2FPlaystoreDownloader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClaudiuGeorgiu%2FPlaystoreDownloader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ClaudiuGeorgiu","download_url":"https://codeload.github.com/ClaudiuGeorgiu/PlaystoreDownloader/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222905996,"owners_count":17055820,"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":["android","apk","downloader","google","playstore"],"created_at":"2024-08-01T12:01:49.465Z","updated_at":"2024-11-03T21:32:35.917Z","avatar_url":"https://github.com/ClaudiuGeorgiu.png","language":"Python","funding_links":[],"categories":["Python","Python (1887)","Tools","Weapons"],"sub_categories":["Market Crawlers","Android"],"readme":"\u003e [!IMPORTANT]\n\u003e This project is archived and no longer maintained.\n\n# PlaystoreDownloader\n\n\u003e A command line tool to download Android applications directly from the Google\n\u003e Play Store.\n\n[![Codacy](https://app.codacy.com/project/badge/Grade/92ff2ab2c1114c7e9df13b77fac0d961)](https://www.codacy.com/gh/ClaudiuGeorgiu/PlaystoreDownloader)\n[![Code Coverage](https://codecov.io/gh/ClaudiuGeorgiu/PlaystoreDownloader/badge.svg)](https://codecov.io/gh/ClaudiuGeorgiu/PlaystoreDownloader)\n[![Python Version](https://img.shields.io/badge/Python-3.7%2B-green.svg?logo=python\u0026logoColor=white)](https://www.python.org/downloads/)\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/ClaudiuGeorgiu/PlaystoreDownloader/blob/master/LICENSE)\n\n\n\n**PlaystoreDownloader** is a tool for downloading Android applications directly from\nthe Google Play Store. After an initial (one-time) configuration, applications can be\ndownloaded by specifying their package name.\n\n***This project is intended for learning purposes only and is not affiliated with Google\nin any way***.\n\n\n\n## ❱ Demo\n\n| Command Line Interface                                                                                |\n|:-----------------------------------------------------------------------------------------------------:|\n| ![CLI](https://raw.githubusercontent.com/ClaudiuGeorgiu/PlaystoreDownloader/master/docs/demo/cli.gif) |\n\n| Web Interface                                                                                         |\n|:-----------------------------------------------------------------------------------------------------:|\n| ![Web](https://raw.githubusercontent.com/ClaudiuGeorgiu/PlaystoreDownloader/master/docs/demo/web.gif) |\n\n\n\n## ❱ Installation\n\nThere are two ways of getting a working copy of PlaystoreDownloader on your own\ncomputer: either by [using Docker](#docker-image) or by\n[using directly the source code](#from-source) in a `Python 3` environment. In both\ncases, the first thing to do is to get a local copy of this repository, so open up a\nterminal in the directory where you want to save the project and clone the repository:\n\n```Shell\n$ git clone https://github.com/ClaudiuGeorgiu/PlaystoreDownloader.git\n```\n\n### Docker image\n\n----------------------------------------------------------------------------------------\n\n#### Prerequisites\n\nThis is the suggested way of installing PlaystoreDownloader, since the only requirement\nis to have a recent version of Docker installed:\n\n```Shell\n$ docker --version             \nDocker version 20.10.7, build f0df350\n```\n\n#### Official Docker Hub image\n\nThe [official PlaystoreDownloader Docker image](https://hub.docker.com/r/claudiugeorgiu/playstore-downloader)\nis available on Docker Hub (automatically built from this repository):\n\n```Shell\n$ # Download the Docker image.\n$ docker pull claudiugeorgiu/playstore-downloader\n$ # Give it a shorter name.\n$ docker tag claudiugeorgiu/playstore-downloader downloader\n```\n\n#### Install\n\nIf you downloaded the official image from Docker Hub, you are ready to use the tool so\ngo ahead and check the [usage instructions](#with-docker), otherwise execute the\nfollowing command in the previously created `PlaystoreDownloader/` directory (the folder\ncontaining the `Dockerfile`) in order to build the Docker image:\n\n```Shell\n$ # Make sure to run the command in PlaystoreDownloader/ directory.\n$ # It will take some time to download and install all the dependencies.\n$ docker build -t downloader .\n```\n\nWhen the Docker image is ready, make a quick test to check that everything was\ninstalled correctly:\n\n```Shell\n$ docker run --rm -it downloader --help\nusage: python3 -m playstoredownloader.cli [-h] [-b] [-s] [-c FILE] [-o DIR] [-t TAG] package [package ...]\n...\n```\n\nPlaystoreDownloader is now ready to be used, see the [usage instructions](#with-docker)\nfor more information.\n\n### From source\n\n----------------------------------------------------------------------------------------\n\n#### Prerequisites\n\nApart from valid Google Play Store credentials, the only requirement of this project is\na working `Python 3` (at least `3.7`) installation and\n[`pipenv`](https://github.com/pypa/pipenv) (for dependency management).\n\n#### Install\n\nRun the following commands in the main directory of the project (`PlaystoreDownloader/`)\nto install the needed dependencies:\n\n```Shell\n$ # Make sure to run the commands in PlaystoreDownloader/ directory.\n\n$ # This project uses pipenv (https://github.com/pypa/pipenv) for dependency management.\n$ # It can be installed with the following command:\n$ # python3 -m pip install pipenv\n\n$ # Install PlaystoreDownloader's requirements (a virtual environment will be created).\n$ pipenv install --deploy\n```\n\nAfter everything is installed, make a quick test to check that everything works\ncorrectly:\n\n```Shell\n$ pipenv run python3 -m playstoredownloader.cli --help\nusage: python3 -m playstoredownloader.cli [-h] [-b] [-s] [-c FILE] [-o DIR] [-t TAG] package [package ...]\n...\n```\n\nPlaystoreDownloader is now ready to be used, see the [usage instructions](#with-source)\nfor more information.\n\n\n\n## ❱ Configuration\n\nBefore interacting with the Google Play Store you have to provide valid credentials\nand an **ANDROID ID** associated to your account. Please modify the\n[credentials.json](https://github.com/ClaudiuGeorgiu/PlaystoreDownloader/blob/master/credentials.json)\nfile and insert the required information before trying to use this tool (and think\ntwice before committing this file after the change, or you might leak your credentials):\n\n* Enter your Google email and password in the `USERNAME` and `PASSWORD` fields of the\n[credentials.json](https://github.com/ClaudiuGeorgiu/PlaystoreDownloader/blob/master/credentials.json)\nfile. This information is needed to authenticate with Google's servers. In case you have\n2-Step Verification activated, you will need to generate an\n[App Password](https://support.google.com/accounts/answer/185833)\nfor the `PASSWORD` field.\n\n* Use the above credentials on an Android device (real or emulated) and download at\nleast one application using the official Google Play Store on the device. This step is\nnecessary in order to associate the **ANDROID ID** of the device to your account, so\nthat you will be able to download applications as if you were directly using your device.\nDo not remove the account from the device or its **ANDROID ID** won't be valid anymore.\n\n* Get the\n[**ANDROID ID**](https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID)\nof the device and fill the `ANDROID_ID` field of the\n[credentials.json](https://github.com/ClaudiuGeorgiu/PlaystoreDownloader/blob/master/credentials.json)\nfile. You can obtain the **ANDROID ID** by installing the\n[Device ID](https://play.google.com/store/apps/details?id=com.evozi.deviceid)\napplication on your device, then copy the string corresponding to\n`Google Service Framework (GSF)` (use this string instead of the `Android Device ID`\npresented by the application).\n\n* In case of errors related to the authentication after the above steps, consider the\nfollowing actions (visit the links while you are logged in with the account used to\ndownload the applications):\n\n    - allow less secure apps to access your account (\u003chttps://myaccount.google.com/lesssecureapps\u003e)\n\n    - temporarily unlock access to your account (\u003chttps://accounts.google.com/DisplayUnlockCaptcha\u003e)\n\n*Note that you will be able to download only the applications compatible with the device\ncorresponding to the aforementioned **ANDROID ID** and further limitations may influence\nthe total number of applications available for download*.\n\n\n\n## ❱ Usage\n\nAfter configuring the Google Play Store credentials as described in the\n[configuration](#-configuration), you should have a valid `credentials.json` file ready\nto be used. The usage instructions depend on how you installed the tool.\n\n### With Docker\n\nThe file with the credentials is not included in the Docker image, so it has to be\nmounted into the container. A download directory has to be mounted too, otherwise the\ndownloaded application won't be accessible to the host machine. If the current\ndirectory (`${PWD}`) contains the `credentials.json` file and an `output/` folder, the\ncommand to download an application with package name `com.application.example` becomes:\n\n```Shell\n$ docker run \\\n    -u $(id -u):$(id -g) \\\n    -v \"${PWD}/credentials.json\":\"/app/credentials.json\" \\\n    -v \"${PWD}/output/\":\"/app/Downloads/\" \\\n    --rm -it downloader \"com.application.example\"\n```\n\nIf the download is successful, the resulting `.apk` file will be saved in the `output/`\nfolder contained in the directory where the command was run (type\n`$ docker run --rm -it downloader --help` or check the\n[available parameters](#available-parameters) for more information).\n\nA simple web interface is also available:\n\n```Shell\n$ docker run \\\n    -u $(id -u):$(id -g) \\\n    -v \"${PWD}/credentials.json\":\"/app/credentials.json\" \\\n    -v \"${PWD}/output/\":\"/app/Downloads/\" \\\n    -p 5000:5000 \\\n    --entrypoint=python3 \\\n    --rm -it downloader flask_app.py\n\n$ # Navigate to http://localhost:5000/ to use the web interface.\n```\n\n### With source\n\nIn the main directory of the project (`PlaystoreDownloader/`), call the following\ninstruction using the package name of the app to be downloaded:\n\n```Shell\n$ pipenv run python3 -m playstoredownloader.cli \"com.application.example\"\n```\n\nIf the download is successful, by default the resulting `.apk` file will be saved in\nthe `PlaystoreDownloader/Downloads/` directory. You can change the location of the\ndownload directory by providing an additional `-o \"path/to/download/folder/\"`\nargument (type `$ pipenv run python3 -m playstoredownloader.cli --help` or check the\n[available parameters](#available-parameters) for more information).\n\nA simple web interface is also available:\n\n```Shell\n$ pipenv run python3 flask_app.py\n\n$ # Navigate to http://localhost:5000/ to use the web interface.\n```\n\n### Available parameters\n\nAll the parameters are described in the help message:\n\n```Shell\n$ # With Docker.\n$ docker run --rm -it downloader --help\n\n$ # With source.\n$ pipenv run python3 -m playstoredownloader.cli --help\n\nusage: python3 -m playstoredownloader.cli [-h] [-b] [-s] [-c FILE] [-o DIR] [-t TAG] package [package ...]\n...\n```\n\nThe only mandatory parameter is the `package` name of the application to be downloaded,\nas it appears in the Google Play Store (e.g., `com.spotify.music` or `com.whatsapp`).\nThe other optional arguments are as follows:\n\n* `-b` is a flag for downloading the additional `.obb` files along with the application\n(if there are any). See\n[Expansion Files](https://developer.android.com/google/play/expansion-files)\nfor more information. The additional files will be saved in the same directory as the\ndownloaded application. *Note:\n[expansion files will no longer be supported for new apps](https://android-developers.googleblog.com/2020/11/new-android-app-bundle-and-target-api.html)*.\n\n* `-s` is a flag for downloading the additional split `.apk` files along with the\napplication (if there are any). See\n[Dynamic Delivery](https://developer.android.com/guide/app-bundle/dynamic-delivery)\nfor more information. The additional files will be saved in the same directory as the\ndownloaded application.\n\n* `-c CREDENTIALS` is used to set the path to the JSON configuration file containing\nthe Google Play Store credentials. If not specified, by default the tool will try to\nuse a file named `credentials.json` located in the directory where the command is run.\n\n* `-o DIR` is used to set the path (relative or absolute) of the directory where to\nsave the downloaded `.apk` file (e.g., `-o /home/user/Desktop/`). If the path contains\nmissing directories, they will be created automatically. If not specified, by default\nthe file will be saved in a `Downloads/` directory created where the tool is run.\n\n* `-t TAG` can be used to set a tag that will be prepended to the file name, e.g.,\nby using `-t \"LABEL\"` the final name of the downloaded application will look like\n`[LABEL] filename.apk`. Note: the tag is applied to the main application and to the\nadditional files (if any).\n\n*Note that currently only the command line interface is configurable with the above\narguments, the web interface will ask only for a package name and will use the default\nvalues for all the other parameters*.\n\n\n\n## ❱ License\n\nYou are free to use this code under the\n[MIT License](https://github.com/ClaudiuGeorgiu/PlaystoreDownloader/blob/master/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FClaudiuGeorgiu%2FPlaystoreDownloader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FClaudiuGeorgiu%2FPlaystoreDownloader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FClaudiuGeorgiu%2FPlaystoreDownloader/lists"}