From f3ffed42c11663a7b7c8de587519455e89938065 Mon Sep 17 00:00:00 2001
From: inotia00 <108592928+inotia00@users.noreply.github.com>
Date: Thu, 9 Nov 2023 17:16:49 +0900
Subject: [PATCH] feat(YouTube): add `Enable music search` patch
---
.../general/musicsearch/MusicSearchPatch.kt | 67 +++++++++++++++++++
.../VoiceSearchConfigFingerprint.kt | 9 +++
.../youtube/settings/host/values/strings.xml | 3 +
.../youtube/settings/xml/revanced_prefs.xml | 16 +++--
4 files changed, 89 insertions(+), 6 deletions(-)
create mode 100644 src/main/kotlin/app/revanced/patches/youtube/general/musicsearch/MusicSearchPatch.kt
create mode 100644 src/main/kotlin/app/revanced/patches/youtube/general/musicsearch/fingerprints/VoiceSearchConfigFingerprint.kt
diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/musicsearch/MusicSearchPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/general/musicsearch/MusicSearchPatch.kt
new file mode 100644
index 000000000..72318487b
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/youtube/general/musicsearch/MusicSearchPatch.kt
@@ -0,0 +1,67 @@
+package app.revanced.patches.youtube.general.musicsearch
+
+import app.revanced.extensions.exception
+import app.revanced.patcher.data.BytecodeContext
+import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
+import app.revanced.patcher.patch.BytecodePatch
+import app.revanced.patcher.patch.annotation.CompatiblePackage
+import app.revanced.patcher.patch.annotation.Patch
+import app.revanced.patches.youtube.general.musicsearch.fingerprints.VoiceSearchConfigFingerprint
+import app.revanced.patches.youtube.utils.settings.SettingsPatch
+import app.revanced.util.integrations.Constants.GENERAL
+
+@Patch(
+ name = "Enable music search",
+ description = "Enables music search in the voice search screen.",
+ dependencies = [SettingsPatch::class],
+ compatiblePackages = [
+ CompatiblePackage(
+ "com.google.android.youtube",
+ [
+ "18.30.37",
+ "18.31.40",
+ "18.32.39",
+ "18.33.40",
+ "18.34.38",
+ "18.35.36",
+ "18.36.39",
+ "18.37.36",
+ "18.38.44",
+ "18.39.41",
+ "18.40.34"
+ ]
+ )
+ ],
+ use = false
+)
+@Suppress("unused")
+object MusicSearchPatch : BytecodePatch(
+ setOf(VoiceSearchConfigFingerprint)
+) {
+ override fun execute(context: BytecodeContext) {
+
+ VoiceSearchConfigFingerprint.result?.let {
+ it.mutableMethod.apply {
+ addInstructions(
+ 0, """
+ invoke-static { }, $GENERAL->enableMusicSearch()Z
+ move-result v0
+ return v0
+ """
+ )
+ }
+ } ?: throw VoiceSearchConfigFingerprint.exception
+
+ /**
+ * Add settings
+ */
+ SettingsPatch.addPreference(
+ arrayOf(
+ "PREFERENCE: GENERAL_SETTINGS",
+ "SETTINGS: ENABLE_MUSIC_SEARCH"
+ )
+ )
+
+ SettingsPatch.updatePatchStatus("Enable music search")
+ }
+}
diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/musicsearch/fingerprints/VoiceSearchConfigFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/general/musicsearch/fingerprints/VoiceSearchConfigFingerprint.kt
new file mode 100644
index 000000000..f483b73ff
--- /dev/null
+++ b/src/main/kotlin/app/revanced/patches/youtube/general/musicsearch/fingerprints/VoiceSearchConfigFingerprint.kt
@@ -0,0 +1,9 @@
+package app.revanced.patches.youtube.general.musicsearch.fingerprints
+
+import app.revanced.patcher.fingerprint.MethodFingerprint
+import app.revanced.util.bytecode.isWide32LiteralExists
+
+object VoiceSearchConfigFingerprint : MethodFingerprint(
+ returnType = "Z",
+ customFingerprint = { methodDef, _ -> methodDef.isWide32LiteralExists(45417109) }
+)
\ No newline at end of file
diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml
index 8e676e856..482342f54 100644
--- a/src/main/resources/youtube/settings/host/values/strings.xml
+++ b/src/main/resources/youtube/settings/host/values/strings.xml
@@ -120,6 +120,9 @@
Language switch is disabled.
Language switch is enabled.
Enable language switch
+ Music search is disabled.
+ Music search is enabled.
+ Enable music search
New splash animation is disabled.
New splash animation is enabled.
Enable new splash animation
diff --git a/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/src/main/resources/youtube/settings/xml/revanced_prefs.xml
index 8cda48ca6..3414ad825 100644
--- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml
+++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml
@@ -165,6 +165,9 @@
+
+
@@ -359,6 +362,7 @@
+
@@ -580,25 +584,25 @@
PREFERENCE: SEEKBAR_SETTINGS -->
-
-
-
-
-
-