web-dev-qa-db-ja.com

プログラムでGooglePlayからアプリをダウンロードする

分析のために、GooglePlayからいくつかのアプリをダウンロードする必要があります。しかし、私はそれを手動で行いたくありません(私は頻繁にそれをしなければならず、ダウンロードしたいアプリが変わるたびに!)。

だから、問題は、アプリをダウンロードするプログラムを書くことができるかどうかです。可能であれば、どのように?

Chrome用のこのプラグインを見たことがあります: http://codekiem.com/2012/02/24/apk-downloader/ しかし、作成者を信頼できません(アプリにはGoogleユーザーとパスとデバイスIDが必要です)そして私自身のプログラムを実装することにしました。

13
Arash

Javaの実装を探している人のために、ここにあります:

トップレベルのステップ:

  1. 携帯電話からGmailID、パスワード、Android ID、セキュリティトークンを収集する
  2. akdenizによって実装されたクローラーのjarファイルをダウンロードします
  3. akdenizからgoogleplay.Java(cli)のソースファイルをダウンロードします
  4. googleplay.Javaを変更します
  5. すべてをまとめる:D

詳細な手順:

  1. GmailIDとパスワードは明らかです! Android IDの場合は、 demirozali に従い、「getAndroidID」関数を使用します。 「getAuthToken」を動作させることができませんでした!したがって、私は toxicbakery を使用してセキュリティトークンを取得しました。関数「updateToken」(実際にはセキュリティトークンを取得します)は、UIスレッドではなく AsyncTask で呼び出す必要があることに注意してください。

  2. Akdeniz githubサイト から "googleplaycrawler-0.1-SNAPSHOT.jar"ファイルをダウンロードします。

  3. Jarファイルの「GooglePlayAPI」クラスを利用できませんでした。そこで、CLIのバージョンを変更することにしました。 「googleplaycrawler-0.1-SNAPSHOT.jar」のCLIクラスは「googleplay.Java」と呼ばれ、 ソースファイル)からダウンロードできます。

  4. 「googleplay.Java」の名前を「Changed_googleplay.Java」に変更して変更します。メソッド "searchCommand()"が結果をコンソールに出力するのではなく、文字列のarrayListを返すようにします。

  5. これまでのすべての手順を完了したら、jetBrainsまたは...でプロジェクトを作成し、「googleplaycrawler-0.1-SNAPSHOT.jar」をライブラリとして追加します。また、srcディレクトリに「Changed_googleplay.Java」を追加します。最後に、アプリケーションで次の方法を使用します。次のクラスを使用してクエリを検索し、そのクエリに対応するすべての無料アプリをダウンロードできます。

    public void SearchAndDownload() {
        String login = "[email protected]";
        String password = "xxxx";
        String androidId = "xxxx";
        String securitytoken = "xxxx";
        String command = "search";
        String query = "Maps";
        String offest = "0";
        String number = "5";
    
        Changed_googleplay gp = new Changed_googleplay();
        ArrayList<String> res = gp.operate(new String[]{"-i", androidId, "-e", login, "-p", password, "-t", securitytoken, command, "-o", offest, "-n", number, query});
    
        res.remove(0);
        if (command.equals("search")) {
            System.out.println("Title"+"\t"+"Package Name"+"\t"+"Price"+"\t"+"Number of Downloads");
            for (String line : res){
                String[] split = line.split(Changed_googleplay.DELIMETER);
                String name = split[0];
                String packageName = split[1];
                String creator = split[2];
                String price = split[3];
                String size = split[4];
                String dlNO = split[5];
                if(price.equals("Free")){
                    System.out.println(name+"\t"+packageName+"\t"+price+"\t"+dlNO);
                    gp.operate(new String[]{"-i", androidId, "-e", login, "-p", password, "-t", securitytoken, "download", packageName});
                }
            }
        }
    }
    

クローラープロジェクトのコマンドラインオプションのリストを確認することをお勧めします メインページ

楽しんで!

1
Arash