|
|
@@ -9,6 +9,9 @@ import zipfile
|
|
|
from selenium import webdriver
|
|
|
|
|
|
|
|
|
+class DownloadError(Exception):
|
|
|
+ pass
|
|
|
+
|
|
|
def apk_from_xapk(xapk_data, app_id):
|
|
|
"""This is necessary because on apkpure.com uses a custom package format xapk for some apps."""
|
|
|
with io.BytesIO(xapk_data) as stream:
|
|
|
@@ -17,8 +20,6 @@ def apk_from_xapk(xapk_data, app_id):
|
|
|
return f.read()
|
|
|
|
|
|
def get(app_id):
|
|
|
- dl_url = f"https://apkpure.com/_/{app_id}/download?from=details"
|
|
|
-
|
|
|
options = webdriver.FirefoxOptions()
|
|
|
options.add_argument("--headless")
|
|
|
|
|
|
@@ -35,17 +36,20 @@ def get(app_id):
|
|
|
pass
|
|
|
|
|
|
with webdriver.Firefox(options=options, firefox_profile=profile) as driver:
|
|
|
- driver.get(dl_url)
|
|
|
+ driver.get(f"https://apkpure.com/_/{app_id}/download?from=details")
|
|
|
dl_page = driver.page_source
|
|
|
|
|
|
t = datetime.datetime.now()
|
|
|
while True:
|
|
|
p = Path('/tmp/tempapk/')
|
|
|
- p = list(p.iterdir())
|
|
|
+ try:
|
|
|
+ p = list(p.iterdir())
|
|
|
+ except FileNotFoundError:
|
|
|
+ raise DownloadError
|
|
|
if len(p) == 1:
|
|
|
break
|
|
|
elif datetime.datetime.now()-t > datetime.timedelta(seconds=60):
|
|
|
- raise RuntimeError('Download failed')
|
|
|
+ raise DownloadError
|
|
|
time.sleep(1)
|
|
|
|
|
|
with open(p[0], 'rb') as f:
|