🎨 Chore (#289)

This commit is contained in:
Nikhil Badyal
2023-08-17 09:32:53 +05:30
committed by GitHub
parent 0d2985d9f7
commit 5bffa4c79c
6 changed files with 93 additions and 50 deletions
+13 -7
View File
@@ -7,7 +7,7 @@ from bs4 import BeautifulSoup
from google_play_scraper import app as gplay_app
from google_play_scraper.exceptions import GooglePlayScraperException
from src.exceptions import APKMirrorScrapperFailure
from src.exceptions import APKMirrorIconScrapFailure
from src.patches import Patches
from src.utils import (
apk_mirror_base_url,
@@ -28,7 +28,9 @@ def apkcombo_scrapper(package_name: str) -> str:
"""Apkcombo scrapper."""
try:
apkcombo_url = f"https://apkcombo.com/genericApp/{package_name}"
r = requests.get(apkcombo_url, headers=headers, allow_redirects=True)
r = requests.get(
apkcombo_url, headers=headers, allow_redirects=True, timeout=10
)
soup = BeautifulSoup(r.text, bs4_parser)
url = soup.select_one("div.avatar > img")["data-src"]
return re.sub(r"=.*$", "", url)
@@ -39,9 +41,14 @@ def apkcombo_scrapper(package_name: str) -> str:
def apkmirror_scrapper(package_name: str) -> str:
"""Apkmirror URL."""
response = apkmirror_status_check(package_name)
if response["data"][0]["exists"]:
search_url = f"{apk_mirror_base_url}/?s={package_name}"
r = requests.get(search_url, headers=headers)
if response["data"][0]["exists"]:
return _extracted_from_apkmirror_scrapper(search_url)
raise APKMirrorIconScrapFailure(url=search_url)
def _extracted_from_apkmirror_scrapper(search_url: str) -> str:
r = requests.get(search_url, headers=headers, timeout=10)
soup = BeautifulSoup(r.text, bs4_parser)
sub_url = soup.select_one("div.bubble-wrap > img")["src"]
new_width = 500
@@ -54,7 +61,6 @@ def apkmirror_scrapper(package_name: str) -> str:
return apk_mirror_base_url + re.sub(
pattern, f"w={new_width}&h={new_height}&q={new_quality}", sub_url
)
raise APKMirrorScrapperFailure()
def gplay_icon_scrapper(package_name: str) -> str:
@@ -70,7 +76,7 @@ def gplay_icon_scrapper(package_name: str) -> str:
except GooglePlayScraperException:
try:
return apkmirror_scrapper(package_name)
except APKMirrorScrapperFailure:
except APKMirrorIconScrapFailure:
return apkcombo_scrapper(package_name)
except Exception:
return not_found_icon
@@ -96,7 +102,7 @@ def generate_markdown_table(data: List[List[str]]) -> str:
def main() -> None:
repo_url = "https://api.revanced.app/v2/patches/latest"
response = requests.get(repo_url)
response = requests.get(repo_url, timeout=10)
handle_github_response(response)
parsed_data = response.json()
+3 -1
View File
@@ -12,6 +12,8 @@ default_integrations = (
"https://github.com/revanced/revanced-integrations/releases/latest"
)
APK_MIRROR_BASE_URL = "https://www.apkmirror.com"
class RevancedConfig(object):
"""Revanced Configurations."""
@@ -23,7 +25,7 @@ class RevancedConfig(object):
self.temp_folder = Path("apks")
self.session = Session()
self.session.headers["User-Agent"] = "anything"
self.apk_mirror = "https://www.apkmirror.com"
self.apk_mirror = APK_MIRROR_BASE_URL
self.upto_down = {
"spotify": "spotify",
"nyx-music-player": "nyx-music-player",
+15 -3
View File
@@ -1,7 +1,19 @@
class APKMirrorScrapperFailure(Exception):
"""Failed to scrap icon from apkmirror."""
from typing import Any
pass
class APKMirrorIconScrapFailure(Exception):
"""Exception raised when the icon cannot be scraped from apkmirror."""
def __init__(self, *args: Any, **kwargs: Any) -> None:
"""Initialize the APKMirrorIconScrapFailure exception.
Args:
*args: Variable length argument list.
**kwargs: Arbitrary keyword arguments.
url (str, optional): The URL of the failed icon scraping. Defaults to None.
"""
super().__init__(*args)
self.url = kwargs.get("url", None)
class PatchingFailed(Exception):
+2 -1
View File
@@ -113,7 +113,8 @@ class Patches(object):
app_names = {value[0]: value[1] for value in self.revanced_app_ids.values()}
if not (app_name := app_names.get(app)):
raise AppNotFound(app)
raise AppNotFound(f"App '{app}' not found in the supported apps.")
patches = getattr(self, app_name)
version = "latest"
with contextlib.suppress(StopIteration):
+36 -14
View File
@@ -1,5 +1,4 @@
"""Utilities."""
import json
import os
import re
import subprocess
@@ -28,15 +27,24 @@ bs4_parser = "html.parser"
def update_changelog(name: str, response: Dict[str, str]) -> None:
"""Updated Changelog."""
parent_repo = "https://github.com/nikhilbadyal/docker-py-revanced"
with open("changelog.md", "a", encoding="utf_8") as file1:
parent_repo = get_parent_repo()
change_log = format_changelog(name, response, parent_repo)
write_to_file(change_log)
def format_changelog(name: str, response: Dict[str, str], parent_repo: str) -> str:
"""Format changelog."""
collapse_start = f"\n<details> <summary>👀 {name} </summary>\n\n"
release_version = f"**Release Version** - [{response['tag_name']}]({response['html_url']})<br>"
release_version = (
f"**Release Version** - [{response['tag_name']}]({response['html_url']})<br>"
)
change_log = f"**Changelog** -<br> {response['body']}"
publish_time = f"**Published at** -<br> {response['published_at']}"
footer = f"<br><sub>Change logs generated by [Docker Py Revanced]({parent_repo})</sub>\n"
footer = (
f"<br><sub>Change logs generated by [Docker Py Revanced]({parent_repo})</sub>\n"
)
collapse_end = "</details>"
change_log = "".join(
return "".join(
[
collapse_start,
release_version,
@@ -46,9 +54,19 @@ def update_changelog(name: str, response: Dict[str, str]) -> None:
collapse_end,
]
)
def write_to_file(change_log: str) -> None:
"""Write changelog to file."""
with open("changelog.md", "w", encoding="utf_8") as file1:
file1.write(change_log)
def get_parent_repo() -> str:
"""Get parent repository URL from configuration file."""
return "https://github.com/nikhilbadyal/docker-py-revanced"
def handle_github_response(response: Response) -> None:
"""Handle Get Request Response."""
response_code = response.status_code
@@ -93,7 +111,7 @@ def check_java(dry_run: bool) -> None:
raise subprocess.CalledProcessError(-1, "java -version")
logger.debug("Cool!! Java is available")
except subprocess.CalledProcessError:
logger.error("Java>= 17 Must be installed")
logger.error("Java>= 17 must be installed")
exit(-1)
@@ -119,11 +137,15 @@ def extra_downloads(config: RevancedConfig) -> None:
def apkmirror_status_check(package_name: str) -> Any:
"""Check if app exists on APKMirror."""
check_if_exist = f"{apk_mirror_base_url}/wp-json/apkm/v1/app_exists/"
"""Check if app exists on APKMirror.
Args:
package_name (str): The name of the package to check.
Returns:
dict: The response from APKMirror API as a JSON object.
"""
api_url = f"{apk_mirror_base_url}/wp-json/apkm/v1/app_exists/"
body = {"pnames": [package_name]}
return json.loads(
requests.post(
check_if_exist, data=json.dumps(body), headers=apk_mirror_header
).content
)
response = requests.post(api_url, json=body, headers=apk_mirror_header)
return response.json()