From 2af0d94dbcc1531969e6092c231c937163fa28f6 Mon Sep 17 00:00:00 2001 From: siritami <103488094+siritami@users.noreply.github.com> Date: Fri, 28 Apr 2023 02:25:37 +0700 Subject: [PATCH] +app --- .github/workflows/patch.yml | 70 ++++++++--- README.md | 28 +++-- src/config.sh | 118 ------------------ src/messenger/exclude-patches.txt | 0 src/messenger/patch.sh | 12 ++ src/patch.sh | 50 -------- src/tiktok/exclude-patches.txt | 0 src/tiktok/patch.sh | 12 ++ src/twitch/exclude-patches.txt | 0 src/twitch/patch.sh | 13 ++ src/yt/patch.sh | 112 +++++++++++++++++ patches/ytrv-patches.txt => src/yt/patches.rv | 0 .../ytrve-patches.txt => src/yt/patches.rve | 2 +- src/ytm/patch.sh | 103 +++++++++++++++ src/ytm/patches.rv | 12 ++ src/ytm/patches.rve | 12 ++ 16 files changed, 354 insertions(+), 190 deletions(-) delete mode 100644 src/config.sh create mode 100644 src/messenger/exclude-patches.txt create mode 100644 src/messenger/patch.sh delete mode 100644 src/patch.sh create mode 100644 src/tiktok/exclude-patches.txt create mode 100644 src/tiktok/patch.sh create mode 100644 src/twitch/exclude-patches.txt create mode 100644 src/twitch/patch.sh create mode 100644 src/yt/patch.sh rename patches/ytrv-patches.txt => src/yt/patches.rv (100%) rename patches/ytrve-patches.txt => src/yt/patches.rve (97%) create mode 100644 src/ytm/patch.sh create mode 100644 src/ytm/patches.rv create mode 100644 src/ytm/patches.rve diff --git a/.github/workflows/patch.yml b/.github/workflows/patch.yml index 09ecdce..36fa365 100644 --- a/.github/workflows/patch.yml +++ b/.github/workflows/patch.yml @@ -16,10 +16,22 @@ jobs: with: distribution: 'zulu' java-version: '17' - - - name: Patch apk - run: bash ./src/patch.sh - + + - name: Patch Youtube Revanced & Revanced Extended non-root + run: bash src/yt/patch.sh + + - name: Patch Youtube Music Revanced & Revanced Extended non-root + run: bash src/ytm/patch.sh + + - name: Patch Tiktok Revanced + run: bash src/tiktok/patch.sh + + - name: Patch Twitch Revanced + run: bash src/twitch/patch.sh + + - name: Patch Facebook Messenger Revanced + run: bash src/messenger/patch.sh + - name: Generate Changelog run: | curl -s https://api.github.com/repos/revanced/revanced-patches/releases/latest \ @@ -56,14 +68,14 @@ jobs: echo "INFO-YT-RVE=Youtube Revanced Extended v${YTRVEVERSION}" >> $GITHUB_ENV echo "INFO-YTM-RV=Youtube Music Revanced v${YTMRVVERSION}" >> $GITHUB_ENV echo "INFO-YTM-RVE=Youtube Music Revanced Extended v${YTMRVEVERSION}" >> $GITHUB_ENV - + - uses: vishnudxb/cancel-workflow@v1.2 if: failure() with: repo: octocat/hello-world workflow_id: ${{ github.run_id }} access_token: ${{ github.token }} - + - name: Delete Release uses: dev-drprasad/delete-older-releases@v0.2.1 with: @@ -72,27 +84,27 @@ jobs: delete_tags: false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - + - name: Release Youtube Music Revanced uses: softprops/action-gh-release@v1 with: - files: ytms-revanced.apk + files: ytm-revanced.apk name: ${{ env.INFO-YTM-RV }} tag_name: YTM-Revanced body_path: ${{ github.workspace }}-CHANGELOG-rv.txt env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - + - name: Release Youtube Music Revanced Extended uses: softprops/action-gh-release@v1 with: - files: ytms-revanced-extended.apk + files: ytm-revanced-extended.apk name: ${{ env.INFO-YTM-RVE }} tag_name: YTM-Revanced-Extended body_path: ${{ github.workspace }}-CHANGELOG-rve.txt env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - + - name: Release Youtube Revanced uses: softprops/action-gh-release@v1 with: @@ -102,7 +114,7 @@ jobs: body_path: ${{ github.workspace }}-CHANGELOG-rv.txt env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - + - name: Release Youtube Revanced Extended uses: softprops/action-gh-release@v1 with: @@ -111,8 +123,38 @@ jobs: tag_name: YT-Revanced-Extended body_path: ${{ github.workspace }}-CHANGELOG-rve.txt env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Release Tiktok Revanced + uses: softprops/action-gh-release@v1 + with: + files: Tiktok.apk + name: "Tiktok" + tag_name: Tiktok-Revanced + body_path: ${{ github.workspace }}-CHANGELOG-rv.txt + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Release Twitch Revanced + uses: softprops/action-gh-release@v1 + with: + files: Twitch.apk + name: "Twitch" + tag_name: Twitch-Revanced + body_path: ${{ github.workspace }}-CHANGELOG-rv.txt + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Release Facebook Messenger Revanced + uses: softprops/action-gh-release@v1 + with: + files: Messenger.apk + name: "Facebook Messenger" + tag_name: Facebook-Messenger-Revanced + body_path: ${{ github.workspace }}-CHANGELOG-rv.txt + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Delete workflow runs uses: Mattraks/delete-workflow-runs@v2 with: diff --git a/README.md b/README.md index 0453e08..2e0cb8d 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,35 @@

