fromMiniDV/extract_apks.py
Davide De Nardis 8c472f2e5c Initial commit
2025-03-20 19:51:57 +01:00

66 lines
2 KiB
Python

#!/usr/bin/python
# -*- coding: utf-8 -*-
import subprocess
from pathlib import Path
import time
APK_TOOLS_FOLDER = Path('C:/Users/main/AppData/Local/Android/Sdk/platform-tools')
DESTINATION = Path('C:/Mc/Aws/APKs/FromPy')
DESTINATION.mkdir(exist_ok=True, parents=True)
# it.beghelli.dome
# .\adb.exe shell pm list packages -3
# .\adb.exe shell pm list packages -3 > x5_find_l3_2025_02_09.txt
# .\adb.exe shell dumpsys activity recents
# .\adb.exe shell pm path it.beghelli.dome
# .\adb.exe pull /data/app/~~ImzbTI0j21ORlO9dusKcAg==/it.beghelli.dome-dtycHO3eKSqdeUqiMRedDw==/base.apk dome.apk
# .\adb.exe install .\dome.apk
def run_command(command):
# Run the command and capture the output
try:
result = subprocess.run(command, shell=True, check=True, text=True, capture_output=True)
# Print the standard output and error
# print("Standard Output:\n", result.stdout)
# print("Standard Error:\n", result.stderr)
return result.stdout # Return stdout if you want to use it elsewhere
except subprocess.CalledProcessError as e:
print(f"Command failed with error: {e.stderr}")
return None
def do_adb(params):
tool = APK_TOOLS_FOLDER / 'adb.exe'
cmd = f'{tool} {params}'
return run_command(cmd)
def find_apks_files(package_name):
r = do_adb(f' shell pm path {package_name}')
return r.split('\n')
if __name__ == '__main__':
# r = do_adb('devices')
# print(r)
#
# r = do_adb(' shell pm list packages -3')
# for line in r.split('\n'):
# if 'translate' in line.lower():
# print(f'-{line}')
#
str_now = time.strftime('%Y_%m_%d_%H%M%S')
pkg_name = 'com.google.android.apps.translate'
dest_folder = DESTINATION / f'{pkg_name.replace(".", "_")}_{str_now}'
dest_folder.mkdir(parents=True, exist_ok=True)
for f in find_apks_files(pkg_name):
if len(f) > 8:
source = f[8:]
src = Path(source)
print(src.name)
print(source, dest_folder)
do_adb(f'pull {source} {dest_folder}')