重要
このプロジェクトはアーカイブされ、維持されなくなりました。
Android アプリケーションを Google Play ストアから直接ダウンロードするためのコマンド ライン ツール。
PlaystoreDownloaderは、Google Play ストアから Android アプリケーションを直接ダウンロードするためのツールです。初期 (1 回限り) 構成の後、パッケージ名を指定してアプリケーションをダウンロードできます。
このプロジェクトは学習のみを目的としており、Google とはいかなる関係もありません。
コマンドラインインターフェース |
---|
ウェブインターフェース |
---|
自分のコンピューター上で PlaystoreDownloader の作業用コピーを取得するには、Docker を使用する方法と、 Python 3
環境でソース コードを直接使用する方法の 2 つの方法があります。どちらの場合も、最初に行うことはこのリポジトリのローカル コピーを取得することなので、プロジェクトを保存するディレクトリでターミナルを開き、リポジトリのクローンを作成します。
$ git clone https://github.com/ClaudiuGeorgiu/PlaystoreDownloader.git
唯一の要件は Docker の最新バージョンがインストールされていることであるため、これは PlaystoreDownloader をインストールする推奨方法です。
$ docker --version
Docker version 20.10.7, build f0df350
公式の PlaystoreDownloader Docker イメージは、Docker Hub で入手できます (このリポジトリから自動的に構築されます)。
$ # Download the Docker image.
$ docker pull claudiugeorgiu/playstore-downloader
$ # Give it a shorter name.
$ docker tag claudiugeorgiu/playstore-downloader downloader
Docker Hub から公式イメージをダウンロードした場合は、ツールを使用する準備ができているので、使用手順を確認してください。それ以外の場合は、以前に作成したPlaystoreDownloader/
ディレクトリ ( Dockerfile
を含むフォルダー) で次のコマンドを実行して、 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 .
Docker イメージの準備ができたら、簡単なテストを実行して、すべてが正しくインストールされたことを確認します。
$ docker run --rm -it downloader --help
usage: python3 -m playstoredownloader.cli [-h] [-b] [-s] [-c FILE] [-o DIR] [-t TAG] package [package ...]
...
PlaystoreDownloader を使用する準備ができました。詳細については、使用手順を参照してください。
有効な Google Play ストアの認証情報を除けば、このプロジェクトの唯一の要件は、動作するPython 3
(少なくとも3.7
) のインストールとpipenv
(依存関係管理用) です。
プロジェクトのメイン ディレクトリ ( PlaystoreDownloader/
) で次のコマンドを実行して、必要な依存関係をインストールします。
$ # 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
すべてがインストールされたら、簡単なテストを実行して、すべてが正しく動作することを確認します。
$ pipenv run python3 -m playstoredownloader.cli --help
usage: python3 -m playstoredownloader.cli [-h] [-b] [-s] [-c FILE] [-o DIR] [-t TAG] package [package ...]
...
PlaystoreDownloader を使用する準備ができました。詳細については、使用手順を参照してください。
Google Play ストアを操作する前に、有効な認証情報とアカウントに関連付けられたANDROID ID を提供する必要があります。このツールを使用する前に、credentials.json ファイルを変更し、必要な情報を挿入してください (変更後にこのファイルをコミットする前によく考えてください。そうしないと、資格情報が漏洩する可能性があります)。
credentials.json ファイルのUSERNAME
フィールドとPASSWORD
フィールドに Google の電子メールとパスワードを入力します。この情報は、Google のサーバーで認証するために必要です。 2 段階認証プロセスを有効にしている場合は、 PASSWORD
フィールドのアプリ パスワードを生成する必要があります。
Android デバイス (本物またはエミュレートされたもの) で上記の認証情報を使用し、デバイス上の公式 Google Play ストアを使用して少なくとも 1 つのアプリケーションをダウンロードします。この手順は、デバイスのANDROID ID をアカウントに関連付けて、デバイスを直接使用しているかのようにアプリケーションをダウンロードできるようにするために必要です。デバイスからアカウントを削除しないでください。削除すると、 ANDROID ID が無効になります。
デバイスのANDROID IDを取得し、credentials.json ファイルのANDROID_ID
フィールドに入力します。 ANDROID ID を取得するには、デバイス ID アプリケーションをデバイスにインストールし、 Google Service Framework (GSF)
に対応する文字列をコピーします (アプリケーションによって提示されるAndroid Device ID
の代わりにこの文字列を使用します)。
上記の手順の後に認証に関連するエラーが発生した場合は、次のアクションを検討してください (アプリケーションのダウンロードに使用したアカウントでログインしているときにリンクにアクセスしてください)。
安全性の低いアプリによるアカウントへのアクセスを許可する (https://myaccount.google.com/lesssecureapps)
アカウントへのアクセスを一時的にロック解除します (https://accounts.google.com/DisplayUnlockCaptcha)
上記のANDROID IDに対応するデバイスと互換性のあるアプリケーションのみをダウンロードでき、さらに制限がダウンロード可能なアプリケーションの総数に影響を与える可能性があることに注意してください。
構成の説明に従って Google Play ストアの認証情報を構成すると、有効なcredentials.json
ファイルを使用できるようになります。使用手順は、ツールのインストール方法によって異なります。
認証情報を含むファイルは Docker イメージに含まれていないため、コンテナーにマウントする必要があります。ダウンロード ディレクトリもマウントする必要があります。マウントしないと、ダウンロードされたアプリケーションはホスト マシンにアクセスできなくなります。現在のディレクトリ ( ${PWD}
) にcredentials.json
ファイルとoutput/
フォルダーが含まれている場合、パッケージ名com.application.example
のアプリケーションをダウンロードするコマンドは次のようになります。
$ 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 "
ダウンロードが成功すると、結果として得られる.apk
ファイルは、コマンドが実行されたディレクトリに含まれるoutput/
フォルダーに保存されます ( $ docker run --rm -it downloader --help
と入力するか、詳細については利用可能なパラメーターを確認してください) )。
シンプルな Web インターフェイスも利用できます。
$ 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.
プロジェクトのメイン ディレクトリ ( PlaystoreDownloader/
) で、ダウンロードするアプリのパッケージ名を使用して次の命令を呼び出します。
$ pipenv run python3 -m playstoredownloader.cli " com.application.example "
ダウンロードが成功すると、デフォルトで、結果の.apk
ファイルがPlaystoreDownloader/Downloads/
ディレクトリに保存されます。ダウンロード ディレクトリの場所を変更するには、追加の-o "path/to/download/folder/"
引数を指定します ( $ pipenv run python3 -m playstoredownloader.cli --help
と入力するか、詳細については利用可能なパラメーターを確認してください)。
シンプルな Web インターフェイスも利用できます。
$ pipenv run python3 flask_app.py
$ # Navigate to http://localhost:5000/ to use the web interface.
すべてのパラメータはヘルプ メッセージに説明されています。
$ # 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 ...]
...
唯一の必須パラメータは、Google Play ストアに表示される、ダウンロードするアプリケーションのpackage
名です (例: com.spotify.music
またはcom.whatsapp
)。他のオプションの引数は次のとおりです。
-b
、アプリケーション (存在する場合) とともに追加の.obb
ファイルをダウンロードするためのフラグです。詳細については、「拡張ファイル」を参照してください。追加のファイルは、ダウンロードしたアプリケーションと同じディレクトリに保存されます。注: 拡張ファイルは新しいアプリではサポートされなくなります。
-s
、アプリケーション (存在する場合) とともに追加の分割.apk
ファイルをダウンロードするためのフラグです。詳細については、「動的配信」を参照してください。追加のファイルは、ダウンロードしたアプリケーションと同じディレクトリに保存されます。
-c CREDENTIALS
、Google Play ストアの認証情報を含む JSON 構成ファイルへのパスを設定するために使用されます。指定しない場合、デフォルトでは、ツールはコマンドが実行されるディレクトリにあるcredentials.json
という名前のファイルを使用しようとします。
-o DIR
、ダウンロードされた.apk
ファイルを保存するディレクトリのパス (相対または絶対) を設定するために使用されます (例: -o /home/user/Desktop/
)。パスに不足しているディレクトリが含まれている場合は、自動的に作成されます。指定しない場合、デフォルトでは、ファイルはツールが実行される場所に作成されるDownloads/
ディレクトリに保存されます。
-t TAG
使用すると、ファイル名の前に付加されるタグを設定できます。たとえば、 -t "LABEL"
使用すると、ダウンロードされたアプリケーションの最終的な名前は[LABEL] filename.apk
のようになります。注: タグはメイン アプリケーションと追加ファイル (存在する場合) に適用されます。
現在、上記の引数を使用して構成できるのはコマンド ライン インターフェイスのみであることに注意してください。Web インターフェイスはパッケージ名のみを要求し、他のすべてのパラメーターにはデフォルト値が使用されます。
このコードは MIT ライセンスに基づいて自由に使用できます。