🎨 Use BS4 for apksos

This commit is contained in:
Nikhil Badyal
2023-08-15 19:00:50 +05:30
parent 9571861cd0
commit 5c4cd4dcdc
+13 -9
View File
@@ -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