{"id":13824929,"url":"https://github.com/nikhilbadyal/docker-py-revanced","last_synced_at":"2026-04-02T00:28:34.466Z","repository":{"id":56805707,"uuid":"524139377","full_name":"nikhilbadyal/docker-py-revanced","owner":"nikhilbadyal","description":"One Click Python util to build all Revanced apps.","archived":false,"fork":false,"pushed_at":"2026-02-27T04:15:54.000Z","size":1423,"stargazers_count":653,"open_issues_count":3,"forks_count":445,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-02-27T11:47:03.216Z","etag":null,"topics":["docker","docker-compose","python","revanced","revanced-music","revanced-patches","revanced-youtube","telegram","vanced","youtube"],"latest_commit_sha":null,"homepage":"http://www.nikhilbadyal.com/docker-py-revanced/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nikhilbadyal.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.json","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-08-12T15:35:26.000Z","updated_at":"2026-02-27T04:15:57.000Z","dependencies_parsed_at":"2023-10-03T15:03:59.293Z","dependency_job_id":"eb18fdc3-20d3-4046-8269-575435af93b9","html_url":"https://github.com/nikhilbadyal/docker-py-revanced","commit_stats":null,"previous_names":[],"tags_count":113,"template":false,"template_full_name":null,"purl":"pkg:github/nikhilbadyal/docker-py-revanced","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikhilbadyal%2Fdocker-py-revanced","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikhilbadyal%2Fdocker-py-revanced/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikhilbadyal%2Fdocker-py-revanced/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikhilbadyal%2Fdocker-py-revanced/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nikhilbadyal","download_url":"https://codeload.github.com/nikhilbadyal/docker-py-revanced/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikhilbadyal%2Fdocker-py-revanced/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30071670,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T03:25:38.285Z","status":"ssl_error","status_checked_at":"2026-03-04T03:25:05.086Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-compose","python","revanced","revanced-music","revanced-patches","revanced-youtube","telegram","vanced","youtube"],"created_at":"2024-08-04T09:01:12.037Z","updated_at":"2026-04-02T00:28:34.451Z","avatar_url":"https://github.com/nikhilbadyal.png","language":"Python","funding_links":[],"categories":["Python","🔨 Projects"],"sub_categories":[],"readme":"# 🤓Docker-Py-ReVanced\n\n![Docker Pulls](https://img.shields.io/docker/pulls/nikhilbadyal/docker-py-revanced)\n\nA little python script that will help you in building [Revanced](https://revanced.app/) [apps](#any-patch-apps) and sharing them anywhere.\n\n**`Note`** - If you are a root user and want magisk module (Extended). Get them [here](https://github.com/nikhilbadyal/revanced-magisk-module)\n\n \u003ca id=\"only-builder-support\"\u003e\u003c/a\u003eThis is just a builder for revanced and not a revanced support. Please be\n understanding and refrain from asking about revanced features/bugs. Discuss those on proper relevant forums.\n\n## Pre-Built APKs\n\nYou can get pre-built apks [here](https://@revanced_apks_1.t.me/)\n\n## Facing issues? Click [here](https://github.com/nikhilbadyal/docker-py-revanced/issues/new/choose).\u003cbr\u003e\n## Build Yourself\n\nYou can use any of the following methods to build.\n\n- 🚀 **GitHub** (**_`Recommended`_**)\n\n     1. Click Star to support the project.\u003cbr\u003e\n       \u003cimg src=\"https://i.imgur.com/FFyXaWY.png\" width=\"400\" style=\"left\"\u003e\u003cbr\u003e\n     2. Fork the project.\u003cbr\u003e\n     \u003cimg src=\"https://i.imgur.com/R5HdByI.png\" width=\"400\" style=\"left\"\u003e\u003cbr\u003e\n     3. Add `ENVS` (**optional**) secret to the repo. Required only if you want to cook specific apps/versions.\n         \u003cdetails\u003e\n           \u003csummary\u003e🚶Detailed step by step guide\u003c/summary\u003e\n\n         - Go to the repo settings and then to actions-\u003esecret\u003cbr\u003e\n           \u003cimg src=\"https://i.imgur.com/Inj82KK.png\" width=\"600\" style=\"left\"\u003e\u003cbr\u003e\n         - Add Repository secret\u003cbr\u003e\n           \u003cimg src=\"https://i.imgur.com/V2Wfx3J.png\" width=\"600\" style=\"left\"\u003e\n\n        \u003c/details\u003e\n\n     4. Go to actions tab. Select `Build \u0026 Release`.Click on `Run Workflow`.\n\n        \u003cdetails\u003e\n          \u003csummary\u003e🚶Detailed step by step guide\u003c/summary\u003e\n\n         - Go to actions tab\u003cbr\u003e\n           \u003cimg src=\"https://i.imgur.com/XSCvzav.png\" width=\"600\" style=\"left\"\u003e\u003cbr\u003e\n         - Check the status of build, It should look green.\u003cbr\u003e\n           \u003cimg src=\"https://i.imgur.com/CsJt9W1.png\" width=\"600\" style=\"left\"\u003e\n\n        \u003c/details\u003e\n\n     5. If the building process is successful, you'll get your APKs in the\u003cbr\u003e\n        \u003cimg src=\"https://i.imgur.com/S5d7qAO.png\" width=\"700\" style=\"left\"\u003e\n     6. Make sure to do below steps once in a while(daily or weekly) to keep the builder bug free.\u003cbr\u003e\n        \u003cimg src=\"https://i.imgur.com/CbdH7vM.png\" width=\"700\" style=\"left\"\u003e\n\n- 🐳 **_Docker Compose_**\u003cbr\u003e\n\n    1. Install [Docker Desktop](https://www.docker.com/products/docker-desktop/).\n    2. Clone the repo\n       ```bash\n       git clone https://github.com/nikhilbadyal/docker-py-revanced\n       ```\n    3. cd to the cloned repo\n       ```bash\n       cd docker-py-revanced\n       ```\n    4. Update `.env` file if you want some customization(See notes)\n    5. Run script with\n       ```shell\n       docker compose up --build\n       ```\n\n- 🐳With Docker\n\n    1. Install Docker or [Docker Desktop](https://www.docker.com/products/docker-desktop/).\n       ```bash\n       curl -fsSL https://get.docker.com -o get-docker.sh\n       sh get-docker.sh\n       ```\n    2. Run script with\n       ```shell\n       docker run -v \"$(pwd)\"/apks:/app/apks/  nikhilbadyal/docker-py-revanced\n       ```\n       You can pass the below environment variables (See notes) with the `-e` flag or use the `--env-file`\n       [flag](https://docs.docker.com/engine/reference/commandline/run/#options).\n\n- 🫠Without Docker\n\n    1. Install Java \u003e= 17\n    2. Install Python \u003e= 3.11\n    3. Create virtual environment\n       ```\n       python3 -m venv venv\n       ```\n    4. Activate virtual environment\n       ```\n       source venv/bin/activate\n       ```\n    5. Install Dependencies with\n       ```\n       pip install -r requirements.txt\n       ```\n    6. Run the script with\n       ```\n       python main.py\n       ```\n\n## Configurations\n\n### Global Config\n\n| **Env Name**                                             |                     **Description**                     | **Default**                                                                                                           |\n|:---------------------------------------------------------|:-------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------|\n| [PATCH_APPS](#patch-apps)                                |                   Apps to patch/build                   | youtube                                                                                                               |\n| [EXISTING_DOWNLOADED_APKS ](#existing-downloaded-apks)   |              Already downloaded clean apks              | []                                                                                                                    |\n| [PERSONAL_ACCESS_TOKEN](#personal-access-token)          |                 Github Token to be used                 | None                                                                                                                  |\n| DRY_RUN                                                  |                      Do a dry run                       | False                                                                                                                 |\n| [~~GLOBAL_CLI_DL*~~](#global-resources)                  | DL for CLI to be used for patching apps.(Disabled Temp) | [Revanced CLI](https://github.com/revanced/revanced-cli)                                                              |\n| [GLOBAL_PATCHES_DL*](#global-resources)                  |      DL for Patches to be used for patching apps.       | [Revanced Patches](https://github.com/revanced/revanced-patches)                                                      |\n| [GLOBAL_SPACE_FORMATTED_PATCHES*](#global-resources)     |          Whether patches are space formatted.           | True                                                                                                                  |\n| [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)              |\n| [GLOBAL_OLD_KEY*](#global-keystore-file-name)            |    Whether key was generated with cli v4(new) or not    | \u003cbr/\u003e[Builder's v3(old) own key](https://github.com/nikhilbadyal/docker-py-revanced/blob/main/apks/revanced.keystore) |\n| [GLOBAL_OPTIONS_FILE*](#global-options-file)             |                 Options file to be used                 | [Builder's default file](https://github.com/nikhilbadyal/docker-py-revanced/blob/main/apks/options.json)              |\n| [GLOBAL_ARCHS_TO_BUILD*](#global-archs-to-build)         |            Arch to keep in the patched apk.             | All                                                                                                                   |\n| [GLOBAL_CLI_ARGSF*](#cli-arg-compatibility)              |      CLI argument profile (`revanced-cli` default)      | revanced-cli                                                                                                          |\n| [GLOBAL_CLI_LPARGS*](#cli-arg-compatibility)             |      Override map for `list-patches` command args       | None                                                                                                                  |\n| [GLOBAL_CLI_PARGS*](#cli-arg-compatibility)              |          Override map for `patch` command args          | None                                                                                                                  |\n| REDDIT_CLIENT_ID                                         |          Reddit Client ID to patch reddit apps          | None                                                                                                                  |\n| [TELEGRAM_CHAT_ID](#telegram-support)                    |               Receiver in Telegram upload               | None                                                                                                                  |\n| [TELEGRAM_BOT_TOKEN](#telegram-support)                  |             APKs Sender for Telegram upload             | None                                                                                                                  |\n| [TELEGRAM_API_ID](#telegram-support)                     |            Used for telegram Authentication             | None                                                                                                                  |\n| [TELEGRAM_API_HASH](#telegram-support)                   |            Used for telegram Authentication             | None                                                                                                                  |\n| [EXTRA_FILES](#extra-files)                              |       Extra files apk to upload in GitHub upload.       | None                                                                                                                  |\n| [APPRISE_URL](#apprise)                                  |                      Apprise URL .                      | None                                                                                                                  |\n| [APPRISE_NOTIFICATION_TITLE](#apprise)                   |              Apprise Notification Title .               | None                                                                                                                  |\n| [APPRISE_NOTIFICATION_BODY](#apprise)                    |               Apprise Notification Body .               | None                                                                                                                  |\n| MAX_RESOURCE_WORKERS                                     |        Maximum workers for downloading resources        | 3                                                                                                                     |\n| MAX_PARALLEL_APPS                                        |      Maximum number of apps to process in parallel      | 4                                                                                                                     |\n| DISABLE_CACHING                                          |          Disable download and resource caching          | False                                                                                                                 |\n\n`*` - Can be overridden for individual app.\n### App Level Config\n\n| Env Name                                                      |                                             Description                                              | Default                        |\n|:--------------------------------------------------------------|:----------------------------------------------------------------------------------------------------:|:-------------------------------|\n| [~~**APP_NAME**_CLI_DL~~](#global-resources)                  |                   DL for CLI to be used for patching **APP_NAME**.(Disabled Temp)                    | GLOBAL_CLI_DL                  |\n| [**APP_NAME**_PATCHES_DL](#global-resources)                  | DL for Patches to be used for patching **APP_NAME**. Supports multiple bundles via comma separation. | GLOBAL_PATCHES_DL              |\n| [**APP_NAME**_SPACE_FORMATTED_PATCHES](#global-resources)     |                         Whether patches are space formatted.   **APP_NAME**.                         | GLOBAL_SPACE_FORMATTED_PATCHES |\n| [**APP_NAME**_KEYSTORE_FILE_NAME](#global-keystore-file-name) |                            Key file to be used for signing **APP_NAME**.                             | GLOBAL_KEYSTORE_FILE_NAME      |\n| [**APP_NAME**_OLD_KEY](#global-keystore-file-name)            |     Whether key used was generated with cli \u003e v4(new) \u003cbr/\u003e\u003cbr/\u003e**APP_NAME**.      \u003cbr/\u003e   \u003cbr/\u003e     | GLOBAL_OLK_KEY                 |\n| [**APP_NAME**_ARCHS_TO_BUILD](#global-archs-to-build)         |                              Arch to keep in the patched **APP_NAME**.                               | GLOBAL_ARCHS_TO_BUILD          |\n| [**APP_NAME**_CLI_ARGSF](#cli-arg-compatibility)              |                                CLI argument profile for **APP_NAME**.                                | GLOBAL_CLI_ARGSF               |\n| [**APP_NAME**_CLI_LPARGS](#cli-arg-compatibility)             |                           Override map for **APP_NAME** list-patches args.                           | GLOBAL_CLI_LPARGS              |\n| [**APP_NAME**_CLI_PARGS](#cli-arg-compatibility)              |                              Override map for **APP_NAME** patch args.                               | GLOBAL_CLI_PARGS               |\n| [**APP_NAME**_EXCLUDE_PATCH**](#custom-exclude-patching)      |                           Patches to exclude while patching  **APP_NAME**.                           | []                             |\n| [**APP_NAME**_INCLUDE_PATCH**](#custom-include-patching)      |                           Patches to include while patching  **APP_NAME**.                           | []                             |\n| [**APP_NAME**_VERSION](#app-version)                          |                              Version to use for download for patching.                               | Recommended by patch resources |\n| [**APP_NAME**_PACKAGE_NAME***](#any-patch-apps)               |                                Package name of the app to be patched                                 | None                           |\n| [**APP_NAME**_DL_SOURCE***](#any-patch-apps)                  |                           Download source of any of the supported scrapper                           | None                           |\n| [**APP_NAME**_DL***](#app-dl)                                 |                                  Direct download Link for clean apk                                  | None                           |\n\n`**` - By default all patches for a given app are included.\u003cbr\u003e\n`**` - Can be used to included universal patch.\u003cbr\u003e\n`***` - Can be used for unavailable apps in the repository (unofficial apps).\n\n## Note\n\n1. \u003ca id=\"any-patch-apps\"\u003e\u003c/a\u003e**Officially** Supported values for **APP_NAME**** are :\n\n    - [youtube](https://www.apkmirror.com/apk/google-inc/youtube/)\n    - [youtube_music](https://www.apkmirror.com/apk/google-inc/youtube-music/)\n    - [photos](https://www.apkmirror.com/apk/google-inc/photos)\n    - [twitter](https://www.apkmirror.com/apk/twitter-inc/twitter/)\n    - [reddit](https://www.apkmirror.com/apk/redditinc/reddit/)\n    - [tiktok](https://www.apkmirror.com/apk/tiktok-pte-ltd/tik-tok-including-musical-ly/)\n    - [warnwetter](https://www.apkmirror.com/apk/deutscher-wetterdienst/warnwetter/)\n    - [spotify](https://spotify.en.uptodown.com/android)\n    - [nyx-music-player](https://nyx-music-player.en.uptodown.com/android)\n    - [icon_pack_studio](https://www.apkmirror.com/apk/smart-launcher-team/icon-pack-studio/)\n    - [ticktick](https://www.apkmirror.com/apk/appest-inc/ticktick-to-do-list-with-reminder-day-planner/)\n    - [twitch](https://www.apkmirror.com/apk/twitch-interactive-inc/twitch/)\n    - [hex-editor](https://m.apkpure.com/hex-editor/com.myprog.hexedit)\n    - [windy](https://www.apkmirror.com/apk/windy-weather-world-inc/windy-wind-weather-forecast/)\n    - [my-expenses](https://my-expenses.en.uptodown.com/android)\n    - [backdrops](https://backdrops.en.uptodown.com/android)\n    - [expensemanager](https://apksos.com/app/com.ithebk.expensemanager)\n    - [tasker](https://www.apkmirror.com/apk/joaomgcd/tasker-crafty-apps-eu/)\n    - [irplus](https://irplus.en.uptodown.com/android)\n    - [vsco](https://www.apkmirror.com/apk/vsco/vsco-cam/)\n    - [meme-generator-free](https://meme-generator-free.en.uptodown.com/android)\n    - [nova_launcher](https://www.apkmirror.com/apk/teslacoil-software/nova-launcher/)\n    - [netguard](https://www.apkmirror.com/apk/marcel-bokhorst/netguard-no-root-firewall/)\n    - [instagram](https://www.apkmirror.com/apk/instagram/instagram-instagram/)\n    - [inshorts](https://www.apkmirror.com/apk/inshorts-formerly-news-in-shorts/)\n    - [messenger](https://www.apkmirror.com/apk/facebook-/messenger/)\n    - [grecorder](https://opnemer.en.uptodown.com/android)\n    - [trakt](https://www.apkmirror.com/apk/trakt/trakt/)\n    - [candyvpn](https://www.apkmirror.com/apk/liondev-io/candylink-vpn/)\n    - [sonyheadphone](https://www.apkmirror.com/apk/sony-corporation/sony-headphones-connect/)\n    - [androidtwelvewidgets](https://m.apkpure.com/android--widgets-twelve/com.dci.dev.androidtwelvewidgets)\n    - [yuka](https://yuka.en.uptodown.com/android)\n    - [relay](https://www.apkmirror.com/apk/dbrady/relay-for-reddit-/)\n    - [boost](https://www.apkmirror.com/apk/ruben-mayayo/boost-for-reddit/)\n    - [rif](https://www.apkmirror.com/apk/talklittle/reddit-is-fun/)\n    - [sync](https://www.apkmirror.com/apk/red-apps-ltd/sync-for-reddit/)\n    - [infinity](https://www.apkmirror.com/apk/docile-alligator/infinity-for-reddit/)\n    - [slide](https://www.apkmirror.com/apk/haptic-apps/slide-for-reddit/)\n    - [bacon](https://www.apkmirror.com/apk/onelouder-apps/baconreader-for-reddit/)\n    - [microg](https://github.com/inotia00/mMicroG/releases/)\n    - [pixiv](https://www.apkmirror.com/apk/pixiv-inc/pixiv/)\n    - [strava](https://www.apkmirror.com/apk/strava-inc/strava-running-and-cycling-gps/)\n    - [solidexplorer](https://www.apkmirror.com/apk/neatbytes/solid-explorer-beta/)\n    - [lightroom](https://www.apkmirror.com/apk/adobe/lightroom/)\n    - [duolingo](https://www.apkmirror.com/apk/duolingo/duolingo-duolingo/)\n    - [musically](https://www.apkmirror.com/apk/tiktok-pte-ltd/tik-tok-including-musical-ly/)\n    - [photomath](https://www.apkmonk.com/app/com.microblink.photomath/)\n    - [joey](https://www.apkmonk.com/app/o.o.joey/)\n    - [vanced](https://www.apkmirror.com/apk/team-vanced/youtube-vanced/)\n    - [spotify-lite](https://www.apkmonk.com/app/com.spotify.lite/)\n    - [digitales](https://www.apkmonk.com/app/at.gv.oe.app/)\n    - [scbeasy](https://www.apkmonk.com/app/com.scb.phone/)\n    - [reddit-news](https://m.apkpure.com/relay-for-reddit/reddit.news)\n    - [finanz-online](https://apksos.com/app/at.gv.bmf.bmf2go)\n    - [tumblr](https://www.apkmirror.com/apk/tumblr-inc/tumblr/)\n    - [fitnesspal](https://www.apkmirror.com/apk/myfitnesspal-inc/calorie-counter-myfitnesspal/)\n    - [facebook](https://www.apkmirror.com/apk/facebook-2/facebook/)\n    - [lemmy-sync](https://www.apkmirror.com/apk/sync-apps-ltd/sync-for-lemmy/)\n    - [amazon](https://www.apkmirror.com/apk/amazon-mobile-llc/amazon-shopping/)\n    - [bandcamp](https://www.apkmirror.com/apk/bandcamp-inc/bandcamp/)\n    - [magazines](https://www.apkmirror.com/apk/bandcamp-inc/bandcamp/)\n    - [winrar](https://www.apkmirror.com/apk/rarlab-published-by-win-rar-gmbh/rar/)\n    - [soundcloud](https://www.apkmirror.com/apk/soundcloud/soundcloud-soundcloud/)\n    - [stocard](https://www.apkmirror.com/apk/stocard-gmbh/stocard-rewards-cards-wallet/)\n    - [willhaben](https://www.apkmirror.com/apk/willhaben/willhaben/)\n    - [proton-mail](https://www.apkmirror.com/apk/proton-technologies-ag/protonmail-encrypted-email/)\n    - [prime-video](https://www.apkmirror.com/apk/amazon-mobile-llc/amazon-prime-video/)\n    - [cricbuzz](https://www.apkmirror.com/apk/cricbuzz-com/cricbuzz-live-cricket-scores-news/)\n    - [crunchyroll](https://www.apkmirror.com/apk/crunchyroll-llc-2/crunchyroll/)\n    - [threads](https://www.apkmirror.com/apk/instagram/threads-an-instagram-app/)\n    - [orf-on](https://www.apkmirror.com/apk/orf-osterreichischer-rundfunk/orf-tvthek-video-on-demand-android-tv/)\n    - [pandora](https://www.apkmirror.com/apk/pandora/pandora-music-podcasts/)\n    - [cieid](https://www.apkmirror.com/apk/istituto-poligrafico-e-zecca-dello-stato-s-p-a/cieid/)\n    - [infinity-for-reddit-patreon](https://www.apkmirror.com/apk/docile-alligator/infinity-for-reddit-patreon-github-version/)\n    - [infinity-for-reddit-plus](https://www.apkmirror.com/apk/docile-alligator/infinity-for-reddit-plus/)\n\n    \u003cbr\u003e`**` - You can also patch any other app which is **not** supported officially.To do so, you need to provide\n   few more inputs to the tool which are mentioned below. These config will override the sources config from the tool.\n   ```ini\n   \u003cAPP_NAME\u003e_DL_SOURCE=\u003capk-link-to-any-of-the-suppored-scrapper\u003e\n   \u003cAPP_NAME\u003e_PACKAGE_NAME=\u003cpackage-name-of-the-application\u003e\n   ```\n   You can also provide DL to the clean apk instead of providing DL_SOURCES as mentioned in this [note](#app-dl).\n   Supported Scrappers are:\n   1. APKMIRROR - Supports downloading any available version\n        1. Link Format - https://www.apkmirror.com/apk/\u003corganisation-name\u003e/app-name/\n        2. Example Link - https://www.apkmirror.com/apk/google-inc/youtube/\n   2. UPTODOWN - Supports downloading any available version\n        1. Link Format - https://\u003capp-name\u003e.en.uptodown.com/android\n        2. Example Link - https://spotify.en.uptodown.com/android\n   3. APKSOS - Supports downloading any available version\n       1. Link Format - https://apksos.com/download-app/\u003cpackage-name\u003e\n       2. Example Link - https://apksos.com/download-app/com.expensemanager\n   4. APKPURE - Supports downloading any available version\n       1. Link Format - https://apkpure.net/-/\u003cpackage-name\u003e\n       2. Example Link - https://apkpure.net/-/com.google.android.youtube\n   5. APKMonk - Supports downloading any available version\n       1. Link Format - https://www.apkmonk.com/app/\u003cpackage-name\u003e/\n       2. Example Link - https://www.apkmonk.com/app/\u003cpackage-name\u003e/\n   6. APKEEP - Support downloading using [APKEEP](https://github.com/EFForg/apkeep)\n      1. Link Format - apkeep\n      2. Example Link - apkeep\n      Note - You need to provide APKEEP_EMAIL and APKEEP_TOKEN in the **DOCKER_PY_REVANCED_SECRETS** Github Secrets.\n\n   \u003cbr\u003ePlease verify the source of original APKs yourself with links provided. I'm not responsible for any damage\n    caused.If you know any better/safe source to download clean. Open a discussion.\n\n2. By default, script build the latest version mentioned in `patches.json` file.\n3. Remember to download the **_Microg_**. Otherwise, you may not be able to open YouTube/YouTube Music.\n4. \u003ca id=\"patch-apps\"\u003e\u003c/a\u003eBy default, tool will build only `youtube,youtube_music`. To build other apps supported by patching\n   resources.Add the apps you want to build in `.env` file or in `ENVS` in `GitHub secrets` in the format\n   ```ini\n   PATCH_APPS=\u003cAPP_NAME\u003e\n   ```\n   Example:\n   ```ini\n   PATCH_APPS=youtube,twitter,reddit\n   ```\n   Tip - If for some reason you want to patch app but want to go through all this .env while running you can enter app\n   name in \u003cimg src=\"https://i.imgur.com/DwhBH9H.png\" width=\"300\" style=\"left\"\u003e\u003cbr\u003e to be patched box.\n5. \u003ca id=\"existing-downloaded-apks\"\u003e\u003c/a\u003eIf APKMirror or other apk sources are blocked in your region or script\n   somehow is unable to download from apkmirror. You can download apk manually from any source. Place them in\n   `/apks` directory and provide environment variable in `.env` file or in `ENVS` in `GitHub secrets`(Recommended)\n   in the format.\n   ```dotenv\n    EXISTING_DOWNLOADED_APKS=\u003cComma,Seperate,App,Name\u003e\n   ```\n   Example:\n   ```dotenv\n    EXISTING_DOWNLOADED_APKS=youtube,youtube_music\n   ```\n   If you add above. Script will not download the `youtube` \u0026 `youtube_music`apk from internet and expects an apk in\n   `/apks` folder with **same** name.\n6. \u003ca id=\"personal-access-token\"\u003e\u003c/a\u003eIf you run script again \u0026 again. You might hit GitHub API limit. In that case\n   you can provide your Personal GitHub Access Token in `.env` file or in `ENVS` in `GitHub secrets` (Recommended)\n   in the format -\n   ```dotenv\n    PERSONAL_ACCESS_TOKEN=\u003cPAT\u003e\n   ```\n7. \u003ca id=\"global-resources\"\u003e\u003c/a\u003eYou can provide Direct download to the resource to used for patching apps `.env` file\n   or in `ENVS` in `GitHub secrets` (Recommended) in the format -\n   ```dotenv\n    GLOBAL_CLI_DL=https://github.com/revanced/revanced-cli\n    GLOBAL_PATCHES_DL=https://github.com/revanced/revanced-patches\n   ```\n   Resources downloaded from envs and will be used for patching for any **APP_NAME**.\n   Unless provided different resource for the individual app.\u003cbr\u003e\u003cbr\u003e\n   Tool also support resource config at app level. You can patch A app with X resources while patching B with Y\n   resources.\n   This can be done by providing Direct download link for resources for app.\u003cbr\u003e\n   Example:\n   ```dotenv\n    YOUTUBE_CLI_DL=https://github.com/inotia00/revanced-cli\n    YOUTUBE_PATCHES_DL=https://github.com/inotia00/revanced-patches\n   ```\n   With the config tool will try to patch YouTube with resources from inotia00 while other global resource will used\n   for patching other apps.\u003cbr\u003e\n\n      **Multi-Patching Support**: You can now use multiple patch bundles from different creators for the same app:\n   ```dotenv\n    # Comma-separated URLs\n    YOUTUBE_PATCHES_DL=https://github.com/ReVanced/revanced-patches,https://github.com/indrastorm/Dropped-patches\n   ```\n   The tool will download all specified patch bundles and apply them together using the ReVanced CLI's multiple `-p` argument support.\u003cbr\u003e\n   If you have want to provide resource locally in the apks folder. You can specify that by mentioning filename\n   prefixed with `local://`.\u003cbr\u003e\n   _Note_ - The link provided must be DLs. Unless they are from GitHub.\u003cbr\u003e\n   _Note_ - If your patches resource are available on GitHub and you want to select latest resource without excluding\n    pre-release you can add `latest-prerelease` to the URL.\n    Example:\n   ```dotenv\n    YOUTUBE_PATCHES_DL=https://github.com/inotia00/revanced-patches/releases/latest-prerelease\n   ```\n   For above example tool while selecting latest patches will consider pre-releases/beta too.\n    ```dotenv\n    YOUTUBE_PATCHES_DL=https://github.com/inotia00/revanced-patches/releases/latest\n   ```\n   For above example tool while selecting latest patches will exclude any pre-release/beta ie. will consider only\n    stable releases..\u003cbr\u003e\n   _Note_ - Some of the patch source like inotia00 still provides **-** separated patches while revanced shifted to\n   Space formatted patches. Use `SPACE_FORMATTED_PATCHES` to define the type of patches.\n\n7a. \u003ca id=\"cli-arg-compatibility\"\u003e\u003c/a\u003eCLI argument compatibility profiles and overrides:\n   This builder now supports multiple CLI syntax families and key-value override maps.\n   ```dotenv\n    # Default profile (recommended today)\n    GLOBAL_CLI_ARGSF=revanced-cli\n   ```\n   Built-in profile values:\n   - `revanced-cli` (default, v5-style list-patches positional patch files)\n   - `revanced-cli-v6` (v6-style list-patches requires `-p/--patches`)\n   - `morphe-cli` (morphe-style list-patches requires `--patches`)\n\n   Override maps use unordered `KEY=value` pairs in a single string:\n   ```dotenv\n    GLOBAL_CLI_LPARGS=\"CMD=list-patches INDEX=-i PACKAGES=-p UNIVERSAL=-u VERSIONS=-v OPTIONS=-o PATCHES=__POSITIONAL__ PATCHES_POST=\"\n    GLOBAL_CLI_PARGS=\"CMD=patch PATCHES=-p PATCHES_POST= ENABLED=-e DISABLED=-d OPTIONS=-O PURGE=--purge KEYSTORE=--keystore KEYSTORE_ENTRY_ALIAS=--keystore-entry-alias=alias KEYSTORE_ENTRY_PASSWORD=--keystore-entry-password=ReVanced KEYSTORE_PASSWORD=--keystore-password=ReVanced EXCLUSIVE=--exclusive APK=__POSITIONAL__ OUTPUT=-o FORCE=--force RIP_LIB=--rip-lib\"\n   ```\n   `PATCHES_POST` is an optional companion argument appended after every patch bundle (used by ReVanced v6 with `-b`).\n   App-level overrides are also supported and take precedence:\n   ```dotenv\n    YOUTUBE_CLI_ARGSF=morphe-cli\n    YOUTUBE_CLI_LPARGS=\"PATCHES=--patches\"\n    YOUTUBE_CLI_PARGS=\"PATCHES=-p STRIPLIBS=--striplibs\"\n   ```\n\n   Example migration to ReVanced v6 syntax:\n   ```dotenv\n    GLOBAL_CLI_ARGSF=revanced-cli-v6\n   ```\n\n8. \u003ca id=\"global-keystore-file-name\"\u003e\u003c/a\u003eIf you don't want to use default keystore. You can provide your own by\n   placing it inside `apks` folder. And adding the name of `keystore-file` in `.env` file or in `ENVS` in `GitHub\n   secrets` (Recommended) in the format\n   ```dotenv\n    GLOBAL_KEYSTORE_FILE_NAME=revanced.keystore\n   ```\n   Tool also support providing secret key at app level. You can sign A app with X key while signing B with Y\n   key.\u003cbr\u003e\n    Example:\n   ```dotenv\n    YOUTUBE_KEYSTORE_FILE_NAME=youtube.keystore\n   ```\n   Note - If you are using your own keystore.And it was generated with cli \u003e v4 Add\n   Example:\n   ```dotenv\n    GLOBAL_OLD_KEY=False\n   ```\n   if you are using different key for different apps. You need to specify at app level.\n    ```dotenv\n    YOUTUBE_OLD_KEY=False\n   ```\n9. \u003ca id=\"global-options-file\"\u003e\u003c/a\u003eIf you don't want to use default options.json file. You can provide your own by\n   placing it inside `apks` folder. And adding the name of `options-file` in `.env` file or in `ENVS` in `GitHub\n   secrets` (Recommended) in the format\n   ```dotenv\n    GLOBAL_OPTIONS_FILE=my_options.json\n   ```\n   Tool also supports providing options file at app level. When an app-specific options file is provided,\n   it is **merged** with the global options file. App-specific options override global options for the same\n   patch name, while all other global options are preserved.\u003cbr\u003e\n\n   Example:\n   ```dotenv\n    YOUTUBE_OPTIONS_FILE=my_cool_yt_options.json\n   ```\n\n   **Options Merging Example:**\u003cbr\u003e\n   If your global `options.json` contains Theme and SponsorBlock options, and your app-specific\n   `my_cool_yt_options.json` contains only a custom package name option, the final merged options will include\n   all three. This is useful when using different patch sources (like Morphe, anddea, ReVanced) that require\n   different patch option names for the same functionality.\n\n   ```\n   Global options.json          App options.json           Final Merged Options\n   ┌─────────────────┐         ┌─────────────────┐        ┌─────────────────┐\n   │ Theme           │         │ Change package  │   =\u003e   │ Theme           │\n   │ SponsorBlock    │    +    │ name            │        │ SponsorBlock    │\n   │ Custom branding │         └─────────────────┘        │ Change package  │\n   └─────────────────┘                                    │ name            │\n                                                          └─────────────────┘\n   ```\n10. \u003ca id=\"global-archs-to-build\"\u003e\u003c/a\u003eYou can build only for a particular arch in order to get smaller apk files.This\n    can be done with by adding comma separated `ARCHS_TO_BUILD` in `ENVS` in `GitHub secrets` (Recommended) in the\n    format.\n    ```dotenv\n     GLOABAL_ARCHS_TO_BUILD=arm64-v8a,armeabi-v7a\n    ```\n    Tool also support configuring at app level.\u003cbr\u003e\n\n    Example:\n    ```dotenv\n     YOUTUBE_ARCHS_TO_BUILD=arm64-v8a,armeabi-v7a\n    ```\n    _Note_ -\n    1. Possible values are: `armeabi-v7a`,`x86`,`x86_64`,`arm64-v8a`\n    2. Make sure the patching resource(CLI) support this feature.\n11. \u003ca id=\"extra-files\"\u003e\u003c/a\u003eIf you want to include any extra file to the Github upload. Set comma arguments\n     in `.env` file or in `ENVS` in `GitHub secrets` (Recommended) in the format\n    ```ini\n    EXTRA_FILES=\u003curl\u003e@\u003cappName\u003e.apk\n    ```\n    Example:\n    ```dotenv\n     EXTRA_FILES=https://github.com/inotia00/mMicroG/releases/latest@mmicrog.apk\n    ```\n12. \u003ca id=\"custom-exclude-patching\"\u003e\u003c/a\u003eIf you want to exclude any patch. Set comma separated patch in `.env` file\n    or in `ENVS` in `GitHub secrets` (Recommended) in the format\n    ```ini\n    \u003cAPP_NAME\u003e_EXCLUDE_PATCH=\u003cPATCH_TO_EXCLUDE-1,PATCH_TO_EXCLUDE-2\u003e\n    ```\n    Example:\n    ```dotenv\n     YOUTUBE_EXCLUDE_PATCH=custom-branding,hide-get-premium\n     YOUTUBE_MUSIC_EXCLUDE_PATCH=yt-music-is-shit\n    ```\n    Note -\n    1. **All** the patches for an app are **included** by default.\u003cbr\u003e\n    2. Revanced patches are provided as space separated, make sure you type those **-** separated here.\n    It means a patch named _**Hey There**_ must be entered as **_hey-there_** in the above example.\n13. \u003ca id=\"custom-include-patching\"\u003e\u003c/a\u003eIf you want to include any universal patch. Set comma separated patch in `.env`\n    file or in `ENVS` in `GitHub secrets` (Recommended) in the format\n    ```ini\n    \u003cAPP_NAME\u003e_INCLUDE_PATCH=\u003cPATCH_TO_EXCLUDE-1,PATCH_TO_EXCLUDE-2\u003e\n    ```\n    Example:\n    ```dotenv\n     YOUTUBE_INCLUDE_PATCH=remove-screenshot-restriction\n    ```\n    Note -\n    1. Revanced patches are provided as space separated, make sure you type those **-** separated here.\n       It means a patch named _**Hey There**_ must be entered as **_hey-there_** in the above example.\n14. \u003ca id=\"app-version\"\u003e\u003c/a\u003eIf you want to build a specific version or latest version. Add `version` in `.env` file\n    or in `ENVS` in `GitHub secrets` (Recommended) in the format\n    ```ini\n    \u003cAPP_NAME\u003e_VERSION=\u003cVERSION\u003e\n    ```\n    Example:\n    ```ini\n    YOUTUBE_VERSION=17.31.36\n    YOUTUBE_MUSIC_VERSION=X.X.X\n    TWITTER_VERSION=latest\n    ```\n15. \u003ca id=\"app-dl\"\u003e\u003c/a\u003eIf you have your personal source for apk to be downloaded. You can also provide that and tool\n    will not scarp links from apk sources.Add `dl` in `.env` file or in `ENVS` in `GitHub secrets` (Recommended) in\n    the format\n    ```ini\n    \u003cAPP_NAME\u003e_DL=\u003cdirect-app-download\u003e\n    ```\n    Example:\n    ```ini\n    YOUTUBE_DL=https://d.apkpure.com/b/APK/com.google.android.youtube?version=latest\n    ```\n16. \u003ca id=\"telegram-support\"\u003e\u003c/a\u003eFor Telegram Upload.\n     1. Set up a telegram channel, send a message to it and forward the message to\n        this telegram [bot](https://t.me/username_to_id_bot)\n     2. Copy `id` and save it to `TELEGRAM_CHAT_ID`\u003cbr\u003e\n        \u003cimg src=\"https://i.imgur.com/22UiaWs.png\" width=\"300\" style=\"left\"\u003e\u003cbr\u003e\n     3. `TELEGRAM_BOT_TOKEN` - Telegram provides BOT_TOKEN. It works as sender. Open [bot](https://t.me/BotFather) and\n        create one copy api key\u003cbr\u003e\n        \u003cimg src=\"https://i.imgur.com/A6JCyK2.png\" width=\"300\" style=\"left\"\u003e\u003cbr\u003e\n     4. `TELEGRAM_API_ID` - Telegram API_ID is provided by telegram [here](https://my.telegram.org/apps)\u003cbr\u003e\n        \u003cimg src=\"https://i.imgur.com/eha3nnb.png\" width=\"300\" style=\"left\"\u003e\u003cbr\u003e\n     5. `TELEGRAM_API_HASH` - Telegram API_HASH is provided by telegram [here](https://my.telegram.org/apps)\u003cbr\u003e\n        \u003cimg src=\"https://i.imgur.com/7n5k1mp.png\" width=\"300\" style=\"left\"\u003e\u003cbr\u003e\n     6. After Everything done successfully a part of the actions secrets of the repository may look like\u003cbr\u003e\n        \u003cimg src=\"https://i.imgur.com/Cjifz1M.png\" width=\"400\"\u003e\n17. Configuration defined in `ENVS` in `GitHub secrets` will override the configuration in `.env` file. You can use this\n    fact to define your normal configurations in `.env` file and sometimes if you want to build something different just\n    once. Add it in `GitHub secrets`.\u003cbr\u003e\n18. Sample Envs\u003cbr\u003e\n    \u003cimg src=\"https://i.imgur.com/FxOtiGs.png\" width=\"600\" style=\"left\"\u003e\n19. \u003ca id=\"apprise\"\u003e\u003c/a\u003e[Apprise](https://github.com/caronc/apprise)\u003cbr\u003e\n    We also have apprise support to upload built apk anywhere.To use apprise. Add belows envs in `.env` file\n    or in `ENVS` in `GitHub secrets` (Recommended) in the format\n    ```ini\n    APPRISE_URL=tgram://bot-token/chat-id\n    APPRISE_NOTIFICATION_BODY=What a great Body\n    APPRISE_NOTIFICATION_TITLE=What a great title\n    ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikhilbadyal%2Fdocker-py-revanced","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnikhilbadyal%2Fdocker-py-revanced","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikhilbadyal%2Fdocker-py-revanced/lists"}