From 2934f8b0f7883d4bc8583ceaf79e9085c9e43082 Mon Sep 17 00:00:00 2001
From: SinTan1729 <sayantan.santra689@gmail.com>
Date: Mon, 1 Apr 2024 17:52:51 -0500
Subject: [PATCH] fix: Work around packaging.version changing the version
 string slightly

---
 src/ReVancedBuilder/APKPure_dl.py | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/src/ReVancedBuilder/APKPure_dl.py b/src/ReVancedBuilder/APKPure_dl.py
index d000705..0945092 100644
--- a/src/ReVancedBuilder/APKPure_dl.py
+++ b/src/ReVancedBuilder/APKPure_dl.py
@@ -16,22 +16,24 @@ from ReVancedBuilder.Cleanup import err_exit
 
 def apkpure_best_match(version, soup):
     try:
-        vers_list = [Version(x['data-dt-version'])
-                     for x in soup.css.select(f"a[data-dt-apkid^=\"b/APK/\"]")]
+        vers_list_str = [x['data-dt-version'] for x in soup.css.select(f"a[data-dt-apkid^=\"b/APK/\"]")]
     except:
         err_exit(
             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':
         vers_list = filter(lambda x: x <= Version(version), vers_list)
 
-    return str(max(vers_list))
+    max_ver = max(vers_list)
+    return next(filter(lambda x: Version(x) ==  max_ver, vers_list_str))
 
 # Download an apk from apkpure.net
 
 
 def apkpure_dl(apk, appname, version, hard_version, session, present_vers, flag):
-    res = session.get(f"https://apkpure.net/{appname}/{apk}/versions")
+    res = session.get(f"https://apkpure.com/{appname}/{apk}/versions")
     res.raise_for_status()
     soup = bs(res.text, 'html.parser')
 
@@ -72,7 +74,7 @@ def apkpure_dl(apk, appname, version, hard_version, session, present_vers, flag)
             f"    There was some error while downloading {apk}...", appname)
 
     res = session.get(
-        f"https://d.apkpure.net/b/APK/{apk}?versionCode={ver_code}", stream=True)
+        f"https://d.apkpure.com/b/APK/{apk}?versionCode={ver_code}", stream=True)
     res.raise_for_status()
     with open(apk+'.apk', 'wb') as f:
         for chunk in res.iter_content(chunk_size=8192):
@@ -115,7 +117,6 @@ def get_apks(appstate):
         print(f"Checking {pretty_name}...")
         try:
             required_ver = build_config[app]['version']
-            required_ver = Version(required_ver)
             hard_version = True
             print(f"Using version {required_ver} of {apk} from build_config.")
         except:
@@ -134,15 +135,17 @@ def get_apks(appstate):
                 required_ver = Version('0')
             else:
                 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}.")
 
-        if appstate['present_vers'][apk] == str(required_ver):
+        if appstate['present_vers'][apk] == required_ver:
             print("It's already present on disk, so skipping download.")
         else:
-            apkpure_dl(apk, apkpure_appname, str(required_ver),
+            apkpure_dl(apk, apkpure_appname, required_ver,
                 hard_version, session, present_vers, flag)
 
-        present_vers.update({apk: str(required_ver)})
+        present_vers.update({apk: required_ver})
 
     appstate['present_vers'] = present_vers
     return appstate