mirror of
https://github.com/ReVanced/revanced-patches.git
synced 2026-01-21 10:03:55 +00:00
Merge remote-tracking branch 'upstream/dev' into feat/patcher_instruction_filters
# Conflicts: # patches/api/patches.api # patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/Fingerprints.kt
This commit is contained in:
28
CHANGELOG.md
28
CHANGELOG.md
@@ -1,3 +1,31 @@
|
||||
# [5.36.0](https://github.com/ReVanced/revanced-patches/compare/v5.35.0...v5.36.0) (2025-09-14)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Duolingo - Disable ads:** Support latest app target ([#5782](https://github.com/ReVanced/revanced-patches/issues/5782)) ([88b47ef](https://github.com/ReVanced/revanced-patches/commit/88b47ef414cd073ec3800258b32aceb6f383a411))
|
||||
* **YouTube - Hide layout components:** Hide new type of Playable shelf ([8cd8e59](https://github.com/ReVanced/revanced-patches/commit/8cd8e59bbc3a878269276b8ae5f627b044d157f0))
|
||||
* **YouTube Music:** Resolve playback issues, change recommended app target to `7.29.52` ([#5813](https://github.com/ReVanced/revanced-patches/issues/5813)) ([a53b00d](https://github.com/ReVanced/revanced-patches/commit/a53b00dd514dbe2b3406f3c1013a4f58a7f481c5))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - SponsorBlock:** Add 'Hook' segment category ([#5783](https://github.com/ReVanced/revanced-patches/issues/5783)) ([9d4aa5c](https://github.com/ReVanced/revanced-patches/commit/9d4aa5cd16a6f9e95cf7c626351b46b86ca80efe))
|
||||
|
||||
# [5.36.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.35.0...v5.36.0-dev.1) (2025-09-13)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Duolingo - Disable ads:** Support latest app target ([#5782](https://github.com/ReVanced/revanced-patches/issues/5782)) ([88b47ef](https://github.com/ReVanced/revanced-patches/commit/88b47ef414cd073ec3800258b32aceb6f383a411))
|
||||
* **YouTube - Hide layout components:** Hide new type of Playable shelf ([8cd8e59](https://github.com/ReVanced/revanced-patches/commit/8cd8e59bbc3a878269276b8ae5f627b044d157f0))
|
||||
* **YouTube Music:** Resolve playback issues, change recommended app target to `7.29.52` ([#5813](https://github.com/ReVanced/revanced-patches/issues/5813)) ([a53b00d](https://github.com/ReVanced/revanced-patches/commit/a53b00dd514dbe2b3406f3c1013a4f58a7f481c5))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - SponsorBlock:** Add 'Hook' segment category ([#5783](https://github.com/ReVanced/revanced-patches/issues/5783)) ([9d4aa5c](https://github.com/ReVanced/revanced-patches/commit/9d4aa5cd16a6f9e95cf7c626351b46b86ca80efe))
|
||||
|
||||
# [5.36.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.35.0...v5.36.0-dev.1) (2025-09-13)
|
||||
|
||||
|
||||
|
||||
@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
|
||||
org.gradle.parallel = true
|
||||
android.useAndroidX = true
|
||||
kotlin.code.style = official
|
||||
version = 5.36.0-dev.1
|
||||
version = 5.36.0
|
||||
|
||||
@@ -372,6 +372,7 @@ public final class app/revanced/patches/music/playservice/VersionCheckPatchKt {
|
||||
public static final fun getVersionCheckPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
|
||||
public static final fun is_7_33_or_greater ()Z
|
||||
public static final fun is_8_11_or_greater ()Z
|
||||
public static final fun is_8_15_or_greater ()Z
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/myexpenses/misc/pro/UnlockProPatchKt {
|
||||
@@ -1216,6 +1217,10 @@ public final class app/revanced/patches/twitter/misc/links/SanitizeSharingLinksP
|
||||
public static final fun getSanitizeSharingLinksPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/viber/ads/HideAdsPatchKt {
|
||||
public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/warnwetter/misc/firebasegetcert/FirebaseGetCertPatchKt {
|
||||
public static final fun getFirebaseGetCertPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package app.revanced.patches.music.misc.spoof
|
||||
|
||||
import app.revanced.patches.music.playservice.is_7_33_or_greater
|
||||
import app.revanced.patches.music.playservice.is_8_11_or_greater
|
||||
import app.revanced.patches.music.playservice.is_8_15_or_greater
|
||||
import app.revanced.patches.music.playservice.versionCheckPatch
|
||||
import app.revanced.patches.shared.misc.spoof.spoofVideoStreamsPatch
|
||||
|
||||
@@ -16,6 +17,6 @@ val spoofVideoStreamsPatch = spoofVideoStreamsPatch(
|
||||
dependsOn(versionCheckPatch, userAgentClientSpoofPatch)
|
||||
},
|
||||
fixMediaFetchHotConfigChanges = { true },
|
||||
fixMediaFetchHotConfigAlternativeChanges = { is_8_11_or_greater },
|
||||
fixMediaFetchHotConfigAlternativeChanges = { is_8_11_or_greater && !is_8_15_or_greater },
|
||||
fixParsePlaybackResponseFeatureFlag = { is_7_33_or_greater }
|
||||
)
|
||||
@@ -9,6 +9,8 @@ var is_7_33_or_greater = false
|
||||
private set
|
||||
var is_8_11_or_greater = false
|
||||
private set
|
||||
var is_8_15_or_greater = false
|
||||
private set
|
||||
|
||||
val versionCheckPatch = resourcePatch(
|
||||
description = "Uses the Play Store service version to find the major/minor version of the YouTube Music target app.",
|
||||
@@ -21,5 +23,6 @@ val versionCheckPatch = resourcePatch(
|
||||
// All bug fix releases always seem to use the same play store version as the minor version.
|
||||
is_7_33_or_greater = 245199000 <= playStoreServicesVersion
|
||||
is_8_11_or_greater = 251199000 <= playStoreServicesVersion
|
||||
is_8_15_or_greater = 251530000 <= playStoreServicesVersion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
package app.revanced.patches.shared.misc.spoof
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import app.revanced.util.getReference
|
||||
import app.revanced.util.indexOfFirstInstruction
|
||||
import app.revanced.patcher.literal
|
||||
import app.revanced.patcher.methodCall
|
||||
import app.revanced.patcher.string
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
|
||||
internal val buildInitPlaybackRequestFingerprint by fingerprint {
|
||||
returns("Lorg/chromium/net/UrlRequest\$Builder;")
|
||||
@@ -40,7 +43,7 @@ internal val buildRequestFingerprint by fingerprint {
|
||||
returns("Lorg/chromium/net/UrlRequest") // UrlRequest; or UrlRequest$Builder;
|
||||
instructions(
|
||||
methodCall(name = "newUrlRequestBuilder")
|
||||
)
|
||||
) // UrlRequest; or UrlRequest$Builder;
|
||||
custom { methodDef, _ ->
|
||||
// Different targets have slightly different parameters
|
||||
|
||||
@@ -74,10 +77,11 @@ internal val buildRequestFingerprint by fingerprint {
|
||||
val parameterTypes = methodDef.parameterTypes
|
||||
val parameterTypesSize = parameterTypes.size
|
||||
(parameterTypesSize == 6 || parameterTypesSize == 7 || parameterTypesSize == 8) &&
|
||||
parameterTypes[1] == "Ljava/util/Map;" // URL headers.
|
||||
parameterTypes[1] == "Ljava/util/Map;" // URL headers.
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
internal val protobufClassParseByteBufferFingerprint by fingerprint {
|
||||
accessFlags(AccessFlags.PROTECTED, AccessFlags.STATIC)
|
||||
returns("L")
|
||||
@@ -160,7 +164,8 @@ internal val mediaFetchHotConfigFingerprint by fingerprint {
|
||||
)
|
||||
}
|
||||
|
||||
// YT 20.10+, YT Music 8.11+
|
||||
// YT 20.10+, YT Music 8.11 - 8.14.
|
||||
// Flag is missing in YT Music 8.15+, and it is not known if a replacement flag/feature exists.
|
||||
internal val mediaFetchHotConfigAlternativeFingerprint by fingerprint {
|
||||
instructions(
|
||||
literal(45683169L)
|
||||
|
||||
@@ -10,6 +10,7 @@ import app.revanced.patcher.patch.BytecodePatchContext
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable
|
||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.util.findFreeRegister
|
||||
import app.revanced.util.findInstructionIndicesReversedOrThrow
|
||||
import app.revanced.util.getReference
|
||||
@@ -41,7 +42,7 @@ fun spoofVideoStreamsPatch(
|
||||
) {
|
||||
block()
|
||||
|
||||
dependsOn(addResourcesPatch)
|
||||
dependsOn(sharedExtensionPatch, addResourcesPatch)
|
||||
|
||||
execute {
|
||||
// region Enable extension helper method used by other patches
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package app.revanced.patches.viber.ads
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
|
||||
internal val adsFreeFingerprint by fingerprint {
|
||||
returns("I")
|
||||
parameters()
|
||||
custom { method, classDef ->
|
||||
classDef.type.contains("com/viber/voip/feature/viberplus") &&
|
||||
classDef.superclass?.contains("com/viber/voip/core/feature") == true && // Must extend com.viber.voip.core.feature.?
|
||||
classDef.methods.count() == 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package app.revanced.patches.viber.ads
|
||||
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.util.returnEarly
|
||||
|
||||
@Suppress("unused")
|
||||
val hideAdsPatch = bytecodePatch(
|
||||
name = "Hide Ads",
|
||||
description = "Hides ad banners between chats.",
|
||||
) {
|
||||
compatibleWith("com.viber.voip")
|
||||
|
||||
execute {
|
||||
// Return 1 (true) indicating ads should be disabled.
|
||||
adsFreeFingerprint.method.returnEarly(1)
|
||||
}
|
||||
}
|
||||
@@ -1074,9 +1074,12 @@ Sizin istifadəçi Id-niz parol kimidir və heç vaxt paylaşmaq olmaz.
|
||||
<string name="revanced_sb_segments_intro_sum">Həqiqi məzmunu olmayan aralıq. Fasilə, statik kadr və ya təkrarlanan animasiya ola bilər. Məlumat ehtiva edən keçidlər daxil deyil</string>
|
||||
<string name="revanced_sb_segments_outro">Son kartlar / Zaminlər</string>
|
||||
<string name="revanced_sb_segments_outro_sum">Zaminlər və ya YouTube bitiş kartları görünəndə. Məlumat daxil olan nəticələr üçün deyil</string>
|
||||
<string name="revanced_sb_segments_preview">Önizləmə/Anons/Qısa</string>
|
||||
<string name="revanced_sb_segments_preview_sum">Videoda və ya seriyanın digər videolarında nə gözlənildiyini və ya baş verdiyini göstərən, bütün məlumatların başqa yerdə təkrarlandığı bölüm toplusu</string><string name="revanced_sb_segments_filler">Əlaqəsiz/Zarafatlar</string>
|
||||
<string name="revanced_sb_segments_filler_sum">Videonun əsas məzmununu başa düşmək tələb olunmayan yalnız əlaqəsiz və ya yumor üçün əlavə edilmiş təsiredici səhnələr. Məzmun və ya arxa plan detallarını təqdim edən bölümlər daxil deyil</string>
|
||||
<string name="revanced_sb_segments_hook">Giriş / Salamlar</string>
|
||||
<string name="revanced_sb_segments_hook_sum">Yaxınlaşan video üçün danışılan kadrlar, salamlama və sağollaşma. Əlavə məzmun əlavə edən bölmələr daxil deyil</string>
|
||||
<string name="revanced_sb_segments_preview">Önizləmə / Anons</string>
|
||||
<string name="revanced_sb_segments_preview_sum">Videoda və ya seriyanın digər videolarında nə gözlənildiyini və ya baş verdiyini göstərən, bütün məlumatların başqa yerdə təkrarlandığı bölüm toplusu</string>
|
||||
<string name="revanced_sb_segments_filler">Əlaqəsiz / Zarafatlar</string>
|
||||
<string name="revanced_sb_segments_filler_sum">Videonun əsas məzmunun başa düşmək tələb olunmayan əlaqəsiz səhnələr və ya zarafatlar. Məzmun və ya arxa plan təfərrüatlarını təmin edən bölmələr daxil deyil</string>
|
||||
<string name="revanced_sb_segments_nomusic">Musiqi: Musiqi olmayan bölmə</string>
|
||||
<string name="revanced_sb_segments_nomusic_sum">Yalnız musiqi videolarında istifadə üçün. Artıq başqa kateqoriyaya aid edilməyən musiqisiz musiqi videoları bölmələri</string>
|
||||
<string name="revanced_sb_skip_button_compact">Ötür</string>
|
||||
@@ -1089,10 +1092,11 @@ Sizin istifadəçi Id-niz parol kimidir və heç vaxt paylaşmaq olmaz.
|
||||
<string name="revanced_sb_skip_button_intro_middle">Fasiləni ötür</string>
|
||||
<string name="revanced_sb_skip_button_intro_end">Fasiləni ötür</string>
|
||||
<string name="revanced_sb_skip_button_outro">Bitişi ötür</string>
|
||||
<string name="revanced_sb_skip_button_hook">Girişi ötür</string>
|
||||
<string name="revanced_sb_skip_button_preview_beginning">Önizləməni ötür</string>
|
||||
<string name="revanced_sb_skip_button_preview_middle">Önizləməni ötür</string>
|
||||
<string name="revanced_sb_skip_button_preview_end">Anonsu ötür</string>
|
||||
<string name="revanced_sb_skip_button_filler">Əlaqəsiz hissəni ötür</string>
|
||||
<string name="revanced_sb_skip_button_filler">Əlaqəsiz olanı ötür</string>
|
||||
<string name="revanced_sb_skip_button_nomusic">Musiqisiz hissəni ötür</string>
|
||||
<string name="revanced_sb_skip_button_unsubmitted">Bölümü ötür</string>
|
||||
<string name="revanced_sb_skipped_sponsor">Sponsorlu hissə ötürüldü</string>
|
||||
@@ -1103,10 +1107,11 @@ Sizin istifadəçi Id-niz parol kimidir və heç vaxt paylaşmaq olmaz.
|
||||
<string name="revanced_sb_skipped_intro_middle">Fasilə ötürüldü</string>
|
||||
<string name="revanced_sb_skipped_intro_end">Fasilə ötürüldü</string>
|
||||
<string name="revanced_sb_skipped_outro">Bitiş ötürüldü</string>
|
||||
<string name="revanced_sb_skipped_hook">Giriş ötürüldü</string>
|
||||
<string name="revanced_sb_skipped_preview_beginning">Önbaxış ötürüldü</string>
|
||||
<string name="revanced_sb_skipped_preview_middle">Önbaxış ötürüldü</string>
|
||||
<string name="revanced_sb_skipped_preview_end">Anons ötürüldü</string>
|
||||
<string name="revanced_sb_skipped_filler">Əlaqəsiz hissə ötürüldü</string>
|
||||
<string name="revanced_sb_skipped_filler">Əlaqəsiz ötürüldü</string>
|
||||
<string name="revanced_sb_skipped_nomusic">Musiqi olmayan bölmə ötürüldü</string>
|
||||
<string name="revanced_sb_skipped_unsubmitted">Göndərilməmiş bölüm ötürüldü</string>
|
||||
<string name="revanced_sb_skipped_multiple_segments">Çoxlu bölümlər ötürüldü</string>
|
||||
|
||||
@@ -1078,11 +1078,11 @@ Kullanıcı kimliğiniz bir parola gibidir ve asla paylaşılmamalıdır.
|
||||
<string name="revanced_sb_segments_outro">Bitiş Ekranı / Jenerik</string>
|
||||
<string name="revanced_sb_segments_outro_sum">Jenerik veya YouTube bitiş kartlarının göründüğü zaman. Bilgi içeren çıkarımlar için değil</string>
|
||||
<string name="revanced_sb_segments_hook">Giriş / Selamlama</string>
|
||||
<string name="revanced_sb_segments_hook_sum">Gelecek video için anlatımlı fragmanlar, selamlamalar ve vedalar. Ek içerik ekleyen bölümler dahil değildir</string>
|
||||
<string name="revanced_sb_segments_hook_sum">Gelecek video için anlatımlı fragmanlar, selamlamalar ve vedalar. Ek içerik ekleyen kısımları içermez</string>
|
||||
<string name="revanced_sb_segments_preview">Ön İzleme / Özet</string>
|
||||
<string name="revanced_sb_segments_preview_sum">Videoda veya bir dizinin diğer videolarında neler olduğunu ve nelerin geleceğini gösteren, tüm bilgilerin başka bir yerde tekrarlandığı klip koleksiyonu</string>
|
||||
<string name="revanced_sb_segments_filler">Konuyla Alakasız / Şakalar</string>
|
||||
<string name="revanced_sb_segments_filler_sum">Videonun ana içeriğini anlamak için gerekli olmayan alakasız sahneler veya şakalar. Bağlam veya arka plan detayları sağlayan bölümleri içermez</string>
|
||||
<string name="revanced_sb_segments_filler_sum">Videonun ana içeriğini anlamak için gerekli olmayan alakasız sahneler veya şakalar. Bağlam veya arka plan detayları sağlayan kısımları içermez</string>
|
||||
<string name="revanced_sb_segments_nomusic">Müzik: Müzik Olmayan Kısım</string>
|
||||
<string name="revanced_sb_segments_nomusic_sum">Yalnızca müzik videolarında kullanım içindir. Müzik videolarının başka bir kategorinin kapsamadığı müziksiz bölümleri</string>
|
||||
<string name="revanced_sb_skip_button_compact">Atla</string>
|
||||
|
||||
@@ -1075,10 +1075,12 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_sb_segments_intro_sum">指影片中沒有實際內容的片段。可能為暫停、靜態畫面或重複動畫。不包含含有資訊的轉場。</string>
|
||||
<string name="revanced_sb_segments_outro">片尾資訊卡/鳴謝</string>
|
||||
<string name="revanced_sb_segments_outro_sum">鳴謝或 YouTube 片尾資訊卡出現時。不適用於含有資訊的結論。</string>
|
||||
<string name="revanced_sb_segments_preview">預告/回顧/前情提要</string>
|
||||
<string name="revanced_sb_segments_hook">開場白 / 問候</string>
|
||||
<string name="revanced_sb_segments_hook_sum">即將推出的影片的旁白預告片、問候語和告別語。不包含增加額外內容的部分</string>
|
||||
<string name="revanced_sb_segments_preview">預覽 / 回顧</string>
|
||||
<string name="revanced_sb_segments_preview_sum">展示影片或系列影片中即將到來或已發生的內容片段合輯,且所有資訊在其他地方重複出現。</string>
|
||||
<string name="revanced_sb_segments_filler">填充閒聊/笑話</string>
|
||||
<string name="revanced_sb_segments_filler_sum">指為了填充時間或增添幽默感而加入的旁支情節,並非理解影片主要內容所必需。不包含提供背景資訊或脈絡的片段。</string>
|
||||
<string name="revanced_sb_segments_filler">離題 / 笑話</string>
|
||||
<string name="revanced_sb_segments_filler_sum">離題的場景或笑話,這些內容並非理解影片主要內容所必需的。不包括提供背景或詳細資訊的部分</string>
|
||||
<string name="revanced_sb_segments_nomusic">音樂:非音樂片段</string>
|
||||
<string name="revanced_sb_segments_nomusic_sum">僅適用於音樂影片。音樂影片中沒有音樂,且不屬於其他類別的段落。</string>
|
||||
<string name="revanced_sb_skip_button_compact">跳過</string>
|
||||
@@ -1091,10 +1093,11 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_sb_skip_button_intro_middle">跳過中場休息</string>
|
||||
<string name="revanced_sb_skip_button_intro_end">跳過中場休息</string>
|
||||
<string name="revanced_sb_skip_button_outro">跳過片尾</string>
|
||||
<string name="revanced_sb_skip_button_hook">跳過掛鉤</string>
|
||||
<string name="revanced_sb_skip_button_preview_beginning">跳過預覽</string>
|
||||
<string name="revanced_sb_skip_button_preview_middle">跳過預覽</string>
|
||||
<string name="revanced_sb_skip_button_preview_end">跳過回顧</string>
|
||||
<string name="revanced_sb_skip_button_filler">跳過閒聊</string>
|
||||
<string name="revanced_sb_skip_button_filler">跳過離題</string>
|
||||
<string name="revanced_sb_skip_button_nomusic">跳過非音樂</string>
|
||||
<string name="revanced_sb_skip_button_unsubmitted">跳過片段</string>
|
||||
<string name="revanced_sb_skipped_sponsor">已跳過贊助商廣告</string>
|
||||
@@ -1105,10 +1108,11 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_sb_skipped_intro_middle">已跳過中場休息</string>
|
||||
<string name="revanced_sb_skipped_intro_end">已跳過中場休息</string>
|
||||
<string name="revanced_sb_skipped_outro">已跳過結尾</string>
|
||||
<string name="revanced_sb_skipped_hook">已跳過掛鉤</string>
|
||||
<string name="revanced_sb_skipped_preview_beginning">已跳過預覽</string>
|
||||
<string name="revanced_sb_skipped_preview_middle">已跳過預覽</string>
|
||||
<string name="revanced_sb_skipped_preview_end">已跳過回顧</string>
|
||||
<string name="revanced_sb_skipped_filler">已跳過閒聊</string>
|
||||
<string name="revanced_sb_skipped_filler">已跳過不相關內容</string>
|
||||
<string name="revanced_sb_skipped_nomusic">已跳過非音樂部分</string>
|
||||
<string name="revanced_sb_skipped_unsubmitted">跳過了未提交的片段</string>
|
||||
<string name="revanced_sb_skipped_multiple_segments">已跳過多個片段</string>
|
||||
|
||||
Reference in New Issue
Block a user