All Projects → ClaudiuGeorgiu → Playstoredownloader

ClaudiuGeorgiu / Playstoredownloader

Licence: mit
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)

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Playstoredownloader

Googleplay Api
Google Play Unofficial Python API
Stars: ✭ 278 (-58.13%)
Mutual labels:  apk, google, playstore
Raccoon4
APK Downloader for Google Play
Stars: ✭ 369 (-44.43%)
Mutual labels:  apk, google, playstore
Prism
Prism is a beautiful open-source wallpapers app for Android. It is built with Dart on top of Google's Flutter Framework.
Stars: ✭ 241 (-63.7%)
Mutual labels:  apk, playstore
Android Ratingreviews
Simple star rating system bars, a view similar to the ones seen on Google Playstore. ⭐🌟✨
Stars: ✭ 110 (-83.43%)
Mutual labels:  google, playstore
Apkupdater
APKUpdater is an open source tool that simplifies the process of finding updates for your installed apps.
Stars: ✭ 1,028 (+54.82%)
Mutual labels:  apk, google
cordova-plugin-apkupdater
This plugin allows your Android app to download and install compressed updates without the Google Play Store.
Stars: ✭ 46 (-93.07%)
Mutual labels:  downloader, apk
Play Store Api
Google Play Store protobuf API wrapper in java
Stars: ✭ 249 (-62.5%)
Mutual labels:  google, playstore
Node Google Play
Get details and download apps from https://play.google.com by emulating an Android (Nexus 5X) device by default. For a rust version of this library check out https://github.com/dweinstein/rs-google-play
Stars: ✭ 247 (-62.8%)
Mutual labels:  apk, google
Yalpstore
Download apks from Google Play Store
Stars: ✭ 2,088 (+214.46%)
Mutual labels:  apk, playstore
Phobos
This tool written in Python3 allows you to download any movie easily thanks to Google Dorks and Google Drive!
Stars: ✭ 59 (-91.11%)
Mutual labels:  downloader, google
Images To Pdf
An app to convert images to PDF file!
Stars: ✭ 602 (-9.34%)
Mutual labels:  playstore
Pxder
🖼 Download illusts from pixiv.net P站插画批量下载器
Stars: ✭ 602 (-9.34%)
Mutual labels:  downloader
Snatch
A simple, fast and interruptable download accelerator, written in Rust
Stars: ✭ 623 (-6.17%)
Mutual labels:  downloader
Sou
简单搜索,一个简单的前端界面。用惯了各种导航首页,满屏幕尽是各种不厌其烦的广告和资讯;尝试自己写个自己的主页。
Stars: ✭ 628 (-5.42%)
Mutual labels:  google
Android Yolo
Real-time object detection on Android using the YOLO network with TensorFlow
Stars: ✭ 604 (-9.04%)
Mutual labels:  apk
Search Deflector
A small program that forwards searches from Cortana to your preferred browser and search engine.
Stars: ✭ 620 (-6.63%)
Mutual labels:  google
Fast Android Networking
🚀 A Complete Fast Android Networking Library that also supports HTTP/2 🚀
Stars: ✭ 5,346 (+705.12%)
Mutual labels:  downloader
No Google
Completely block Google and its services
Stars: ✭ 596 (-10.24%)
Mutual labels:  google
Datasheets
Read data from, write data to, and modify the formatting of Google Sheets
Stars: ✭ 593 (-10.69%)
Mutual labels:  google
Musicdl
A lightweight music downloader written by pure python.
Stars: ✭ 641 (-3.46%)
Mutual labels:  downloader

PlaystoreDownloader

A command line tool to download Android applications directly from the Google Play Store.

Codacy Ubuntu Build Status Windows Build Status MacOS Build Status Code Coverage Python Version License

PlaystoreDownloader is a tool for downloading Android applications directly from the Google Play Store. After an initial (one-time) configuration, applications can be downloaded by specifying their package name.

This project is intended for learning purposes only and is not affiliated with Google in any way.

❱ Demo

Command Line Interface
CLI
Web Interface
Web

❱ Installation

There are two ways of getting a working copy of PlaystoreDownloader on your own computer: either by using Docker or by using directly the source code in a Python 3 environment. In both cases, the first thing to do is to get a local copy of this repository, so open up a terminal in the directory where you want to save the project and clone the repository:

$ git clone https://github.com/ClaudiuGeorgiu/PlaystoreDownloader.git

Docker image


Prerequisites

This is the suggested way of installing PlaystoreDownloader, since the only requirement is to have a recent version of Docker installed:

$ docker --version             
Docker version 19.03.0, build aeac949

Official Docker Hub image

The official PlaystoreDownloader Docker image is available on Docker Hub (automatically built from this repository):

$ # Download the Docker image.
$ docker pull claudiugeorgiu/playstore-downloader
$ # Give it a shorter name.
$ docker tag claudiugeorgiu/playstore-downloader downloader

Install

If you downloaded the official image from Docker Hub, you are ready to use the tool so go ahead and check the usage instructions, otherwise execute the following command in the previously created PlaystoreDownloader/ directory (the folder containing the Dockerfile) in order to build the Docker image:

$ # Make sure to run the command in PlaystoreDownloader/ directory.
$ # It will take some time to download and install all the dependencies.
$ docker build -t downloader .

When the Docker image is ready, make a quick test to check that everything was installed correctly:

$ docker run --rm -it downloader --help
usage: download.py [-h] [-b] [-s] [-c CREDENTIALS] [-o FILE] [-t TAG] package
...

PlaystoreDownloader is now ready to be used, see the usage instructions for more information.

From source


Prerequisites

