From ab57321ef1edfc682159aac61e9e57b45f5ce4c5 Mon Sep 17 00:00:00 2001 From: siritami <102145692+FiorenMas@users.noreply.github.com> Date: Fri, 18 Apr 2025 00:31:30 +0700 Subject: [PATCH] add Spotjfy add support apkpure --- .github/workflows/manual-patch.yml | 19 ++++----- README.md | 10 +++++ docs/Frequently Asked Questions.md | 32 +++++++++------ docs/image/FAQ/patching-app-4.png | Bin 0 -> 32285 bytes src/build/Spotjfy.sh | 12 ++++++ src/build/utils.sh | 39 +++++++++++++++++++ src/patches/Spotjfy-revanced/exclude-patches | 0 src/patches/Spotjfy-revanced/include-patches | 0 8 files changed, 92 insertions(+), 20 deletions(-) create mode 100644 docs/image/FAQ/patching-app-4.png create mode 100644 src/build/Spotjfy.sh create mode 100644 src/patches/Spotjfy-revanced/exclude-patches create mode 100644 src/patches/Spotjfy-revanced/include-patches diff --git a/.github/workflows/manual-patch.yml b/.github/workflows/manual-patch.yml index 405c2d7..5086ee9 100644 --- a/.github/workflows/manual-patch.yml +++ b/.github/workflows/manual-patch.yml @@ -16,6 +16,7 @@ on: options: - 'Revanced' - 'Revanced Beta' + - 'Spotjfy' - 'Revanced Extended' - 'Revanced Extended Beta' - 'RVE-anddea-stable' @@ -311,9 +312,9 @@ jobs: id: release-rve67 if: steps.check-gh-rve67.outputs.internet_error == '0' uses: ./.github/actions/release - patch_rve5: - name: Patch RVX Android 5 - if: ${{ github.event.inputs.org == 'Revanced Extended Android 5' || inputs.org == 'Revanced Extended Android 5' }} + patch_Spotjfy: + name: Patch Spotjfy + if: ${{ github.event.inputs.org == 'Spotjfy' || inputs.org == 'Spotjfy' }} runs-on: ubuntu-latest steps: - name: Checkout @@ -321,15 +322,15 @@ jobs: - name: Preparing to patch uses: ./.github/actions/preparing - name: Check github connection - id: check-gh-rve5 + id: check-gh-spotjfy run: bash src/etc/connection.sh - name: Patch apk - id: patch-rve5 - if: steps.check-gh-rve5.outputs.internet_error == '0' - run: bash src/build/Revanced-Extended-Android-5.sh + id: patch-spotjfy + if: steps.check-gh-spotjfy.outputs.internet_error == '0' + run: bash src/build/Spotjfy.sh - name: Releasing APK files - id: release-rve5 - if: steps.check-gh-rve5.outputs.internet_error == '0' + id: release-spotjfy + if: steps.check-gh-spotjfy.outputs.internet_error == '0' uses: ./.github/actions/release patch_BiliRoamingM: name: Patch BiliRoamingM diff --git a/README.md b/README.md index c3a8416..5cd496f 100644 --- a/README.md +++ b/README.md @@ -228,6 +228,16 @@ Old patches, because latest patch not support split apks --- +### [Spotjfy:](https://www.google.com/search?q=Spotjfy) + +### [Revanced](https://github.com/revanced/revanced-patches) + +#### ⚠️ Please read [WIKI](../main/docs/Frequently%20Asked%20Questions.md#q-what-is-spotjfy-and-how-can-i-download-it) before click download + +[Arm64-v8a](../../releases/download/all/spotjfy-arm64-v8a-revanced.apk) + +--- + [![Telegram](https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white)](https://play.google.com/store/apps/details?id=org.telegram.messenger) ### [Revanced Experiments:](https://github.com/Aunali321/ReVancedExperiments) diff --git a/docs/Frequently Asked Questions.md b/docs/Frequently Asked Questions.md index 9206ddb..2b44f60 100644 --- a/docs/Frequently Asked Questions.md +++ b/docs/Frequently Asked Questions.md @@ -10,15 +10,6 @@ The issue might be that your Android OS is preventing MicroG (GMS Core) from run [https://dontkillmyapp.com/](https://dontkillmyapp.com/) -#### Use Po-token: - -If it still can't solve the buffering issue, maybe using PoToken can solve it. - -1. Download and install Revanced Extended or Revanced Extended forked by anddea. -2. [Go to this repository](https://github.com/FiorenMas/scrape-youtube) -3. Scroll down, copy the PoToken and visitorData -4. Open the Revanced Extended app and go to Settings > Revanced Extended > Miscellaneous > Spoof Streaming data > Default cilent (select iOS) > PoToken/VisitorData. Then, paste the two values you copied in the previous step. - ### Q: Youtube Android 6,7 Can't load anyvideo: This is because Google force old version Youtube need to update. So you need fake your youtube version to higher version. @@ -29,10 +20,10 @@ This is because Google force old version Youtube need to update. So you need fak 3. Choose `Edit spoof app version` input `19.05.36` then restart RVX -4. And then set Po-token in above this guide if still have issues. - Credit: [@gnadgnaoh](https://github.com/gnadgnaoh/) +--- + ### Q: How do I use this repository for patching my own app? You should [fork](https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/fork) the repository, and then go to the `Action` tab @@ -48,6 +39,25 @@ And then go to Readme click download your patched apps! --- +### Q: What is Spotjfy? And how can I download it? + +"Spotjfy" not misspell, this mean [this app](https://www.google.com/search?q=Spotjfy) + +This app high DMCA chance takdown so you should patch by yourself + +You should [fork](https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/fork) the repository, and then go to the `Action` tab +![Click Action](../docs/image/FAQ/patching-app-1.png) + +Click "I understand my workflows, go ahead and enable them" +![Click "I understand my workflows, go ahead and enable them"](../docs/image/FAQ/patching-app-2.png) + +Follow these steps to run the workflow to patch Spotjfy +![](../docs/image/FAQ/patching-app-4.png) + +After patch done, back to home [your repository](../README.md#spotjfy) + +--- + ### Q: I want to use custom patches for patching my apps. How can I do it? You should open the folder `Revanced-And-Revanced-Extended-Non-Root/src/patches/`. It contains a lot of folders that are named after the apps you’re patching. Each folder has two files: exclude-patches and include-patches. Edit these files with the patches you like, putting one patch per line, following the patches list here: diff --git a/docs/image/FAQ/patching-app-4.png b/docs/image/FAQ/patching-app-4.png new file mode 100644 index 0000000000000000000000000000000000000000..cc969ec8b4b17aa5fab90b4dfd9c939304badb2d GIT binary patch literal 32285 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 /dev/null 2>&1 fi } +get_apkpure() { + if [ -z "$version" ] && [ "$lock_version" != "1" ]; then + if [[ $(ls revanced-cli-*.jar) =~ revanced-cli-([0-9]+) ]]; then + num=${BASH_REMATCH[1]} + if [ $num -ge 5 ]; then + version=$(java -jar *cli*.jar list-patches --with-packages --with-versions *.rvp | awk -v pkg="$1" 'BEGIN { found = 0 } /^Index:/ { found = 0 } /Package name: / { if ($3 == pkg) { found = 1 } } /Compatible versions:/ { if (found) { getline; latest_version = $1; while (getline && $1 ~ /^[0-9]+\./) { latest_version = $1 } print latest_version; exit } }') + else + version=$(jq -r '[.. | objects | select(.name == "'$1'" and .versions != null) | .versions[]] | reverse | .[0] // ""' *.json | uniq) + fi + fi + fi + export version="$version" + if [[ $4 == "Bundle" ]] || [[ $4 == "Bundle_extract" ]]; then + local base_apk="$2.xapk" + else + local base_apk="$2.apk" + fi + if [[ -n "$version" ]]; then + url="https://apkpure.com/$3/downloading/$version" + else + url="https://apkpure.com/$3/downloading/" + version="$(req "$url" - | awk -F'Download APK | \\(' '/

/{print $2}')" + fi + green_log "[+] Downloading $2 version: $version $4" + url="$(req "$url" - | grep -oP ']+id="download_link"[^>]+href="\Khttps://[^"]+')" + req "$url" "$base_apk" + if [[ -f "./download/$base_apk" ]]; then + green_log "[+] Successfully downloaded $2" + else + red_log "[-] Failed to download $2" + exit 1 + fi + if [[ $4 == "Bundle" ]]; then + green_log "[+] Merge splits apk to standalone apk" + java -jar $APKEditor m -i ./download/$2.xapk -o ./download/$2.apk > /dev/null 2>&1 + elif [[ $4 == "Bundle_extract" ]]; then + unzip "./download/$base_apk" -d "./download/$(basename "$base_apk" .xapk)" > /dev/null 2>&1 + fi +} ################################################# diff --git a/src/patches/Spotjfy-revanced/exclude-patches b/src/patches/Spotjfy-revanced/exclude-patches new file mode 100644 index 0000000..e69de29 diff --git a/src/patches/Spotjfy-revanced/include-patches b/src/patches/Spotjfy-revanced/include-patches new file mode 100644 index 0000000..e69de29