diff --git a/README.md b/README.md
index e6ab75f..6529ab3 100644
--- a/README.md
+++ b/README.md
@@ -1,15 +1,11 @@
# 🤓Docker-Py-ReVanced
-A little python script that will help you in building Revanced and Revanced-Extended [apps](#note).
+A little python script that will help you in building Revanced [apps](#note).
**`Note`** - If you are a root user and want magisk module (Extended). Get them [here](https://github.com/nikhilbadyal/revanced-magisk-module)
This is just a builder for revanced and not a revanced support. Please be understanding and refrain from asking
-about revanced features/bugs. Discuss those on proper relevant forums(on Revanced GitHub , Discord)
-
-**`Note`** - I prefer [Revanced Extended](https://github.com/inotia00/revanced-patches/tree/revanced-extended) more
-(for YouTube & YouTube Music) hence the YouTube and YouTube Music builds in this repo are from
-Revanced Extended.
+about revanced features/bugs. Discuss those on proper relevant forums.
## Pre-Built APKs
@@ -19,7 +15,7 @@ You can get pre-built apks [here](https://revanced_apkss.t.me/)
You can use any of the following methods to build.
-- 🚀In GitHub (**_`Recommended`_**)
+- 🚀 **_GitHub**_ (**_`Recommended`_**)
1. Click Star to support the project.

@@ -51,8 +47,8 @@ You can use any of the following methods to build.
5. If the building process is successful, you’ll get your APKs in the
-- 🐳With Docker Compose
- Windows/Mac users simply install Docker Desktop. If using Linux see below
+- 🐳 **_Docker Compose_**
+ Windows/Mac users simply install Docker Desktop. If using Linux see below
1. Install Docker(Skip if already installed)
```bash
@@ -80,7 +76,7 @@ You can use any of the following methods to build.
6. Update `.env` file if you want some customization(See notes)
7. Run script with
```shell
- docker-compose up
+ docker-compose up --build
```
- 🐳With Docker
@@ -99,7 +95,7 @@ You can use any of the following methods to build.
- 🫠Without Docker
- 1. Install Java17 (zulu preferred)
+ 1. Install Java >= 17
2. Install Python
3. Create virtual environment
```
@@ -115,15 +111,51 @@ You can use any of the following methods to build.
```
6. Run the script with
```
- python python main.py
+ python main.py
```
+## Configurations
+
+### Global Config
+
+| Env Name | Description | Default |
+|:---------------------------|:-------------------------------------------------:|:---------------------------------------------------------------------------------------------------------|
+| PATCH_APPS | Apps to patch/build | youtube |
+| EXISTING_DOWNLOADED_APKS | Already downloaded clean apks | [] |
+| PERSONAL_ACCESS_TOKEN | Github Token to be used | None |
+| DRY_RUN | Do a dry run | False |
+| GLOBAL_CLI_DL* | DL for CLI to be used for patching apps. | [Revanced CLI](https://github.com/revanced/revanced-cli) |
+| GLOBAL_PATCHES_DL* | DL for Patches to be used for patching apps. | [Revanced Patches](https://github.com/revanced/revanced-patches) |
+| GLOBAL_INTEGRATIONS_DL* | DL for Integrations to be used for patching apps. | [Revanced CLI](https://github.com/revanced/revanced-integrations) |
+| GLOBAL_KEYSTORE_FILE_NAME* | Key file to be used for signing apps | [Builder's own key](https://github.com/nikhilbadyal/docker-py-revanced/blob/main/apks/revanced.keystore) |
+| GLOBAL_ARCHS_TO_BUILD* | Arch to keep in the patched apk. | All |
+| REDDIT_CLIENT_ID | Reddit Client ID to patch reddit apps | None |
+| VT_API_KEY | Virus Total Key to scan APKs | None |
+| TELEGRAM_CHAT_ID | Receiver in Telegram upload | None |
+| TELEGRAM_BOT_TOKEN | APKs Sender for Telegram upload | None |
+| TELEGRAM_API_ID | Used for telegram Authentication | None |
+| TELEGRAM_API_HASH | Used for telegram Authentication | None |
+
+`*` - Can be overridden for individual app.
+### App Level Config
+
+| Env Name | Description | Default |
+|:------------------------------|:---------------------------------------------------------:|:-------------------------------|
+| *APP_NAME*_CLI_DL | DL for CLI to be used for patching **APP_NAME**. | GLOBAL_CLI_DL |
+| *APP_NAME*_PATCHES_DL | DL for Patches to be used for patching **APP_NAME**. | GLOBAL_PATCHES_DL |
+| *APP_NAME*_INTEGRATIONS_DL | DL for Integrations to be used for patching **APP_NAME**. | GLOBAL_INTEGRATIONS_DL |
+| *APP_NAME*_KEYSTORE_FILE_NAME | Key file to be used for signing **APP_NAME**. | GLOBAL_KEYSTORE_FILE_NAME |
+| *APP_NAME*_ARCHS_TO_BUILD | Arch to keep in the patched **APP_NAME**. | GLOBAL_ARCHS_TO_BUILD |
+| *APP_NAME*_EXCLUDE_PATCH** | Patches to exclude while patching **APP_NAME**. | [] |
+| *APP_NAME*_INCLUDE_PATCH** | Patches to include while patching **APP_NAME**. | [] |
+| *APP_NAME*_VERSION** | Version to use for download for patching. | Recommended by patch resources |
+
+`**` - By default all patches for a given app are included.
+`**` - Can be used to included universal patch.
+
## Note
-(Pay attention to 3,4)
-By default, script build the version as recommended by Revanced team.
-
-1. Supported values for **REVANCED_APPS_NAME** are :
+1. Supported values for **APP_NAME** are :
1. [youtube](https://www.apkmirror.com/apk/google-inc/youtube/)
2. [youtube_music](https://www.apkmirror.com/apk/google-inc/youtube-music/)
@@ -165,106 +197,123 @@ By default, script build the version as recommended by Revanced team.
38. [bacon](https://www.apkmirror.com/apk/onelouder-apps/baconreader-for-reddit/)
39. [microg](https://github.com/inotia00/mMicroG/releases)
-
Please verify the source of original APKs yourself with links provided. I'm not responsible for any damaged caused.
- If you know any better/safe source to download clean. Please raise a PR.
-
-2. Remember to download the **_Microg_**. Otherwise, you will not be able to open YouTube.
-3. By default, it will build only `youtube`. To build other apps supported by revanced team.
- Add the apps you want to build in `.env` file or in `ENVS` in
- `GitHub secrets` in the format
+
Please verify the source of original APKs yourself with links provided. I'm not responsible for any damage
+ caused.If you know any better/safe source to download clean. Open a discussion.
+2. By default, script build the latest version as recommended by `patches.json` team.
+3. Remember to download the **_Microg_**. Otherwise, you may not be able to open YouTube/YouTube Music.
+4. By default, tool will build only `youtube`. To build other apps supported by patching resources.
+ Add the apps you want to build in `.env` file or in `ENVS` in `GitHub secrets` in the format
```ini
- PATCH_APPS=
+ PATCH_APPS=
```
Example:
```ini
PATCH_APPS=youtube,twitter,reddit
```
-4. 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_=
+5. If APKMirror or other apk sources are blocked in your region or script somehow is unable to download from apkmirror.
+ You can download apk manually from any source. Place them in `/apks` directory and provide environment variable
+ in `.env` file or in `ENVS` in `GitHub secrets`(Recommended) in the format.
+ ```dotenv
+ EXISTING_DOWNLOADED_APKS=
```
Example:
```dotenv
- EXCLUDE_PATCH_YOUTUBE=custom-branding,hide-get-premium
- EXCLUDE_PATCH_YOUTUBE_MUSIC=yt-music-is-shit
+ EXISTING_DOWNLOADED_APKS=youtube,youtube_music
```
- **_All the patches for an app are included by default._**.
If you want to apply a universal patch. You can
- include it
- manually. See below for more information.
-5. If you want to include any universal patch. Set comma separated patch in `.env` file or in `ENVS` in `GitHub
+ If you add above. Script will not download the `youtube` & `youtube_music`apk from internet and expects an apk in
+ `/apks` folder with **same** name.
+6. If you run script again & again. You might hit GitHub API limit. In that case you can provide your Personal
+ GitHub Access Token in `.env` file or in `ENVS` in `GitHub secrets` (Recommended) in the format -
+ ```dotenv
+ PERSONAL_ACCESS_TOKEN=
+ ```
+7. You can provide Direct download to the resource to used for patching apps `.env` file or in `ENVS` in `GitHub
secrets`
+ (Recommended) in the format -
+ ```dotenv
+ GLOBAL_CLI_DL=https://github.com/revanced/revanced-cli
+ GLOBAL_PATCHES_DL=https://github.com/revanced/revanced-patches
+ GLOBAL_INTEGRATIONS_DL=https://github.com/revanced/revanced-integrations
+ ```
+ Resources downloaded from envs and will be used for patching for any **APP_NAME**.
+ Unless provided different resource for the individual app.
+ Tool also support resource config at app level. You can patch A app with X resources while patching B with Y
+ resources.
+ This can be done by providing Direct download link for resources for app.
+ Example:
+ ```dotenv
+ YOUTUBE_CLI_DL=https://github.com/inotia00/revanced-cli
+ YOUTUBE_PATCHES_DL=https://github.com/inotia00/revanced-patches
+ YOUTUBE_INTEGRATIONS_DL=https://github.com/inotia00/revanced-integrations
+ ```
+ With the config tool will try to patch youtube with resources from inotia00 while other global resource will used
+ for patching other apps.
+ *Note* - The link provided must be DLs. Unless they are from GitHub.
+8. If you don't want to use default keystore. You can provide your own by placing it
+ inside `apks` folder. And adding the name of `keystore-file` in `.env` file or in `ENVS` in `GitHub secrets`
(Recommended) in the format
- ```ini
- INCLUDE_PATCH_=
+ ```dotenv
+ GLOBAL_KEYSTORE_FILE_NAME=revanced.keystore
```
+ Tool also support providing secret key at app level. You can sign A app with X key while signing B with Y
+ key.
+ Example:
+ ```dotenv
+ YOUTUBE_KEYSTORE_FILE_NAME=youtube.keystore
+ ```
+9. You can build only for a particular arch in order to get smaller apk files.This can be done with by adding comma
+ separated `ARCHS_TO_BUILD` in `ENVS` in `GitHub secrets` (Recommended) in the format.
+ ```dotenv
+ GLOABAL_ARCHS_TO_BUILD=arm64-v8a,armeabi-v7a
+ ```
+ Tool also support configuring at app level.
+
Example:
```dotenv
- INCLUDE_PATCH_YOUTUBE=remove-screenshot-restriction
+ YOUTUBE_ARCHS_TO_BUILD=arm64-v8a,armeabi-v7a
```
- If you are using `Revanced Extended.` Add `_EXTENDED` in exclude options.
- Example:
- ```dotenv
- INCLUDE_PATCH_YOUTUBE_EXTENDED=remove-screenshot-restriction
- ```
- **_Remember_** - Revanced patches are provided space separated, make sure you type those **-** separated here.
- It means a patch named _**Hey There**_ will be entered as **_hey-there_** in the above example.
-6. If you want to use custom Patching resource. You can do so by providing respective DLs. Per app support is there too.
- ```ini
- YOUTUBE_MUSIC_INTEGRATION_DL=https://github.com/inotia00/revanced-integrations/releases/latest
- YOUTUBE_MUSIC_PATCHES_DL=https://github.com/inotia00/revanced-patches/releases/latest
- YOUTUBE_MUSIC_CLI_DL=https://github.com/inotia00/revanced-cli/releases/latest
- YOUTUBE_MUSIC_KEYSTORE_FILE_NAME=key.store
- YOUTUBE_MUSIC_ARCHS_TO_BUILD=arm64-v8a,armeabi-v7a
- ```
- These link if not from GitHub must be direct download links.
-7. You can also provide a default resources which will be used when per app config is missing.
- ```ini
- GLOBAL_INTEGRATION_DL=https://github.com/inotia00/revanced-integrations/releases/latest
- GLOBAL_PATCHES_DL=https://github.com/inotia00/revanced-patches/releases/latest
- GLOBAL_CLI_DL=https://github.com/inotia00/revanced-cli/releases/latest
- ```
- These link if not from GitHub must be direct download links.
-8. If you want to build a specific version . Add `version` in `.env` file or in `ENVS` in `GitHub secrets` (Recommended)
- in the format
- ```ini
- _VERSION=
- ```
- Example:
- ```ini
- YOUTUBE_VERSION=17.31.36
- YOUTUBE_MUSIC_VERSION=X.X.X
- TWITTER_VERSION=X.X.X
- REDDIT_VERSION=X.X.X
- TIKTOK_VERSION=X.X.X
- WARNWETTER_VERSION=X.X.X
- ```
-9. If you want to build `latest` version, whatever latest is available(including
- beta) .
- Add `latest` in `.env` file or in `ENVS` in `GitHub secrets` (Recommended) in the format
-
- ```ini
- _VERSION=latest
- ```
-
- Example:
-
- ```ini
- YOUTUBE_VERSION=latest
- YOUTUBE_MUSIC_VERSION=latest
- TWITTER_VERSION=latest
- REDDIT_VERSION=latest
- TIKTOK_VERSION=latest
- WARNWETTER_VERSION=latest
- ```
-
-10. If you don't want to use default keystore. You can provide your own by placing it
- inside `apks` folder. And adding the name of `keystore-file` in `.env` file or in `ENVS` in `GitHub secrets`
+ *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 or in `ENVS` in `GitHub secrets`
(Recommended) in the format
- ```dotenv
- GLOBAL_KEYSTORE_FILE_NAME=revanced.keystore
+ ```ini
+ _EXCLUDE_PATCH=
```
-11. For Telegram Upload.
+ Example:
+ ```dotenv
+ YOUTUBE_EXCLUDE_PATCH=custom-branding,hide-get-premium
+ YOUTUBE_MUSIC_EXCLUDE_PATCH=yt-music-is-shit
+ ```
+ Note -
+ 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` file or in `ENVS` in `GitHub
+ secrets`
+ (Recommended) in the format
+ ```ini
+ _INCLUDE_PATCH=
+ ```
+ Example:
+ ```dotenv
+ YOUTUBE_INCLUDE_PATCH=remove-screenshot-restriction
+ ```
+ 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 or in `ENVS` in `GitHub
+ secrets` (Recommended) in the format
+ ```ini
+ _VERSION=
+ ```
+ Example:
+ ```ini
+ YOUTUBE_VERSION=17.31.36
+ YOUTUBE_MUSIC_VERSION=X.X.X
+ TWITTER_VERSION=latest
+ ```
+13. 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`
@@ -278,42 +327,12 @@ By default, script build the version as recommended by Revanced team.

6. After Everything done successfully the actions secrets of the repository will look something like
-12. You can build only for a particular arch in order to get smaller apk files.This can be done with by adding comma
- separated `ARCHS_TO_BUILD` in `ENVS` in `GitHub secrets` (Recommended) in the format.
- ```dotenv
- GLOABAL_ARCHS_TO_BUILD=arm64-v8a,armeabi-v7a
- ```
- Possible values for `ARCHS_TO_BUILD` are: `armeabi-v7a`,`x86`,`x86_64`,`arm64-v8a`
- Make sure the patching resource support this.
-13. You can scan your built apks files with VirusTotal. For that, Add `VT_API_KEY` in `GitHub secrets`.
14. 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`.
- Or you can ignore what I said above and always use `GitHub secrets`.
-15. If APKMirror or other apk source is blocked in your region or script somehow is unable to download from apkmirror.
- You can download apk manually from any source. Place them in `/apks` directory and provide environment variable
- in `.env` file or in `ENVS` in `GitHub secrets`(Recommended) in the format.
- ```dotenv
- EXISTING_DOWNLOADED_APKS=
- ```
- Example:
- ```dotenv
- EXISTING_DOWNLOADED_APKS=youtube,youtube_music
- ```
- If you add above. Script will not download the `Youtube` & `youtube music`apk from internet and expects an apk in
- `/apks` folder.
-
- Name of the downloaded apk must match with the available app choices found [here.](#note)
-16. If you run script again & again. You might hit GitHub API limit. In that case you can provide your Personal
- GitHub Access Token in `.env` file or in `ENVS` in `GitHub secrets` (Recommended) in the format -
- ```dotenv
- PERSONAL_ACCESS_TOKEN=
- ```
-17. Sample Envs
+15. Sample Envs
-18. Make your Action has write access. If not click
+16. Make 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.
-19. If you want to patch reddit apps using your own Client ID. You can provide your Client ID
- as secret `REDDIT_CLIENT_ID` in `GitHub secrets`.
diff --git a/src/app.py b/src/app.py
index 2c35ed3..1947be5 100644
--- a/src/app.py
+++ b/src/app.py
@@ -25,8 +25,8 @@ class APP(object):
self.integrations_dl = config.env.str(
f"{app_name}_INTEGRATION_DL".upper(), config.global_integrations_dl
)
- self.exclude_request = config.env.list(f"EXCLUDE_PATCH_{app_name}".upper(), [])
- self.include_request = config.env.list(f"INCLUDE_PATCH_{app_name}".upper(), [])
+ self.exclude_request = config.env.list(f"{app_name}_EXCLUDE_PATCH".upper(), [])
+ self.include_request = config.env.list(f"{app_name}_INCLUDE_PATCH".upper(), [])
self.resource: Dict[str, str] = {}
self.no_of_patches = 0
self.keystore_name = config.env.str(
diff --git a/src/config.py b/src/config.py
index 5d03de9..3b44f77 100644
--- a/src/config.py
+++ b/src/config.py
@@ -72,10 +72,6 @@ class RevancedConfig(object):
key: value + value.split("/")[-2]
for key, value in self.apk_mirror_urls.items()
}
- self.alternative_youtube_patches = env.list("ALTERNATIVE_YOUTUBE_PATCHES", [])
- self.alternative_youtube_music_patches = env.list(
- "ALTERNATIVE_YOUTUBE_MUSIC_PATCHES", []
- )
self.existing_downloaded_apks = env.list("EXISTING_DOWNLOADED_APKS", [])
self.personal_access_token = env.str("PERSONAL_ACCESS_TOKEN", None)
self.dry_run = env.bool("DRY_RUN", False)