Apart from valid Google Play Store credentials, the only requirement of this project is a working Python 3 (at least 3.6) installation and pipenv (for dependency management).

Install

Run the following commands in the main directory of the project (PlaystoreDownloader/) to install the needed dependencies:

$ # Make sure to run the commands in PlaystoreDownloader/ directory.

$ # This project uses pipenv (https://pipenv.pypa.io/) for dependency management.
$ # It can be installed with the following command:
$ # python3 -m pip install pipenv

$ # Install PlaystoreDownloader's requirements (a virtual environment will be created).
$ pipenv install --deploy

After everything is installed, make a quick test to check that everything works correctly:

$ pipenv run python download.py --help
usage: download.py [-h] [-b] [-s] [-c CREDENTIALS] [-o FILE] [-t TAG] package
...

PlaystoreDownloader is now ready to be used, see the usage instructions for more information.

❱ Configuration

Before interacting with the Google Play Store you have to provide valid credentials and an ANDROID ID associated to your account. Please modify the credentials.json file and insert the required information before trying to use this tool:

  • Enter your Google email and password in the USERNAME and PASSWORD fields of the credentials.json file. This information is needed to authenticate with Google's servers. In case you have 2-Step Verification activated, you will need to generate an App Password for the PASSWORD field.

  • Use the above credentials on an Android device (real or emulated) and download at least one application using the official Google Play Store on the device. This step is necessary in order to associate the ANDROID ID of the device to your account, so that you will be able to download applications as if you were directly using your device. Do not remove the account from the device or its ANDROID ID won't be valid anymore.

  • Get the ANDROID ID of the device and fill the ANDROID_ID field of the credentials.json file. You can obtain the ANDROID ID by installing the Device ID application on your device, then copy the string corresponding to Google Service Framework (GSF) (use this string instead of the Android Device ID presented by the application).

  • In case of errors related to the authentication after the above steps, consider the following actions (visit the links while you are logged in with the account used to download the applications):

Note that you will be able to download only the applications compatible with the device corresponding to the aforementioned ANDROID ID and further limitations may influence the total number of applications available for download.

❱ Usage

After configuring the Google Play Store credentials as described in the configuration, you should have a valid credentials.json file ready to be used. The usage instructions depend on how you installed the tool.

With Docker

The file with the credentials is not included in the Docker image, so it has to be mounted into the container. A download directory has to be mounted too, otherwise the downloaded application won't be accessible to the host machine. If the current directory (${PWD}) contains the credentials.json file and an output/ folder, the command to download an application with package name com.application.example becomes:

$ docker run \
    -u $(id -u):$(id -g) \
    -v "${PWD}/credentials.json":"/app/credentials.json" \
    -v "${PWD}/output/":"/app/Downloads/" \
    --rm -it downloader "com.application.example"

If the download is successful, the resulting .apk file will be saved in the output/ folder contained in the directory where the command was run (type $ docker run --rm -it downloader --help or check the available parameters for more information).

A simple web interface is also available:

$ docker run \
    -u $(id -u):$(id -g) \
    -v "${PWD}/credentials.json":"/app/credentials.json" \
    -v "${PWD}/output/":"/app/Downloads/" \
    -p 5000:5000 \
    --entrypoint=python \
    --rm -it downloader flask_app.py

$ # Navigate to http://localhost:5000/ to use the web interface.

With source

In the main directory of the project (PlaystoreDownloader/), call the following instruction using the package name of the app to be downloaded:

$ pipenv run python download.py "com.application.example"

If the download is successful, the resulting .apk file will be saved in the PlaystoreDownloader/Downloads/ directory. You can change the name and the location of the downloaded .apk file by providing an additional -o "path/to/downloaded.apk" argument to download.py (type $ pipenv run python download.py --help or check the available parameters for more information).

A simple web interface is also available:

$ pipenv run python flask_app.py

$ # Navigate to http://localhost:5000/ to use the web interface.

Available parameters

All the parameters are described in the help message:

$ # With Docker.
$ docker run --rm -it downloader --help

$ # With source.
$ pipenv run python download.py --help

usage: download.py [-h] [-b] [-s] [-c CREDENTIALS] [-o FILE] [-t TAG] package
...

The only mandatory parameter is the package name of the application to be downloaded, as it appears in the Google Play Store (e.g., com.spotify.music or com.whatsapp). The other optional arguments are as follows:

  • -b is a flag for downloading the additional .obb files along with the application (if there are any). See Expansion Files for more information. The additional files will be saved in the same directory as the downloaded application.

  • -s is a flag for downloading the additional split .apk files along with the application (if there are any). See Dynamic Delivery for more information. The additional files will be saved in the same directory as the downloaded application. Note: this feature used to work but currently seems broken.

  • -c CREDENTIALS is used to set the path to the JSON configuration file containing the Google Play Store credentials. If not specified, by default the tool will try to use a file named credentials.json located in the directory where the command is run.

  • -o FILE is used to set the path (relative or absolute) of the downloaded .apk file (e.g., -o /home/user/Desktop/downloaded.apk). If the path contains missing directories, they will be created automatically. If not specified, by default the file will be saved in a Downloads/ directory created where the tool is run.

  • -t TAG can be used to set a tag that will be prepended to the file name, e.g., by using -t "LABEL" the final name of the downloaded application will look like [LABEL] filename.apk. Note: the tag is applied only to the main application, the additional files won't have any tag added to the file name.

Note that currently only the command line interface is configurable with the above arguments, the web interface will ask only for a package name and will use the default values for all the other parameters.

❱ Contributing

Questions, bug reports and pull requests are welcome on GitHub at https://github.com/ClaudiuGeorgiu/PlaystoreDownloader (see contributing).

❱ License

You are free to use this code under the MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].