# 🤓Docker-Py-ReVanced A little python script that will help you in building Revanced [apps](#patch-apps). **`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. ## Pre-Built APKs You can get pre-built apks [here](https://revanced_apkss.t.me/) ## Build Yourself You can use any of the following methods to build. - 🚀 **_GitHub**_ (**_`Recommended`_**) 1. Click Star to support the project.

2. Fork the project.

3. Add `ENVS` (**optional**) secret to the repo. Required only if you want to cook specific apps/versions.
🚶Detailed step by step guide - Go to the repo settings and then to actions->secret

- Add Repository secret
4. Go to actions tab. Select `Build & Release`.Click on `Run Workflow`.
🚶Detailed step by step guide - Go to actions tab

- Check the status of build, It should look green.
5. If the building process is successful, you’ll get your APKs in the
- 🐳 **_Docker Compose_**
Windows/Mac users simply install Docker Desktop. If using Linux see below 1. Install Docker(Skip if already installed) ```bash curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh ``` 2. Grant Permissions with(Skip if already there) ```bash sudo chmod 777 /var/run/docker.sock ``` 3. Install Docker compose(Skip if already installed or using **_`Docker Desktop`_**) ```bash curl -L "https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-$(uname -s)-$(uname -m)" \ -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose ``` 4. Clone the repo ```bash git clone https://github.com/nikhilbadyal/docker-py-revanced ``` 5. cd to the cloned repo ```bash cd docker-py-revanced ``` 6. Update `.env` file if you want some customization(See notes) 7. Run script with ```shell docker-compose up --build ``` - 🐳With Docker 1. Install Docker(Skip if already installed) ```bash curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh ``` 2. Run script with ```shell docker run -v "$(pwd)"/apks:/app/apks/ nikhilbadyal/docker-py-revanced ``` You can pass the below environment variables (See notes) with the `-e` flag or use the `--env-file` [flag](https://docs.docker.com/engine/reference/commandline/run/#options). - 🫠Without Docker 1. Install Java >= 17 2. Install Python 3. Create virtual environment ``` python3 -m venv venv ``` 4. Activate virtual environment ``` source venv/bin/activate ``` 5. Install Dependencies with ``` pip install -r requirements.txt ``` 6. Run the script with ``` python main.py ``` ## Configurations ### Global Config | **Env Name** | **Description** | **Default** | |:---------------------------------------------------------|:-------------------------------------------------:|:---------------------------------------------------------------------------------------------------------| | [PATCH_APPS](#patch-apps) | Apps to patch/build | youtube | | [EXISTING_DOWNLOADED_APKS ](#existing-downloaded-apks) | Already downloaded clean apks | [] | | [PERSONAL_ACCESS_TOKEN](#personal-access-token) | Github Token to be used | None | | DRY_RUN | Do a dry run | False | | [GLOBAL_CLI_DL*](#global-resources) | DL for CLI to be used for patching apps. | [Revanced CLI](https://github.com/revanced/revanced-cli) | | [GLOBAL_PATCHES_DL*](#global-resources) | DL for Patches to be used for patching apps. | [Revanced Patches](https://github.com/revanced/revanced-patches) | | [GLOBAL_PATCHES_JSON_DL*](#global-resources) | DL for Patches Json to be used for patching apps. | [Revanced Patches](https://github.com/revanced/revanced-patches) | | [GLOBAL_INTEGRATIONS_DL*](#global-resources) | DL for Integrations to be used for patching apps. | [Revanced CLI](https://github.com/revanced/revanced-integrations) | | [GLOBAL_KEYSTORE_FILE_NAME*](#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*](#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](#telegram-support) | Receiver in Telegram upload | None | | [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 | Env Name | Description | Default | |:------------------------------------------------------------|:---------------------------------------------------------:|:-------------------------------| | [*APP_NAME*_CLI_DL](#global-resources) | DL for CLI to be used for patching **APP_NAME**. | GLOBAL_CLI_DL | | [*APP_NAME*_PATCHES_DL](#global-resources) | DL for Patches to be used for patching **APP_NAME**. | GLOBAL_PATCHES_DL | | [*APP_NAME*_PATCHES_JSON_DL](#global-resources) | DL for Patches Json to be used for patching **APP_NAME**. | GLOBAL_PATCHES_JSON_DL | | [*APP_NAME*_INTEGRATIONS_DL](#global-resources) | DL for Integrations to be used for patching **APP_NAME**. | GLOBAL_INTEGRATIONS_DL | | [*APP_NAME*_KEYSTORE_FILE_NAME](#global-keystore-file-name) | Key file to be used for signing **APP_NAME**. | GLOBAL_KEYSTORE_FILE_NAME | | [*APP_NAME*_ARCHS_TO_BUILD](#global-archs-to-build) | Arch to keep in the patched **APP_NAME**. | GLOBAL_ARCHS_TO_BUILD | | [*APP_NAME*_EXCLUDE_PATCH**](#custom-exclude-patching) | Patches to exclude while patching **APP_NAME**. | [] | | [*APP_NAME*_INCLUDE_PATCH**](#custom-include-patching) | Patches to include while patching **APP_NAME**. | [] | | [*APP_NAME*_VERSION**](#app-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 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/) 3. [twitter](https://www.apkmirror.com/apk/twitter-inc/twitter/) 4. [reddit](https://www.apkmirror.com/apk/redditinc/reddit/) 5. [tiktok](https://www.apkmirror.com/apk/tiktok-pte-ltd/tik-tok-including-musical-ly/) 6. [warnwetter](https://www.apkmirror.com/apk/deutscher-wetterdienst/warnwetter/) 7. [spotify](https://spotify.en.uptodown.com/android) 8. [nyx-music-player](https://nyx-music-player.en.uptodown.com/android) 9. [icon_pack_studio](https://www.apkmirror.com/apk/smart-launcher-team/icon-pack-studio/) 10. [ticktick](https://www.apkmirror.com/apk/appest-inc/ticktick-to-do-list-with-reminder-day-planner/) 11. [twitch](https://www.apkmirror.com/apk/twitch-interactive-inc/twitch/) 12. [hex-editor](https://m.apkpure.com/hex-editor/com.myprog.hexedit) 13. [windy](https://www.apkmirror.com/apk/windy-weather-world-inc/windy-wind-weather-forecast/) 14. [my-expenses](https://my-expenses.en.uptodown.com/android) 15. [backdrops](https://backdrops.en.uptodown.com/android) 16. [expensemanager](https://apksos.com/app/com.ithebk.expensemanager) 17. [tasker](https://www.apkmirror.com/apk/joaomgcd/tasker-crafty-apps-eu/) 18. [irplus](https://irplus.en.uptodown.com/android) 19. [vsco](https://www.apkmirror.com/apk/vsco/vsco-cam/) 20. [meme-generator-free](https://meme-generator-free.en.uptodown.com/android) 21. [nova_launcher](https://www.apkmirror.com/apk/teslacoil-software/nova-launcher/) 22. [netguard](https://www.apkmirror.com/apk/marcel-bokhorst/netguard-no-root-firewall/) 23. [instagram](https://www.apkmirror.com/apk/instagram/instagram-instagram/) 24. [inshorts](https://www.apkmirror.com/apk/inshorts-formerly-news-in-shorts/) 25. [facebook](https://www.apkmirror.com/apk/facebook-2/facebook/) 26. [grecorder](https://www.apkmirror.com/apk/google-inc/google-recorder/) 27. [trakt](https://www.apkmirror.com/apk/trakt/trakt/) 28. [candyvpn](https://www.apkmirror.com/apk/liondev-io/candylink-vpn/) 29. [sonyheadphone](https://www.apkmirror.com/apk/sony-corporation/sony-headphones-connect/) 30. [androidtwelvewidgets](https://m.apkpure.com/android-12-widgets-twelve/com.dci.dev.androidtwelvewidgets) 31. [yuka](https://yuka.en.uptodown.com/android) 32. [relay](https://www.apkmirror.com/apk/dbrady/relay-for-reddit-2/) 33. [boost](https://www.apkmirror.com/apk/ruben-mayayo/boost-for-reddit/) 34. [rif](https://www.apkmirror.com/apk/talklittle/reddit-is-fun/) 35. [sync](https://www.apkmirror.com/apk/red-apps-ltd/sync-for-reddit/) 36. [infinity](https://www.apkmirror.com/apk/red-apps-ltd/sync-for-reddit/) 37. [slide](https://www.apkmirror.com/apk/haptic-apps/slide-for-reddit/) 38. [bacon](https://www.apkmirror.com/apk/onelouder-apps/baconreader-for-reddit/) 39. [microg](https://github.com/inotia00/mMicroG/releases) 40. [pixiv](https://www.apkmirror.com/apk/pixiv-inc/pixiv/)
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= ``` Example: ```ini PATCH_APPS=youtube,twitter,reddit ``` 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 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 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_PATCHES_JSON_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_PATCHES_JSON_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 ```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 YOUTUBE_ARCHS_TO_BUILD=arm64-v8a,armeabi-v7a ``` *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 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= ``` 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. 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= ``` 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. 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= ``` Example: ```ini YOUTUBE_VERSION=17.31.36 YOUTUBE_MUSIC_VERSION=X.X.X TWITTER_VERSION=latest ``` 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`

3. `TELEGRAM_BOT_TOKEN` - Telegram provides BOT_TOKEN. It works as sender. Open [bot](https://t.me/BotFather) and create one copy api key

4. `TELEGRAM_API_ID` - Telegram API_ID is provided by telegram [here](https://my.telegram.org/apps)

5. `TELEGRAM_API_HASH` - Telegram API_HASH is provided by telegram [here](https://my.telegram.org/apps)

6. After Everything done successfully a part of the actions secrets of the repository may look like
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`.
16. Sample Envs
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.