From c4c417d79a07b3c996a0c2bd8cd9cb77a5adac8a Mon Sep 17 00:00:00 2001 From: Nikhil Badyal Date: Thu, 29 Sep 2022 20:46:47 +0530 Subject: [PATCH 1/4] =?UTF-8?q?=E2=9C=A8=20Added=20Revanced=20Extended?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/main.py b/main.py index 7c163b3..910f419 100644 --- a/main.py +++ b/main.py @@ -263,15 +263,22 @@ class ArgParser(object): def run(self, app: str, version: str, is_experimental: bool = False) -> None: logger.debug(f"Sending request to revanced cli for building {app} revanced") + cli = "revanced-cli.jar" + patches = "revanced-patches.jar" + integrations = "revanced-integrations.apk" + if app in ("youtube", "youtube_music"): + cli = f"inotia00-{cli}" + patches = f"inotia00-{patches}" + integrations = f"inotia00-{integrations}" args = [ "-jar", - "revanced-cli.jar", + cli, "-a", app + ".apk", "-b", - "revanced-patches.jar", + patches, "-m", - "revanced-integrations.apk", + integrations, "-o", f"Re-{app}-{version}-output.apk", "--keystore", @@ -329,6 +336,9 @@ def download_revanced(downloader: Type[Downloader]) -> None: ("revanced", "revanced-integrations", "revanced-integrations.apk"), ("revanced", "revanced-patches", "revanced-patches.jar"), ("inotia00", "VancedMicroG", "VancedMicroG.apk"), + ("inotia00", "revanced-cli", "inotia00-revanced-cli.jar"), + ("inotia00", "revanced-integrations", "inotia00-revanced-integrations.apk"), + ("inotia00", "revanced-patches", "inotia00-revanced-patches.jar"), ) with ThreadPoolExecutor() as executor: executor.map(lambda repo: downloader.repository(*repo), assets) From 7ef7e0232234842275f7bc35947a1d355ba78170 Mon Sep 17 00:00:00 2001 From: Nikhil Badyal Date: Thu, 29 Sep 2022 22:31:08 +0530 Subject: [PATCH 2/4] =?UTF-8?q?=F0=9F=90=9B=20Fixed=20branch=20to=20get=20?= =?UTF-8?q?YouTube=20extended=20patches?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/main.py b/main.py index 910f419..9dfe065 100644 --- a/main.py +++ b/main.py @@ -183,6 +183,12 @@ class Patches(object): lines = app.splitlines() app_name = lines[0][1:-1] + if app_name in [ + "com.google.android.apps.youtube.music", + "com.google.android.youtube", + "com.vanced.android.youtube", + ]: + continue app_patches = [] for line in lines: patch = line.split("|")[1:-1] @@ -199,14 +205,34 @@ class Patches(object): twitter.append(patch) elif "reddit" in a: reddit.append(patch) - elif "music" in a: - music.append(patch) - elif "youtube" in a: - youtube.append(patch) elif "trill" in a: tiktok.append(patch) elif "warnapp" in a: warnwetter.append(patch) + + resp = session.get( + "https://raw.githubusercontent.com/inotia00/revanced-patches/revanced-extended/README.md" + ) + for app in resp.text.split("### 📦 ")[1:]: + lines = app.splitlines() + + app_name = lines[0][1:-1] + app_patches = [] + for line in lines: + patch = line.split("|")[1:-1] + if len(patch) == 3: + (n, d, v), a = [i.replace("`", "").strip() for i in patch], app_name + app_patches.append((n, d, a, v)) + + available_patches.extend(app_patches[2:]) + + for n, d, a, v in available_patches: + patch = {"name": n, "description": d, "app": a, "version": v} + if "music" in a: + music.append(patch) + elif "youtube" in a: + youtube.append(patch) + self._yt = youtube self._ytm = music self._twitter = twitter From 30804615e5964bec61f16a8dc05186e5b4fbb4df Mon Sep 17 00:00:00 2001 From: Nikhil Badyal Date: Fri, 30 Sep 2022 12:24:00 +0530 Subject: [PATCH 3/4] =?UTF-8?q?=F0=9F=8E=A8=20Use=20patches.json=20instead?= =?UTF-8?q?=20of=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 133 ++++++++++++++++++++++++-------------------------------- 1 file changed, 58 insertions(+), 75 deletions(-) diff --git a/main.py b/main.py index 9dfe065..0cf35fa 100644 --- a/main.py +++ b/main.py @@ -176,93 +176,76 @@ class Patches(object): def __init__(self) -> None: logger.debug("fetching all patches") resp = session.get( - "https://raw.githubusercontent.com/revanced/revanced-patches/main/README.md" + "https://raw.githubusercontent.com/revanced/revanced-patches/main/patches.json" ) - available_patches = [] - for app in resp.text.split("### 📦 ")[1:]: - lines = app.splitlines() + patches = resp.json() - app_name = lines[0][1:-1] - if app_name in [ - "com.google.android.apps.youtube.music", - "com.google.android.youtube", - "com.vanced.android.youtube", + revanced_app_ids = { + "com.reddit.frontpage": ("reddit", "_reddit"), + "com.ss.android.ugc.trill": ("tiktok", "_tiktok"), + "com.twitter.android": ("twitter", "_twitter"), + "de.dwd.warnapp": ("warnwetter", "_warnwetter"), + } + + for app_name in (revanced_app_ids[x][1] for x in revanced_app_ids): + setattr(self, app_name, []) + + for patch in patches: + for compatible_package, version in [ + (x["name"], x["versions"]) for x in patch["compatiblePackages"] ]: - continue - app_patches = [] - for line in lines: - patch = line.split("|")[1:-1] - if len(patch) == 3: - (n, d, v), a = [i.replace("`", "").strip() for i in patch], app_name - app_patches.append((n, d, a, v)) + if compatible_package in revanced_app_ids: + app_name = revanced_app_ids[compatible_package][1] + p = {x: patch[x] for x in ["name", "description"]} + p["app"] = compatible_package + p["version"] = version[-1] if version else "all" + getattr(self, app_name).append(p) - available_patches.extend(app_patches[2:]) - - youtube, music, twitter, reddit, tiktok, warnwetter = [], [], [], [], [], [] - for n, d, a, v in available_patches: - patch = {"name": n, "description": d, "app": a, "version": v} - if "twitter" in a: - twitter.append(patch) - elif "reddit" in a: - reddit.append(patch) - elif "trill" in a: - tiktok.append(patch) - elif "warnapp" in a: - warnwetter.append(patch) - - resp = session.get( - "https://raw.githubusercontent.com/inotia00/revanced-patches/revanced-extended/README.md" + resp_extended = session.get( + "https://raw.githubusercontent.com/inotia00/revanced-patches/revanced-extended/patches.json" ) - for app in resp.text.split("### 📦 ")[1:]: - lines = app.splitlines() + extended_patches = resp_extended.json() + revanced_extended_app_ids = { + "com.google.android.youtube": ("youtube", "_yt"), + "com.google.android.apps.youtube.music": ("youtube-music", "_ytm"), + } + for app_name in ( + revanced_extended_app_ids[x][1] for x in revanced_extended_app_ids + ): + setattr(self, app_name, []) - app_name = lines[0][1:-1] - app_patches = [] - for line in lines: - patch = line.split("|")[1:-1] - if len(patch) == 3: - (n, d, v), a = [i.replace("`", "").strip() for i in patch], app_name - app_patches.append((n, d, a, v)) + for patch in extended_patches: + for compatible_package, version in [ + (x["name"], x["versions"]) for x in patch["compatiblePackages"] + ]: + if compatible_package in revanced_extended_app_ids: + app_name = revanced_extended_app_ids[compatible_package][1] + p = {x: patch[x] for x in ["name", "description"]} + p["app"] = compatible_package + p["version"] = version[-1] if version else "all" + getattr(self, app_name).append(p) - available_patches.extend(app_patches[2:]) - - for n, d, a, v in available_patches: - patch = {"name": n, "description": d, "app": a, "version": v} - if "music" in a: - music.append(patch) - elif "youtube" in a: - youtube.append(patch) - - self._yt = youtube - self._ytm = music - self._twitter = twitter - self._reddit = reddit - self._tiktok = tiktok - self._warnwetter = warnwetter - logger.debug(f"Total patches in youtube are {len(youtube)}") - logger.debug(f"Total patches in youtube-music are {len(music)}") - logger.debug(f"Total patches in twitter are {len(twitter)}") - logger.debug(f"Total patches in reddit are {len(reddit)}") - logger.debug(f"Total patches in tiktok are {len(tiktok)}") - logger.debug(f"Total patches in warnwetter are {len(warnwetter)}") + for app_name, app_id in revanced_extended_app_ids.values(): + n_patches = len(getattr(self, app_id)) + logger.debug(f"Total patches in {app_name} are {n_patches}") + for app_name, app_id in revanced_app_ids.values(): + n_patches = len(getattr(self, app_id)) + logger.debug(f"Total patches in {app_name} are {n_patches}") def get(self, app: str) -> Tuple[List[Dict[str, str]], str]: logger.debug("Getting patches for %s" % app) - if "twitter" == app: - patches = self._twitter - elif "reddit" == app: - patches = self._reddit - elif "youtube_music" == app: - patches = self._ytm - elif "youtube" == app: - patches = self._yt - elif "tiktok" == app: - patches = self._tiktok - elif "warnwetter" == app: - patches = self._warnwetter - else: + app_names = { + "reddit": "_reddit", + "tiktok": "_tiktok", + "twitter": "_twitter", + "warnwetter": "_warnwetter", + "youtube": "_yt", + "youtube_music": "_ytm", + } + if not (app_name := app_names.get(app)): logger.debug("Invalid app name") sys.exit(-1) + patches = getattr(self, app_name) version = "" if app in ("youtube", "youtube_music"): version = next(i["version"] for i in patches if i["version"] != "all") From 92df2fa75e537305e04898e2dcd6e6ebaece9fdd Mon Sep 17 00:00:00 2001 From: Nikhil Badyal Date: Fri, 30 Sep 2022 13:53:45 +0530 Subject: [PATCH 4/4] =?UTF-8?q?=F0=9F=8E=A8=20Added=20support=20for=20reva?= =?UTF-8?q?nced-extend?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 53 ++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/main.py b/main.py index 0cf35fa..e5c9f15 100644 --- a/main.py +++ b/main.py @@ -30,9 +30,19 @@ supported_apps = [ "warnwetter", ] apps = env.list("PATCH_APPS", supported_apps) +build_extended = env.bool("BUILD_EXTENDED", False) +extended_apps = ["youtube", "youtube_music"] keystore_name = env.str("KEYSTORE_FILE_NAME", "revanced.keystore") apk_mirror = "https://www.apkmirror.com" github = "https://www.github.com" +normal_cli_jar = "revanced-cli.jar" +normal_patches_jar = "revanced-patches.jar" +normal_integrations_apk = "revanced-integrations.apk" +cli_jar = f"inotia00-{normal_cli_jar}" if build_extended else normal_cli_jar +patches_jar = f"inotia00-{normal_patches_jar}" if build_extended else normal_patches_jar +integrations_apk = ( + f"inotia00-{normal_integrations_apk}" if build_extended else normal_integrations_apk +) apk_mirror_urls = { "reddit": f"{apk_mirror}/apk/redditinc/reddit/", "twitter": f"{apk_mirror}/apk/twitter-inc/twitter/", @@ -201,9 +211,12 @@ class Patches(object): p["version"] = version[-1] if version else "all" getattr(self, app_name).append(p) - resp_extended = session.get( - "https://raw.githubusercontent.com/inotia00/revanced-patches/revanced-extended/patches.json" - ) + if build_extended: + url = "https://raw.githubusercontent.com/inotia00/revanced-patches/revanced-extended/patches.json" + else: + url = "https://raw.githubusercontent.com/revanced/revanced-patches/main/patches.json" + + resp_extended = session.get(url) extended_patches = resp_extended.json() revanced_extended_app_ids = { "com.google.android.youtube": ("youtube", "_yt"), @@ -272,13 +285,13 @@ class ArgParser(object): def run(self, app: str, version: str, is_experimental: bool = False) -> None: logger.debug(f"Sending request to revanced cli for building {app} revanced") - cli = "revanced-cli.jar" - patches = "revanced-patches.jar" - integrations = "revanced-integrations.apk" - if app in ("youtube", "youtube_music"): - cli = f"inotia00-{cli}" - patches = f"inotia00-{patches}" - integrations = f"inotia00-{integrations}" + cli = normal_cli_jar + patches = normal_patches_jar + integrations = normal_integrations_apk + if build_extended and app in extended_apps: + cli = cli_jar + patches = patches_jar + integrations = integrations_apk args = [ "-jar", cli, @@ -341,14 +354,17 @@ def pre_requisite(): def download_revanced(downloader: Type[Downloader]) -> None: assets = ( - ("revanced", "revanced-cli", "revanced-cli.jar"), - ("revanced", "revanced-integrations", "revanced-integrations.apk"), - ("revanced", "revanced-patches", "revanced-patches.jar"), + ("revanced", "revanced-cli", normal_cli_jar), + ("revanced", "revanced-integrations", normal_integrations_apk), + ("revanced", "revanced-patches", normal_patches_jar), ("inotia00", "VancedMicroG", "VancedMicroG.apk"), - ("inotia00", "revanced-cli", "inotia00-revanced-cli.jar"), - ("inotia00", "revanced-integrations", "inotia00-revanced-integrations.apk"), - ("inotia00", "revanced-patches", "inotia00-revanced-patches.jar"), ) + if build_extended: + assets += ( + ("inotia00", "revanced-cli", cli_jar), + ("inotia00", "revanced-integrations", integrations_apk), + ("inotia00", "revanced-patches", patches_jar), + ) with ThreadPoolExecutor() as executor: executor.map(lambda repo: downloader.repository(*repo), assets) logger.info("Downloaded revanced microG ,cli, integrations and patches.") @@ -370,7 +386,10 @@ def main() -> None: def get_patches() -> None: logger.debug(f"Excluding patches for app {app}") - excluded_patches = env.list(f"EXCLUDE_PATCH_{app}".upper(), []) + if build_extended and app in extended_apps: + excluded_patches = env.list(f"EXCLUDE_PATCH_{app}_EXTENDED".upper(), []) + else: + excluded_patches = env.list(f"EXCLUDE_PATCH_{app}".upper(), []) for patch in app_patches: arg_parser.include(patch["name"]) if patch[ "name"