Important
Ce projet est archivé et n'est plus maintenu.
Un outil en ligne de commande pour télécharger des applications Android directement depuis le Google Play Store.
PlaystoreDownloader est un outil permettant de télécharger des applications Android directement depuis le Google Play Store. Après une configuration initiale (unique), les applications peuvent être téléchargées en spécifiant le nom de leur package.
Ce projet est destiné uniquement à des fins d'apprentissage et n'est en aucun cas affilié à Google .
Interface de ligne de commande |
---|
Interface Web |
---|
Il existe deux manières d'obtenir une copie de travail de PlaystoreDownloader sur votre propre ordinateur : soit en utilisant Docker, soit en utilisant directement le code source dans un environnement Python 3
. Dans les deux cas, la première chose à faire est d'obtenir une copie locale de ce référentiel, ouvrez donc un terminal dans le répertoire où vous souhaitez enregistrer le projet et clonez le référentiel :
$ git clone https://github.com/ClaudiuGeorgiu/PlaystoreDownloader.git
C'est la manière suggérée d'installer PlaystoreDownloader, puisque la seule condition requise est d'avoir installé une version récente de Docker :
$ docker --version
Docker version 20.10.7, build f0df350
L'image Docker officielle de PlaystoreDownloader est disponible sur Docker Hub (construite automatiquement à partir de ce référentiel) :
$ # Download the Docker image.
$ docker pull claudiugeorgiu/playstore-downloader
$ # Give it a shorter name.
$ docker tag claudiugeorgiu/playstore-downloader downloader
Si vous avez téléchargé l'image officielle depuis Docker Hub, vous êtes prêt à utiliser l'outil alors allez-y et vérifiez les instructions d'utilisation, sinon exécutez la commande suivante dans le répertoire PlaystoreDownloader/
précédemment créé (le dossier contenant le Dockerfile
) afin de construire le Image Docker :
$ # 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 .
Lorsque l'image Docker est prête, faites un test rapide pour vérifier que tout a été correctement installé :
$ docker run --rm -it downloader --help
usage: python3 -m playstoredownloader.cli [-h] [-b] [-s] [-c FILE] [-o DIR] [-t TAG] package [package ...]
...
PlaystoreDownloader est maintenant prêt à être utilisé, consultez les instructions d'utilisation pour plus d'informations.
Outre les informations d'identification valides du Google Play Store, la seule exigence de ce projet est une installation fonctionnelle Python 3
(au moins 3.7
) et pipenv
(pour la gestion des dépendances).
Exécutez les commandes suivantes dans le répertoire principal du projet ( PlaystoreDownloader/
) pour installer les dépendances nécessaires :
$ # Make sure to run the commands in PlaystoreDownloader/ directory.
$ # This project uses pipenv (https://github.com/pypa/pipenv) 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
Une fois que tout est installé, faites un test rapide pour vérifier que tout fonctionne correctement :
$ pipenv run python3 -m playstoredownloader.cli --help
usage: python3 -m playstoredownloader.cli [-h] [-b] [-s] [-c FILE] [-o DIR] [-t TAG] package [package ...]
...
PlaystoreDownloader est maintenant prêt à être utilisé, consultez les instructions d'utilisation pour plus d'informations.
Avant d'interagir avec le Google Play Store, vous devez fournir des informations d'identification valides et un identifiant ANDROID associé à votre compte. Veuillez modifier le fichier settings.json et insérer les informations requises avant d'essayer d'utiliser cet outil (et réfléchissez-y à deux fois avant de valider ce fichier après la modification, sinon vous pourriez divulguer vos informations d'identification) :
Saisissez votre e-mail et votre mot de passe Google dans les champs USERNAME
et PASSWORD
du fichier settings.json. Ces informations sont nécessaires pour s'authentifier auprès des serveurs de Google. Si la vérification en deux étapes est activée, vous devrez générer un mot de passe d'application pour le champ PASSWORD
.
Utilisez les informations d'identification ci-dessus sur un appareil Android (réel ou émulé) et téléchargez au moins une application à l'aide du Google Play Store officiel sur l'appareil. Cette étape est nécessaire pour associer l' ID ANDROID de l'appareil à votre compte, afin que vous puissiez télécharger des applications comme si vous utilisiez directement votre appareil. Ne supprimez pas le compte de l'appareil, sinon son identifiant ANDROID ne sera plus valide.
Obtenez l' ID ANDROID de l'appareil et remplissez le champ ANDROID_ID
du fichier settings.json. Vous pouvez obtenir l' ID ANDROID en installant l'application Device ID sur votre appareil, puis copier la chaîne correspondant à Google Service Framework (GSF)
(utilisez cette chaîne à la place de l' Android Device ID
présenté par l'application).
En cas d'erreurs liées à l'authentification après les étapes ci-dessus, envisagez les actions suivantes (visitez les liens pendant que vous êtes connecté avec le compte utilisé pour télécharger les applications) :
autoriser les applications moins sécurisées à accéder à votre compte (https://myaccount.google.com/lesssecureapps)
débloquer temporairement l'accès à votre compte (https://accounts.google.com/DisplayUnlockCaptcha)
Notez que vous ne pourrez télécharger que les applications compatibles avec l'appareil correspondant à l' ID ANDROID susmentionné et que d'autres limitations peuvent influencer le nombre total d'applications disponibles au téléchargement .
Après avoir configuré les informations d'identification du Google Play Store comme décrit dans la configuration, vous devriez disposer d'un fichier credentials.json
valide prêt à être utilisé. Les instructions d'utilisation dépendent de la manière dont vous avez installé l'outil.
Le fichier contenant les informations d'identification n'est pas inclus dans l'image Docker, il doit donc être monté dans le conteneur. Un répertoire de téléchargement doit également être monté, sinon l'application téléchargée ne sera pas accessible à la machine hôte. Si le répertoire actuel ( ${PWD}
) contient le fichier credentials.json
et un dossier output/
, la commande pour télécharger une application avec le nom de package com.application.example
devient :
$ 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 "
Si le téléchargement réussit, le fichier .apk
résultant sera enregistré dans le dossier output/
contenu dans le répertoire où la commande a été exécutée (tapez $ docker run --rm -it downloader --help
ou vérifiez les paramètres disponibles pour plus d'informations ).
Une interface web simple est également disponible :
$ docker run
-u $( id -u ) : $( id -g )
-v " ${PWD} /credentials.json " : " /app/credentials.json "
-v " ${PWD} /output/ " : " /app/Downloads/ "
-p 5000:5000
--entrypoint=python3
--rm -it downloader flask_app.py
$ # Navigate to http://localhost:5000/ to use the web interface.
Dans le répertoire principal du projet ( PlaystoreDownloader/
), appelez l'instruction suivante en utilisant le nom du package de l'application à télécharger :
$ pipenv run python3 -m playstoredownloader.cli " com.application.example "
Si le téléchargement réussit, par défaut, le fichier .apk
résultant sera enregistré dans le répertoire PlaystoreDownloader/Downloads/
. Vous pouvez modifier l'emplacement du répertoire de téléchargement en fournissant un argument supplémentaire -o "path/to/download/folder/"
(tapez $ pipenv run python3 -m playstoredownloader.cli --help
ou vérifiez les paramètres disponibles pour plus d'informations).
Une interface web simple est également disponible :
$ pipenv run python3 flask_app.py
$ # Navigate to http://localhost:5000/ to use the web interface.
Tous les paramètres sont décrits dans le message d'aide :
$ # With Docker.
$ docker run --rm -it downloader --help
$ # With source.
$ pipenv run python3 -m playstoredownloader.cli --help
usage: python3 -m playstoredownloader.cli [-h] [-b] [-s] [-c FILE] [-o DIR] [-t TAG] package [package ...]
...
Le seul paramètre obligatoire est le nom package
de l'application à télécharger, tel qu'il apparaît dans le Google Play Store (par exemple, com.spotify.music
ou com.whatsapp
). Les autres arguments facultatifs sont les suivants :
-b
est un indicateur permettant de télécharger les fichiers .obb
supplémentaires avec l'application (le cas échéant). Voir Fichiers d'extension pour plus d'informations. Les fichiers supplémentaires seront enregistrés dans le même répertoire que l'application téléchargée. Remarque : les fichiers d'extension ne seront plus pris en charge pour les nouvelles applications .
-s
est un indicateur permettant de télécharger les fichiers .apk
fractionnés supplémentaires avec l'application (le cas échéant). Voir Livraison dynamique pour plus d’informations. Les fichiers supplémentaires seront enregistrés dans le même répertoire que l'application téléchargée.
-c CREDENTIALS
est utilisé pour définir le chemin d'accès au fichier de configuration JSON contenant les informations d'identification du Google Play Store. S'il n'est pas spécifié, l'outil tentera par défaut d'utiliser un fichier nommé credentials.json
situé dans le répertoire où la commande est exécutée.
-o DIR
est utilisé pour définir le chemin (relatif ou absolu) du répertoire où enregistrer le fichier .apk
téléchargé (par exemple, -o /home/user/Desktop/
). Si le chemin contient des répertoires manquants, ils seront créés automatiquement. S'il n'est pas spécifié, par défaut, le fichier sera enregistré dans un répertoire Downloads/
créé là où l'outil est exécuté.
-t TAG
peut être utilisé pour définir une balise qui sera ajoutée au nom du fichier, par exemple, en utilisant -t "LABEL"
le nom final de l'application téléchargée ressemblera à [LABEL] filename.apk
. Remarque : la balise est appliquée à l'application principale et aux fichiers supplémentaires (le cas échéant).
Notez qu'actuellement seule l'interface de ligne de commande est configurable avec les arguments ci-dessus, l'interface web demandera uniquement un nom de package et utilisera les valeurs par défaut pour tous les autres paramètres .
Vous êtes libre d'utiliser ce code sous la licence MIT.