From 5c4cd4dcdca7163d668947a15a047b0f8d6482cd Mon Sep 17 00:00:00 2001 From: Nikhil Badyal Date: Tue, 15 Aug 2023 19:00:50 +0530 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20Use=20BS4=20for=20apksos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/downloader/apksos.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/downloader/apksos.py b/src/downloader/apksos.py index bb6479b..7848d12 100644 --- a/src/downloader/apksos.py +++ b/src/downloader/apksos.py @@ -1,10 +1,13 @@ """APK SOS Downloader Class.""" from typing import Any -from loguru import logger -from selectolax.lexbor import LexborHTMLParser +import requests +from bs4 import BeautifulSoup +from scripts.status_check import headers from src.downloader.download import Downloader +from src.exceptions import AppNotFound +from src.utils import bs4_parser class ApkSos(Downloader): @@ -16,13 +19,14 @@ class ApkSos(Downloader): :param page: Url of the page :param app: Name of the app """ - parser = LexborHTMLParser(self.config.session.get(page).text) - download_url = parser.css_first( - r"body > div > div > div > div > div.col-sm-12.col-md-8 > div.card.fluid.\.idma > " - "div.section.row > div.col-sm-12.col-md-8.text-center > p > a" - ).attributes["href"] - self._download(download_url, f"{app}.apk") - logger.debug(f"Downloaded {app} apk from apk_combo_downloader in rt") + r = requests.get(page, headers=headers, allow_redirects=True) + soup = BeautifulSoup(r.text, bs4_parser) + download_button = soup.find(class_="col-sm-12 col-md-8 text-center") + possible_links = download_button.find_all("a") + for possible_link in possible_links: + if possible_link.get("href"): + return self._download(possible_link["href"], f"{app}.apk") + raise AppNotFound("Unable to download apk from apk_combo") def latest_version(self, app: str, **kwargs: Any) -> None: """Function to download whatever the latest version of app from