mirror of
https://github.com/sotam0316/docker-py-revanced.git
synced 2026-04-25 03:48:37 +09:00
🐛 Fixed a bug when apk and budle both are present in apkmirror
This commit is contained in:
@@ -63,25 +63,35 @@ class Downloader:
|
|||||||
cls._download(apk_mirror + href, f"{app}.apk")
|
cls._download(apk_mirror + href, f"{app}.apk")
|
||||||
logger.debug(f"Finished Extracting and download link from {page}")
|
logger.debug(f"Finished Extracting and download link from {page}")
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_download_page(cls, parser, main_page):
|
||||||
|
apm = parser.css(".apkm-badge")
|
||||||
|
sub_url = ""
|
||||||
|
for is_apm in apm:
|
||||||
|
if "APK" in is_apm.text():
|
||||||
|
parser = is_apm.parent
|
||||||
|
sub_url = parser.css_first(".accent_color").attributes["href"]
|
||||||
|
break
|
||||||
|
if sub_url == "":
|
||||||
|
logger.exception(f"Unable to find any apk on apkmirror on {main_page}")
|
||||||
|
sys.exit(-1)
|
||||||
|
download_url = apk_mirror + sub_url
|
||||||
|
return download_url
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def apkmirror(cls, app: str, version: str) -> None:
|
def apkmirror(cls, app: str, version: str) -> None:
|
||||||
logger.debug(f"Trying to download {app} apk from apkmirror")
|
|
||||||
version = "-".join(
|
version = "-".join(
|
||||||
v.zfill(2 if i else 0) for i, v in enumerate(version.split("."))
|
v.zfill(2 if i else 0) for i, v in enumerate(version.split("."))
|
||||||
)
|
)
|
||||||
logger.debug(f"Version for {app} to download from apkmirror is {version}")
|
logger.debug(f"Trying to download {app} version {version} apk from apkmirror")
|
||||||
page = f"""
|
main_page = f"{apk_mirror}/apk/google-inc/{app}/{app}-{version}-release/"
|
||||||
{apk_mirror}/apk/google-inc/
|
parser = LexborHTMLParser(session.get(main_page).text)
|
||||||
{app}/{app}-{version}-release/{app}-{version}-android-apk-download/
|
download_page = cls.get_download_page(parser, main_page)
|
||||||
"""
|
cls.extract_download_link(download_page, app)
|
||||||
cls.extract_download_link(page, app)
|
logger.debug(f"Downloaded {app} apk from apkmirror")
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def find_second_last(cls, text: str, pattern: str) -> int:
|
def apkmirror_reddit_twitter(cls, app: str) -> None:
|
||||||
return text.rfind(pattern, 0, text.rfind(pattern))
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def apkmirror_reddit_twitter(cls, app: str, version: str) -> None:
|
|
||||||
logger.debug(f"Trying to download {app} apk from apkmirror in rt")
|
logger.debug(f"Trying to download {app} apk from apkmirror in rt")
|
||||||
if app == "reddit":
|
if app == "reddit":
|
||||||
page = f"{apk_mirror}/apk/redditinc/reddit/"
|
page = f"{apk_mirror}/apk/redditinc/reddit/"
|
||||||
@@ -91,15 +101,13 @@ class Downloader:
|
|||||||
logger.debug("Invalid app")
|
logger.debug("Invalid app")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
parser = LexborHTMLParser(session.get(page).text)
|
parser = LexborHTMLParser(session.get(page).text)
|
||||||
suburl = parser.css_first(".appRowVariantTag>.accent_color").attributes["href"]
|
main_page = parser.css_first(".appRowVariantTag>.accent_color").attributes[
|
||||||
last2 = cls.find_second_last(suburl, "/")
|
"href"
|
||||||
version_url = suburl[last2:]
|
]
|
||||||
minus_occurance = version_url.rfind("-")
|
main_page = f"{apk_mirror}{main_page}"
|
||||||
version_url = version_url[:minus_occurance]
|
parser = LexborHTMLParser(session.get(main_page).text)
|
||||||
download_url = version_url + "-2-android-apk-download/"
|
download_page = cls.get_download_page(parser, main_page)
|
||||||
url = apk_mirror + suburl + download_url[1:]
|
cls.extract_download_link(download_page, app)
|
||||||
page = url
|
|
||||||
cls.extract_download_link(page, app)
|
|
||||||
logger.debug(f"Downloaded {app} apk from apkmirror in rt")
|
logger.debug(f"Downloaded {app} apk from apkmirror in rt")
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@@ -112,7 +120,8 @@ class Downloader:
|
|||||||
url = parser.css("li.Box-row > div:nth-child(1) > a:nth-child(2)")[:-2][
|
url = parser.css("li.Box-row > div:nth-child(1) > a:nth-child(2)")[:-2][
|
||||||
-1
|
-1
|
||||||
].attributes["href"]
|
].attributes["href"]
|
||||||
cls._download("https://github.com" + url, Path(url).with_stem(name).name)
|
extension = url.rfind(".")
|
||||||
|
cls._download("https://github.com" + url, name + url[extension:])
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def report(cls) -> None:
|
def report(cls) -> None:
|
||||||
@@ -290,10 +299,9 @@ def main() -> None:
|
|||||||
logger.debug("Trying to build %s" % app)
|
logger.debug("Trying to build %s" % app)
|
||||||
app_patches, version = patches.get(app=app)
|
app_patches, version = patches.get(app=app)
|
||||||
if os.getenv(f"{app}_VERSION".upper()):
|
if os.getenv(f"{app}_VERSION".upper()):
|
||||||
print("here")
|
|
||||||
version = os.getenv(f"{app}_VERSION".upper())
|
version = os.getenv(f"{app}_VERSION".upper())
|
||||||
if app == "reddit" or app == "twitter":
|
if app == "reddit" or app == "twitter":
|
||||||
downloader.apkmirror_reddit_twitter(app, version)
|
downloader.apkmirror_reddit_twitter(app)
|
||||||
else:
|
else:
|
||||||
downloader.apkmirror(app, version)
|
downloader.apkmirror(app, version)
|
||||||
get_patches()
|
get_patches()
|
||||||
|
|||||||
Reference in New Issue
Block a user