mirror of
https://github.com/sotam0316/docker-py-revanced.git
synced 2026-04-25 03:48:37 +09:00
🐛 Wrong version selection in APKMirror (#296)
This commit is contained in:
+21
-14
@@ -7,8 +7,8 @@ from loguru import logger
|
|||||||
|
|
||||||
from scripts.status_check import headers
|
from scripts.status_check import headers
|
||||||
from src.downloader.download import Downloader
|
from src.downloader.download import Downloader
|
||||||
from src.exceptions import APKMirrorAPKDownloadFailure, APKMirrorAPKNotFound
|
from src.exceptions import APKMirrorAPKDownloadFailure
|
||||||
from src.utils import apkmirror_status_check, bs4_parser
|
from src.utils import bs4_parser
|
||||||
|
|
||||||
|
|
||||||
class ApkMirror(Downloader):
|
class ApkMirror(Downloader):
|
||||||
@@ -67,7 +67,9 @@ class ApkMirror(Downloader):
|
|||||||
for row in table_rows:
|
for row in table_rows:
|
||||||
if row.find(class_="accent_color"):
|
if row.find(class_="accent_color"):
|
||||||
apk_type = row.find(class_="apkm-badge").get_text()
|
apk_type = row.find(class_="apkm-badge").get_text()
|
||||||
if apk_type == "APK":
|
if apk_type == "APK" and (
|
||||||
|
"arm64-v8a" in row.text.strip() or "universal" in row.text.strip()
|
||||||
|
):
|
||||||
sub_url = row.find(class_="accent_color")["href"]
|
sub_url = row.find(class_="accent_color")["href"]
|
||||||
break
|
break
|
||||||
if not sub_url:
|
if not sub_url:
|
||||||
@@ -89,15 +91,19 @@ class ApkMirror(Downloader):
|
|||||||
soup = BeautifulSoup(r.text, bs4_parser)
|
soup = BeautifulSoup(r.text, bs4_parser)
|
||||||
return soup.find(class_=search_class)
|
return soup.find(class_=search_class)
|
||||||
|
|
||||||
def specific_version(self, app: str, version: str) -> None:
|
def specific_version(self, app: str, version: str, main_page: str = "") -> None:
|
||||||
"""Function to download the specified version of app from apkmirror.
|
"""Function to download the specified version of app from apkmirror.
|
||||||
|
|
||||||
:param app: Name of the application
|
:param app: Name of the application
|
||||||
:param version: Version of the application to download
|
:param version: Version of the application to download
|
||||||
|
:param main_page: Version of the application to download
|
||||||
:return: Version of downloaded apk
|
:return: Version of downloaded apk
|
||||||
"""
|
"""
|
||||||
|
if not main_page:
|
||||||
version = version.replace(".", "-")
|
version = version.replace(".", "-")
|
||||||
main_page = f"{self.config.apk_mirror_version_urls.get(app)}-{version}-release/"
|
main_page = (
|
||||||
|
f"{self.config.apk_mirror_version_urls.get(app)}-{version}-release/"
|
||||||
|
)
|
||||||
download_page = self.get_download_page(main_page)
|
download_page = self.get_download_page(main_page)
|
||||||
self.extract_download_link(download_page, app)
|
self.extract_download_link(download_page, app)
|
||||||
|
|
||||||
@@ -108,14 +114,15 @@ class ApkMirror(Downloader):
|
|||||||
:param app: Name of the application
|
:param app: Name of the application
|
||||||
:return: Version of downloaded apk
|
:return: Version of downloaded apk
|
||||||
"""
|
"""
|
||||||
from src.patches import Patches
|
|
||||||
|
|
||||||
package_name = Patches.get_package_name(app)
|
app_main_page = self.config.apk_mirror_urls[app]
|
||||||
response = apkmirror_status_check(package_name)
|
versions_div = self._extracted_search_div(
|
||||||
if response["data"][0]["exists"]:
|
app_main_page, "listWidget p-relative"
|
||||||
version = response["data"][0]["release"]["version"]
|
)
|
||||||
logger.debug(
|
app_rows = versions_div.find_all(class_="appRow")
|
||||||
f"Trying to download {app}'s latest version({version}) from apkmirror"
|
version_urls = [
|
||||||
|
app_row.find(class_="downloadLink")["href"] for app_row in app_rows
|
||||||
|
]
|
||||||
|
return self.specific_version(
|
||||||
|
app, "latest", self.config.apk_mirror + max(version_urls)
|
||||||
)
|
)
|
||||||
return self.specific_version(app, version)
|
|
||||||
raise APKMirrorAPKNotFound("App not found on apkmirror.")
|
|
||||||
|
|||||||
Reference in New Issue
Block a user