+# MicroG from inotia00 source: + +[![Release](https://img.shields.io/github/v/release/inotia00/VancedMicroG.svg)](https://github.com/inotia00/VancedMicroG/releases/latest/download/microg.apk) + +# Youtube Music: + +[![Release](https://img.shields.io/github/downloads/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/YTM-Revanced-Extended/total?label=Revanced%20Extended&style=for-the-badge)](https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/YTM-Revanced-Extended/ytm-revanced-extended.apk) + +[![Release](https://img.shields.io/github/downloads/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/YTM-Revanced-Extended/total?label=Revanced&style=for-the-badge)](https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/YTM-Revanced/ytm-revanced.apk) + # Youtube: [![Release](https://img.shields.io/github/downloads/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/YT-Revanced-Extended/total?label=Revanced%20Extended&style=for-the-badge)](https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/YT-Revanced-Extended/yt-revanced-extended.apk) [![Release](https://img.shields.io/github/downloads/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/YT-Revanced/total?label=Revanced&style=for-the-badge)](https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/YT-Revanced/yt-revanced.apk) -# Youtube Music: +# Facebook Messenger: -[![Release](https://img.shields.io/github/downloads/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/YTM-Revanced-Extended/total?label=Revanced%20Extended&style=for-the-badge)](https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/YTM-Revanced-Extended/ytms-revanced-extended.apk) +[![Release](https://img.shields.io/github/downloads/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/Facebook-Messenger-Revanced/total?label=Revanced&style=for-the-badge)](https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/Facebook-Messenger-Revanced/Messenger.apk) -[![Release](https://img.shields.io/github/downloads/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/YTM-Revanced-Extended/total?label=Revanced&style=for-the-badge)](https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/YTM-Revanced/ytms-revanced.apk) +# TikTok: +[![Release](https://img.shields.io/github/downloads/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/Tiktok-Revanced/total?label=Revanced&style=for-the-badge)](https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/Tiktok-Revanced/Tiktok.apk) -# MicroG from inotia00 source: +# Twitch: -[![Release](https://img.shields.io/github/v/release/inotia00/vancedmicrog?label=MicroG&style=for-the-badge)](https://github.com/inotia00/VancedMicroG/releases/latest/download/microg.apk) +[![Release](https://img.shields.io/github/downloads/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/Twitch-Revanced/total?label=Revanced&style=for-the-badge)](https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/Twitch-Revanced/Twitch.apk) -# About -This repository forked from [@luxysiv](https://github.com/luxysiv/yt-revanced-nonroot) +# License: + +[@luxysiv](https://github.com/luxysiv/yt-revanced-nonroot) - [GPL-3.0](https://github.com/luxysiv/revanced-nonroot/blob/main/LICENSE) + +[apkeep](https://github.com/EFForg/apkeep) - [MIT](https://github.com/EFForg/apkeep/blob/master/LICENSE) \ No newline at end of file diff --git a/src/config.sh b/src/config.sh deleted file mode 100644 index a7ca858..0000000 --- a/src/config.sh +++ /dev/null @@ -1,118 +0,0 @@ -#!/bin/bash -# Function prepare patches keywords -get_patch() { - local excluded_start=$(grep -n -m1 'EXCLUDE PATCHES' "$patch_file" | cut -d':' -f1) - local included_start=$(grep -n -m1 'INCLUDE PATCHES' "$patch_file" | cut -d':' -f1) - local excluded_patches=$(tail -n +$excluded_start $patch_file | head -n "$(( included_start - excluded_start ))" | grep '^[^#[:blank:]]') - local included_patches=$(tail -n +$included_start $patch_file | grep '^[^#[:blank:]]') - patches=() - if [[ -n "$excluded_patches" ]]; then - while read -r patch; do - patches+=("-e $patch") - done <<< "$excluded_patches" - fi - if [[ -n "$included_patches" ]]; then - while read -r patch; do - patches+=("-i $patch") - done <<< "$included_patches" - fi -} -# Function download latest github releases -download_latest_release() { - echo "๐Ÿ”ฝ Downloading $name resources" - for repo in revanced-patches revanced-cli revanced-integrations; do - local url="https://api.github.com/repos/$user/$repo/releases/latest" - echo "๐Ÿ” Searching for download link at $url" - curl -s "$url" | jq -r '.assets[] | "\(.name) \(.browser_download_url)"' | while read name download_url; do - echo "๐Ÿ“ฅ Downloading $name from $download_url" - curl -O -s -L "$download_url" - echo "โœ… Download $name complete!" - done - done -} -# Function download YouTube and YouTube Music apk from APKmirror -req() { - curl -sSL -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:111.0) Gecko/20100101 Firefox/111.0" "$1" -o "$2" -} -dl_yt() { - rm -rf $2 - echo "๐Ÿ”ฝ Downloading YouTube version $1" - url="https://www.apkmirror.com/apk/google-inc/youtube/youtube-${1//./-}-release/" - echo "๐Ÿ” Searching for download link at $url" - url="$url$(req "$url" - | grep Variant -A50 | grep ">APK<" -A2 | grep android-apk-download | sed "s#.*-release/##g;s#/\#.*##g")" - url="https://www.apkmirror.com$(req "$url" - | tr '\n' ' ' | sed -n 's;.*href="\(.*key=[^"]*\)">.*;\1;p')" - url="https://www.apkmirror.com$(req "$url" - | tr '\n' ' ' | sed -n 's;.*href="\(.*key=[^"]*\)">.*;\1;p')" - echo "๐Ÿ“ฅ Downloading from $url" - if req "$url" "$2" ; then - echo "โœ… Download complete!" - else - echo "โŒ Download failed." - fi -} -dl_ytms() { - rm -rf $2 - echo "๐Ÿ”ฝ Downloading YouTube Music version $1" - url="https://www.apkmirror.com/apk/google-inc/youtube/youtube-music-${1//./-}-release/" - echo "๐Ÿ” Searching for download link at $url" - url="$url$(req "$url" - | grep arm64 -A30 | grep youtube-music | head -1 | sed "s#.*-release/##g;s#/\".*##g")" - url="https://www.apkmirror.com$(req "$url" - | tr '\n' ' ' | sed -n 's;.*href="\(.*key=[^"]*\)">.*;\1;p')" - url="https://www.apkmirror.com$(req "$url" - | tr '\n' ' ' | sed -n 's;.*href="\(.*key=[^"]*\)">.*;\1;p')" - echo "๐Ÿ“ฅ Downloading from $url" - if req "$url" "$2" ; then - echo "โœ… Download complete!" - else - echo "โŒ Download failed." - fi -} -# Function fletch latest supported version can patch -get_support_ytversion() { - if [[ "$name" = "$revanced_name" ]] ; then - ytversion=$(jq -r '.[] | select(.name == "video-ads") | .compatiblePackages[] | select(.name == "com.google.android.youtube") | .versions[-1]' patches.json) - echo "โœ…๏ธ Found YouTube version: $ytversion" - else - ytversion=$(jq -r '.[] | select(.name == "hide-general-ads") | .compatiblePackages[] | select(.name == "com.google.android.youtube") | .versions[-1]' patches.json) - echo "โœ…๏ธ Found YouTube version: $ytversion" - fi -} -get_support_ytmsversion() { - ytmsversion=$(jq -r '.[] | select(.name == "hide-get-premium") | .compatiblePackages[] | select(.name == "com.google.android.apps.youtube.music") | .versions[-1]' patches.json) - echo "โœ…๏ธ Found YouTube Music version: $ytmsversion" -} -get_latest_ytmsversion() { - url="https://www.apkmirror.com/apk/google-inc/youtube-music/" - ytmsversion=$(req "$url" - | grep "All version" -A200 | grep app_release | sed 's:.*/youtube-music-::g;s:-release/.*::g;s:-:.:g' | sort -r | head -1) - echo "โœ…๏ธ Found YouTube Music version: $ytmsversion" -} -# Function Patch APK -patch_yt() { - if [ -f "youtube-v$ytversion.apk" ]; then - echo "โš™๏ธ Patching YouTube" - java -jar revanced-cli*.jar -m revanced-integrations*.apk -b revanced-patches*.jar -a youtube-v$ytversion.apk ${patches[@]} --keystore=ks.keystore -o yt-$name.apk - echo "โœ… Patch Complete!" - else - echo "โŒ YouTube APK not found, skipping patching" - fi -} -patch_msrv() { - if [ -f "youtube-music-v$ytmsversion.apk" ]; then - echo "โš™๏ธ Patching YouTube Music" - java -jar revanced-cli*.jar -m revanced-integrations*.apk -b revanced-patches*.jar -a youtube-music-v$ytmsversion.apk --keystore=ks.keystore -o ytms-$name.apk - echo "โœ… Patch Complete!" - else - echo "โŒ YouTube Music APK not found, skipping patching" - fi -} -patch_msrve() { - if [ -f "youtube-music-v$ytmsversion.apk" ]; then - echo "โš™๏ธ Patching YouTube Music" - java -jar revanced-cli*.jar -m revanced-integrations*.apk -b revanced-patches*.jar -a youtube-music-v$ytmsversion.apk -e custom-branding-music-afn-red --keystore=ks.keystore -o ytms-$name.apk - echo "โœ… Patch Complete!" - else - echo "โŒ YouTube Music APK not found, skipping patching" - fi -} -# Function clean caches to new build -clean_cache() { - echo "๐Ÿงน Clean cache" - rm -f revanced-cli*.jar revanced-integrations*.apk revanced-patches*.jar patches.json options.toml youtube*.apk -} diff --git a/src/messenger/exclude-patches.txt b/src/messenger/exclude-patches.txt new file mode 100644 index 0000000..e69de29 diff --git a/src/messenger/patch.sh b/src/messenger/patch.sh new file mode 100644 index 0000000..83afddc --- /dev/null +++ b/src/messenger/patch.sh @@ -0,0 +1,12 @@ +#!/bin/bash +DIR_TMP="$(mktemp -d)" +for repos in revanced-patches revanced-cli revanced-integrations; do + curl -s "https://api.github.com/repos/revanced/$repos/releases/latest" | jq -r '.assets[].browser_download_url' | xargs -n 1 curl -sL -O +done +EXCLUDE_PATCHES=() +for word in $(cat src/messenger/exclude-patches.txt) ; do + EXCLUDE_PATCHES+=("-e $word") +done +curl --retry 10 --retry-max-time 60 -H "Cache-Control: no-cache" -fsSL github.com/EFForg/apkeep/releases/latest/download/apkeep-x86_64-unknown-linux-gnu -o ${DIR_TMP}/apkkeep +chmod +x ${DIR_TMP}/apkkeep && ${DIR_TMP}/apkkeep -a com.facebook.orca . +java -jar revanced-cli*.jar -m revanced-integrations*.apk -b revanced-patches*.jar ${EXCLUDE_PATCHES[@]} -a com.facebook.orca.apk --keystore=ks.keystore -o Messenger.apk \ No newline at end of file diff --git a/src/patch.sh b/src/patch.sh deleted file mode 100644 index 00b923b..0000000 --- a/src/patch.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash -set -e -source ./src/config.sh -# Set variables for Revanced -readonly revanced_name="revanced" -readonly revanced_user="revanced" -readonly revanced_patch="./patches/ytrv-patches.txt" -readonly revanced_ytversion="" # Input version supported if you need patch specific YT version.Example: "18.03.36" -# Set variables for Revanced Extended -readonly revanced_extended_name="revanced-extended" -readonly revanced_extended_user="inotia00" -readonly revanced_extended_patch="./patches/ytrve-patches.txt" -readonly revanced_extended_ytversion="" # Input version supported if you need patch specific YT version.Example: "18.07.35" -# Loop over Revanced & Revanced Extended -for name in $revanced_name $revanced_extended_name ; do - # Select variables based on name - if [[ "$name" = "$revanced_name" ]]; then - user="$revanced_user" - patch_file="$revanced_patch" - key="$revanced_patch_key" - ytversion="$revanced_ytversion" - else - user="$revanced_extended_user" - patch_file="$revanced_extended_patch" - key="$revanced_extended_patch_key" - ytversion="$revanced_extended_ytversion" - fi -get_patch -download_latest_release - # Patch YouTube - if [[ $ytversion ]] ; then - dl_yt $ytversion youtube-v$ytversion.apk - patch_yt - else - get_support_ytversion - dl_yt $ytversion youtube-v$ytversion.apk - patch_yt - fi - #Patch YouTube Music - if [[ "$name" = "$revanced_name" ]] ; then - get_support_ytmsversion - dl_ytms $ytmsversion youtube-music-v$ytmsversion.apk - patch_msrv - else - get_latest_ytmsversion - dl_ytms $ytmsversion youtube-music-v$ytmsversion.apk - patch_msrve - fi -clean_cache -done diff --git a/src/tiktok/exclude-patches.txt b/src/tiktok/exclude-patches.txt new file mode 100644 index 0000000..e69de29 diff --git a/src/tiktok/patch.sh b/src/tiktok/patch.sh new file mode 100644 index 0000000..e5cc8c4 --- /dev/null +++ b/src/tiktok/patch.sh @@ -0,0 +1,12 @@ +#!/bin/bash +DIR_TMP="$(mktemp -d)" +for repos in revanced-patches revanced-cli revanced-integrations; do + curl -s "https://api.github.com/repos/revanced/$repos/releases/latest" | jq -r '.assets[].browser_download_url' | xargs -n 1 curl -sL -O +done +EXCLUDE_PATCHES=() +for word in $(cat src/tiktok/exclude-patches.txt) ; do + EXCLUDE_PATCHES+=("-e $word") +done +curl --retry 10 --retry-max-time 60 -H "Cache-Control: no-cache" -fsSL github.com/EFForg/apkeep/releases/latest/download/apkeep-x86_64-unknown-linux-gnu -o ${DIR_TMP}/apkkeep +chmod +x ${DIR_TMP}/apkkeep && ${DIR_TMP}/apkkeep -a com.ss.android.ugc.trill . +java -jar revanced-cli*.jar -m revanced-integrations*.apk -b revanced-patches*.jar ${EXCLUDE_PATCHES[@]} -a com.ss.android.ugc.trill.apk --keystore=ks.keystore -o Tiktok.apk \ No newline at end of file diff --git a/src/twitch/exclude-patches.txt b/src/twitch/exclude-patches.txt new file mode 100644 index 0000000..e69de29 diff --git a/src/twitch/patch.sh b/src/twitch/patch.sh new file mode 100644 index 0000000..4d16b05 --- /dev/null +++ b/src/twitch/patch.sh @@ -0,0 +1,13 @@ +#!/bin/bash +DIR_TMP="$(mktemp -d)" +for repos in revanced-patches revanced-cli revanced-integrations; do + curl -s "https://api.github.com/repos/revanced/$repos/releases/latest" | jq -r '.assets[].browser_download_url' | xargs -n 1 curl -sL -O +done +EXCLUDE_PATCHES=() +for word in $(cat src/twitch/exclude-patches.txt) ; do + EXCLUDE_PATCHES+=("-e $word") +done +version=$(jq -r '.[] | select(.name == "block-video-ads") | .compatiblePackages[] | select(.name == "tv.twitch.android.app") | .versions[-1]' patches.json) +curl --retry 10 --retry-max-time 60 -H "Cache-Control: no-cache" -fsSL github.com/EFForg/apkeep/releases/latest/download/apkeep-x86_64-unknown-linux-gnu -o ${DIR_TMP}/apkkeep +chmod +x ${DIR_TMP}/apkkeep && ${DIR_TMP}/apkkeep -a tv.twitch.android.app@$version . +java -jar revanced-cli*.jar -m revanced-integrations*.apk -b revanced-patches*.jar ${EXCLUDE_PATCHES[@]} -a tv.twitch.android.app*.apk --keystore=ks.keystore -o Twitch.apk \ No newline at end of file diff --git a/src/yt/patch.sh b/src/yt/patch.sh new file mode 100644 index 0000000..a4839c4 --- /dev/null +++ b/src/yt/patch.sh @@ -0,0 +1,112 @@ +#!/bin/bash +set -e +# Set variables for Revanced +readonly revanced_name="revanced" +readonly revanced_user="revanced" +readonly revanced_patch="src/yt/patches.rv" +readonly revanced_ytversion="" # Input version supported if you need patch specific YT version.Example: "18.03.36" +# Set variables for Revanced Extended +readonly revanced_extended_name="revanced-extended" +readonly revanced_extended_user="inotia00" +readonly revanced_extended_patch="src/yt/patches.rve" +readonly revanced_extended_ytversion="" # Input version supported if you need patch specific YT version.Example: "18.07.35" +# Function prepare patches keywords +get_patch() { + local excluded_start=$(grep -n -m1 'EXCLUDE PATCHES' "$patch_file" | cut -d':' -f1) + local included_start=$(grep -n -m1 'INCLUDE PATCHES' "$patch_file" | cut -d':' -f1) + local excluded_patches=$(tail -n +$excluded_start $patch_file | head -n "$(( included_start - excluded_start ))" | grep '^[^#[:blank:]]') + local included_patches=$(tail -n +$included_start $patch_file | grep '^[^#[:blank:]]') + patches=() + if [[ -n "$excluded_patches" ]]; then + while read -r patch; do + patches+=("-e $patch") + done <<< "$excluded_patches" + fi + if [[ -n "$included_patches" ]]; then + while read -r patch; do + patches+=("-i $patch") + done <<< "$included_patches" + fi +} +# Function download latest github releases +download_latest_release() { + echo "โฌ Downloading $name resources..." + for repos in revanced-patches revanced-cli revanced-integrations; do + local url="https://api.github.com/repos/$user/$repos/releases/latest" + curl -s "$url" | jq -r '.assets[].browser_download_url' | xargs -n 1 curl -O -s -L + done +} +# Function download YouTube apk from APKmirror +req() { + curl -sSL -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:111.0) Gecko/20100101 Firefox/111.0" "$1" -o "$2" +} +dl_yt() { + rm -rf $2 + echo "๐Ÿ”ฝ Downloading YouTube version $1" + url="https://www.apkmirror.com/apk/google-inc/youtube/youtube-${1//./-}-release/" + echo "๐Ÿ” Searching for download link at $url" + url="$url$(req "$url" - | grep Variant -A50 | grep ">APK<" -A2 | grep android-apk-download | sed "s#.*-release/##g;s#/\#.*##g")" + url="https://www.apkmirror.com$(req "$url" - | tr '\n' ' ' | sed -n 's;.*href="\(.*key=[^"]*\)">.*;\1;p')" + url="https://www.apkmirror.com$(req "$url" - | tr '\n' ' ' | sed -n 's;.*href="\(.*key=[^"]*\)">.*;\1;p')" + echo "๐Ÿ“ฅ Downloading from $url" + if req "$url" "$2" ; then + echo "โœ… Download complete!" + else + echo "โŒ Download failed." + fi +} +get_support_version() { + if [[ "$name" = "$revanced_name" ]] ; then + ytversion=$(jq -r '.[] | select(.name == "video-ads") | .compatiblePackages[] | select(.name == "com.google.android.youtube") | .versions[-1]' patches.json) + echo "โœ…๏ธ Found YouTube version: $ytversion" + else + ytversion=$(jq -r '.[] | select(.name == "hide-general-ads") | .compatiblePackages[] | select(.name == "com.google.android.youtube") | .versions[-1]' patches.json) + echo "โœ…๏ธ Found YouTube version: $ytversion" + fi +} + +# Function Patch APK +patch_apk() { +echo "โš™๏ธ Patching YouTube..." +java -jar revanced-cli*.jar \ + -m revanced-integrations*.apk \ + -b revanced-patches*.jar \ + -a youtube-v$ytversion.apk \ + ${patches[@]} \ + --keystore=ks.keystore \ + -o yt-$name.apk +} +# Function clean caches to new build +clean_cache() { +echo "๐Ÿงน Clean caches..." +rm -f revanced-cli*.jar \ + revanced-integrations*.apk \ + revanced-patches*.jar \ + patches.json \ + options.toml \ + youtube*.apk \ +} +# Loop over Revanced & Revanced Extended +for name in $revanced_name $revanced_extended_name ; do + # Select variables based on name + if [[ "$name" = "$revanced_name" ]]; then + user="$revanced_user" + patch_file="$revanced_patch" + ytversion="$revanced_ytversion" + else + user="$revanced_extended_user" + patch_file="$revanced_extended_patch" + ytversion="$revanced_extended_ytversion" + fi +get_patch +download_latest_release + if [[ $ytversion ]] ; then + dl_yt $ytversion youtube-v$ytversion.apk + patch_apk + else + get_support_version + dl_yt $ytversion youtube-v$ytversion.apk + patch_apk +fi +clean_cache +done diff --git a/patches/ytrv-patches.txt b/src/yt/patches.rv similarity index 100% rename from patches/ytrv-patches.txt rename to src/yt/patches.rv diff --git a/patches/ytrve-patches.txt b/src/yt/patches.rve similarity index 97% rename from patches/ytrve-patches.txt rename to src/yt/patches.rve index 965a3e0..285e3f8 100644 --- a/patches/ytrve-patches.txt +++ b/src/yt/patches.rve @@ -21,4 +21,4 @@ downloads remember-video-quality client-spoof general-ads -video-ads \ No newline at end of file +video-ads diff --git a/src/ytm/patch.sh b/src/ytm/patch.sh new file mode 100644 index 0000000..a0e53aa --- /dev/null +++ b/src/ytm/patch.sh @@ -0,0 +1,103 @@ +#!/bin/bash +set -e +# Set variables for Revanced +readonly revanced_name="revanced" +readonly revanced_user="revanced" +readonly revanced_patch="src/ytm/patches.rv" +readonly revanced_ytmversion="" # Input version supported if you need patch specific YT version.Example: "18.03.36" +# Set variables for Revanced Extended +readonly revanced_extended_name="revanced-extended" +readonly revanced_extended_user="inotia00" +readonly revanced_extended_patch="src/ytm/patches.rve" +readonly revanced_extended_ytmversion="" # Input version supported if you need patch specific YT version.Example: "18.07.35" +# Function prepare patches keywords +get_patch() { + local excluded_start=$(grep -n -m1 'EXCLUDE PATCHES' "$patch_file" | cut -d':' -f1) + local included_start=$(grep -n -m1 'INCLUDE PATCHES' "$patch_file" | cut -d':' -f1) + local excluded_patches=$(tail -n +$excluded_start $patch_file | head -n "$(( included_start - excluded_start ))" | grep '^[^#[:blank:]]') + local included_patches=$(tail -n +$included_start $patch_file | grep '^[^#[:blank:]]') + patches=() + if [[ -n "$excluded_patches" ]]; then + while read -r patch; do + patches+=("-e $patch") + done <<< "$excluded_patches" + fi + if [[ -n "$included_patches" ]]; then + while read -r patch; do + patches+=("-i $patch") + done <<< "$included_patches" + fi +} +# Function download latest github releases +download_latest_release() { + echo "โฌ Downloading $name resources..." + for repos in revanced-patches revanced-cli revanced-integrations; do + local url="https://api.github.com/repos/$user/$repos/releases/latest" + curl -s "$url" | jq -r '.assets[].browser_download_url' | xargs -n 1 curl -O -s -L + done +} +# Function download YouTube apk from APKmirror +req() { + curl -sSL -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:111.0) Gecko/20100101 Firefox/111.0" "$1" -o "$2" +} +dl_ytm() { + rm -rf $2 + echo "Downloading YouTube Music $1" + url="https://www.apkmirror.com/apk/google-inc/youtube/youtube-music-${1//./-}-release/" + url="$url$(req "$url" - | grep arm64 -A30 | grep youtube-music | head -1 | sed "s#.*-release/##g;s#/\".*##g")" + url="https://www.apkmirror.com$(req "$url" - | tr '\n' ' ' | sed -n 's;.*href="\(.*key=[^"]*\)">.*;\1;p')" + url="https://www.apkmirror.com$(req "$url" - | tr '\n' ' ' | sed -n 's;.*href="\(.*key=[^"]*\)">.*;\1;p')" + req "$url" "$2" +} +get_latestytmversion() { + url="https://www.apkmirror.com/apk/google-inc/youtube-music/" + ytmversion=$(req "$url" - | grep "All version" -A200 | grep app_release | sed 's:.*/youtube-music-::g;s:-release/.*::g;s:-:.:g' | sort -r | head -1) + echo "Latest Youtube Music Version: $ytmversion" +} +get_support_version() { +ytmversion=$(jq -r '.[] | select(.name == "hide-get-premium") | .compatiblePackages[] | select(.name == "com.google.android.apps.youtube.music") | .versions[-1]' patches.json) +} +# Function Patch APK +patch_ms() { +echo "โš™๏ธ Patching YouTube Music..." +java -jar revanced-cli*.jar \ + -m revanced-integrations*.apk \ + -b revanced-patches*.jar \ + -a youtube-music-v$ytmversion.apk \ + ${patches[@]} \ + --keystore=ks.keystore \ + -o ytm-$name.apk +} +# Function clean caches to new build +clean_cache() { +echo "๐Ÿงน Clean caches..." +rm -f revanced-cli*.jar \ + revanced-integrations*.apk \ + revanced-patches*.jar \ + patches.json \ + options.toml \ + youtube-music*.apk \ +} +# Loop over Revanced & Revanced Extended +for name in $revanced_name $revanced_extended_name ; do + # Select variables based on name + if [[ "$name" = "$revanced_name" ]]; then + user="$revanced_user" + patch_file="$revanced_patch" + ytmversion="$revanced_ytmversion" + else + user="$revanced_extended_user" + patch_file="$revanced_extended_patch" + ytmversion="$revanced_extended_ytmversion" + fi +get_patch +download_latest_release + if [[ "$name" = "$revanced_name" ]] ; then + get_support_version + dl_ytm $ytmversion youtube-music-v$ytmversion.apk + else get_latestytmversion + dl_ytm $ytmversion youtube-music-v$ytmversion.apk +fi +patch_ms +clean_cache +done \ No newline at end of file diff --git a/src/ytm/patches.rv b/src/ytm/patches.rv new file mode 100644 index 0000000..42b8b55 --- /dev/null +++ b/src/ytm/patches.rv @@ -0,0 +1,12 @@ +# EXCLUDE PATCHES FROM BELOW +compact-header +# INCLUDE PATCHES FROM BELOW +background-play +codecs-unlock +exclusive-audio-playback +hide-get-premium +minimized-playback-music +music-video-ads +tasteBuilder-remover +upgrade-button-remover +custom-branding-icon-afn-red diff --git a/src/ytm/patches.rve b/src/ytm/patches.rve new file mode 100644 index 0000000..42b8b55 --- /dev/null +++ b/src/ytm/patches.rve @@ -0,0 +1,12 @@ +# EXCLUDE PATCHES FROM BELOW +compact-header +# INCLUDE PATCHES FROM BELOW +background-play +codecs-unlock +exclusive-audio-playback +hide-get-premium +minimized-playback-music +music-video-ads +tasteBuilder-remover +upgrade-button-remover +custom-branding-icon-afn-red