mirror of
https://github.com/SinTan1729/ReVancedBuilder.git
synced 2025-04-20 16:40:00 -05:00
Compare commits
No commits in common. "2934f8b0f7883d4bc8583ceaf79e9085c9e43082" and "336b6470ca83a651214a9ef23b06b3c26ae91d21" have entirely different histories.
2934f8b0f7
...
336b6470ca
2 changed files with 20 additions and 20 deletions
|
@ -11,8 +11,8 @@ requires-python = ">=3.6"
|
||||||
keywords = ["revanced", "patch"]
|
keywords = ["revanced", "patch"]
|
||||||
license = { file = "LICENSE" }
|
license = { file = "LICENSE" }
|
||||||
classifiers = ["Programming Language :: Python :: 3"]
|
classifiers = ["Programming Language :: Python :: 3"]
|
||||||
dependencies = ["cloudscraper", "requests", "packaging", "bs4"]
|
dependencies = ["requests", "packaging", "bs4"]
|
||||||
version = "1.2"
|
version = "1.1"
|
||||||
|
|
||||||
[project.scripts]
|
[project.scripts]
|
||||||
ReVancedBuilder = "ReVancedBuilder:ReVancedBuilder"
|
ReVancedBuilder = "ReVancedBuilder:ReVancedBuilder"
|
||||||
|
|
|
@ -4,9 +4,11 @@
|
||||||
# SPDX-License-Identifier: GPL-3.0-only
|
# SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
|
import json
|
||||||
|
|
||||||
from packaging.version import Version
|
from packaging.version import Version
|
||||||
import cloudscraper as scraper
|
import requests as req
|
||||||
from bs4 import BeautifulSoup as bs
|
from bs4 import BeautifulSoup as bs
|
||||||
|
|
||||||
from ReVancedBuilder.Cleanup import err_exit
|
from ReVancedBuilder.Cleanup import err_exit
|
||||||
|
@ -16,24 +18,22 @@ from ReVancedBuilder.Cleanup import err_exit
|
||||||
|
|
||||||
def apkpure_best_match(version, soup):
|
def apkpure_best_match(version, soup):
|
||||||
try:
|
try:
|
||||||
vers_list_str = [x['data-dt-version'] for x in soup.css.select(f"a[data-dt-apkid^=\"b/APK/\"]")]
|
vers_list = [Version(x['data-dt-version'])
|
||||||
|
for x in soup.css.select(f"a[data-dt-apkid^=\"b/APK/\"]")]
|
||||||
except:
|
except:
|
||||||
err_exit(
|
err_exit(
|
||||||
f" There was some error getting list of versions of {apk}...", appstate)
|
f" There was some error getting list of versions of {apk}...", appstate)
|
||||||
|
|
||||||
vers_list = map(lambda x: Version(x), vers_list_str)
|
|
||||||
|
|
||||||
if version != '0':
|
if version != '0':
|
||||||
vers_list = filter(lambda x: x <= Version(version), vers_list)
|
vers_list = filter(lambda x: x <= Version(version), vers_list)
|
||||||
|
|
||||||
max_ver = max(vers_list)
|
return str(max(vers_list))
|
||||||
return next(filter(lambda x: Version(x) == max_ver, vers_list_str))
|
|
||||||
|
|
||||||
# Download an apk from apkpure.net
|
# Download an apk from apkpure.net
|
||||||
|
|
||||||
|
|
||||||
def apkpure_dl(apk, appname, version, hard_version, session, present_vers, flag):
|
def apkpure_dl(apk, appname, version, hard_version, session, present_vers, flag):
|
||||||
res = session.get(f"https://apkpure.com/{appname}/{apk}/versions")
|
res = session.get(f"https://apkpure.net/{appname}/{apk}/versions")
|
||||||
res.raise_for_status()
|
res.raise_for_status()
|
||||||
soup = bs(res.text, 'html.parser')
|
soup = bs(res.text, 'html.parser')
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ def apkpure_dl(apk, appname, version, hard_version, session, present_vers, flag)
|
||||||
f" There was some error while downloading {apk}...", appname)
|
f" There was some error while downloading {apk}...", appname)
|
||||||
|
|
||||||
res = session.get(
|
res = session.get(
|
||||||
f"https://d.apkpure.com/b/APK/{apk}?versionCode={ver_code}", stream=True)
|
f"https://d.apkpure.net/b/APK/{apk}?versionCode={ver_code}", stream=True)
|
||||||
res.raise_for_status()
|
res.raise_for_status()
|
||||||
with open(apk+'.apk', 'wb') as f:
|
with open(apk+'.apk', 'wb') as f:
|
||||||
for chunk in res.iter_content(chunk_size=8192):
|
for chunk in res.iter_content(chunk_size=8192):
|
||||||
|
@ -90,18 +90,19 @@ def get_apks(appstate):
|
||||||
|
|
||||||
print('Downloading required apk files from APKPure...')
|
print('Downloading required apk files from APKPure...')
|
||||||
|
|
||||||
# Create a cloudscraper session
|
|
||||||
session = scraper.create_scraper()
|
|
||||||
|
|
||||||
# Get latest patches using the ReVanced API
|
# Get latest patches using the ReVanced API
|
||||||
try:
|
try:
|
||||||
# Get the first result
|
# Get the first result
|
||||||
patches_json = next(filter(
|
patches_json = next(filter(
|
||||||
lambda x: x['repository'] == 'revanced/revanced-patches', appstate['tools']))
|
lambda x: x['repository'] == 'revanced/revanced-patches', appstate['tools']))
|
||||||
patches = session.get(patches_json['browser_download_url']).json()
|
patches = req.get(patches_json['browser_download_url']).json()
|
||||||
except session.exceptions.RequestException as e:
|
except req.exceptions.RequestException as e:
|
||||||
err_exit(f"Error fetching patches, {e}", appstate)
|
err_exit(f"Error fetching patches, {e}", appstate)
|
||||||
|
|
||||||
|
session = req.Session()
|
||||||
|
session.headers.update(
|
||||||
|
{'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'})
|
||||||
|
|
||||||
for app in build_config:
|
for app in build_config:
|
||||||
# Check if we need to build an app
|
# Check if we need to build an app
|
||||||
if not build_config[app].getboolean('build'):
|
if not build_config[app].getboolean('build'):
|
||||||
|
@ -117,6 +118,7 @@ def get_apks(appstate):
|
||||||
print(f"Checking {pretty_name}...")
|
print(f"Checking {pretty_name}...")
|
||||||
try:
|
try:
|
||||||
required_ver = build_config[app]['version']
|
required_ver = build_config[app]['version']
|
||||||
|
required_ver = Version(required_ver)
|
||||||
hard_version = True
|
hard_version = True
|
||||||
print(f"Using version {required_ver} of {apk} from build_config.")
|
print(f"Using version {required_ver} of {apk} from build_config.")
|
||||||
except:
|
except:
|
||||||
|
@ -135,17 +137,15 @@ def get_apks(appstate):
|
||||||
required_ver = Version('0')
|
required_ver = Version('0')
|
||||||
else:
|
else:
|
||||||
required_ver = min(map(lambda x: Version(x), compatible_vers))
|
required_ver = min(map(lambda x: Version(x), compatible_vers))
|
||||||
required_ver = next(filter(lambda x: Version(x) == required_ver, compatible_vers))
|
|
||||||
|
|
||||||
print(f"Chosen required version of {apk} is {required_ver}.")
|
print(f"Chosen required version of {apk} is {required_ver}.")
|
||||||
|
|
||||||
if appstate['present_vers'][apk] == required_ver:
|
if appstate['present_vers'][apk] == str(required_ver):
|
||||||
print("It's already present on disk, so skipping download.")
|
print("It's already present on disk, so skipping download.")
|
||||||
else:
|
else:
|
||||||
apkpure_dl(apk, apkpure_appname, required_ver,
|
apkpure_dl(apk, apkpure_appname, str(required_ver),
|
||||||
hard_version, session, present_vers, flag)
|
hard_version, session, present_vers, flag)
|
||||||
|
|
||||||
present_vers.update({apk: required_ver})
|
present_vers.update({apk: str(required_ver)})
|
||||||
|
|
||||||
appstate['present_vers'] = present_vers
|
appstate['present_vers'] = present_vers
|
||||||
return appstate
|
return appstate
|
||||||
|
|
Loading…
Reference in a new issue