From 86f449f51933546b34c28648e32a70c299b5b8d8 Mon Sep 17 00:00:00 2001 From: Nikhil Badyal Date: Tue, 8 Aug 2023 20:51:42 +0530 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Ability=20to=20upload=20extra=20fil?= =?UTF-8?q?es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 24 +++++++++++++++++------- main.py | 3 ++- src/app.py | 9 ++++++--- src/config.py | 5 +++-- src/utils.py | 23 +++++++++++++++++++++++ 5 files changed, 51 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 8f7e896..9c0c365 100644 --- a/README.md +++ b/README.md @@ -136,6 +136,7 @@ You can use any of the following methods to build. | [TELEGRAM_BOT_TOKEN](#telegram-support) | APKs Sender for Telegram upload | None | | [TELEGRAM_API_ID](#telegram-support) | Used for telegram Authentication | None | | [TELEGRAM_API_HASH](#telegram-support) | Used for telegram Authentication | None | +| [EXTRA_FILES](#extra-files) | Extra files apk to upload in GitHub upload. | None | `*` - Can be overridden for individual app. ### App Level Config @@ -282,7 +283,16 @@ You can use any of the following methods to build. *Note* - 1. Possible values are: `armeabi-v7a`,`x86`,`x86_64`,`arm64-v8a` 2. Make sure the patching resource(CLI) support this feature. -10. If you want to exclude any patch. Set comma separated patch in `.env` file +10. If you want to include any extra file to the Github upload. Set comma arguments + in `.env` file or in `ENVS` in `GitHub secrets` (Recommended) in the format + ```ini + EXTRA_FILES=@.apk + ``` + Example: + ```dotenv + EXTRA_FILES=https://github.com/inotia00/mMicroG/releases/latest@mmicrog.apk + ``` +11. If you want to exclude any patch. Set comma separated patch in `.env` file or in `ENVS` in `GitHub secrets` (Recommended) in the format ```ini _EXCLUDE_PATCH= @@ -296,7 +306,7 @@ You can use any of the following methods to build. 1. **All** the patches for an app are **included** by default.
2. Revanced patches are provided as space separated, make sure you type those **-** separated here. It means a patch named _**Hey There**_ must be entered as **_hey-there_** in the above example. -11. If you want to include any universal patch. Set comma separated patch in `.env` +12. If you want to include any universal patch. Set comma separated patch in `.env` file or in `ENVS` in `GitHub secrets` (Recommended) in the format ```ini _INCLUDE_PATCH= @@ -308,7 +318,7 @@ You can use any of the following methods to build. Note - 1. Revanced patches are provided as space separated, make sure you type those **-** separated here. It means a patch named _**Hey There**_ must be entered as **_hey-there_** in the above example. -12. If you want to build a specific version or latest version. Add `version` in `.env` file +13. If you want to build a specific version or latest version. Add `version` in `.env` file or in `ENVS` in `GitHub secrets` (Recommended) in the format ```ini _VERSION= @@ -319,7 +329,7 @@ You can use any of the following methods to build. YOUTUBE_MUSIC_VERSION=X.X.X TWITTER_VERSION=latest ``` -13. For Telegram Upload. +14. For Telegram Upload. 1. Set up a telegram channel, send a message to it and forward the message to this telegram [bot](https://t.me/username_to_id_bot) 2. Copy `id` and save it to `TELEGRAM_CHAT_ID`
@@ -333,12 +343,12 @@ You can use any of the following methods to build.
6. After Everything done successfully a part of the actions secrets of the repository may look like
-14. Configuration defined in `ENVS` in `GitHub secrets` will override the configuration in `.env` file. You can use this +15. Configuration defined in `ENVS` in `GitHub secrets` will override the configuration in `.env` file. You can use this fact to define your normal configurations in `.env` file and sometimes if you want to build something different just once. Add it in `GitHub secrets`.
-15. Sample Envs
+16. Sample Envs
-16. Make sure your Action has write access. If not click +17. Make sure your Action has write access. If not click [here](https://github.com/nikhilbadyal/docker-py-revanced/settings/actions). In the bottom give read and write access to Actions. diff --git a/main.py b/main.py index dfe9594..2c296f4 100644 --- a/main.py +++ b/main.py @@ -8,7 +8,7 @@ from src.config import RevancedConfig from src.downloader.factory import DownloaderFactory from src.parser import Parser from src.patches import Patches -from src.utils import AppNotFound, PatchesJsonFailed, check_java +from src.utils import AppNotFound, PatchesJsonFailed, check_java, extra_downloads def main() -> None: @@ -17,6 +17,7 @@ def main() -> None: env = Env() config = RevancedConfig(env) + extra_downloads(config) check_java(config.dry_run) logger.info(f"Will Patch only {config.apps}") diff --git a/src/app.py b/src/app.py index 57cf053..83a4f81 100644 --- a/src/app.py +++ b/src/app.py @@ -54,7 +54,9 @@ class APP(object): return ", ".join([f"{key}: {value}" for key, value in attrs.items()]) @staticmethod - def download(url: str, config: RevancedConfig, assets_filter: str) -> str: + def download( + url: str, config: RevancedConfig, assets_filter: str, file_name: str = "" + ) -> str: """Downloader.""" from src.downloader.download import Downloader @@ -63,8 +65,9 @@ class APP(object): from src.downloader.github import Github url = Github.patch_resource(url, assets_filter)[0] - extension = pathlib.Path(url).suffix - file_name = APP.generate_filename(url) + extension + if not file_name: + extension = pathlib.Path(url).suffix + file_name = APP.generate_filename(url) + extension Downloader(None, config).direct_download(url, file_name) # type: ignore return file_name diff --git a/src/config.py b/src/config.py index 99aca6f..c0b07f3 100644 --- a/src/config.py +++ b/src/config.py @@ -5,8 +5,6 @@ from typing import List from environs import Env from requests import Session -from src.utils import default_build - default_cli = "https://github.com/revanced/revanced-cli/releases/latest" default_patches = "https://github.com/revanced/revanced-patches/releases/latest" default_patches_json = default_patches @@ -19,6 +17,8 @@ class RevancedConfig(object): """Revanced Configurations.""" def __init__(self, env: Env) -> None: + from src.utils import default_build + self.env = env self.temp_folder = Path("apks") self.session = Session() @@ -89,3 +89,4 @@ class RevancedConfig(object): "GLOBAL_KEYSTORE_FILE_NAME", "revanced.keystore" ) self.global_archs_to_build = env.list("GLOBAL_ARCHS_TO_BUILD", []) + self.extra_download_files: List[str] = env.list("EXTRA_FILES", []) diff --git a/src/utils.py b/src/utils.py index dcad32f..26db498 100644 --- a/src/utils.py +++ b/src/utils.py @@ -1,4 +1,5 @@ """Utilities.""" +import os import re import subprocess from typing import Dict @@ -6,6 +7,8 @@ from typing import Dict from loguru import logger from requests import Response +from src.config import RevancedConfig + default_build = [ "youtube", "youtube_music", @@ -97,3 +100,23 @@ def check_java(dry_run: bool) -> None: except subprocess.CalledProcessError: logger.debug("Java>= 17 Must be installed") exit(-1) + + +def extra_downloads(config: RevancedConfig) -> None: + """Download extra files.""" + from src.app import APP + + try: + for extra in config.extra_download_files: + url, file_name = extra.split("@") + file_name_without_extension, file_extension = os.path.splitext(file_name) + + if file_extension.lower() == ".apk": + new_file_name = file_name_without_extension + "-output" + file_extension + else: + raise ValueError("Only .apk extensions are allowed.") + APP.download(url, config, assets_filter="", file_name=new_file_name) + except ValueError: + logger.info( + "Unable to download extra file. Provide input in url@name.apk format." + )