From 3a29f2a8056c3ae0a15b3079f2235b08623d4cf8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 16 Sep 2025 23:21:01 +0400 Subject: [PATCH 01/19] chore: Sync translations (#5909) --- .../addresources/values-az-rAZ/strings.xml | 26 ++++++++++++++++++- .../addresources/values-el-rGR/strings.xml | 22 ++++++++-------- .../addresources/values-fr-rFR/strings.xml | 12 ++++----- .../addresources/values-in-rID/strings.xml | 6 ++--- .../addresources/values-ko-rKR/strings.xml | 4 +-- .../addresources/values-sr-rCS/strings.xml | 16 ++++++------ .../addresources/values-sr-rSP/strings.xml | 14 +++++----- .../addresources/values-uk-rUA/strings.xml | 2 +- 8 files changed, 63 insertions(+), 39 deletions(-) diff --git a/patches/src/main/resources/addresources/values-az-rAZ/strings.xml b/patches/src/main/resources/addresources/values-az-rAZ/strings.xml index d43c432b7..fa85ea1ad 100644 --- a/patches/src/main/resources/addresources/values-az-rAZ/strings.xml +++ b/patches/src/main/resources/addresources/values-az-rAZ/strings.xml @@ -89,10 +89,16 @@ Davam et düyməsinə toxun və optimallaşdırma dəyişikliklərin qəbul et." Video yayımları saxtalaşdır Oynatma problemlərin önləmək üçün qəbuledici video yayımların saxtalaşdır + Video yayımların saxtalaşdır + Oynatma problemlərin önləmək üçün qəbuledici video yayımların saxtalaşdır Video yayımları saxtalaşdır "Video yayımları saxtalaşdırılıb Əgər YouTube Premium istifadəçisisinizsə, bu tənzimlənmə tələb olunmaya bilər" + "Video yayımları saxtalaşmayıb + +Oynatma işləməyə bilər" + Bu tənzimləməni qapatmaq oynatma problemlərinə səbəb ola bilər. İlkin qəbuledici @@ -713,6 +719,9 @@ Bu seçimi dəyişdirmə işə düşmürsə, Gizli rejimə keçməyə çalışı Səs axını menyusu gizlidir Səs axını menyusu göstərilir + "Səs trek menyusu gizlidir + +Səs treki menyusunu göstərmək üçün \"Video yayımları saxtalaşdır\"ı iPadOS-a dəyiş" \"VR-da İzləni\" gizlət VR menyusunda izləmə gizlidir @@ -1541,6 +1550,7 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər Android saxtalaşdırma yan təsirləri "• Səs treki menyusu əlçatmazdır • Sabit səs səviyyəsi yoxdur" + • Video 01:00-da dayana bilər və ya bəzi bölgələrdə mövcud olmaya bilər • Təcrübi qəbuledici və hər vaxt işləməyi dayandıra bilər • AV1 video kodlayıcı yoxdur • Giriş edilməyəndə və ya gizli rejimdə uşaq videoları oynadıla bilməz @@ -1549,6 +1559,7 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər Qəbuledici nerd üçün Statistikada gizlidir Səs yayım dili + Xüsusi səs dilini seçmək üçün \"Orijinal səs dilini zorlanı\" qapat @@ -1556,18 +1567,31 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər Haqqında Reklamlar Ümumi - Oyunçu + Oynadıcı Çoxvariantlı + Video reklamlarını gizlət + Video reklamları gizlidir + Video reklamları görünür + Kəsintisiz təkrarlamanı aktivləşdir + Kəsintisiz təkrarlama aktivdir + Kəsintisiz təkrarlama qapalıdır + Kateqoriya cizgisin gizlət + Kateqoriya cizgisi gizlidir + Kateqoriya cizgisi görünür + \'Musiqi Premiumu Əldə et\' etiketini gizlət + Etiket gizlidir + Etiket görünür + Təkmilləşdirmə düyməsini gizlət Düymə gizlidir Düymə görünür diff --git a/patches/src/main/resources/addresources/values-el-rGR/strings.xml b/patches/src/main/resources/addresources/values-el-rGR/strings.xml index 7067f880f..f96694861 100644 --- a/patches/src/main/resources/addresources/values-el-rGR/strings.xml +++ b/patches/src/main/resources/addresources/values-el-rGR/strings.xml @@ -721,7 +721,7 @@ Second \"item\" text" Κρυμμένο Εμφανίζεται - "Το μενού «Κομμάτι ήχου» είναι κρυμμένο + "Κρυμμένο Για να εμφανίζεται το μενού κομματιού ήχου, αλλάξτε την «Παραποίηση ροών βίντεο» σε iPadOS" @@ -1550,7 +1550,7 @@ Second \"item\" text" Παρενέργειες παραποίησης σε Android "• Το μενού «Κομμάτι ήχου» λείπει • Η λειτουργία «Σταθερή ένταση» δεν είναι διαθέσιμη" - • Το βίντεο ενδέχεται να σταματήσει στο 1:00 ή ενδέχεται να μην είναι διαθέσιμο σε ορισμένες περιοχές + • Το βίντεο ενδέχεται να σταματήσει στο 1:00 ή να μην είναι διαθέσιμο σε ορισμένες περιοχές • Πειραματικός πελάτης και μπορεί να σταματήσει να λειτουργεί ανά πάσα στιγμή • Δεν υπάρχει ο κωδικοποιητής βίντεο AV1 • Τα βίντεο για παιδιά ενδέχεται να μην αναπαράγονται αν είστε αποσυνδεδεμένοι ή σε λειτουργία ανώνυμης περιήγησης @@ -1559,12 +1559,12 @@ Second \"item\" text" Το πρόγραμμα πελάτη δεν εμφανίζεται στο μενού «Στατιστικά για σπασίκλες» Γλώσσα ροής ήχου - Για να επιλέξετε μια συγκεκριμένη γλώσσα ήχου, απενεργοποιήστε το \'Επιβολή αρχικής γλώσσας ήχου\' + Για να επιλέξετε μια συγκεκριμένη γλώσσα ήχου, απενεργοποιήστε το «Εξαναγκασμός αρχικής γλώσσας ήχου» - Ομάδα προγραμματιστών + Σχετικά με Διαφημίσεις Γενικά Οθόνη αναπαραγωγής @@ -1581,17 +1581,17 @@ Second \"item\" text" Η μόνιμη επανάληψη είναι απενεργοποιημένη - Απόκρυψη γραμμής κατηγοριών - Η γραμμή κατηγοριών είναι κρυμμένη - Η γραμμή κατηγοριών εμφανίζεται + Γραμμή κατηγοριών + Κρυμμένη + Εμφανίζεται - Απόκρυψη ετικέτας «Απόκτηση Music Premium» - Η ετικέτα είναι κρυμμένη - Η ετικέτα εμφανίζεται + Ετικέτα «Αποκτήστε το Music Premium» + Κρυμμένη + Εμφανίζεται - Απόκρυψη κουμπιού αναβάθμισης + Κουμπί «Αναβάθμιση» Κρυμμένο Εμφανίζεται diff --git a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml index d477651e7..50fc5319c 100644 --- a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml +++ b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml @@ -94,10 +94,10 @@ Appuyez sur le bouton Continuer et autorisez les modifications." Falsifier les flux vidéo "Les flux vidéo sont falsifiés -Si vous avez YouTube Premium, il est possible que ce paramètre ne soit pas nécessaire" +Si vous êtes abonné à YouTube Premium, ce paramètre n'est peut-être pas nécessaire" "Les flux vidéo ne sont pas falsifiés -La lecture est susceptible de ne pas fonctionner" +Il est possible que la lecture ne fonctionne pas" La désactivation de ce paramètre peut entraîner des problèmes de lecture. Client par défaut @@ -1063,9 +1063,9 @@ Cette fonctionnalité fonctionne de manière optimale avec une qualité vidéo d Durée minimale d\'un segment Les segments dont la durée est inférieure à cette valeur (en secondes) ne seront ni affichés ni ignorés Durée invalide - Votre ID privé d\'utilisateur + Votre ID d\'utilisateur privé Cet identifiant doit rester confidentiel. Cet identifiant est comme un mot de passe et ne doit être partagé avec qui que ce soit. Si quelqu\'un venait à mettre la main dessus, il pourrait usurper votre identité. - L\'ID privé d\'utilisateur doit comporter au moins 30 caractères + ID d\'utilisateur privé trop court (30+ caractères) Modifier l\'URL de l\'API L\'adresse utilisée par SponsorBlock pour contacter son serveur URL de l\'API réinitialisée @@ -1074,11 +1074,11 @@ Cette fonctionnalité fonctionne de manière optimale avec une qualité vidéo d Importer/Exporter les paramètres Copier Votre configuration SponsorBlock au format JSON qui peut être importée/exportée vers ReVanced et les autres plateformes SponsorBlock - Votre configuration SponsorBlock au format JSON qui peut être importée/exportée vers ReVanced et d\'autres plateformes SponsorBlock. Votre ID privé d\'utilisateur y est présent, partagez-la avec prudence. + Votre configuration SponsorBlock au format JSON qui peut être importée/exportée vers ReVanced et d\'autres plateformes SponsorBlock. Votre ID d\'utilisateur privé y est présent, partagez-la avec prudence. Paramètres importés avec succès Échec de l\'importation : %s Échec de l\'exportation : %s - "Vos paramètres contiennent un ID privé d'utilisateur. + "Vos paramètres contiennent un ID d'utilisateur SponsorBlock privé. Votre ID d'utilisateur est comme un mot de passe et ne doit jamais être partagé." Ne plus afficher diff --git a/patches/src/main/resources/addresources/values-in-rID/strings.xml b/patches/src/main/resources/addresources/values-in-rID/strings.xml index e3b59b000..a45bc4e8e 100644 --- a/patches/src/main/resources/addresources/values-in-rID/strings.xml +++ b/patches/src/main/resources/addresources/values-in-rID/strings.xml @@ -721,7 +721,7 @@ Jika mengubah setelan ini tidak berpengaruh, coba beralih ke mode Penyamaran." "Menu trek audio disembunyikan -Untuk menampilkan menu trek audio, ubah 'Spoof stream video' ke iPadOS" +Untuk menampilkan menu trek audio, ubah 'Palsukan aliran video' ke iPadOS" Sembunyikan Tonton di VR Menu tonton di VR disembunyikan @@ -1548,9 +1548,9 @@ Mengaktifkan ini dapat membuka kualitas video yang lebih tinggi" Efek samping pemalsuan Efek samping pemalsuan Android - "• Menu trek audio tidak ada + "• Menu trek audio hilang • Volume stabil tidak tersedia" - • Video mungkin berhenti pada pukul 1:00, atau mungkin tidak tersedia di beberapa wilayah + • Video mungkin berhenti pada menit 1:00, atau mungkin tidak tersedia di beberapa wilayah • Klien eksperimental dan dapat berhenti berfungsi kapan saja • Tidak ada codec video AV1 • Video anak-anak mungkin tidak dapat diputar saat keluar atau dalam mode penyamaran diff --git a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml index 33441a45a..3615bcf31 100644 --- a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml +++ b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml @@ -1558,7 +1558,7 @@ DeArrow에 대해 자세히 알아보려면 여기를 탭하세요" Android 변경에 따른 부작용 "• 오디오 트랙 메뉴가 표시되지 않습니다 • 안정적인 볼륨을 사용할 수 없습니다" - • 동영상이 1:00에서 중지되거나 일부 지역에서 제공되지 않을 수 있습니다 + • 동영상이 1:00에 멈출 수 있으며, 일부 지역에서는 이용이 불가능할 수 있습니다 • 실험용 클라이언트이며 언제든지 작동이 중단될 수 있습니다 • AV1 코덱이 지원되지 않습니다 • Kids 동영상은 로그인을 하지 않았거나 시크릿 모드에서는 재생되지 않을 수 있습니다 @@ -1567,7 +1567,7 @@ DeArrow에 대해 자세히 알아보려면 여기를 탭하세요" 동영상 스트림을 가져오는 데 사용되는 클라이언트가 전문 통계에서 표시되지 않습니다 오디오 스트림 언어 - 특정 오디오 언어를 선택하려면 \"원본 오디오 언어 강제 적용\"을 끄십시오. + 특정 오디오 스트림 언어를 선택하려면, \'원본 오디오 스트림 언어 강제로 활성화하기\'를 끄세요 diff --git a/patches/src/main/resources/addresources/values-sr-rCS/strings.xml b/patches/src/main/resources/addresources/values-sr-rCS/strings.xml index c9da14aa7..42cc01f80 100644 --- a/patches/src/main/resources/addresources/values-sr-rCS/strings.xml +++ b/patches/src/main/resources/addresources/values-sr-rCS/strings.xml @@ -89,13 +89,13 @@ Dodirnite dugme „Nastavi” i dozvolite promene optimizacije." Lažirani video strimovi Lažiranje klijenta video strimova da bi se sprečili problemi sa reprodukcijom - Lažiranje video tokova - Lažirajte video tokove klijenta da biste sprečili probleme sa reprodukcijom. + Lažirani video strimovi + Lažiranje video strimova klijenta da bi se sprečili problemi sa reprodukcijom Lažirani video strimovi "Video strimovi su lažirani Ako ste korisnik YouTube Premiuma, ovo podešavanje možda neće biti potrebno" - "Video tokovi nisu lažirani + "Video strimovi nisu lažirani Reprodukcija možda neće raditi" Isključivanje ovog podešavanja može izazvati probleme sa reprodukcijom. @@ -721,7 +721,7 @@ Ako se promena ove opcije ne primeni, pokušajte da pređete u režim bez arhivi "Meni „Audio snimak” je skriven -Da biste prikazali meni „Audio snimak”, promenite „Lažirani video strimovi” u iPadOS" +Da biste prikazali meni „Audio snimak”, promenite opciju „Lažirani video strimovi” na iPadOS" Sakrij dugme „Gledaj u VR” Dugme „Gledaj u VR” je skriveno @@ -1550,7 +1550,7 @@ Ako ovo omogućite, mogu biti otključani viši kvaliteti videa" Neželjeni efekti lažiranja na Android "• Meni „Audio snimak” nedostaje • Opcija „Ujednačena jačina zvuka” nije dostupna" - • Video se može zaustaviti u 1:00, ili možda neće biti dostupan u nekim regionima + • Video se može zaustaviti u 1:00 ili možda neće biti dostupan u nekim regionima • Eksperimentalni klijent i može prestati da radi bilo kada • Nema video kodeka AV1 • Videi za decu se možda neće puštati kada ste odjavljeni ili u režimu bez arhiviranja @@ -1559,12 +1559,12 @@ Ako ovo omogućite, mogu biti otključani viši kvaliteti videa" Tip klijenta je skriven u „Statistici za znalce” Jezik audio strima - Da biste odabrali određeni audio jezik, isključite \'Prisiljavanje originalnog audio jezika\' + Da biste izabrali određeni jezik zvuka, isključite opciju „Prisili originalni jezik zvuka” - O + O programu Oglasi Opšte Plejer @@ -1586,7 +1586,7 @@ Ako ovo omogućite, mogu biti otključani viši kvaliteti videa" Traka kategorija je prikazana - Sakrij oznaku „Preuzmi Music Premium” + Sakrij oznaku „Nabavite Music Premium” Oznaka je skrivena Oznaka je prikazana diff --git a/patches/src/main/resources/addresources/values-sr-rSP/strings.xml b/patches/src/main/resources/addresources/values-sr-rSP/strings.xml index 1f28184e2..bcca4f5bb 100644 --- a/patches/src/main/resources/addresources/values-sr-rSP/strings.xml +++ b/patches/src/main/resources/addresources/values-sr-rSP/strings.xml @@ -89,13 +89,13 @@ Second \"item\" text" Лажирани видео стримови Лажирање клијента видео стримова да би се спречили проблеми са репродукцијом - Фалсификујте видео стримове - Фалсификујте клијентске видео стримове да бисте спречили проблеме са репродукцијом + Лажирани видео стримови + Лажирање видео стримова клијента да би се спречили проблеми са репродукцијом Лажирани видео стримови "Видео стримови су лажирани Ако сте корисник YouTube Premium-а, ово подешавање можда неће бити потребно" - "Видео стримови нису фалсификовани + "Видео стримови нису лажирани Репродукција можда неће радити" Искључивање овог подешавања може изазвати проблеме са репродукцијом. @@ -721,7 +721,7 @@ Second \"item\" text" "Мени „Аудио снимак” је скривен -Да бисте приказали мени „Аудио снимак”, промените „Лажирани видео стримови” на iPadOS" +Да бисте приказали мени „Аудио снимак”, промените опцију „Лажирани видео стримови” на iPadOS" Сакриј дугме „Гледај у ВР” Дугме „Гледај у ВР” је скривено @@ -1553,7 +1553,7 @@ Second \"item\" text" Нежељени ефекти лажирања на Android "• Мени „Аудио снимак” недостаје • Опција „Уједначена јачина звука” није доступна" - • Видео се може зауставити на 1:00, или можда неће бити доступан у неким регионима + • Видео се може зауставити на 1:00 или можда неће бити доступан у неким регионима • Експериментални клијент и може престати да ради било када • Нема видео кодека AV1 • Видеи за децу се можда неће пуштати када сте одјављени или у режиму без архивирања @@ -1562,7 +1562,7 @@ Second \"item\" text" Тип клијента је скривен у „Статистици за зналце” Језик аудио стрима - Да бисте изабрали одређени аудио језик, искључите „Принудно коришћење оригиналног аудио језика“ + Да бисте изабрали одређени језик звука, искључите опцију „Присили оригинални језик звука” @@ -1589,7 +1589,7 @@ Second \"item\" text" Трака категорија је приказана - Сакриј ознаку „Преузми Music Premium” + Сакриј ознаку „Набавите Music Premium” Ознака је скривена Ознака је приказана diff --git a/patches/src/main/resources/addresources/values-uk-rUA/strings.xml b/patches/src/main/resources/addresources/values-uk-rUA/strings.xml index 7dcc12780..d2542c591 100644 --- a/patches/src/main/resources/addresources/values-uk-rUA/strings.xml +++ b/patches/src/main/resources/addresources/values-uk-rUA/strings.xml @@ -1559,7 +1559,7 @@ Second \"item\" text" Тип клієнта приховано у вікні \"Статистика для сисадмінів\" Мова звукової доріжки - Щоб вибрати певну аудіомову, вимкніть \"Примусово використовувати оригінальну аудіомову\" + Щоб вибрати певну звукову доріжку, вимкніть \"Примусово оригінальна мова звукової доріжки\" From cbe576bc384ef5f5ee2fa341147925ed0dff568b Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Tue, 16 Sep 2025 23:24:07 +0400 Subject: [PATCH 02/19] fix(YouTube - Spoof video streams): Do not use Android Creator for livestreams --- .../extension/shared}/ByteTrieSearch.java | 6 ++-- .../extension/shared}/StringTrieSearch.java | 6 ++-- .../extension/shared}/TrieSearch.java | 30 +++++++++---------- .../spoof/requests/StreamingDataRequest.java | 27 +++++++++++++++-- .../youtube/patches/components/AdsFilter.java | 2 +- .../patches/components/CustomFilter.java | 2 +- .../DescriptionComponentsFilter.java | 2 +- .../patches/components/FilterGroup.java | 2 +- .../patches/components/FilterGroupList.java | 6 ++-- .../components/KeywordContentFilter.java | 6 ++-- .../components/LayoutComponentsFilter.java | 2 +- .../patches/components/LithoFilterPatch.java | 2 +- .../ReturnYouTubeDislikeFilter.java | 2 +- .../patches/spoof/SpoofVideoStreamsPatch.java | 6 ++-- 14 files changed, 57 insertions(+), 44 deletions(-) rename extensions/{youtube/src/main/java/app/revanced/extension/youtube => shared/library/src/main/java/app/revanced/extension/shared}/ByteTrieSearch.java (89%) rename extensions/{youtube/src/main/java/app/revanced/extension/youtube => shared/library/src/main/java/app/revanced/extension/shared}/StringTrieSearch.java (85%) rename extensions/{youtube/src/main/java/app/revanced/extension/youtube => shared/library/src/main/java/app/revanced/extension/shared}/TrieSearch.java (93%) diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/ByteTrieSearch.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/ByteTrieSearch.java similarity index 89% rename from extensions/youtube/src/main/java/app/revanced/extension/youtube/ByteTrieSearch.java rename to extensions/shared/library/src/main/java/app/revanced/extension/shared/ByteTrieSearch.java index 162e0b040..c91de4a7a 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/ByteTrieSearch.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/ByteTrieSearch.java @@ -1,6 +1,4 @@ -package app.revanced.extension.youtube; - -import androidx.annotation.NonNull; +package app.revanced.extension.shared; import java.nio.charset.StandardCharsets; @@ -39,7 +37,7 @@ public final class ByteTrieSearch extends TrieSearch { return replacement; } - public ByteTrieSearch(@NonNull byte[]... patterns) { + public ByteTrieSearch(byte[]... patterns) { super(new ByteTrieNode(), patterns); } } diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/StringTrieSearch.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/StringTrieSearch.java similarity index 85% rename from extensions/youtube/src/main/java/app/revanced/extension/youtube/StringTrieSearch.java rename to extensions/shared/library/src/main/java/app/revanced/extension/shared/StringTrieSearch.java index fbff9beba..9c7b88213 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/StringTrieSearch.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/StringTrieSearch.java @@ -1,6 +1,4 @@ -package app.revanced.extension.youtube; - -import androidx.annotation.NonNull; +package app.revanced.extension.shared; /** * Text pattern searching using a prefix tree (trie). @@ -28,7 +26,7 @@ public final class StringTrieSearch extends TrieSearch { } } - public StringTrieSearch(@NonNull String... patterns) { + public StringTrieSearch(String... patterns) { super(new StringTrieNode(), patterns); } } diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/TrieSearch.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/TrieSearch.java similarity index 93% rename from extensions/youtube/src/main/java/app/revanced/extension/youtube/TrieSearch.java rename to extensions/shared/library/src/main/java/app/revanced/extension/shared/TrieSearch.java index 74fb4685d..a871fc9b1 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/TrieSearch.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/TrieSearch.java @@ -1,6 +1,5 @@ -package app.revanced.extension.youtube; +package app.revanced.extension.shared; -import androidx.annotation.NonNull; import androidx.annotation.Nullable; import java.util.ArrayList; @@ -8,8 +7,7 @@ import java.util.Collections; import java.util.List; import java.util.Objects; -/** - * Searches for a group of different patterns using a trie (prefix tree). +/**Searches for a group of different patterns using a trie (prefix tree). * Can significantly speed up searching for multiple patterns. */ public abstract class TrieSearch { @@ -136,7 +134,7 @@ public abstract class TrieSearch { * @param patternLength Length of the pattern. * @param callback Callback, where a value of NULL indicates to always accept a pattern match. */ - private void addPattern(@NonNull T pattern, int patternIndex, int patternLength, + private void addPattern(T pattern, int patternIndex, int patternLength, @Nullable TriePatternMatchedCallback callback) { if (patternIndex == patternLength) { // Reached the end of the pattern. if (endOfPatternCallback == null) { @@ -308,13 +306,13 @@ public abstract class TrieSearch { private final List patterns = new ArrayList<>(); @SafeVarargs - TrieSearch(@NonNull TrieNode root, @NonNull T... patterns) { + TrieSearch(TrieNode root, T... patterns) { this.root = Objects.requireNonNull(root); addPatterns(patterns); } @SafeVarargs - public final void addPatterns(@NonNull T... patterns) { + public final void addPatterns(T... patterns) { for (T pattern : patterns) { addPattern(pattern); } @@ -325,7 +323,7 @@ public abstract class TrieSearch { * * @param pattern Pattern to add. Calling this with a zero length pattern does nothing. */ - public void addPattern(@NonNull T pattern) { + public void addPattern(T pattern) { addPattern(pattern, root.getTextLength(pattern), null); } @@ -333,31 +331,31 @@ public abstract class TrieSearch { * @param pattern Pattern to add. Calling this with a zero length pattern does nothing. * @param callback Callback to determine if searching should halt when a match is found. */ - public void addPattern(@NonNull T pattern, @NonNull TriePatternMatchedCallback callback) { + public void addPattern(T pattern, TriePatternMatchedCallback callback) { addPattern(pattern, root.getTextLength(pattern), Objects.requireNonNull(callback)); } - void addPattern(@NonNull T pattern, int patternLength, @Nullable TriePatternMatchedCallback callback) { + void addPattern(T pattern, int patternLength, @Nullable TriePatternMatchedCallback callback) { if (patternLength == 0) return; // Nothing to match patterns.add(pattern); root.addPattern(pattern, 0, patternLength, callback); } - public final boolean matches(@NonNull T textToSearch) { + public final boolean matches(T textToSearch) { return matches(textToSearch, 0); } - public boolean matches(@NonNull T textToSearch, @NonNull Object callbackParameter) { + public boolean matches(T textToSearch, Object callbackParameter) { return matches(textToSearch, 0, root.getTextLength(textToSearch), Objects.requireNonNull(callbackParameter)); } - public boolean matches(@NonNull T textToSearch, int startIndex) { + public boolean matches(T textToSearch, int startIndex) { return matches(textToSearch, startIndex, root.getTextLength(textToSearch)); } - public final boolean matches(@NonNull T textToSearch, int startIndex, int endIndex) { + public final boolean matches(T textToSearch, int startIndex, int endIndex) { return matches(textToSearch, startIndex, endIndex, null); } @@ -370,11 +368,11 @@ public abstract class TrieSearch { * @param callbackParameter Optional parameter passed to the callbacks. * @return If any pattern matched, and it's callback halted searching. */ - public boolean matches(@NonNull T textToSearch, int startIndex, int endIndex, @Nullable Object callbackParameter) { + public boolean matches(T textToSearch, int startIndex, int endIndex, @Nullable Object callbackParameter) { return matches(textToSearch, root.getTextLength(textToSearch), startIndex, endIndex, callbackParameter); } - private boolean matches(@NonNull T textToSearch, int textToSearchLength, int startIndex, int endIndex, + private boolean matches(T textToSearch, int textToSearchLength, int startIndex, int endIndex, @Nullable Object callbackParameter) { if (endIndex > textToSearchLength) { throw new IllegalArgumentException("endIndex: " + endIndex diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/requests/StreamingDataRequest.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/requests/StreamingDataRequest.java index 81e96b690..a9651e07a 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/requests/StreamingDataRequest.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/requests/StreamingDataRequest.java @@ -1,5 +1,6 @@ package app.revanced.extension.shared.spoof.requests; +import static app.revanced.extension.shared.ByteTrieSearch.convertStringsToBytes; import static app.revanced.extension.shared.spoof.requests.PlayerRoutes.GET_STREAMING_DATA; import androidx.annotation.NonNull; @@ -13,12 +14,18 @@ import java.net.HttpURLConnection; import java.net.SocketTimeoutException; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; -import java.util.*; +import java.util.Arrays; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; +import app.revanced.extension.shared.ByteTrieSearch; import app.revanced.extension.shared.Logger; import app.revanced.extension.shared.Utils; import app.revanced.extension.shared.settings.BaseSettings; @@ -93,6 +100,16 @@ public class StreamingDataRequest { } }); + /** + * Strings found in the response if the video is a livestream. + */ + private static final ByteTrieSearch liveStreamBufferSearch = new ByteTrieSearch( + convertStringsToBytes( + "yt_live_broadcast", + "yt_premiere_broadcast" + ) + ); + private static volatile ClientType lastSpoofedClientType; public static String getLastSpoofedClientName() { @@ -221,9 +238,13 @@ public class StreamingDataRequest { while ((bytesRead = inputStream.read(buffer)) >= 0) { baos.write(buffer, 0, bytesRead); } - lastSpoofedClientType = clientType; + if (clientType == ClientType.ANDROID_CREATOR && liveStreamBufferSearch.matches(buffer)) { + Logger.printDebug(() -> "Skipping Android Studio as video is a livestream: " + videoId); + } else { + lastSpoofedClientType = clientType; - return ByteBuffer.wrap(baos.toByteArray()); + return ByteBuffer.wrap(baos.toByteArray()); + } } } } catch (IOException ex) { diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdsFilter.java index 027fdd84a..cb604c57b 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdsFilter.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdsFilter.java @@ -10,7 +10,7 @@ import java.util.List; import app.revanced.extension.shared.Logger; import app.revanced.extension.shared.Utils; -import app.revanced.extension.youtube.StringTrieSearch; +import app.revanced.extension.shared.StringTrieSearch; import app.revanced.extension.youtube.settings.Settings; @SuppressWarnings("unused") diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CustomFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CustomFilter.java index cd6950717..1fed2e967 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CustomFilter.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CustomFilter.java @@ -14,7 +14,7 @@ import java.util.regex.Pattern; import app.revanced.extension.shared.Logger; import app.revanced.extension.shared.Utils; -import app.revanced.extension.youtube.ByteTrieSearch; +import app.revanced.extension.shared.ByteTrieSearch; import app.revanced.extension.youtube.settings.Settings; /** diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/DescriptionComponentsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/DescriptionComponentsFilter.java index c5f4ac33f..5c0870cde 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/DescriptionComponentsFilter.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/DescriptionComponentsFilter.java @@ -1,6 +1,6 @@ package app.revanced.extension.youtube.patches.components; -import app.revanced.extension.youtube.StringTrieSearch; +import app.revanced.extension.shared.StringTrieSearch; import app.revanced.extension.youtube.settings.Settings; import app.revanced.extension.youtube.shared.PlayerType; diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/FilterGroup.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/FilterGroup.java index 4e20bc82a..cf880b468 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/FilterGroup.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/FilterGroup.java @@ -4,7 +4,7 @@ import androidx.annotation.NonNull; import app.revanced.extension.shared.Logger; import app.revanced.extension.shared.settings.BooleanSetting; -import app.revanced.extension.youtube.ByteTrieSearch; +import app.revanced.extension.shared.ByteTrieSearch; abstract class FilterGroup { final static class FilterGroupResult { diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/FilterGroupList.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/FilterGroupList.java index c10b563e9..f839436c0 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/FilterGroupList.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/FilterGroupList.java @@ -5,9 +5,9 @@ import androidx.annotation.NonNull; import java.util.*; import java.util.function.Consumer; -import app.revanced.extension.youtube.ByteTrieSearch; -import app.revanced.extension.youtube.StringTrieSearch; -import app.revanced.extension.youtube.TrieSearch; +import app.revanced.extension.shared.ByteTrieSearch; +import app.revanced.extension.shared.StringTrieSearch; +import app.revanced.extension.shared.TrieSearch; abstract class FilterGroupList> implements Iterable { diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/KeywordContentFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/KeywordContentFilter.java index 470b650bb..eecf17766 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/KeywordContentFilter.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/KeywordContentFilter.java @@ -14,9 +14,9 @@ import java.util.concurrent.atomic.AtomicReference; import app.revanced.extension.shared.Logger; import app.revanced.extension.shared.Utils; -import app.revanced.extension.youtube.ByteTrieSearch; -import app.revanced.extension.youtube.StringTrieSearch; -import app.revanced.extension.youtube.TrieSearch; +import app.revanced.extension.shared.ByteTrieSearch; +import app.revanced.extension.shared.StringTrieSearch; +import app.revanced.extension.shared.TrieSearch; import app.revanced.extension.youtube.settings.Settings; import app.revanced.extension.youtube.shared.NavigationBar; import app.revanced.extension.youtube.shared.PlayerType; diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LayoutComponentsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LayoutComponentsFilter.java index 3635f25a8..7000b2a96 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LayoutComponentsFilter.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LayoutComponentsFilter.java @@ -10,7 +10,7 @@ import androidx.annotation.Nullable; import app.revanced.extension.shared.Logger; import app.revanced.extension.shared.Utils; -import app.revanced.extension.youtube.StringTrieSearch; +import app.revanced.extension.shared.StringTrieSearch; import app.revanced.extension.youtube.patches.ChangeHeaderPatch; import app.revanced.extension.youtube.settings.Settings; import app.revanced.extension.youtube.shared.NavigationBar; diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LithoFilterPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LithoFilterPatch.java index e2ed04e63..2777dec11 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LithoFilterPatch.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LithoFilterPatch.java @@ -8,7 +8,7 @@ import java.util.List; import app.revanced.extension.shared.Logger; import app.revanced.extension.shared.settings.BaseSettings; -import app.revanced.extension.youtube.StringTrieSearch; +import app.revanced.extension.shared.StringTrieSearch; import app.revanced.extension.youtube.settings.Settings; @SuppressWarnings("unused") diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ReturnYouTubeDislikeFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ReturnYouTubeDislikeFilter.java index b82cb5f56..49a623b84 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ReturnYouTubeDislikeFilter.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ReturnYouTubeDislikeFilter.java @@ -12,7 +12,7 @@ import app.revanced.extension.youtube.patches.ReturnYouTubeDislikePatch; import app.revanced.extension.youtube.patches.VideoInformation; import app.revanced.extension.youtube.settings.Settings; import app.revanced.extension.shared.Logger; -import app.revanced.extension.youtube.TrieSearch; +import app.revanced.extension.shared.TrieSearch; /** * Searches for video id's in the proto buffer of Shorts dislike. diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java index 6cd8212fb..10562d489 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java @@ -22,11 +22,9 @@ public class SpoofVideoStreamsPatch { List availableClients = List.of( ANDROID_VR_1_61_48, VISIONOS, - IPADOS, - // Creator must be next to last, because livestreams fetch successfully but don't playback. ANDROID_CREATOR, - // VR 1.43 must be last as spoof streaming data handles it slightly differently. - ANDROID_VR_1_43_32 + ANDROID_VR_1_43_32, + IPADOS ); StreamingDataRequest.setClientOrderToUse(availableClients, From 0b8b46c73e06f7c75b660e6fa645076a34660eba Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 16 Sep 2025 19:27:03 +0000 Subject: [PATCH 03/19] chore: Release v5.38.1-dev.1 [skip ci] ## [5.38.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.38.0...v5.38.1-dev.1) (2025-09-16) ### Bug Fixes * **YouTube - Spoof video streams:** Do not use Android Creator for livestreams ([cbe576b](https://github.com/ReVanced/revanced-patches/commit/cbe576bc384ef5f5ee2fa341147925ed0dff568b)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3def1fcf8..4cdb7febe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [5.38.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.38.0...v5.38.1-dev.1) (2025-09-16) + + +### Bug Fixes + +* **YouTube - Spoof video streams:** Do not use Android Creator for livestreams ([cbe576b](https://github.com/ReVanced/revanced-patches/commit/cbe576bc384ef5f5ee2fa341147925ed0dff568b)) + # [5.38.0](https://github.com/ReVanced/revanced-patches/compare/v5.37.0...v5.38.0) (2025-09-16) diff --git a/gradle.properties b/gradle.properties index 44ac67889..3e8f11168 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M org.gradle.parallel = true android.useAndroidX = true kotlin.code.style = official -version = 5.38.0 +version = 5.38.1-dev.1 From 6c3391164eb15da9e42359bf8cdf2abef53e311c Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Tue, 16 Sep 2025 23:44:01 +0400 Subject: [PATCH 04/19] chore: Remove spoof stream data migration since iPadOS can cause 1 minute playback failure for users in some regions --- .../extension/shared/settings/BaseSettings.java | 8 -------- .../extension/shared/spoof/ClientType.java | 17 ----------------- 2 files changed, 25 deletions(-) diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/BaseSettings.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/BaseSettings.java index 43ea8e226..2cb08ff90 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/BaseSettings.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/BaseSettings.java @@ -5,7 +5,6 @@ import static java.lang.Boolean.TRUE; import static app.revanced.extension.shared.settings.Setting.parent; import static app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch.AudioStreamLanguageOverrideAvailability; -import app.revanced.extension.shared.Logger; import app.revanced.extension.shared.spoof.ClientType; /** @@ -33,11 +32,4 @@ public class BaseSettings { public static final BooleanSetting SPOOF_STREAMING_DATA_STATS_FOR_NERDS = new BooleanSetting("revanced_spoof_streaming_data_stats_for_nerds", TRUE, parent(SPOOF_VIDEO_STREAMS)); // Client type must be last spoof setting due to cyclic references. public static final EnumSetting SPOOF_VIDEO_STREAMS_CLIENT_TYPE = new EnumSetting<>("revanced_spoof_video_streams_client_type", ClientType.ANDROID_VR_1_61_48, true, parent(SPOOF_VIDEO_STREAMS)); - - static { - if (SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() == ClientType.IOS_UNPLUGGED) { - Logger.printInfo(() -> "Migrating from iOS Unplugged to iPadOS"); - SPOOF_VIDEO_STREAMS_CLIENT_TYPE.save(ClientType.IPADOS); - } - } } diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/ClientType.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/ClientType.java index 4226b415c..2cbe83ad6 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/ClientType.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/ClientType.java @@ -113,23 +113,6 @@ public enum ClientType { false, false, "iPadOS" - ), - /** - * Obsolete and broken client. Here only to migrate data. - */ - @Deprecated - IOS_UNPLUGGED( - 33, - "IOS_UNPLUGGED", - "Apple", - "iPhone16,2", - "iOS", - "18.2.22C152", - "8.49", - "dummy user-agent", - true, - true, - "iOS TV" ); /** From 7eeffd3392c57555342173103d3a417c038d0970 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Wed, 17 Sep 2025 01:44:48 +0400 Subject: [PATCH 05/19] fix(YouTube Music - Spoof video streams): Remove iPadOS client --- .../patches/spoof/SpoofVideoStreamsPatch.java | 5 ++- .../extension/music/settings/Settings.java | 8 ++++ .../shared/settings/BaseSettings.java | 4 -- .../extension/shared/spoof/ClientType.java | 15 -------- .../shared/spoof/SpoofVideoStreamsPatch.java | 37 ++++++++++--------- .../shared/spoof/requests/PlayerRoutes.java | 6 +-- .../spoof/requests/StreamingDataRequest.java | 2 +- .../patches/spoof/SpoofVideoStreamsPatch.java | 7 ++-- .../extension/youtube/settings/Settings.java | 2 + ...oofStreamingDataSideEffectsPreference.java | 3 +- .../misc/spoof/SpoofVideoStreamsPatch.kt | 2 +- .../resources/addresources/values/arrays.xml | 16 +++++++- 12 files changed, 59 insertions(+), 48 deletions(-) diff --git a/extensions/music/src/main/java/app/revanced/extension/music/patches/spoof/SpoofVideoStreamsPatch.java b/extensions/music/src/main/java/app/revanced/extension/music/patches/spoof/SpoofVideoStreamsPatch.java index f6d248715..170d287be 100644 --- a/extensions/music/src/main/java/app/revanced/extension/music/patches/spoof/SpoofVideoStreamsPatch.java +++ b/extensions/music/src/main/java/app/revanced/extension/music/patches/spoof/SpoofVideoStreamsPatch.java @@ -1,5 +1,6 @@ package app.revanced.extension.music.patches.spoof; +import static app.revanced.extension.music.settings.Settings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE; import static app.revanced.extension.shared.spoof.ClientType.ANDROID_VR_1_43_32; import static app.revanced.extension.shared.spoof.ClientType.ANDROID_VR_1_61_48; import static app.revanced.extension.shared.spoof.ClientType.VISIONOS; @@ -22,6 +23,8 @@ public class SpoofVideoStreamsPatch { VISIONOS ); - StreamingDataRequest.setClientOrderToUse(availableClients, ANDROID_VR_1_43_32); + ClientType client = SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get(); + app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch.setPreferredClient(client); + StreamingDataRequest.setClientOrderToUse(availableClients, client); } } diff --git a/extensions/music/src/main/java/app/revanced/extension/music/settings/Settings.java b/extensions/music/src/main/java/app/revanced/extension/music/settings/Settings.java index 394cc7b3e..f793eef0f 100644 --- a/extensions/music/src/main/java/app/revanced/extension/music/settings/Settings.java +++ b/extensions/music/src/main/java/app/revanced/extension/music/settings/Settings.java @@ -3,8 +3,12 @@ package app.revanced.extension.music.settings; import static java.lang.Boolean.FALSE; import static java.lang.Boolean.TRUE; +import static app.revanced.extension.shared.settings.Setting.parent; + import app.revanced.extension.shared.settings.BaseSettings; import app.revanced.extension.shared.settings.BooleanSetting; +import app.revanced.extension.shared.settings.EnumSetting; +import app.revanced.extension.shared.spoof.ClientType; public class Settings extends BaseSettings { @@ -18,4 +22,8 @@ public class Settings extends BaseSettings { // Player public static final BooleanSetting PERMANENT_REPEAT = new BooleanSetting("revanced_music_play_permanent_repeat", FALSE, true); + + // Miscellaneous + public static final EnumSetting SPOOF_VIDEO_STREAMS_CLIENT_TYPE = new EnumSetting<>("revanced_spoof_video_streams_client_type", + ClientType.ANDROID_VR_1_43_32, true, parent(SPOOF_VIDEO_STREAMS)); } diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/BaseSettings.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/BaseSettings.java index 2cb08ff90..be4b58227 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/BaseSettings.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/BaseSettings.java @@ -5,8 +5,6 @@ import static java.lang.Boolean.TRUE; import static app.revanced.extension.shared.settings.Setting.parent; import static app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch.AudioStreamLanguageOverrideAvailability; -import app.revanced.extension.shared.spoof.ClientType; - /** * Settings shared across multiple apps. *

@@ -30,6 +28,4 @@ public class BaseSettings { public static final BooleanSetting SPOOF_VIDEO_STREAMS = new BooleanSetting("revanced_spoof_video_streams", TRUE, true, "revanced_spoof_video_streams_user_dialog_message"); public static final EnumSetting SPOOF_VIDEO_STREAMS_LANGUAGE = new EnumSetting<>("revanced_spoof_video_streams_language", AppLanguage.DEFAULT, new AudioStreamLanguageOverrideAvailability()); public static final BooleanSetting SPOOF_STREAMING_DATA_STATS_FOR_NERDS = new BooleanSetting("revanced_spoof_streaming_data_stats_for_nerds", TRUE, parent(SPOOF_VIDEO_STREAMS)); - // Client type must be last spoof setting due to cyclic references. - public static final EnumSetting SPOOF_VIDEO_STREAMS_CLIENT_TYPE = new EnumSetting<>("revanced_spoof_video_streams_client_type", ClientType.ANDROID_VR_1_61_48, true, parent(SPOOF_VIDEO_STREAMS)); } diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/ClientType.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/ClientType.java index 2cbe83ad6..c8323039e 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/ClientType.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/ClientType.java @@ -31,7 +31,6 @@ public enum ClientType { "132.0.6808.3", "1.61.48", false, - false, "Android VR 1.61" ), /** @@ -50,7 +49,6 @@ public enum ClientType { Objects.requireNonNull(ANDROID_VR_1_61_48.buildId), "107.0.5284.2", "1.43.32", - ANDROID_VR_1_61_48.requiresAuth, ANDROID_VR_1_61_48.useAuth, "Android VR 1.43" ), @@ -71,7 +69,6 @@ public enum ClientType { "132.0.6779.0", "23.47.101", true, - true, "Android Creator" ), /** @@ -86,7 +83,6 @@ public enum ClientType { "0.1", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Safari/605.1.15", false, - false, "visionOS" ), /** @@ -111,7 +107,6 @@ public enum ClientType { "19.22.3", "com.google.ios.youtube/19.22.3 (iPad7,6; U; CPU iPadOS 17_7_10 like Mac OS X; " + Locale.getDefault() + ")", false, - false, "iPadOS" ); @@ -180,12 +175,6 @@ public enum ClientType { */ public final String clientVersion; - /** - * If this client requires authentication and does not work - * if logged out or in incognito mode. - */ - public final boolean requiresAuth; - /** * If the client should use authentication if available. */ @@ -210,7 +199,6 @@ public enum ClientType { @NonNull String buildId, @NonNull String cronetVersion, String clientVersion, - boolean requiresAuth, boolean useAuth, String friendlyName) { this.id = id; @@ -224,7 +212,6 @@ public enum ClientType { this.buildId = buildId; this.cronetVersion = cronetVersion; this.clientVersion = clientVersion; - this.requiresAuth = requiresAuth; this.useAuth = useAuth; this.friendlyName = friendlyName; @@ -250,7 +237,6 @@ public enum ClientType { String osVersion, String clientVersion, String userAgent, - boolean requiresAuth, boolean useAuth, String friendlyName) { this.id = id; @@ -261,7 +247,6 @@ public enum ClientType { this.osVersion = osVersion; this.clientVersion = clientVersion; this.userAgent = userAgent; - this.requiresAuth = requiresAuth; this.useAuth = useAuth; this.friendlyName = friendlyName; this.packageName = null; diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/SpoofVideoStreamsPatch.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/SpoofVideoStreamsPatch.java index 12265a73a..7baa9d076 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/SpoofVideoStreamsPatch.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/SpoofVideoStreamsPatch.java @@ -7,6 +7,7 @@ import androidx.annotation.Nullable; import java.nio.ByteBuffer; import java.util.Map; +import java.util.Objects; import app.revanced.extension.shared.Logger; import app.revanced.extension.shared.Utils; @@ -17,14 +18,6 @@ import app.revanced.extension.shared.spoof.requests.StreamingDataRequest; @SuppressWarnings("unused") public class SpoofVideoStreamsPatch { - private static final boolean SPOOF_STREAMING_DATA = BaseSettings.SPOOF_VIDEO_STREAMS.get(); - - private static final boolean FIX_HLS_CURRENT_TIME = SPOOF_STREAMING_DATA - && BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() == ClientType.VISIONOS; - - @Nullable - private static volatile AppLanguage languageOverride; - /** * Domain used for internet connectivity verification. * It has an empty response body and is only used to check for a 204 response code. @@ -40,6 +33,13 @@ public class SpoofVideoStreamsPatch { private static final String INTERNET_CONNECTION_CHECK_URI_STRING = "https://www.google.com/gen_204"; private static final Uri INTERNET_CONNECTION_CHECK_URI = Uri.parse(INTERNET_CONNECTION_CHECK_URI_STRING); + private static final boolean SPOOF_STREAMING_DATA = BaseSettings.SPOOF_VIDEO_STREAMS.get(); + + @Nullable + private static volatile AppLanguage languageOverride; + + private static volatile ClientType preferredClient = ClientType.ANDROID_VR_1_61_48; + /** * @return If this patch was included during patching. */ @@ -47,10 +47,9 @@ public class SpoofVideoStreamsPatch { return false; // Modified during patching. } - public static boolean spoofingToClientWithNoMultiAudioStreams() { - return isPatchIncluded() - && BaseSettings.SPOOF_VIDEO_STREAMS.get() - && BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() != ClientType.IPADOS; + @Nullable + public static AppLanguage getLanguageOverride() { + return languageOverride; } /** @@ -61,9 +60,14 @@ public class SpoofVideoStreamsPatch { languageOverride = language; } - @Nullable - public static AppLanguage getLanguageOverride() { - return languageOverride; + public static void setPreferredClient(ClientType client) { + preferredClient = Objects.requireNonNull(client); + } + + public static boolean spoofingToClientWithNoMultiAudioStreams() { + return isPatchIncluded() + && SPOOF_STREAMING_DATA + && preferredClient != ClientType.IPADOS; } /** @@ -278,8 +282,7 @@ public class SpoofVideoStreamsPatch { public static final class AudioStreamLanguageOverrideAvailability implements Setting.Availability { @Override public boolean isAvailable() { - // Since all current clients are un-authenticated, this works for all spoof clients. - return BaseSettings.SPOOF_VIDEO_STREAMS.get(); + return BaseSettings.SPOOF_VIDEO_STREAMS.get() && !preferredClient.useAuth; } } } diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/requests/PlayerRoutes.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/requests/PlayerRoutes.java index 82db445d7..ef5907b01 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/requests/PlayerRoutes.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/requests/PlayerRoutes.java @@ -42,10 +42,10 @@ final class PlayerRoutes { JSONObject context = new JSONObject(); AppLanguage language = SpoofVideoStreamsPatch.getLanguageOverride(); - if (language == null || BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() == ANDROID_VR_1_43_32) { + if (language == null || clientType == ANDROID_VR_1_43_32) { // Force original audio has not overrode the language. - // Or if YT has fallen over to the very last client (VR 1.43), then always - // use the app language because forcing an audio stream of specific languages + // Or if YT has fallen over to the last unauthenticated client (VR 1.43), then + // always use the app language because forcing an audio stream of specific languages // can sometimes fail so it's better to try and load something rather than nothing. language = BaseSettings.SPOOF_VIDEO_STREAMS_LANGUAGE.get(); } diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/requests/StreamingDataRequest.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/requests/StreamingDataRequest.java index a9651e07a..5a4ebd1c3 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/requests/StreamingDataRequest.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/requests/StreamingDataRequest.java @@ -177,7 +177,7 @@ public class StreamingDataRequest { } } - if (!authHeadersIncludes && clientType.requiresAuth) { + if (!authHeadersIncludes && clientType.useAuth) { Logger.printDebug(() -> "Skipping client since user is not logged in: " + clientType + " videoId: " + videoId); return null; diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java index 10562d489..45e49919c 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java @@ -8,9 +8,9 @@ import static app.revanced.extension.shared.spoof.ClientType.VISIONOS; import java.util.List; -import app.revanced.extension.shared.settings.BaseSettings; import app.revanced.extension.shared.spoof.ClientType; import app.revanced.extension.shared.spoof.requests.StreamingDataRequest; +import app.revanced.extension.youtube.settings.Settings; @SuppressWarnings("unused") public class SpoofVideoStreamsPatch { @@ -27,7 +27,8 @@ public class SpoofVideoStreamsPatch { IPADOS ); - StreamingDataRequest.setClientOrderToUse(availableClients, - BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get()); + ClientType client = Settings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get(); + app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch.setPreferredClient(client); + StreamingDataRequest.setClientOrderToUse(availableClients, client); } } \ No newline at end of file diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java index d40879a3c..8f6b51920 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java @@ -41,6 +41,7 @@ import app.revanced.extension.shared.settings.LongSetting; import app.revanced.extension.shared.settings.Setting; import app.revanced.extension.shared.settings.StringSetting; import app.revanced.extension.shared.settings.preference.SharedPrefCategory; +import app.revanced.extension.shared.spoof.ClientType; import app.revanced.extension.youtube.patches.AlternativeThumbnailsPatch.DeArrowAvailability; import app.revanced.extension.youtube.patches.AlternativeThumbnailsPatch.StillImagesAvailability; import app.revanced.extension.youtube.patches.AlternativeThumbnailsPatch.ThumbnailOption; @@ -356,6 +357,7 @@ public class Settings extends BaseSettings { public static final BooleanSetting REMOVE_TRACKING_QUERY_PARAMETER = new BooleanSetting("revanced_remove_tracking_query_parameter", TRUE); public static final BooleanSetting SPOOF_DEVICE_DIMENSIONS = new BooleanSetting("revanced_spoof_device_dimensions", FALSE, true, "revanced_spoof_device_dimensions_user_dialog_message"); + public static final EnumSetting SPOOF_VIDEO_STREAMS_CLIENT_TYPE = new EnumSetting<>("revanced_spoof_video_streams_client_type", ClientType.ANDROID_VR_1_61_48, true, parent(SPOOF_VIDEO_STREAMS)); public static final BooleanSetting DEBUG_PROTOBUFFER = new BooleanSetting("revanced_debug_protobuffer", FALSE, false, "revanced_debug_protobuffer_user_dialog_message", parent(BaseSettings.DEBUG)); diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/SpoofStreamingDataSideEffectsPreference.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/SpoofStreamingDataSideEffectsPreference.java index 04f366a2f..d20881762 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/SpoofStreamingDataSideEffectsPreference.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/SpoofStreamingDataSideEffectsPreference.java @@ -15,6 +15,7 @@ import app.revanced.extension.shared.Utils; import app.revanced.extension.shared.settings.BaseSettings; import app.revanced.extension.shared.settings.Setting; import app.revanced.extension.shared.spoof.ClientType; +import app.revanced.extension.youtube.settings.Settings; @SuppressWarnings({"deprecation", "unused"}) public class SpoofStreamingDataSideEffectsPreference extends Preference { @@ -69,7 +70,7 @@ public class SpoofStreamingDataSideEffectsPreference extends Preference { } private void updateUI() { - ClientType clientType = BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get(); + ClientType clientType = Settings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get(); if (currentClientType == clientType) { return; } diff --git a/patches/src/main/kotlin/app/revanced/patches/music/misc/spoof/SpoofVideoStreamsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/music/misc/spoof/SpoofVideoStreamsPatch.kt index 7d1a4c648..0452bc3cf 100644 --- a/patches/src/main/kotlin/app/revanced/patches/music/misc/spoof/SpoofVideoStreamsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/music/misc/spoof/SpoofVideoStreamsPatch.kt @@ -38,7 +38,7 @@ val spoofVideoStreamsPatch = spoofVideoStreamsPatch( ) }, executeBlock = { - addResources("shared", "misc.spoof.spoofVideoStreamsPatch") + addResources("music", "misc.fix.playback.spoofVideoStreamsPatch") PreferenceScreen.MISC.addPreferences( PreferenceScreenPreference( diff --git a/patches/src/main/resources/addresources/values/arrays.xml b/patches/src/main/resources/addresources/values/arrays.xml index 1c174cad0..9359dc1c3 100644 --- a/patches/src/main/resources/addresources/values/arrays.xml +++ b/patches/src/main/resources/addresources/values/arrays.xml @@ -121,6 +121,20 @@ ZH + + + + + Android VR + visionOS + + + ANDROID_VR_1_43_32 + VISIONOS + + + + Android VR @@ -133,8 +147,6 @@ IPADOS - - @string/revanced_swipe_overlay_style_entry_1 From 2520129acedfc1b500fd694f2b7d65e665fc43af Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 16 Sep 2025 21:49:36 +0000 Subject: [PATCH 06/19] chore: Release v5.38.1-dev.2 [skip ci] ## [5.38.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.38.1-dev.1...v5.38.1-dev.2) (2025-09-16) ### Bug Fixes * **YouTube Music - Spoof video streams:** Remove iPadOS client ([7eeffd3](https://github.com/ReVanced/revanced-patches/commit/7eeffd3392c57555342173103d3a417c038d0970)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4cdb7febe..cb0af24f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [5.38.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.38.1-dev.1...v5.38.1-dev.2) (2025-09-16) + + +### Bug Fixes + +* **YouTube Music - Spoof video streams:** Remove iPadOS client ([7eeffd3](https://github.com/ReVanced/revanced-patches/commit/7eeffd3392c57555342173103d3a417c038d0970)) + ## [5.38.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.38.0...v5.38.1-dev.1) (2025-09-16) diff --git a/gradle.properties b/gradle.properties index 3e8f11168..8eb9d6339 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M org.gradle.parallel = true android.useAndroidX = true kotlin.code.style = official -version = 5.38.1-dev.1 +version = 5.38.1-dev.2 From a84db7be7fde2e9bb3ac41aec709a1681e845fe1 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Wed, 17 Sep 2025 11:14:24 +0400 Subject: [PATCH 07/19] feat(YouTube - Hide video action buttons): Add "Hide Shop button" setting --- .../extension/youtube/patches/components/ButtonsFilter.java | 4 ++++ .../app/revanced/extension/youtube/settings/Settings.java | 1 + .../patches/youtube/layout/buttons/action/HideButtonsPatch.kt | 1 + patches/src/main/resources/addresources/values/strings.xml | 4 ++++ 4 files changed, 10 insertions(+) diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ButtonsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ButtonsFilter.java index 3ac41318c..5a61dfc82 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ButtonsFilter.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ButtonsFilter.java @@ -74,6 +74,10 @@ final class ButtonsFilter extends Filter { Settings.HIDE_ASK_BUTTON, "yt_fill_spark" ), + new ByteArrayFilterGroup( + Settings.HIDE_SHOP_BUTTON, + "yt_outline_bag" + ), new ByteArrayFilterGroup( Settings.HIDE_STOP_ADS_BUTTON, "yt_outline_slash_circle_left" diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java index 8f6b51920..d7e1bf67e 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java @@ -230,6 +230,7 @@ public class Settings extends BaseSettings { public static final BooleanSetting HIDE_REPORT_BUTTON = new BooleanSetting("revanced_hide_report_button", FALSE); public static final BooleanSetting HIDE_SAVE_BUTTON = new BooleanSetting("revanced_hide_save_button", FALSE); public static final BooleanSetting HIDE_SHARE_BUTTON = new BooleanSetting("revanced_hide_share_button", FALSE); + public static final BooleanSetting HIDE_SHOP_BUTTON = new BooleanSetting("revanced_hide_shop_button", FALSE); public static final BooleanSetting HIDE_STOP_ADS_BUTTON = new BooleanSetting("revanced_hide_stop_ads_button", TRUE); public static final BooleanSetting HIDE_THANKS_BUTTON = new BooleanSetting("revanced_hide_thanks_button", TRUE); diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/action/HideButtonsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/action/HideButtonsPatch.kt index 7b368f31f..0881c499a 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/action/HideButtonsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/action/HideButtonsPatch.kt @@ -49,6 +49,7 @@ val hideButtonsPatch = resourcePatch( SwitchPreference("revanced_hide_report_button"), SwitchPreference("revanced_hide_save_button"), SwitchPreference("revanced_hide_share_button"), + SwitchPreference("revanced_hide_shop_button"), SwitchPreference("revanced_hide_stop_ads_button"), SwitchPreference("revanced_hide_thanks_button"), ) diff --git a/patches/src/main/resources/addresources/values/strings.xml b/patches/src/main/resources/addresources/values/strings.xml index 6a9c1c06b..ee82922d1 100644 --- a/patches/src/main/resources/addresources/values/strings.xml +++ b/patches/src/main/resources/addresources/values/strings.xml @@ -684,6 +684,10 @@ Adjust volume by swiping vertically on the right side of the screen" Hide Clip Clip button is hidden Clip button is shown + + Hide Shop + Shop button is hidden + Shop button is shown Hide Save Save button is hidden From cba44ccfc89ed55bf52c9b05dc0951bfa3e3773c Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 17 Sep 2025 07:19:06 +0000 Subject: [PATCH 08/19] chore: Release v5.39.0-dev.1 [skip ci] # [5.39.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.38.1-dev.2...v5.39.0-dev.1) (2025-09-17) ### Features * **YouTube - Hide video action buttons:** Add "Hide Shop button" setting ([a84db7b](https://github.com/ReVanced/revanced-patches/commit/a84db7be7fde2e9bb3ac41aec709a1681e845fe1)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb0af24f1..c94976589 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [5.39.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.38.1-dev.2...v5.39.0-dev.1) (2025-09-17) + + +### Features + +* **YouTube - Hide video action buttons:** Add "Hide Shop button" setting ([a84db7b](https://github.com/ReVanced/revanced-patches/commit/a84db7be7fde2e9bb3ac41aec709a1681e845fe1)) + ## [5.38.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.38.1-dev.1...v5.38.1-dev.2) (2025-09-16) diff --git a/gradle.properties b/gradle.properties index 8eb9d6339..8b08ed1eb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M org.gradle.parallel = true android.useAndroidX = true kotlin.code.style = official -version = 5.38.1-dev.2 +version = 5.39.0-dev.1 From c9f741e616c7acab0cd4558e02b0c4ec18392c10 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Wed, 17 Sep 2025 12:54:52 +0400 Subject: [PATCH 09/19] fix(YouTube - Spoof video streams): Show Android Studio in spoof stream menu --- .../revanced/extension/shared/spoof/ClientType.java | 2 +- .../SpoofStreamingDataSideEffectsPreference.java | 10 +++++----- .../src/main/resources/addresources/values/arrays.xml | 2 ++ 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/ClientType.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/ClientType.java index c8323039e..96299facc 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/ClientType.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/ClientType.java @@ -69,7 +69,7 @@ public enum ClientType { "132.0.6779.0", "23.47.101", true, - "Android Creator" + "Android Studio" ), /** * Internal YT client for an unreleased YT client. May stop working at any time. diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/SpoofStreamingDataSideEffectsPreference.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/SpoofStreamingDataSideEffectsPreference.java index d20881762..ae84c9dc2 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/SpoofStreamingDataSideEffectsPreference.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/SpoofStreamingDataSideEffectsPreference.java @@ -83,19 +83,19 @@ public class SpoofStreamingDataSideEffectsPreference extends Preference { String summary = str(clientType == ClientType.IPADOS ? "revanced_spoof_video_streams_about_ipados_summary" - // visionOS has same base side effects as Android VR. + // Same base side effects for Android VR, Android Studio, and visionOS. : "revanced_spoof_video_streams_about_android_summary"); if (clientType == ClientType.IPADOS) { - summary = str("revanced_spoof_video_streams_about_no_av1") - + '\n' + summary; + summary += '\n' + str("revanced_spoof_video_streams_about_no_av1"); } else if (clientType == ClientType.VISIONOS) { summary = str("revanced_spoof_video_streams_about_experimental") + '\n' + summary + '\n' + str("revanced_spoof_video_streams_about_no_av1") + '\n' + str("revanced_spoof_video_streams_about_kids_videos"); - } else { - summary += '\n' + str("revanced_spoof_video_streams_about_kids_videos"); + } else if (clientType == ClientType.ANDROID_CREATOR) { + summary += '\n' + str("revanced_spoof_video_streams_about_no_av1") + + '\n' + str("revanced_spoof_video_streams_about_kids_videos"); } setSummary(summary); diff --git a/patches/src/main/resources/addresources/values/arrays.xml b/patches/src/main/resources/addresources/values/arrays.xml index 9359dc1c3..f1975f0b9 100644 --- a/patches/src/main/resources/addresources/values/arrays.xml +++ b/patches/src/main/resources/addresources/values/arrays.xml @@ -138,11 +138,13 @@ Android VR + Android Studio visionOS iPadOS ANDROID_VR_1_61_48 + ANDROID_CREATOR VISIONOS IPADOS From 3eac25cf7fe81d685dbe17435f7b17a9ade37511 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 17 Sep 2025 12:56:47 +0400 Subject: [PATCH 10/19] chore: Sync translations (#5914) --- .../addresources/values-af-rZA/strings.xml | 1 + .../addresources/values-am-rET/strings.xml | 1 + .../addresources/values-ar-rSA/strings.xml | 4 +++ .../addresources/values-as-rIN/strings.xml | 1 + .../addresources/values-az-rAZ/strings.xml | 1 + .../addresources/values-be-rBY/strings.xml | 4 +++ .../addresources/values-bg-rBG/strings.xml | 4 +++ .../addresources/values-bn-rBD/strings.xml | 4 +++ .../addresources/values-bs-rBA/strings.xml | 1 + .../addresources/values-ca-rES/strings.xml | 1 + .../addresources/values-cs-rCZ/strings.xml | 4 +++ .../addresources/values-da-rDK/strings.xml | 4 +++ .../addresources/values-de-rDE/strings.xml | 4 +++ .../addresources/values-el-rGR/strings.xml | 4 +++ .../addresources/values-es-rES/strings.xml | 4 +++ .../addresources/values-et-rEE/strings.xml | 4 +++ .../addresources/values-eu-rES/strings.xml | 1 + .../addresources/values-fa-rIR/strings.xml | 1 + .../addresources/values-fi-rFI/strings.xml | 4 +++ .../addresources/values-fil-rPH/strings.xml | 4 +++ .../addresources/values-fr-rFR/strings.xml | 4 +++ .../addresources/values-ga-rIE/strings.xml | 4 +++ .../addresources/values-gl-rES/strings.xml | 1 + .../addresources/values-gu-rIN/strings.xml | 1 + .../addresources/values-hi-rIN/strings.xml | 1 + .../addresources/values-hr-rHR/strings.xml | 1 + .../addresources/values-hu-rHU/strings.xml | 4 +++ .../addresources/values-hy-rAM/strings.xml | 4 +++ .../addresources/values-in-rID/strings.xml | 6 +++- .../addresources/values-is-rIS/strings.xml | 1 + .../addresources/values-it-rIT/strings.xml | 4 +++ .../addresources/values-iw-rIL/strings.xml | 4 +++ .../addresources/values-ja-rJP/strings.xml | 36 ++++++++++--------- .../addresources/values-ka-rGE/strings.xml | 1 + .../addresources/values-kk-rKZ/strings.xml | 1 + .../addresources/values-km-rKH/strings.xml | 1 + .../addresources/values-kn-rIN/strings.xml | 1 + .../addresources/values-ko-rKR/strings.xml | 4 +++ .../addresources/values-ky-rKG/strings.xml | 1 + .../addresources/values-lo-rLA/strings.xml | 1 + .../addresources/values-lt-rLT/strings.xml | 4 +++ .../addresources/values-lv-rLV/strings.xml | 4 +++ .../addresources/values-mk-rMK/strings.xml | 1 + .../addresources/values-ml-rIN/strings.xml | 1 + .../addresources/values-mn-rMN/strings.xml | 1 + .../addresources/values-mr-rIN/strings.xml | 1 + .../addresources/values-ms-rMY/strings.xml | 1 + .../addresources/values-my-rMM/strings.xml | 1 + .../addresources/values-nb-rNO/strings.xml | 1 + .../addresources/values-ne-rIN/strings.xml | 1 + .../addresources/values-nl-rNL/strings.xml | 4 +++ .../addresources/values-or-rIN/strings.xml | 1 + .../addresources/values-pa-rIN/strings.xml | 1 + .../addresources/values-pl-rPL/strings.xml | 4 +++ .../addresources/values-pt-rBR/strings.xml | 4 +++ .../addresources/values-pt-rPT/strings.xml | 4 +++ .../addresources/values-ro-rRO/strings.xml | 4 +++ .../addresources/values-ru-rRU/strings.xml | 4 +++ .../addresources/values-si-rLK/strings.xml | 1 + .../addresources/values-sk-rSK/strings.xml | 4 +++ .../addresources/values-sl-rSI/strings.xml | 4 +++ .../addresources/values-sq-rAL/strings.xml | 4 +++ .../addresources/values-sr-rCS/strings.xml | 4 +++ .../addresources/values-sr-rSP/strings.xml | 4 +++ .../addresources/values-sv-rSE/strings.xml | 4 +++ .../addresources/values-sw-rKE/strings.xml | 1 + .../addresources/values-ta-rIN/strings.xml | 1 + .../addresources/values-te-rIN/strings.xml | 1 + .../addresources/values-th-rTH/strings.xml | 4 +++ .../addresources/values-tr-rTR/strings.xml | 4 +++ .../addresources/values-uk-rUA/strings.xml | 4 +++ .../addresources/values-ur-rIN/strings.xml | 1 + .../addresources/values-uz-rUZ/strings.xml | 1 + .../addresources/values-vi-rVN/strings.xml | 4 +++ .../addresources/values-zh-rCN/strings.xml | 4 +++ .../addresources/values-zh-rTW/strings.xml | 4 +++ .../addresources/values-zu-rZA/strings.xml | 1 + 77 files changed, 217 insertions(+), 17 deletions(-) diff --git a/patches/src/main/resources/addresources/values-af-rZA/strings.xml b/patches/src/main/resources/addresources/values-af-rZA/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-af-rZA/strings.xml +++ b/patches/src/main/resources/addresources/values-af-rZA/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-am-rET/strings.xml b/patches/src/main/resources/addresources/values-am-rET/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-am-rET/strings.xml +++ b/patches/src/main/resources/addresources/values-am-rET/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-ar-rSA/strings.xml b/patches/src/main/resources/addresources/values-ar-rSA/strings.xml index 38a2d9a3b..8915ca942 100644 --- a/patches/src/main/resources/addresources/values-ar-rSA/strings.xml +++ b/patches/src/main/resources/addresources/values-ar-rSA/strings.xml @@ -621,6 +621,10 @@ Second \"item\" text" إخفاء المقطع تم إخفاء زر إنشاء مقطع يتم عرض زر إنشاء مقطع + + إخفاء المتجر + زر المتجر مخفي + زر المتجر معروض إخفاء حفظ زر الحفظ مخفي diff --git a/patches/src/main/resources/addresources/values-as-rIN/strings.xml b/patches/src/main/resources/addresources/values-as-rIN/strings.xml index 4a61a68fb..a87acac0a 100644 --- a/patches/src/main/resources/addresources/values-as-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-as-rIN/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-az-rAZ/strings.xml b/patches/src/main/resources/addresources/values-az-rAZ/strings.xml index fa85ea1ad..1480d8734 100644 --- a/patches/src/main/resources/addresources/values-az-rAZ/strings.xml +++ b/patches/src/main/resources/addresources/values-az-rAZ/strings.xml @@ -621,6 +621,7 @@ Ekranın sağ tərəfində düzünə sürüşdürərək səs səviyyəsini tənz Kəsmə/ gizlət Kəsmə düyməsi gizlidir Kəsmə düyməsi göstərilir + Saxlayın-ı Gizlət Saxlayın düyməsi gizlidir diff --git a/patches/src/main/resources/addresources/values-be-rBY/strings.xml b/patches/src/main/resources/addresources/values-be-rBY/strings.xml index 716a78e72..a281adf3a 100644 --- a/patches/src/main/resources/addresources/values-be-rBY/strings.xml +++ b/patches/src/main/resources/addresources/values-be-rBY/strings.xml @@ -621,6 +621,10 @@ Second \"item\" text" Схаваць кліп Кнопка кліпа схавана Паказана кнопка кліпа + + Схаваць Краму + Кнопка \"Крама\" схавана + Кнопка \"Крама\" паказана Схаваць \"Захаваць\" Кнопка \"Захаваць\" схавана diff --git a/patches/src/main/resources/addresources/values-bg-rBG/strings.xml b/patches/src/main/resources/addresources/values-bg-rBG/strings.xml index 35a1ad853..51fac4739 100644 --- a/patches/src/main/resources/addresources/values-bg-rBG/strings.xml +++ b/patches/src/main/resources/addresources/values-bg-rBG/strings.xml @@ -621,6 +621,10 @@ Second \"item\" text" Бутон за създаване на клип Бутона за клип е скрит Бутона за клип се показва + + Скрий магазин + Бутонът за магазин е скрит + Бутонът за магазин е показан Скриване на Запазване Бутонът за запазване е скрит diff --git a/patches/src/main/resources/addresources/values-bn-rBD/strings.xml b/patches/src/main/resources/addresources/values-bn-rBD/strings.xml index f6dc3a91e..dd836b3fd 100644 --- a/patches/src/main/resources/addresources/values-bn-rBD/strings.xml +++ b/patches/src/main/resources/addresources/values-bn-rBD/strings.xml @@ -617,6 +617,10 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ ক্লিপ লুকান ক্লিপ বোতাম লুকিয়ে রয়েছে ক্লিপ বোতাম প্রদর্শিত হয়েছে + + শপ লুকান + শপ বাটন লুকানো আছে + শপ বাটন দেখানো আছে সংরক্ষণ লুকান সংরক্ষণ বোতাম লুকানো আছে diff --git a/patches/src/main/resources/addresources/values-bs-rBA/strings.xml b/patches/src/main/resources/addresources/values-bs-rBA/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-bs-rBA/strings.xml +++ b/patches/src/main/resources/addresources/values-bs-rBA/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-ca-rES/strings.xml b/patches/src/main/resources/addresources/values-ca-rES/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-ca-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-ca-rES/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml b/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml index 77e842c93..2d024b320 100644 --- a/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml +++ b/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml @@ -621,6 +621,10 @@ Hlasitost se upravuje svislým přejetím po pravé straně obrazovky" Skrýt Klip Tlačítko Klip je skryto Tlačítko Klip je zobrazeno + + Skrýt Obchod + Tlačítko Obchod je skryté + Tlačítko Obchod je zobrazené Skrýt Uložit Tlačítko Uložit je skryté diff --git a/patches/src/main/resources/addresources/values-da-rDK/strings.xml b/patches/src/main/resources/addresources/values-da-rDK/strings.xml index b066433f7..a03915052 100644 --- a/patches/src/main/resources/addresources/values-da-rDK/strings.xml +++ b/patches/src/main/resources/addresources/values-da-rDK/strings.xml @@ -621,6 +621,10 @@ Juster lydstyrken ved at swipe lodret i højre side af skærmen" Skjul klip Klip knappen er skjult Klip knappen er vist + + Skjul butik + Butiksknappen er skjult + Butiksknappen vises Skjul Gem Knappen \"Gem\" er skjult diff --git a/patches/src/main/resources/addresources/values-de-rDE/strings.xml b/patches/src/main/resources/addresources/values-de-rDE/strings.xml index 49340e0f7..ca4918053 100644 --- a/patches/src/main/resources/addresources/values-de-rDE/strings.xml +++ b/patches/src/main/resources/addresources/values-de-rDE/strings.xml @@ -616,6 +616,10 @@ Passen Sie die Helligkeit an, indem Sie auf der linken Seite des Bildschirms ver Clip ausblenden Clip-Button ist ausgeblendet Clip-Taste wird angezeigt + + Shop ausblenden + Shop-Button ist ausgeblendet + Shop-Button wird angezeigt Speichern ausblenden Schaltfläche \"Speichern\" ist ausgeblendet diff --git a/patches/src/main/resources/addresources/values-el-rGR/strings.xml b/patches/src/main/resources/addresources/values-el-rGR/strings.xml index f96694861..b4837832b 100644 --- a/patches/src/main/resources/addresources/values-el-rGR/strings.xml +++ b/patches/src/main/resources/addresources/values-el-rGR/strings.xml @@ -623,6 +623,10 @@ Second \"item\" text" Κουμπί «Κλιπ» Κρυμμένο Εμφανίζεται + + Κουμπί «Αγορές» + Κρυμμένο + Εμφανίζεται Κουμπί «Αποθήκευση» Κρυμμένο diff --git a/patches/src/main/resources/addresources/values-es-rES/strings.xml b/patches/src/main/resources/addresources/values-es-rES/strings.xml index d1aab2ab8..d0333a8f1 100644 --- a/patches/src/main/resources/addresources/values-es-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-es-rES/strings.xml @@ -621,6 +621,10 @@ Ajusta el volumen deslizando verticalmente en el lado derecho de la pantalla"Ocultar Recortar El botón del recortar está oculto Se muestra el botón de recortar + + Ocultar Tienda + El botón de la Tienda está oculto + El botón de la Tienda es visible Ocultar Guardar El botón de Guardar está oculto diff --git a/patches/src/main/resources/addresources/values-et-rEE/strings.xml b/patches/src/main/resources/addresources/values-et-rEE/strings.xml index 99707154b..d8db71a23 100644 --- a/patches/src/main/resources/addresources/values-et-rEE/strings.xml +++ b/patches/src/main/resources/addresources/values-et-rEE/strings.xml @@ -621,6 +621,10 @@ Helitugevuse reguleerimiseks pühkige ekraani paremal küljel vertikaalselt"Peida Lõik Lõigu nupp on peidetud Lõigu nupp on nähtav + + Peida pood + Poe nupp on peidetud + Poe nupp on nähtaval Peida Salvesta Nupp Salvesta on peidetud diff --git a/patches/src/main/resources/addresources/values-eu-rES/strings.xml b/patches/src/main/resources/addresources/values-eu-rES/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-eu-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-eu-rES/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-fa-rIR/strings.xml b/patches/src/main/resources/addresources/values-fa-rIR/strings.xml index 51d77d7c8..cdb190b76 100644 --- a/patches/src/main/resources/addresources/values-fa-rIR/strings.xml +++ b/patches/src/main/resources/addresources/values-fa-rIR/strings.xml @@ -147,6 +147,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-fi-rFI/strings.xml b/patches/src/main/resources/addresources/values-fi-rFI/strings.xml index 165bb5c18..e7ec478b1 100644 --- a/patches/src/main/resources/addresources/values-fi-rFI/strings.xml +++ b/patches/src/main/resources/addresources/values-fi-rFI/strings.xml @@ -621,6 +621,10 @@ Säädä äänenvoimakkuutta pyyhkäisemällä pystysuoraan näytön oikealta pu Piilota Klippi Klippi-painike on piilotettu Klippi-painike näytetään + + Piilota Ostokset + Kauppa-painike on piilotettu + Kauppa-painike näytetään Piilota Tallenna Tallenna-painike on piilotettu diff --git a/patches/src/main/resources/addresources/values-fil-rPH/strings.xml b/patches/src/main/resources/addresources/values-fil-rPH/strings.xml index cab88824d..f4b5ecd8b 100644 --- a/patches/src/main/resources/addresources/values-fil-rPH/strings.xml +++ b/patches/src/main/resources/addresources/values-fil-rPH/strings.xml @@ -621,6 +621,10 @@ Ayusin ang volume sa pamamagitan ng pag-swipe nang patayo sa kanang bahagi ng sc Itago ang Clip Nakatago ang clip button Ang pindutan ng clip ay ipinapakita + + Itago ang Tindahan + Ang pindutan ng Tindahan ay nakatago + Ang pindutan ng Tindahan ay nakikita Itago ang I-save Nakatago ang button ng I-save diff --git a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml index 50fc5319c..50123e64e 100644 --- a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml +++ b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml @@ -621,6 +621,10 @@ Réglez le volume en balayant verticalement sur le côté droit de l'écran"Masquer \"Clip\" Le bouton Clip est masqué Le bouton Clip est affiché + + Masquer la Boutique + Le bouton Boutique est masqué + Le bouton Boutique est affiché Masquer \"Enregistrer\" Le bouton Enregistrer est masqué diff --git a/patches/src/main/resources/addresources/values-ga-rIE/strings.xml b/patches/src/main/resources/addresources/values-ga-rIE/strings.xml index c69c02553..8bfaee92b 100644 --- a/patches/src/main/resources/addresources/values-ga-rIE/strings.xml +++ b/patches/src/main/resources/addresources/values-ga-rIE/strings.xml @@ -621,6 +621,10 @@ Coigeartaigh an toirt trí haisceartán go hingearach ar thaobh deas an scáile Folaigh Gearrthóg Tá an cnaipe gearrthóg i bhfolach Taispeántar cnaipe gearrthóg + + Folaigh Siopa + Tá cnaipe an tSiopa i bhfolach + Tá cnaipe an tSiopa ar taispeáint Folaigh Sábháil Tá cnaipe sábhála i bhfolach diff --git a/patches/src/main/resources/addresources/values-gl-rES/strings.xml b/patches/src/main/resources/addresources/values-gl-rES/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-gl-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-gl-rES/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-gu-rIN/strings.xml b/patches/src/main/resources/addresources/values-gu-rIN/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-gu-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-gu-rIN/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-hi-rIN/strings.xml b/patches/src/main/resources/addresources/values-hi-rIN/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-hi-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-hi-rIN/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-hr-rHR/strings.xml b/patches/src/main/resources/addresources/values-hr-rHR/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-hr-rHR/strings.xml +++ b/patches/src/main/resources/addresources/values-hr-rHR/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-hu-rHU/strings.xml b/patches/src/main/resources/addresources/values-hu-rHU/strings.xml index 15d6e0b9e..3f10b0efa 100644 --- a/patches/src/main/resources/addresources/values-hu-rHU/strings.xml +++ b/patches/src/main/resources/addresources/values-hu-rHU/strings.xml @@ -621,6 +621,10 @@ A hangerő a képernyő jobb oldalán függőlegesen húzva állítható be"Vágás gomb elrejtése A klip gomb el van rejtve A klip gomb látható + + Bolt elrejtése + A Bolt gomb elrejtve + A Bolt gomb látható Mentés elrejtése A mentés gomb rejtett diff --git a/patches/src/main/resources/addresources/values-hy-rAM/strings.xml b/patches/src/main/resources/addresources/values-hy-rAM/strings.xml index 0e4d92290..6fbc92610 100644 --- a/patches/src/main/resources/addresources/values-hy-rAM/strings.xml +++ b/patches/src/main/resources/addresources/values-hy-rAM/strings.xml @@ -621,6 +621,10 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել Թաքցնել Clip Clip կոճակը թաքցված է Clip կոճակը ցուցադրվում է + + Թաքցնել Խանութը + Խանութի կոճակը թաքնված է + Խանութի կոճակը ցուցադրվում է Թաքցնել պահելը Պահելու կոճակը թաքցված է diff --git a/patches/src/main/resources/addresources/values-in-rID/strings.xml b/patches/src/main/resources/addresources/values-in-rID/strings.xml index a45bc4e8e..aa1c5d8ee 100644 --- a/patches/src/main/resources/addresources/values-in-rID/strings.xml +++ b/patches/src/main/resources/addresources/values-in-rID/strings.xml @@ -98,7 +98,7 @@ Jika Anda adalah pengguna YouTube Premium, setelan ini mungkin tidak diperlukan" "Aliran video tidak dipalsukan Pemutaran mungkin tidak berfungsi" - Mematikan pengaturan ini dapat menyebabkan masalah pemutaran. + Menonaktifkan pengaturan ini mungkin menyebabkan masalah pemutaran. Klien bawaan @@ -621,6 +621,10 @@ Menyesuaikan volume dengan mengusap secara vertikal di sisi kanan layar"Sembunyikan Klip Tombol klip disembunyikan Tombol klip ditampilkan + + Sembunyikan Toko + Tombol Toko disembunyikan + Tombol Toko ditampilkan Sembunyikan Simpan Tombol Simpan disembunyikan diff --git a/patches/src/main/resources/addresources/values-is-rIS/strings.xml b/patches/src/main/resources/addresources/values-is-rIS/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-is-rIS/strings.xml +++ b/patches/src/main/resources/addresources/values-is-rIS/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-it-rIT/strings.xml b/patches/src/main/resources/addresources/values-it-rIT/strings.xml index b398a1589..9194b9c77 100644 --- a/patches/src/main/resources/addresources/values-it-rIT/strings.xml +++ b/patches/src/main/resources/addresources/values-it-rIT/strings.xml @@ -621,6 +621,10 @@ Regola il volume scorrendo verticalmente sul lato destro dello schermo" Nascondi Clip Il pulsante Clip è nascosto Il pulsante Clip è visibile + + Nascondi Acquisti + Il pulsante Acquisti è nascosto + Il pulsante Acquisti è visibile Nascondi Salva Il pulsante Salva è nascosto diff --git a/patches/src/main/resources/addresources/values-iw-rIL/strings.xml b/patches/src/main/resources/addresources/values-iw-rIL/strings.xml index e5afe0f0a..94897e369 100644 --- a/patches/src/main/resources/addresources/values-iw-rIL/strings.xml +++ b/patches/src/main/resources/addresources/values-iw-rIL/strings.xml @@ -621,6 +621,10 @@ Second \"item\" text" הסתר קליפ לחצן קליפ מוסתר לחצן קליפ מוצג + + הסתר \'חנות\' + הלחצן \'חנות\' מוסתר + הלחצן \'חנות\' מוצג הסתר \'שמירה\' הלחצן \'שמירה\' מוסתר diff --git a/patches/src/main/resources/addresources/values-ja-rJP/strings.xml b/patches/src/main/resources/addresources/values-ja-rJP/strings.xml index d9cd992c3..1e25e7449 100644 --- a/patches/src/main/resources/addresources/values-ja-rJP/strings.xml +++ b/patches/src/main/resources/addresources/values-ja-rJP/strings.xml @@ -90,15 +90,15 @@ GmsCore の電池の最適化を無効にしても、バッテリーの使用に 動画ストリームを偽装 動画再生の失敗を回避するために、クライアントの動画ストリームを偽装します 動画ストリームを偽装 - 再生の問題を防ぐためにクライアントのビデオストリームを偽装する + 動画再生の失敗を回避するために、クライアントの動画ストリームを偽装します 動画ストリームを偽装 "動画ストリームは偽装されます YouTube Premium ユーザーの場合、この設定は必要ない可能性があります" - "ビデオストリームが偽装されていません + "動画ストリームは偽装されません -再生できない可能性があります" - この設定をオフにすると、再生の問題が発生する可能性があります。 +再生に失敗する可能性があります" + この設定を無効にすると、動画の再生に失敗するようになる可能性があります。 デフォルトのクライアント @@ -623,6 +623,10 @@ YouTube Premium ユーザーの場合、この設定は必要ない可能性が クリップボタンを非表示 クリップボタンは表示されません クリップボタンは表示されます + + 「ショップ」を非表示 + ショップボタンは表示されません + ショップボタンは表示されます 「保存」を非表示にする 「保存」ボタンは表示されません @@ -1553,7 +1557,7 @@ Automotive レイアウト Android クライアントの副作用 "• 「音声トラック」がフライアウト メニューに表示されない • 「一定音量」が利用できない" - • 動画は1:00で停止する場合があります。または、一部の地域では利用できない場合があります。 + • 動画が 01:00 で停止する、または一部の地域で利用できない可能性がある • 実験的なクライアントであり、いつでも動作しなくなる可能性がある • AV1 コーデックが利用できない • ログアウト時またはシークレット モード時に、子ども向け動画が再生されない可能性がある @@ -1562,14 +1566,14 @@ Automotive レイアウト 統計情報に現在のクライアントは表示されません 音声ストリームの言語 - 特定の音声言語を選択するには、「元の音声言語を強制」をオフにしてください + 特定の音声言語を選択するには、「オリジナルの音声を強制的に使用」を無効にしてください ReVanced について 広告 - その他 + 全般 プレーヤー その他 @@ -1579,24 +1583,24 @@ Automotive レイアウト 動画広告は表示されます - 永続リピートを有効にする - 永続リピートが有効です - 永続リピートが無効です + 常時リピートを有効化 + 常時リピートは有効です\n\nリピート設定が保存され常時適用されます + 常時リピートは無効です\n\nリピート設定は保存されません カテゴリバーを非表示 - カテゴリバーは非表示です + カテゴリバーは表示されません カテゴリバーは表示されます - 「Get Music Premium」ラベルを非表示 - ラベルは非表示です + 「Music Premium に登録」ラベルを非表示 + ラベルは表示されません ラベルは表示されます - アップグレードボタンを非表示 - 「メンバーになる」ボタンは表示されません - 「メンバーになる」ボタンは表示されます + アップグレード ボタンを非表示 + ボタンは表示されません + ボタンは表示されます diff --git a/patches/src/main/resources/addresources/values-ka-rGE/strings.xml b/patches/src/main/resources/addresources/values-ka-rGE/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-ka-rGE/strings.xml +++ b/patches/src/main/resources/addresources/values-ka-rGE/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml b/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml +++ b/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-km-rKH/strings.xml b/patches/src/main/resources/addresources/values-km-rKH/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-km-rKH/strings.xml +++ b/patches/src/main/resources/addresources/values-km-rKH/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-kn-rIN/strings.xml b/patches/src/main/resources/addresources/values-kn-rIN/strings.xml index c7288141f..a46a49eb4 100644 --- a/patches/src/main/resources/addresources/values-kn-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-kn-rIN/strings.xml @@ -115,6 +115,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml index 3615bcf31..db50315b6 100644 --- a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml +++ b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml @@ -619,6 +619,10 @@ YouTube Premium 사용자라면 이 설정은 필요하지 않을 수 있습니 클립 버튼 숨기기 클립 버튼이 숨겨집니다 클립 버튼이 표시됩니다 + + 쇼핑 버튼 숨기기 + 쇼핑 버튼이 숨겨집니다 + 쇼핑 버튼이 표시됩니다 저장 버튼 숨기기 저장 버튼이 숨겨집니다 diff --git a/patches/src/main/resources/addresources/values-ky-rKG/strings.xml b/patches/src/main/resources/addresources/values-ky-rKG/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-ky-rKG/strings.xml +++ b/patches/src/main/resources/addresources/values-ky-rKG/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-lo-rLA/strings.xml b/patches/src/main/resources/addresources/values-lo-rLA/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-lo-rLA/strings.xml +++ b/patches/src/main/resources/addresources/values-lo-rLA/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-lt-rLT/strings.xml b/patches/src/main/resources/addresources/values-lt-rLT/strings.xml index a66bbd8fa..9ccd7fb44 100644 --- a/patches/src/main/resources/addresources/values-lt-rLT/strings.xml +++ b/patches/src/main/resources/addresources/values-lt-rLT/strings.xml @@ -621,6 +621,10 @@ Reguliuokite garsumą braukdami vertikaliai dešinėje ekrano pusėje" Slėpti Iškarpą Iškarpos mygtukas paslėptas Iškarpos mygtukas rodomas + + Slėpti parduotuvę + Parduotuvės mygtukas paslėptas + Parduotuvės mygtukas rodomas Slėpti Išsaugoti Išsaugojimo mygtukas paslėptas diff --git a/patches/src/main/resources/addresources/values-lv-rLV/strings.xml b/patches/src/main/resources/addresources/values-lv-rLV/strings.xml index 4e9c8f690..72bfc5fe9 100644 --- a/patches/src/main/resources/addresources/values-lv-rLV/strings.xml +++ b/patches/src/main/resources/addresources/values-lv-rLV/strings.xml @@ -621,6 +621,10 @@ Regulējiet skaļumu, velkot vertikāli ekrāna labajā pusē" Paslēpt Izgriezt Izgriezt poga ir paslēpta Izgriezt poga ir redzama + + Paslēpt veikalu + Veikala poga ir paslēpta + Veikala poga ir redzama Paslēpt Saglabāt Poga Saglabāt ir paslēpta diff --git a/patches/src/main/resources/addresources/values-mk-rMK/strings.xml b/patches/src/main/resources/addresources/values-mk-rMK/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-mk-rMK/strings.xml +++ b/patches/src/main/resources/addresources/values-mk-rMK/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-ml-rIN/strings.xml b/patches/src/main/resources/addresources/values-ml-rIN/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-ml-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-ml-rIN/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-mn-rMN/strings.xml b/patches/src/main/resources/addresources/values-mn-rMN/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-mn-rMN/strings.xml +++ b/patches/src/main/resources/addresources/values-mn-rMN/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-mr-rIN/strings.xml b/patches/src/main/resources/addresources/values-mr-rIN/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-mr-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-mr-rIN/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-ms-rMY/strings.xml b/patches/src/main/resources/addresources/values-ms-rMY/strings.xml index d8bf2a45f..177641f2e 100644 --- a/patches/src/main/resources/addresources/values-ms-rMY/strings.xml +++ b/patches/src/main/resources/addresources/values-ms-rMY/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-my-rMM/strings.xml b/patches/src/main/resources/addresources/values-my-rMM/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-my-rMM/strings.xml +++ b/patches/src/main/resources/addresources/values-my-rMM/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-nb-rNO/strings.xml b/patches/src/main/resources/addresources/values-nb-rNO/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-nb-rNO/strings.xml +++ b/patches/src/main/resources/addresources/values-nb-rNO/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-ne-rIN/strings.xml b/patches/src/main/resources/addresources/values-ne-rIN/strings.xml index f02157c05..39674e0dc 100644 --- a/patches/src/main/resources/addresources/values-ne-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-ne-rIN/strings.xml @@ -102,6 +102,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-nl-rNL/strings.xml b/patches/src/main/resources/addresources/values-nl-rNL/strings.xml index a77caaf9f..2a9f14c8d 100644 --- a/patches/src/main/resources/addresources/values-nl-rNL/strings.xml +++ b/patches/src/main/resources/addresources/values-nl-rNL/strings.xml @@ -621,6 +621,10 @@ Pas het volume aan door verticaal over de rechterkant van het scherm te vegen"Fragment verbergen Fragment knop is verborgen Fragment knop wordt weergegeven + + Winkel verbergen + Winkelknop is verborgen + Winkelknop is weergegeven Opslaan verbergen Knop \"Opslaan\" is verborgen diff --git a/patches/src/main/resources/addresources/values-or-rIN/strings.xml b/patches/src/main/resources/addresources/values-or-rIN/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-or-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-or-rIN/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-pa-rIN/strings.xml b/patches/src/main/resources/addresources/values-pa-rIN/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-pa-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-pa-rIN/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-pl-rPL/strings.xml b/patches/src/main/resources/addresources/values-pl-rPL/strings.xml index 75754d9f8..0af1ca4cb 100644 --- a/patches/src/main/resources/addresources/values-pl-rPL/strings.xml +++ b/patches/src/main/resources/addresources/values-pl-rPL/strings.xml @@ -617,6 +617,10 @@ Dostosuj głośność, przesuwając pionowo po prawej stronie ekranu" Przycisk od klipów Przycisk tworzenia klipów jest ukryty Przycisk tworzenia klipów jest widoczny + + Ukryj Sklep + Przycisk Sklep jest ukryty + Przycisk Sklep jest widoczny Ukryj Zapisz Przycisk Zapisz jest ukryty diff --git a/patches/src/main/resources/addresources/values-pt-rBR/strings.xml b/patches/src/main/resources/addresources/values-pt-rBR/strings.xml index 18ad54d5c..618054bb2 100644 --- a/patches/src/main/resources/addresources/values-pt-rBR/strings.xml +++ b/patches/src/main/resources/addresources/values-pt-rBR/strings.xml @@ -621,6 +621,10 @@ Ajuste o volume deslizando verticalmente no lado direito da tela" Ocultar Clipe Botão clipe está oculto O botão clipe é mostrado + + Ocultar Loja + O botão Loja está oculto + O botão Loja é exibido Ocultar Salvar O botão Salvar está oculto diff --git a/patches/src/main/resources/addresources/values-pt-rPT/strings.xml b/patches/src/main/resources/addresources/values-pt-rPT/strings.xml index 2e12a6b4a..76c743b04 100644 --- a/patches/src/main/resources/addresources/values-pt-rPT/strings.xml +++ b/patches/src/main/resources/addresources/values-pt-rPT/strings.xml @@ -621,6 +621,10 @@ Ajuste o volume deslizando verticalmente no lado direito da tela" Esconder clipe O botão do clipe está escondido Botão de corte é visível + + Ocultar Loja + O botão Loja está oculto + O botão Loja está exibido Ocultar Salvar O botão Salvar está oculto diff --git a/patches/src/main/resources/addresources/values-ro-rRO/strings.xml b/patches/src/main/resources/addresources/values-ro-rRO/strings.xml index a7e006147..0a901e3d8 100644 --- a/patches/src/main/resources/addresources/values-ro-rRO/strings.xml +++ b/patches/src/main/resources/addresources/values-ro-rRO/strings.xml @@ -621,6 +621,10 @@ Reglați volumul glisând vertical pe partea dreaptă a ecranului" Ascunde Clip Butonul clip este ascuns Butonul clipului este afișat + + Ascunde Magazinul + Butonul Magazin este ascuns + Butonul Magazin este afișat Ascunde Salvare Butonul Salvare este ascuns diff --git a/patches/src/main/resources/addresources/values-ru-rRU/strings.xml b/patches/src/main/resources/addresources/values-ru-rRU/strings.xml index 53772a353..1b872f355 100644 --- a/patches/src/main/resources/addresources/values-ru-rRU/strings.xml +++ b/patches/src/main/resources/addresources/values-ru-rRU/strings.xml @@ -621,6 +621,10 @@ Second \"item\" text" Скрыть кнопку \"Создать клип\" Кнопка \"Создать клип\" под плеером скрыта Кнопка \"Создать клип\" под плеером показана + + Скрыть магазин + Кнопка \"Магазин\" в Shorts скрыта + Кнопка \"Магазин\" в Shorts показана Скрыть кнопку \"Сохранить\" Кнопка \"Сохранить\" скрыта diff --git a/patches/src/main/resources/addresources/values-si-rLK/strings.xml b/patches/src/main/resources/addresources/values-si-rLK/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-si-rLK/strings.xml +++ b/patches/src/main/resources/addresources/values-si-rLK/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-sk-rSK/strings.xml b/patches/src/main/resources/addresources/values-sk-rSK/strings.xml index 5a53db7cb..3f29e9aed 100644 --- a/patches/src/main/resources/addresources/values-sk-rSK/strings.xml +++ b/patches/src/main/resources/addresources/values-sk-rSK/strings.xml @@ -619,6 +619,10 @@ Upravte hlasitosť posúvaním vertikálne na pravej strane obrazovky" Skryť klip Tlačidlo klipu je skryté Zobrazí sa tlačidlo klipu + + Skryť obchod + Tlačidlo Obchod je skryté + Tlačidlo Obchod je zobrazené Skryť Uložiť Tlačidlo Uložiť je skryté diff --git a/patches/src/main/resources/addresources/values-sl-rSI/strings.xml b/patches/src/main/resources/addresources/values-sl-rSI/strings.xml index 137ef0a6d..1b092c6d4 100644 --- a/patches/src/main/resources/addresources/values-sl-rSI/strings.xml +++ b/patches/src/main/resources/addresources/values-sl-rSI/strings.xml @@ -621,6 +621,10 @@ Prilagodite glasnost s potegom navpično na desni strani zaslona" Skrij Izrezek Gumb Izrezek je skrit Gumb Izrezek je prikazan + + Skrij Trgovino + Gumb Trgovina je skrit + Gumb Trgovina je prikazan Skrij Shrani Gumb Shrani je skrit diff --git a/patches/src/main/resources/addresources/values-sq-rAL/strings.xml b/patches/src/main/resources/addresources/values-sq-rAL/strings.xml index ba69b2768..ad70e8e03 100644 --- a/patches/src/main/resources/addresources/values-sq-rAL/strings.xml +++ b/patches/src/main/resources/addresources/values-sq-rAL/strings.xml @@ -621,6 +621,10 @@ Përshtate shkëlqimin duke rrëshqitur vertikalisht në anën e majtë të ekra Fsheh \"Klip\" Butoni \"Klip\" është i fshehur Butoni \"Klip\" është i dukshëm + + Fshih Dyqanin + Butoni i dyqanit është fshehur + Butoni i dyqanit është shfaqur Fshih Ruaj Butoni Ruaj është i fshehur diff --git a/patches/src/main/resources/addresources/values-sr-rCS/strings.xml b/patches/src/main/resources/addresources/values-sr-rCS/strings.xml index 42cc01f80..2e8b0e905 100644 --- a/patches/src/main/resources/addresources/values-sr-rCS/strings.xml +++ b/patches/src/main/resources/addresources/values-sr-rCS/strings.xml @@ -621,6 +621,10 @@ Podesite jačinu zvuka prevlačenjem vertikalno na desnoj strani ekrana"Sakrij dugme „Klip” Dugme „Klip” je skriveno Dugme „Klip” je prikazano + + Sakrij Prodavnicu + Dugme „Prodavnica” je skriveno + Dugme „Prodavnica” je prikazano Sakrij dugme „Sačuvaj” Dugme „Sačuvaj” je skriveno diff --git a/patches/src/main/resources/addresources/values-sr-rSP/strings.xml b/patches/src/main/resources/addresources/values-sr-rSP/strings.xml index bcca4f5bb..64c237072 100644 --- a/patches/src/main/resources/addresources/values-sr-rSP/strings.xml +++ b/patches/src/main/resources/addresources/values-sr-rSP/strings.xml @@ -621,6 +621,10 @@ Second \"item\" text" Сакриј дугме „Клип” Дугме „Клип” је скривено Дугме „Клип” је приказано + + Сакриј дугме „Продавница” + Дугме „Продавница” је скривено + Дугме „Продавница” је приказано Сакриј дугме „Сачувај” Дугме „Сачувај” је скривено diff --git a/patches/src/main/resources/addresources/values-sv-rSE/strings.xml b/patches/src/main/resources/addresources/values-sv-rSE/strings.xml index fe83b998e..fd69d2d3a 100644 --- a/patches/src/main/resources/addresources/values-sv-rSE/strings.xml +++ b/patches/src/main/resources/addresources/values-sv-rSE/strings.xml @@ -621,6 +621,10 @@ Justera volymen genom att svepa vertikalt till höger på skärmen" Dölj Klipp Knappen Klipp är dold Knappen Klipp visas + + Dölj Butik + Knappen Butik är dold + Knappen Butik visas Dölj Spara Knappen Spara är dold diff --git a/patches/src/main/resources/addresources/values-sw-rKE/strings.xml b/patches/src/main/resources/addresources/values-sw-rKE/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-sw-rKE/strings.xml +++ b/patches/src/main/resources/addresources/values-sw-rKE/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-ta-rIN/strings.xml b/patches/src/main/resources/addresources/values-ta-rIN/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-ta-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-ta-rIN/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-te-rIN/strings.xml b/patches/src/main/resources/addresources/values-te-rIN/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-te-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-te-rIN/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-th-rTH/strings.xml b/patches/src/main/resources/addresources/values-th-rTH/strings.xml index 5f5039e94..84aa123e6 100644 --- a/patches/src/main/resources/addresources/values-th-rTH/strings.xml +++ b/patches/src/main/resources/addresources/values-th-rTH/strings.xml @@ -619,6 +619,10 @@ Second \"item\" text" ซ่อนคลิป ปุ่มคลิปถูกซ่อน ปุ่มคลิปถูกแสดง + + ซ่อนร้านค้า + ปุ่มร้านค้าถูกซ่อน + ปุ่มร้านค้าถูกแสดง ซ่อนบันทึก ปุ่มบันทึกถูกซ่อน diff --git a/patches/src/main/resources/addresources/values-tr-rTR/strings.xml b/patches/src/main/resources/addresources/values-tr-rTR/strings.xml index f22cbc4e6..671803ed3 100644 --- a/patches/src/main/resources/addresources/values-tr-rTR/strings.xml +++ b/patches/src/main/resources/addresources/values-tr-rTR/strings.xml @@ -621,6 +621,10 @@ Ekranın sağ tarafında dikey olarak kaydırarak sesi ayarlayın" Klip\'i gizle Klip düğmesi gizli Klip düğmesi görünür + + Alışverişi gizle + Alışveriş düğmesi gizli + Alışveriş düğmesi görünür Kaydet\'i Gizle Kaydet düğmesi gizli diff --git a/patches/src/main/resources/addresources/values-uk-rUA/strings.xml b/patches/src/main/resources/addresources/values-uk-rUA/strings.xml index d2542c591..3fc566491 100644 --- a/patches/src/main/resources/addresources/values-uk-rUA/strings.xml +++ b/patches/src/main/resources/addresources/values-uk-rUA/strings.xml @@ -621,6 +621,10 @@ Second \"item\" text" Приховати \"Створити кліп\" Кнопку \"Створити кліп\" приховано Кнопка \"Створити кліп\" показується + + Приховати Магазин + Кнопку магазину приховано + Кнопка магазину показується Приховати \"Зберегти\" Кнопку \"Зберегти\" приховано diff --git a/patches/src/main/resources/addresources/values-ur-rIN/strings.xml b/patches/src/main/resources/addresources/values-ur-rIN/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-ur-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-ur-rIN/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml b/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml +++ b/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + diff --git a/patches/src/main/resources/addresources/values-vi-rVN/strings.xml b/patches/src/main/resources/addresources/values-vi-rVN/strings.xml index 6f8d28935..ba6f6e11b 100644 --- a/patches/src/main/resources/addresources/values-vi-rVN/strings.xml +++ b/patches/src/main/resources/addresources/values-vi-rVN/strings.xml @@ -621,6 +621,10 @@ Vui lòng kiểm tra lại tên gói và đảm bảo ứng dụng đã được Ẩn Tạo đoạn video Nút tạo đoạn video đã bị ẩn Nút tạo đoạn video được hiển thị + + Ẩn Cửa hàng + Nút Cửa hàng đã bị ẩn + Nút Cửa hàng được hiển thị Ẩn Lưu Nút Lưu đã bị ẩn diff --git a/patches/src/main/resources/addresources/values-zh-rCN/strings.xml b/patches/src/main/resources/addresources/values-zh-rCN/strings.xml index b0d692b7b..0d70c8baf 100644 --- a/patches/src/main/resources/addresources/values-zh-rCN/strings.xml +++ b/patches/src/main/resources/addresources/values-zh-rCN/strings.xml @@ -621,6 +621,10 @@ Second \"item\" text" 隐藏「剪辑」按钮 剪辑按钮已隐藏 剪辑按钮已显示 + + 隐藏购物 + 购物按钮已隐藏 + 购物按钮已显示 隐藏保存 保存按钮已隐藏 diff --git a/patches/src/main/resources/addresources/values-zh-rTW/strings.xml b/patches/src/main/resources/addresources/values-zh-rTW/strings.xml index d67e8a8c9..c60af5f81 100644 --- a/patches/src/main/resources/addresources/values-zh-rTW/strings.xml +++ b/patches/src/main/resources/addresources/values-zh-rTW/strings.xml @@ -621,6 +621,10 @@ Second \"item\" text" 隱藏剪輯片段 已隱藏「剪輯片段」按鈕 已顯示「剪輯片段」按鈕 + + 隱藏「商店」 + 「商店」按鈕已隱藏 + 「商店」按鈕已顯示 隱藏「儲存」 「儲存」按鈕已隱藏 diff --git a/patches/src/main/resources/addresources/values-zu-rZA/strings.xml b/patches/src/main/resources/addresources/values-zu-rZA/strings.xml index 0e52a5c79..98a3659f6 100644 --- a/patches/src/main/resources/addresources/values-zu-rZA/strings.xml +++ b/patches/src/main/resources/addresources/values-zu-rZA/strings.xml @@ -100,6 +100,7 @@ Second \"item\" text" + From 0bdebd927d96c9b5dc09d96bce50eac0f57428b6 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 17 Sep 2025 09:01:12 +0000 Subject: [PATCH 11/19] chore: Release v5.39.0-dev.2 [skip ci] # [5.39.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.39.0-dev.1...v5.39.0-dev.2) (2025-09-17) ### Bug Fixes * **YouTube - Spoof video streams:** Show Android Studio in spoof stream menu ([c9f741e](https://github.com/ReVanced/revanced-patches/commit/c9f741e616c7acab0cd4558e02b0c4ec18392c10)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c94976589..609411a9a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [5.39.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.39.0-dev.1...v5.39.0-dev.2) (2025-09-17) + + +### Bug Fixes + +* **YouTube - Spoof video streams:** Show Android Studio in spoof stream menu ([c9f741e](https://github.com/ReVanced/revanced-patches/commit/c9f741e616c7acab0cd4558e02b0c4ec18392c10)) + # [5.39.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.38.1-dev.2...v5.39.0-dev.1) (2025-09-17) diff --git a/gradle.properties b/gradle.properties index 8b08ed1eb..34aa360ff 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M org.gradle.parallel = true android.useAndroidX = true kotlin.code.style = official -version = 5.39.0-dev.1 +version = 5.39.0-dev.2 From fa4f422a1532d00b7d01ad2452c110e1a8063faa Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 17 Sep 2025 09:15:36 +0000 Subject: [PATCH 12/19] chore: Release v5.39.0 [skip ci] # [5.39.0](https://github.com/ReVanced/revanced-patches/compare/v5.38.0...v5.39.0) (2025-09-17) ### Bug Fixes * **YouTube - Spoof video streams:** Do not use Android Creator for livestreams ([cbe576b](https://github.com/ReVanced/revanced-patches/commit/cbe576bc384ef5f5ee2fa341147925ed0dff568b)) * **YouTube - Spoof video streams:** Show Android Studio in spoof stream menu ([c9f741e](https://github.com/ReVanced/revanced-patches/commit/c9f741e616c7acab0cd4558e02b0c4ec18392c10)) * **YouTube Music - Spoof video streams:** Remove iPadOS client ([7eeffd3](https://github.com/ReVanced/revanced-patches/commit/7eeffd3392c57555342173103d3a417c038d0970)) ### Features * **YouTube - Hide video action buttons:** Add "Hide Shop button" setting ([a84db7b](https://github.com/ReVanced/revanced-patches/commit/a84db7be7fde2e9bb3ac41aec709a1681e845fe1)) --- CHANGELOG.md | 14 ++++++++++++++ gradle.properties | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 609411a9a..6d8f2f422 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,17 @@ +# [5.39.0](https://github.com/ReVanced/revanced-patches/compare/v5.38.0...v5.39.0) (2025-09-17) + + +### Bug Fixes + +* **YouTube - Spoof video streams:** Do not use Android Creator for livestreams ([cbe576b](https://github.com/ReVanced/revanced-patches/commit/cbe576bc384ef5f5ee2fa341147925ed0dff568b)) +* **YouTube - Spoof video streams:** Show Android Studio in spoof stream menu ([c9f741e](https://github.com/ReVanced/revanced-patches/commit/c9f741e616c7acab0cd4558e02b0c4ec18392c10)) +* **YouTube Music - Spoof video streams:** Remove iPadOS client ([7eeffd3](https://github.com/ReVanced/revanced-patches/commit/7eeffd3392c57555342173103d3a417c038d0970)) + + +### Features + +* **YouTube - Hide video action buttons:** Add "Hide Shop button" setting ([a84db7b](https://github.com/ReVanced/revanced-patches/commit/a84db7be7fde2e9bb3ac41aec709a1681e845fe1)) + # [5.39.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.39.0-dev.1...v5.39.0-dev.2) (2025-09-17) diff --git a/gradle.properties b/gradle.properties index 34aa360ff..c1e74974b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M org.gradle.parallel = true android.useAndroidX = true kotlin.code.style = official -version = 5.39.0-dev.2 +version = 5.39.0 From b7026b70865bc44de07b30f84ba8b8b608930d5b Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Wed, 17 Sep 2025 20:13:44 +0400 Subject: [PATCH 13/19] fix(YouTube - Force original audio): Show UI setting summary if spoofing to Android Studio --- .../patches/spoof/SpoofVideoStreamsPatch.java | 6 +- .../revanced/extension/shared/TrieSearch.java | 13 +++- .../shared/spoof/SpoofVideoStreamsPatch.java | 6 +- .../patches/spoof/SpoofVideoStreamsPatch.java | 6 +- .../ForceOriginalAudioSwitchPreference.java | 63 +++++++++++++++++++ .../patches/shared/misc/spoof/Fingerprints.kt | 1 - .../video/audio/ForceOriginalAudioPatch.kt | 5 +- .../addresources/values-ar-rSA/strings.xml | 3 +- .../addresources/values-az-rAZ/strings.xml | 3 +- .../addresources/values-be-rBY/strings.xml | 3 +- .../addresources/values-bg-rBG/strings.xml | 3 +- .../addresources/values-bn-rBD/strings.xml | 3 +- .../addresources/values-cs-rCZ/strings.xml | 2 - .../addresources/values-da-rDK/strings.xml | 3 +- .../addresources/values-de-rDE/strings.xml | 3 +- .../addresources/values-el-rGR/strings.xml | 3 +- .../addresources/values-es-rES/strings.xml | 3 +- .../addresources/values-et-rEE/strings.xml | 3 +- .../addresources/values-fi-rFI/strings.xml | 3 +- .../addresources/values-fil-rPH/strings.xml | 3 +- .../addresources/values-fr-rFR/strings.xml | 3 +- .../addresources/values-ga-rIE/strings.xml | 3 +- .../addresources/values-hu-rHU/strings.xml | 3 +- .../addresources/values-hy-rAM/strings.xml | 3 +- .../addresources/values-in-rID/strings.xml | 3 +- .../addresources/values-it-rIT/strings.xml | 3 +- .../addresources/values-iw-rIL/strings.xml | 3 +- .../addresources/values-ja-rJP/strings.xml | 3 +- .../addresources/values-ko-rKR/strings.xml | 3 +- .../addresources/values-lt-rLT/strings.xml | 3 +- .../addresources/values-lv-rLV/strings.xml | 3 +- .../addresources/values-nl-rNL/strings.xml | 3 +- .../addresources/values-pl-rPL/strings.xml | 3 +- .../addresources/values-pt-rBR/strings.xml | 3 +- .../addresources/values-pt-rPT/strings.xml | 3 +- .../addresources/values-ro-rRO/strings.xml | 3 +- .../addresources/values-ru-rRU/strings.xml | 3 +- .../addresources/values-sk-rSK/strings.xml | 3 +- .../addresources/values-sl-rSI/strings.xml | 3 +- .../addresources/values-sq-rAL/strings.xml | 3 +- .../addresources/values-sr-rCS/strings.xml | 3 +- .../addresources/values-sr-rSP/strings.xml | 3 +- .../addresources/values-sv-rSE/strings.xml | 3 +- .../addresources/values-th-rTH/strings.xml | 3 +- .../addresources/values-tr-rTR/strings.xml | 3 +- .../addresources/values-uk-rUA/strings.xml | 3 +- .../addresources/values-vi-rVN/strings.xml | 3 +- .../addresources/values-zh-rCN/strings.xml | 3 +- .../addresources/values-zh-rTW/strings.xml | 3 +- .../resources/addresources/values/strings.xml | 2 +- 50 files changed, 129 insertions(+), 98 deletions(-) create mode 100644 extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ForceOriginalAudioSwitchPreference.java diff --git a/extensions/music/src/main/java/app/revanced/extension/music/patches/spoof/SpoofVideoStreamsPatch.java b/extensions/music/src/main/java/app/revanced/extension/music/patches/spoof/SpoofVideoStreamsPatch.java index 170d287be..15e90f565 100644 --- a/extensions/music/src/main/java/app/revanced/extension/music/patches/spoof/SpoofVideoStreamsPatch.java +++ b/extensions/music/src/main/java/app/revanced/extension/music/patches/spoof/SpoofVideoStreamsPatch.java @@ -8,7 +8,6 @@ import static app.revanced.extension.shared.spoof.ClientType.VISIONOS; import java.util.List; import app.revanced.extension.shared.spoof.ClientType; -import app.revanced.extension.shared.spoof.requests.StreamingDataRequest; @SuppressWarnings("unused") public class SpoofVideoStreamsPatch { @@ -23,8 +22,7 @@ public class SpoofVideoStreamsPatch { VISIONOS ); - ClientType client = SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get(); - app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch.setPreferredClient(client); - StreamingDataRequest.setClientOrderToUse(availableClients, client); + app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch.setClientsToUse( + availableClients, SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get()); } } diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/TrieSearch.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/TrieSearch.java index a871fc9b1..7628a51d9 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/TrieSearch.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/TrieSearch.java @@ -7,7 +7,8 @@ import java.util.Collections; import java.util.List; import java.util.Objects; -/**Searches for a group of different patterns using a trie (prefix tree). +/** + * Searches for a group of different patterns using a trie (prefix tree). * Can significantly speed up searching for multiple patterns. */ public abstract class TrieSearch { @@ -55,11 +56,13 @@ public abstract class TrieSearch { if (searchTextLength - searchTextIndex < patternLength - patternStartIndex) { return false; // Remaining search text is shorter than the remaining leaf pattern and they cannot match. } + for (int i = searchTextIndex, j = patternStartIndex; j < patternLength; i++, j++) { if (enclosingNode.getCharValue(searchText, i) != enclosingNode.getCharValue(pattern, j)) { return false; } } + return callback == null || callback.patternMatched(searchText, searchTextIndex - patternStartIndex, patternLength, callbackParameter); } @@ -143,6 +146,7 @@ public abstract class TrieSearch { endOfPatternCallback.add(callback); return; } + if (leaf != null) { // Reached end of the graph and a leaf exist. // Recursively call back into this method and push the existing leaf down 1 level. @@ -157,6 +161,7 @@ public abstract class TrieSearch { leaf = new TrieCompressedPath<>(pattern, patternIndex, patternLength, callback); return; } + final char character = getCharValue(pattern, patternIndex); final int arrayIndex = hashIndexForTableSize(children.length, character); TrieNode child = children[arrayIndex]; @@ -181,6 +186,7 @@ public abstract class TrieSearch { //noinspection unchecked TrieNode[] replacement = new TrieNode[replacementArraySize]; addNodeToArray(replacement, child); + boolean collision = false; for (TrieNode existingChild : children) { if (existingChild != null) { @@ -193,6 +199,7 @@ public abstract class TrieSearch { if (collision) { continue; } + children = replacement; return; } @@ -232,6 +239,7 @@ public abstract class TrieSearch { if (leaf != null && leaf.matches(startNode, searchText, searchTextEndIndex, searchTextIndex, callbackParameter)) { return true; // Leaf exists and it matched the search text. } + List> endOfPatternCallback = node.endOfPatternCallback; if (endOfPatternCallback != null) { final int matchStartIndex = searchTextIndex - currentMatchLength; @@ -244,6 +252,7 @@ public abstract class TrieSearch { } } } + TrieNode[] children = node.children; if (children == null) { return false; // Reached a graph end point and there's no further patterns to search. @@ -276,9 +285,11 @@ public abstract class TrieSearch { if (leaf != null) { numberOfPointers += 4; // Number of fields in leaf node. } + if (endOfPatternCallback != null) { numberOfPointers += endOfPatternCallback.size(); } + if (children != null) { numberOfPointers += children.length; for (TrieNode child : children) { diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/SpoofVideoStreamsPatch.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/SpoofVideoStreamsPatch.java index 7baa9d076..f11c7ea26 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/SpoofVideoStreamsPatch.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/SpoofVideoStreamsPatch.java @@ -6,6 +6,7 @@ import android.text.TextUtils; import androidx.annotation.Nullable; import java.nio.ByteBuffer; +import java.util.List; import java.util.Map; import java.util.Objects; @@ -43,7 +44,7 @@ public class SpoofVideoStreamsPatch { /** * @return If this patch was included during patching. */ - private static boolean isPatchIncluded() { + public static boolean isPatchIncluded() { return false; // Modified during patching. } @@ -60,8 +61,9 @@ public class SpoofVideoStreamsPatch { languageOverride = language; } - public static void setPreferredClient(ClientType client) { + public static void setClientsToUse(List availableClients, ClientType client) { preferredClient = Objects.requireNonNull(client); + StreamingDataRequest.setClientOrderToUse(availableClients, client); } public static boolean spoofingToClientWithNoMultiAudioStreams() { diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java index 45e49919c..2af74b2a0 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java @@ -9,7 +9,6 @@ import static app.revanced.extension.shared.spoof.ClientType.VISIONOS; import java.util.List; import app.revanced.extension.shared.spoof.ClientType; -import app.revanced.extension.shared.spoof.requests.StreamingDataRequest; import app.revanced.extension.youtube.settings.Settings; @SuppressWarnings("unused") @@ -27,8 +26,7 @@ public class SpoofVideoStreamsPatch { IPADOS ); - ClientType client = Settings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get(); - app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch.setPreferredClient(client); - StreamingDataRequest.setClientOrderToUse(availableClients, client); + app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch.setClientsToUse( + availableClients, Settings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get()); } } \ No newline at end of file diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ForceOriginalAudioSwitchPreference.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ForceOriginalAudioSwitchPreference.java new file mode 100644 index 000000000..b6be1b893 --- /dev/null +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ForceOriginalAudioSwitchPreference.java @@ -0,0 +1,63 @@ +package app.revanced.extension.youtube.settings.preference; + +import static app.revanced.extension.shared.StringRef.str; + +import android.content.Context; +import android.preference.SwitchPreference; +import android.util.AttributeSet; + +import app.revanced.extension.shared.spoof.ClientType; +import app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch; +import app.revanced.extension.youtube.settings.Settings; + +@SuppressWarnings({"deprecation", "unused"}) +public class ForceOriginalAudioSwitchPreference extends SwitchPreference { + + // Spoof stream patch is not included, or is not currently spoofing to Android Studio. + private static final boolean available = !SpoofVideoStreamsPatch.isPatchIncluded() + || !(Settings.SPOOF_VIDEO_STREAMS.get() + && Settings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() == ClientType.ANDROID_CREATOR); + + { + if (!available) { + // Show why force audio is not available. + String summary = str("revanced_force_original_audio_not_available"); + super.setSummary(summary); + super.setSummaryOn(summary); + super.setSummaryOff(summary); + super.setEnabled(false); + } + } + + public ForceOriginalAudioSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + public ForceOriginalAudioSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + public ForceOriginalAudioSwitchPreference(Context context, AttributeSet attrs) { + super(context, attrs); + } + public ForceOriginalAudioSwitchPreference(Context context) { + super(context); + } + + @Override + public void setEnabled(boolean enabled) { + if (!available) { + return; + } + + super.setEnabled(enabled); + } + + @Override + public void setSummary(CharSequence summary) { + if (!available) { + return; + } + + super.setSummary(summary); + } +} + diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/Fingerprints.kt index 67ba7c80c..ed2f86387 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/Fingerprints.kt @@ -150,7 +150,6 @@ internal val nerdsStatsVideoFormatBuilderFingerprint = fingerprint { } internal val patchIncludedExtensionMethodFingerprint = fingerprint { - accessFlags(AccessFlags.PRIVATE, AccessFlags.STATIC) returns("Z") parameters() custom { method, classDef -> diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/video/audio/ForceOriginalAudioPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/video/audio/ForceOriginalAudioPatch.kt index b17d1c96c..eee6c0e45 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/video/audio/ForceOriginalAudioPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/video/audio/ForceOriginalAudioPatch.kt @@ -57,7 +57,10 @@ val forceOriginalAudioPatch = bytecodePatch( addResources("youtube", "video.audio.forceOriginalAudioPatch") PreferenceScreen.VIDEO.addPreferences( - SwitchPreference("revanced_force_original_audio") + SwitchPreference( + key = "revanced_force_original_audio", + tag = "app.revanced.extension.youtube.settings.preference.ForceOriginalAudioSwitchPreference" + ) ) mainActivityOnCreateFingerprint.method.addInstruction( diff --git a/patches/src/main/resources/addresources/values-ar-rSA/strings.xml b/patches/src/main/resources/addresources/values-ar-rSA/strings.xml index 8915ca942..f0ea1c869 100644 --- a/patches/src/main/resources/addresources/values-ar-rSA/strings.xml +++ b/patches/src/main/resources/addresources/values-ar-rSA/strings.xml @@ -1476,8 +1476,7 @@ Second \"item\" text" فرض لغة الصوت الأصلية استخدام لغة الصوت الأصلية استخدام الصوت الافتراضي - - لاستخدام هذه الميزة، غيّر \'Spoof Video Streams\' إلى iOS TV + diff --git a/patches/src/main/resources/addresources/values-az-rAZ/strings.xml b/patches/src/main/resources/addresources/values-az-rAZ/strings.xml index 1480d8734..9b0f1b463 100644 --- a/patches/src/main/resources/addresources/values-az-rAZ/strings.xml +++ b/patches/src/main/resources/addresources/values-az-rAZ/strings.xml @@ -1472,8 +1472,7 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər Orijinal səs dilini zorla Orijinal səs dilini istifadə İlkin səs istifadəsi - - Bu xüsusiyyəti istifadə etmək üçün \"Saxta video yayımların\" iOS TV-yə dəyiş + diff --git a/patches/src/main/resources/addresources/values-be-rBY/strings.xml b/patches/src/main/resources/addresources/values-be-rBY/strings.xml index a281adf3a..a240a2a52 100644 --- a/patches/src/main/resources/addresources/values-be-rBY/strings.xml +++ b/patches/src/main/resources/addresources/values-be-rBY/strings.xml @@ -1477,8 +1477,7 @@ Second \"item\" text" Вымушаная арыгінальная мова аўдыё Выкарыстоўваць арыгінальную мову аўдыя Выкарыстанне аўдыё па змаўчанні - - Каб выкарыстоўваць гэту функцыю, змяніце параметр \"Падрабляць відэаструмені\" на iOS TV + diff --git a/patches/src/main/resources/addresources/values-bg-rBG/strings.xml b/patches/src/main/resources/addresources/values-bg-rBG/strings.xml index 51fac4739..4d5ed022e 100644 --- a/patches/src/main/resources/addresources/values-bg-rBG/strings.xml +++ b/patches/src/main/resources/addresources/values-bg-rBG/strings.xml @@ -1476,8 +1476,7 @@ Second \"item\" text" Принудително оригинално аудио език Използване на оригиналния език на аудиото Използване на аудио по подразбиране - - За да използвате тази функция, сменете „Фалшифициране на видео потоци“ на iOS TV + diff --git a/patches/src/main/resources/addresources/values-bn-rBD/strings.xml b/patches/src/main/resources/addresources/values-bn-rBD/strings.xml index dd836b3fd..13c02740e 100644 --- a/patches/src/main/resources/addresources/values-bn-rBD/strings.xml +++ b/patches/src/main/resources/addresources/values-bn-rBD/strings.xml @@ -1472,8 +1472,7 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট মূল অডিও ভাষা বলপূর্বক চালু করুন মূল অডিও ভাষা ব্যবহার করা হচ্ছে ডিফল্ট অডিও ব্যবহার করছে - - এই বৈশিষ্ট্যটি ব্যবহার করতে, \'স্পুফ ভিডিও স্ট্রীম\' কে iOS TV-তে পরিবর্তন করুন + diff --git a/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml b/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml index 2d024b320..278fb685f 100644 --- a/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml +++ b/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml @@ -1476,8 +1476,6 @@ Povolením této funkce lze odemknout vyšší kvality videa" Vynutit původní jazyk zvuku Použít původní jazyk zvuku Používání výchozího zvuku - - Chcete-li používat tuto funkci, změňte možnost „Zfalšovat datové proudy videa“ na iOS TV diff --git a/patches/src/main/resources/addresources/values-da-rDK/strings.xml b/patches/src/main/resources/addresources/values-da-rDK/strings.xml index a03915052..695769d76 100644 --- a/patches/src/main/resources/addresources/values-da-rDK/strings.xml +++ b/patches/src/main/resources/addresources/values-da-rDK/strings.xml @@ -1478,8 +1478,7 @@ Aktivering af dette kan låse op for højere videokvalitet" Tving originalt lydsprog Bruger originalt lydsprog Brug standard lyd - - For at bruge denne funktion skal du ændre \"Spoof videostreams\" til iOS TV + diff --git a/patches/src/main/resources/addresources/values-de-rDE/strings.xml b/patches/src/main/resources/addresources/values-de-rDE/strings.xml index ca4918053..e8c681d55 100644 --- a/patches/src/main/resources/addresources/values-de-rDE/strings.xml +++ b/patches/src/main/resources/addresources/values-de-rDE/strings.xml @@ -1471,8 +1471,7 @@ Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet w Original Audio erzwingen Original-Audiosprache verwenden Standardaudio verwenden - - Um diese Funktion zu nutzen, ändere \"Video-Streams fälschen\" zu iOS TV + diff --git a/patches/src/main/resources/addresources/values-el-rGR/strings.xml b/patches/src/main/resources/addresources/values-el-rGR/strings.xml index b4837832b..b8e11e875 100644 --- a/patches/src/main/resources/addresources/values-el-rGR/strings.xml +++ b/patches/src/main/resources/addresources/values-el-rGR/strings.xml @@ -1475,8 +1475,7 @@ Second \"item\" text" Εξαναγκασμός αρχικής γλώσσας ήχου Χρησιμοποιείται η αρχική γλώσσα ήχου Χρησιμοποιείται ο προεπιλεγμένος ήχος - - Για να χρησιμοποιήσετε αυτήν τη λειτουργία, αλλάξτε την επιλογή «Παραποίηση ροών βίντεο» σε iOS TV + diff --git a/patches/src/main/resources/addresources/values-es-rES/strings.xml b/patches/src/main/resources/addresources/values-es-rES/strings.xml index d0333a8f1..a906c37b6 100644 --- a/patches/src/main/resources/addresources/values-es-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-es-rES/strings.xml @@ -1467,8 +1467,7 @@ Habilitar esto puede desbloquear calidades de vídeo más altas" Forzar idioma de audio original Usar el idioma de audio original Utilizando audio predeterminado - - Para usar esta función, cambia \"Falsificar transmisiones de vídeo\" a iOS TV + diff --git a/patches/src/main/resources/addresources/values-et-rEE/strings.xml b/patches/src/main/resources/addresources/values-et-rEE/strings.xml index d8db71a23..5365b00e5 100644 --- a/patches/src/main/resources/addresources/values-et-rEE/strings.xml +++ b/patches/src/main/resources/addresources/values-et-rEE/strings.xml @@ -1476,8 +1476,7 @@ Selle lubamine võib avada kõrgema video kvaliteedi" Sunni originaalheli keel Algse helikeele kasutamine Kasutan vaikeheli - - Selle funktsiooni kasutamiseks muuda valik „Pettemanööver videovoogudele” iOS TV peale + diff --git a/patches/src/main/resources/addresources/values-fi-rFI/strings.xml b/patches/src/main/resources/addresources/values-fi-rFI/strings.xml index e7ec478b1..7d07ef248 100644 --- a/patches/src/main/resources/addresources/values-fi-rFI/strings.xml +++ b/patches/src/main/resources/addresources/values-fi-rFI/strings.xml @@ -1476,8 +1476,7 @@ Tämä voi avata korkealaatuisemmat videot" Pakota alkuperäinen äänen kieli Käytetään alkuperäistä ääntä Käytetään oletusääntä - - Voit käyttää tätä ominaisuutta muuttamalla \"Naamioi videovirrat\" iOS TV:ksi + diff --git a/patches/src/main/resources/addresources/values-fil-rPH/strings.xml b/patches/src/main/resources/addresources/values-fil-rPH/strings.xml index f4b5ecd8b..4ff17e163 100644 --- a/patches/src/main/resources/addresources/values-fil-rPH/strings.xml +++ b/patches/src/main/resources/addresources/values-fil-rPH/strings.xml @@ -1474,8 +1474,7 @@ Ang pagpapagana nito ay maaaring magbukas ng mas mataas na kalidad ng video"Pilitin ang orihinal na wika ng audio Ginagamit ang orihinal na wika ng audio Gumagamit ng default audio - - Para magamit ang feature na ito, palitan ang \'Magpanggap na video stream\' sa iOS TV + diff --git a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml index 50123e64e..10224ab62 100644 --- a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml +++ b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml @@ -1477,8 +1477,7 @@ Activer cette option peut déverrouiller des qualités vidéo supérieures"Forcer la langue audio d\'origine Utilisation de la langue audio d\'origine Utilisation de l\'audio par défaut - - Pour utiliser cette fonctionnalité, définissez \"Falsifier les flux vidéo\" sur iOS TV + diff --git a/patches/src/main/resources/addresources/values-ga-rIE/strings.xml b/patches/src/main/resources/addresources/values-ga-rIE/strings.xml index 8bfaee92b..08a8dc8c4 100644 --- a/patches/src/main/resources/addresources/values-ga-rIE/strings.xml +++ b/patches/src/main/resources/addresources/values-ga-rIE/strings.xml @@ -1476,8 +1476,7 @@ Is féidir le seo caighdeáin físeáin níos airde a dhíghlasáil" Fórsaigh teanga bhunaidh na fuaime Ag úsáid teanga bhunaidh na fuaime Ag úsáid fuaim réamhshocraithe - - Chun an ghné seo a úsáid, athraigh \'Sruthanna físeáin bhréige\' go iOS TV + diff --git a/patches/src/main/resources/addresources/values-hu-rHU/strings.xml b/patches/src/main/resources/addresources/values-hu-rHU/strings.xml index 3f10b0efa..13afc2f10 100644 --- a/patches/src/main/resources/addresources/values-hu-rHU/strings.xml +++ b/patches/src/main/resources/addresources/values-hu-rHU/strings.xml @@ -1473,8 +1473,7 @@ Ez a beállítás lehetővé teszi a magasabb videóminőségek feloldását"Eredeti hang kikényszerítése Eredeti hang használata a hang nyelvén Alapértelmezett hang használata - - A funkció használatához módosítsa a „Videófolyamok hamisítása” beállítást iOS TV-re + diff --git a/patches/src/main/resources/addresources/values-hy-rAM/strings.xml b/patches/src/main/resources/addresources/values-hy-rAM/strings.xml index 6fbc92610..6b4d613c0 100644 --- a/patches/src/main/resources/addresources/values-hy-rAM/strings.xml +++ b/patches/src/main/resources/addresources/values-hy-rAM/strings.xml @@ -1477,8 +1477,7 @@ Mini-player-ը կարող է գրավվել էկրանից դուրս՝ դեպի Բնօրինակ ձայն օգտագործել լեզուն Օգտագործելով ձայնային օրիգինալ լեզուն Վերջնական ձայն օգտագործվում է - - Այս գործառույթն օգտագործելու համար փոխեք «Կեղծել տեսահոսքերը» iOS TV-ի + diff --git a/patches/src/main/resources/addresources/values-in-rID/strings.xml b/patches/src/main/resources/addresources/values-in-rID/strings.xml index aa1c5d8ee..28b4f93bb 100644 --- a/patches/src/main/resources/addresources/values-in-rID/strings.xml +++ b/patches/src/main/resources/addresources/values-in-rID/strings.xml @@ -1475,8 +1475,7 @@ Mengaktifkan ini dapat membuka kualitas video yang lebih tinggi" Paksa bahasa audio asli Menggunakan bahasa audio asli Menggunakan audio bawaan - - Untuk menggunakan fitur ini, ubah \'Palsukan aliran video\' ke iOS TV + diff --git a/patches/src/main/resources/addresources/values-it-rIT/strings.xml b/patches/src/main/resources/addresources/values-it-rIT/strings.xml index 9194b9c77..46ffcd346 100644 --- a/patches/src/main/resources/addresources/values-it-rIT/strings.xml +++ b/patches/src/main/resources/addresources/values-it-rIT/strings.xml @@ -1475,8 +1475,7 @@ Abilitare questa opzione può sbloccare qualità video più elevate" Forza la lingua audio originale Utilizza la lingua audio originale Utilizzo audio predefinito - - Per utilizzare questa funzionalità, cambia \'Spoof video streams\' in iOS TV + diff --git a/patches/src/main/resources/addresources/values-iw-rIL/strings.xml b/patches/src/main/resources/addresources/values-iw-rIL/strings.xml index 94897e369..41caf104a 100644 --- a/patches/src/main/resources/addresources/values-iw-rIL/strings.xml +++ b/patches/src/main/resources/addresources/values-iw-rIL/strings.xml @@ -1478,8 +1478,7 @@ Second \"item\" text" כפה שפת שמע מקורית שימוש בשפת שמע מקורית שימוש בשמע ברירת מחדל - - כדי להשתמש בתכונה זו, שנה את \'זייף זרמי וידאו\' ל-iOS TV + diff --git a/patches/src/main/resources/addresources/values-ja-rJP/strings.xml b/patches/src/main/resources/addresources/values-ja-rJP/strings.xml index 1e25e7449..5136ca7e7 100644 --- a/patches/src/main/resources/addresources/values-ja-rJP/strings.xml +++ b/patches/src/main/resources/addresources/values-ja-rJP/strings.xml @@ -1478,8 +1478,7 @@ Automotive レイアウト オリジナルの音声を強制的に使用 オリジナルの音声トラック (言語) を使用します\n\nオートダビングを含む吹き替えの音声トラックは使用しません アプリが選択した音声トラック (言語) を使用します\n\nオートダビングを含む吹き替えの音声トラックを使用する場合があります - - この機能を使用するには、「動画ストリームを偽装」のクライアントを iOS TV に変更してください + diff --git a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml index db50315b6..ce4b429ca 100644 --- a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml +++ b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml @@ -1483,8 +1483,7 @@ DeArrow에 대해 자세히 알아보려면 여기를 탭하세요" 원본 오디오 스트림 언어 강제로 활성화하기 원본 오디오 스트림 언어를 사용 중입니다 기본 오디오 스트림 언어를 사용 중입니다 - - 이 기능을 사용하려면, \'동영상 스트림 변경하기\'에서 기본 클라이언트를 iOS TV로 변경하세요 + diff --git a/patches/src/main/resources/addresources/values-lt-rLT/strings.xml b/patches/src/main/resources/addresources/values-lt-rLT/strings.xml index 9ccd7fb44..5b631d79c 100644 --- a/patches/src/main/resources/addresources/values-lt-rLT/strings.xml +++ b/patches/src/main/resources/addresources/values-lt-rLT/strings.xml @@ -1477,8 +1477,7 @@ Gali būti atrakinta aukštesnės vaizdo įrašų kokybės, bet galite patirti v Priversti originalią garso kalbą Naudojama originali garso kalba Naudojamas numatytasis garsas - - Norėdami naudoti šią funkciją, pakeiskite „Klastoti vaizdo srautus“ į iOS TV + diff --git a/patches/src/main/resources/addresources/values-lv-rLV/strings.xml b/patches/src/main/resources/addresources/values-lv-rLV/strings.xml index 72bfc5fe9..94ac3125e 100644 --- a/patches/src/main/resources/addresources/values-lv-rLV/strings.xml +++ b/patches/src/main/resources/addresources/values-lv-rLV/strings.xml @@ -1477,8 +1477,7 @@ Var tikt atbloķētas augstākas video kvalitātes, taču var rasties video atsk Piespiest oriģinālo audio valodu Izmantot oriģinālo audio valodu Tiek izmantots noklusējuma audio - - Lai izmantotu šo funkciju, nomainiet \"Video straumju viltošana\" uz iOS TV + diff --git a/patches/src/main/resources/addresources/values-nl-rNL/strings.xml b/patches/src/main/resources/addresources/values-nl-rNL/strings.xml index 2a9f14c8d..4274440a8 100644 --- a/patches/src/main/resources/addresources/values-nl-rNL/strings.xml +++ b/patches/src/main/resources/addresources/values-nl-rNL/strings.xml @@ -1474,8 +1474,7 @@ Het inschakelen hiervan kan hogere videokwaliteiten ontgrendelen" Forceer de originele audiotaal De oorspronkelijke audiotaal gebruiken Standaard audio gebruiken - - Om deze functie te gebruiken, wijzig je \'Videostreams vervalsen\' in iOS TV + diff --git a/patches/src/main/resources/addresources/values-pl-rPL/strings.xml b/patches/src/main/resources/addresources/values-pl-rPL/strings.xml index 0af1ca4cb..a07931703 100644 --- a/patches/src/main/resources/addresources/values-pl-rPL/strings.xml +++ b/patches/src/main/resources/addresources/values-pl-rPL/strings.xml @@ -1472,8 +1472,7 @@ Włączenie tego może odblokować wyższe jakości wideo" Wymuś język oryginalnego dźwięku Używanie oryginalnego języka audio Używanie domyślnego dźwięku - - Aby użyć tej funkcji, zmień opcję \"Fałszuj strumienie wideo\" na iOS TV + diff --git a/patches/src/main/resources/addresources/values-pt-rBR/strings.xml b/patches/src/main/resources/addresources/values-pt-rBR/strings.xml index 618054bb2..a55a776a4 100644 --- a/patches/src/main/resources/addresources/values-pt-rBR/strings.xml +++ b/patches/src/main/resources/addresources/values-pt-rBR/strings.xml @@ -1473,8 +1473,7 @@ Habilitar isso pode desbloquear qualidades de vídeo mais altas" Forçar idioma do áudio original Usar o idioma original do áudio Usando áudio padrão - - Para usar este recurso, altere \"Spoof video streams\" para iOS TV + diff --git a/patches/src/main/resources/addresources/values-pt-rPT/strings.xml b/patches/src/main/resources/addresources/values-pt-rPT/strings.xml index 76c743b04..1143f071a 100644 --- a/patches/src/main/resources/addresources/values-pt-rPT/strings.xml +++ b/patches/src/main/resources/addresources/values-pt-rPT/strings.xml @@ -1476,8 +1476,7 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"Forçar idioma original do áudio Usando o idioma de áudio original Usando o áudio predefinido - - Para usar este recurso, altere \"Spoof video streams\" para iOS TV + diff --git a/patches/src/main/resources/addresources/values-ro-rRO/strings.xml b/patches/src/main/resources/addresources/values-ro-rRO/strings.xml index 0a901e3d8..c5d24ca34 100644 --- a/patches/src/main/resources/addresources/values-ro-rRO/strings.xml +++ b/patches/src/main/resources/addresources/values-ro-rRO/strings.xml @@ -1475,8 +1475,7 @@ Activarea acestei opțiuni poate debloca calități video mai mari" Forțează limba audio originală Folosind limba audio originală Utilizează audio implicit - - Pentru a utiliza această funcție, schimbați „Spoof video streams” în iOS TV + diff --git a/patches/src/main/resources/addresources/values-ru-rRU/strings.xml b/patches/src/main/resources/addresources/values-ru-rRU/strings.xml index 1b872f355..51af65e40 100644 --- a/patches/src/main/resources/addresources/values-ru-rRU/strings.xml +++ b/patches/src/main/resources/addresources/values-ru-rRU/strings.xml @@ -1483,8 +1483,7 @@ Second \"item\" text" Принудительно оригинальная звуковая дорожка Используется оригинальная звуковая дорожка Используется звуковая дорожка по умолчанию - - Для использования данной опции измените подмену видеопотока на тип клиента iOS TV + diff --git a/patches/src/main/resources/addresources/values-sk-rSK/strings.xml b/patches/src/main/resources/addresources/values-sk-rSK/strings.xml index 3f29e9aed..11775cd14 100644 --- a/patches/src/main/resources/addresources/values-sk-rSK/strings.xml +++ b/patches/src/main/resources/addresources/values-sk-rSK/strings.xml @@ -1469,8 +1469,7 @@ Povolením tejto možnosti môžete odomknúť vyššie kvality videa" Vynútiť pôvodný jazyk zvuku Používa sa pôvodný jazyk zvuku Používanie predvoleného zvuku - - Ak chcete používať túto funkciu, zmeňte možnosť „Zosmiešniť streamy videa“ na iOS TV + diff --git a/patches/src/main/resources/addresources/values-sl-rSI/strings.xml b/patches/src/main/resources/addresources/values-sl-rSI/strings.xml index 1b092c6d4..1895687ff 100644 --- a/patches/src/main/resources/addresources/values-sl-rSI/strings.xml +++ b/patches/src/main/resources/addresources/values-sl-rSI/strings.xml @@ -1476,8 +1476,7 @@ Omogočanje tega lahko odklene višje kakovosti videa" Izsili izvirni jezik zvoka Uporabi izvirni jezik zvoka Uporaba privzetega zvoka - - Če želite uporabiti to funkcijo, spremenite »Spoof video streams« v iOS TV + diff --git a/patches/src/main/resources/addresources/values-sq-rAL/strings.xml b/patches/src/main/resources/addresources/values-sq-rAL/strings.xml index ad70e8e03..d7d26c597 100644 --- a/patches/src/main/resources/addresources/values-sq-rAL/strings.xml +++ b/patches/src/main/resources/addresources/values-sq-rAL/strings.xml @@ -1474,8 +1474,7 @@ Aktivizimi i kësaj mund të zhbllokojë cilësi më të larta video" Forco gjuhën origjinale të audios Duke përdorur gjuhën origjinale audio Përdorimi i Zërit Parazgjedhur - - Për ta përdorur këtë veçori, ndryshoni \'Rrjedhat e videos tallëse\' në iOS TV + diff --git a/patches/src/main/resources/addresources/values-sr-rCS/strings.xml b/patches/src/main/resources/addresources/values-sr-rCS/strings.xml index 2e8b0e905..a546e3742 100644 --- a/patches/src/main/resources/addresources/values-sr-rCS/strings.xml +++ b/patches/src/main/resources/addresources/values-sr-rCS/strings.xml @@ -1475,8 +1475,7 @@ Ako ovo omogućite, mogu biti otključani viši kvaliteti videa" Prisili originalni jezik zvuka Korišćenje originalnog jezika zvuka Korišćenje podrazumevanog zvuka - - Da biste koristili ovu funkciju, promenite opciju „Lažirani video strimovi” na iOS TV + diff --git a/patches/src/main/resources/addresources/values-sr-rSP/strings.xml b/patches/src/main/resources/addresources/values-sr-rSP/strings.xml index 64c237072..45e3a5627 100644 --- a/patches/src/main/resources/addresources/values-sr-rSP/strings.xml +++ b/patches/src/main/resources/addresources/values-sr-rSP/strings.xml @@ -1478,8 +1478,7 @@ Second \"item\" text" Присили оригинални језик звука Коришћење оригиналног језика звука Коришћење подразумеваног звука - - Да бисте користили ову функцију, промените „Лажирани видео стримови” на iOS TV + diff --git a/patches/src/main/resources/addresources/values-sv-rSE/strings.xml b/patches/src/main/resources/addresources/values-sv-rSE/strings.xml index fd69d2d3a..f1a93e8e2 100644 --- a/patches/src/main/resources/addresources/values-sv-rSE/strings.xml +++ b/patches/src/main/resources/addresources/values-sv-rSE/strings.xml @@ -1475,8 +1475,7 @@ Om du aktiverar detta kan högre videokvaliteter låsas upp" Tvinga ursprungligt ljudspråk Använder ursprungligt ljudspråk Använder standardljud - - Om du vill använda den här funktionen ändrar du \"Förfalska videoströmmar\" till iOS TV + diff --git a/patches/src/main/resources/addresources/values-th-rTH/strings.xml b/patches/src/main/resources/addresources/values-th-rTH/strings.xml index 84aa123e6..3bb025eef 100644 --- a/patches/src/main/resources/addresources/values-th-rTH/strings.xml +++ b/patches/src/main/resources/addresources/values-th-rTH/strings.xml @@ -1478,8 +1478,7 @@ User id ของคุณเหมือนกับรหัสผ่าน บังคับใช้ภาษาเสียงต้นฉบับ กำลังใช้ภาษาเสียงต้นฉบับ กำลังใช้ออดิโอเริ่มต้น - - หากต้องการใช้คุณสมบัตินี้ ให้เปลี่ยน \'ปลอมแปลงสตรีมวิดีโอ\' เป็น iOS TV + diff --git a/patches/src/main/resources/addresources/values-tr-rTR/strings.xml b/patches/src/main/resources/addresources/values-tr-rTR/strings.xml index 671803ed3..5663a9eb3 100644 --- a/patches/src/main/resources/addresources/values-tr-rTR/strings.xml +++ b/patches/src/main/resources/addresources/values-tr-rTR/strings.xml @@ -1483,8 +1483,7 @@ Bunu etkinleştirmek daha yüksek video kalitelerini açabilir" Orijinal ses dilini zorla Orijinal ses dili kullanılıyor Varsayılan ses kullanılıyor - - Bu özelliği kullanmak için \'Video akışlarını taklit et\' ayarını iOS TV olarak değiştirin + diff --git a/patches/src/main/resources/addresources/values-uk-rUA/strings.xml b/patches/src/main/resources/addresources/values-uk-rUA/strings.xml index 3fc566491..76d927db5 100644 --- a/patches/src/main/resources/addresources/values-uk-rUA/strings.xml +++ b/patches/src/main/resources/addresources/values-uk-rUA/strings.xml @@ -1475,8 +1475,7 @@ Second \"item\" text" Примусово оригінальна мова звукової доріжки Використовується оригінальна мова звукової доріжки Використовується стандартна (регіональна) мова звукової доріжки - - Щоб використовувати цю функцію, змініть клієнт \"Підробки відеопотоків\" на iOS TV + diff --git a/patches/src/main/resources/addresources/values-vi-rVN/strings.xml b/patches/src/main/resources/addresources/values-vi-rVN/strings.xml index ba6f6e11b..69256a2d7 100644 --- a/patches/src/main/resources/addresources/values-vi-rVN/strings.xml +++ b/patches/src/main/resources/addresources/values-vi-rVN/strings.xml @@ -1482,8 +1482,7 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"Buộc ngôn ngữ âm thanh gốc Đang dùng ngôn ngữ âm thanh gốc Đang dùng âm thanh mặc định - - Để dùng tính năng này, hãy đổi \'Giả mạo luồng video\' thành iOS TV + diff --git a/patches/src/main/resources/addresources/values-zh-rCN/strings.xml b/patches/src/main/resources/addresources/values-zh-rCN/strings.xml index 0d70c8baf..3f70b70e3 100644 --- a/patches/src/main/resources/addresources/values-zh-rCN/strings.xml +++ b/patches/src/main/resources/addresources/values-zh-rCN/strings.xml @@ -1481,8 +1481,7 @@ Second \"item\" text" 强制使用原始音频语言 使用原始音频语言 正在使用默认音频 - - 要使用此功能,请将“欺骗视频流”更改为 iOS TV + diff --git a/patches/src/main/resources/addresources/values-zh-rTW/strings.xml b/patches/src/main/resources/addresources/values-zh-rTW/strings.xml index c60af5f81..0aa98bfce 100644 --- a/patches/src/main/resources/addresources/values-zh-rTW/strings.xml +++ b/patches/src/main/resources/addresources/values-zh-rTW/strings.xml @@ -1486,8 +1486,7 @@ Second \"item\" text" 強制使用原始音訊語言 正在使用原始音訊語言 使用預設音訊 - - 如要使用這項功能,請將「偽裝視訊串流」變更為 iOS TV + diff --git a/patches/src/main/resources/addresources/values/strings.xml b/patches/src/main/resources/addresources/values/strings.xml index ee82922d1..1d86f2421 100644 --- a/patches/src/main/resources/addresources/values/strings.xml +++ b/patches/src/main/resources/addresources/values/strings.xml @@ -1555,7 +1555,7 @@ Enabling this can unlock higher video qualities" Using original audio language Using default audio - To use this feature, change \'Spoof video streams\' to iOS TV + To use this feature, change \'Spoof video streams\' to any client except Android Studio From 0652c56d0dcd4cbf76bad25256297f5e07e29681 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 17 Sep 2025 16:18:22 +0000 Subject: [PATCH 14/19] chore: Release v5.39.1-dev.1 [skip ci] ## [5.39.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.39.0...v5.39.1-dev.1) (2025-09-17) ### Bug Fixes * **YouTube - Force original audio:** Show UI setting summary if spoofing to Android Studio ([b7026b7](https://github.com/ReVanced/revanced-patches/commit/b7026b70865bc44de07b30f84ba8b8b608930d5b)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d8f2f422..d8c3b1d3b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [5.39.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.39.0...v5.39.1-dev.1) (2025-09-17) + + +### Bug Fixes + +* **YouTube - Force original audio:** Show UI setting summary if spoofing to Android Studio ([b7026b7](https://github.com/ReVanced/revanced-patches/commit/b7026b70865bc44de07b30f84ba8b8b608930d5b)) + # [5.39.0](https://github.com/ReVanced/revanced-patches/compare/v5.38.0...v5.39.0) (2025-09-17) diff --git a/gradle.properties b/gradle.properties index c1e74974b..60dc7fafc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M org.gradle.parallel = true android.useAndroidX = true kotlin.code.style = official -version = 5.39.0 +version = 5.39.1-dev.1 From 8502eb8eace4c42dc2e3bc72bd53cc44216f5fa0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 17 Sep 2025 21:51:15 +0400 Subject: [PATCH 15/19] chore: Sync translations (#5918) --- .../resources/addresources/values-ar-rSA/strings.xml | 3 ++- .../resources/addresources/values-az-rAZ/strings.xml | 6 +++++- .../resources/addresources/values-be-rBY/strings.xml | 3 ++- .../resources/addresources/values-bg-rBG/strings.xml | 3 ++- .../resources/addresources/values-bn-rBD/strings.xml | 3 ++- .../resources/addresources/values-cs-rCZ/strings.xml | 2 ++ .../resources/addresources/values-da-rDK/strings.xml | 3 ++- .../resources/addresources/values-de-rDE/strings.xml | 3 ++- .../resources/addresources/values-el-rGR/strings.xml | 3 ++- .../resources/addresources/values-es-rES/strings.xml | 3 ++- .../resources/addresources/values-et-rEE/strings.xml | 3 ++- .../resources/addresources/values-fi-rFI/strings.xml | 3 ++- .../resources/addresources/values-fil-rPH/strings.xml | 3 ++- .../resources/addresources/values-fr-rFR/strings.xml | 9 +++++---- .../resources/addresources/values-ga-rIE/strings.xml | 3 ++- .../resources/addresources/values-hu-rHU/strings.xml | 3 ++- .../resources/addresources/values-hy-rAM/strings.xml | 3 ++- .../resources/addresources/values-in-rID/strings.xml | 11 ++++++----- .../resources/addresources/values-it-rIT/strings.xml | 3 ++- .../resources/addresources/values-iw-rIL/strings.xml | 3 ++- .../resources/addresources/values-ja-rJP/strings.xml | 3 ++- .../resources/addresources/values-ko-rKR/strings.xml | 3 ++- .../resources/addresources/values-lt-rLT/strings.xml | 3 ++- .../resources/addresources/values-lv-rLV/strings.xml | 3 ++- .../resources/addresources/values-nl-rNL/strings.xml | 3 ++- .../resources/addresources/values-pl-rPL/strings.xml | 3 ++- .../resources/addresources/values-pt-rBR/strings.xml | 3 ++- .../resources/addresources/values-pt-rPT/strings.xml | 3 ++- .../resources/addresources/values-ro-rRO/strings.xml | 3 ++- .../resources/addresources/values-ru-rRU/strings.xml | 3 ++- .../resources/addresources/values-sk-rSK/strings.xml | 3 ++- .../resources/addresources/values-sl-rSI/strings.xml | 3 ++- .../resources/addresources/values-sq-rAL/strings.xml | 3 ++- .../resources/addresources/values-sr-rCS/strings.xml | 5 +++-- .../resources/addresources/values-sr-rSP/strings.xml | 3 ++- .../resources/addresources/values-sv-rSE/strings.xml | 3 ++- .../resources/addresources/values-th-rTH/strings.xml | 3 ++- .../resources/addresources/values-tr-rTR/strings.xml | 3 ++- .../resources/addresources/values-uk-rUA/strings.xml | 9 +++++---- .../resources/addresources/values-vi-rVN/strings.xml | 3 ++- .../resources/addresources/values-zh-rCN/strings.xml | 3 ++- .../resources/addresources/values-zh-rTW/strings.xml | 3 ++- 42 files changed, 98 insertions(+), 52 deletions(-) diff --git a/patches/src/main/resources/addresources/values-ar-rSA/strings.xml b/patches/src/main/resources/addresources/values-ar-rSA/strings.xml index f0ea1c869..6e124f11b 100644 --- a/patches/src/main/resources/addresources/values-ar-rSA/strings.xml +++ b/patches/src/main/resources/addresources/values-ar-rSA/strings.xml @@ -1476,7 +1476,8 @@ Second \"item\" text" فرض لغة الصوت الأصلية استخدام لغة الصوت الأصلية استخدام الصوت الافتراضي - + + لاستخدام هذه الميزة، غيّر \"تزوير تدفقات الفيديو\" إلى أي عميل باستثناء Android Studio diff --git a/patches/src/main/resources/addresources/values-az-rAZ/strings.xml b/patches/src/main/resources/addresources/values-az-rAZ/strings.xml index 9b0f1b463..3c78618f6 100644 --- a/patches/src/main/resources/addresources/values-az-rAZ/strings.xml +++ b/patches/src/main/resources/addresources/values-az-rAZ/strings.xml @@ -622,6 +622,9 @@ Ekranın sağ tərəfində düzünə sürüşdürərək səs səviyyəsini tənz Kəsmə düyməsi gizlidir Kəsmə düyməsi göstərilir + Mağazanı Gizlət + Mağaza düyməsi gizlidir + Mağaza düyməsi görünür Saxlayın-ı Gizlət Saxlayın düyməsi gizlidir @@ -1472,7 +1475,8 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər Orijinal səs dilini zorla Orijinal səs dilini istifadə İlkin səs istifadəsi - + + Bu funksiyanı istifadə etmək üçün \"Video yayımları saxtalaşdırı\" Android Studio savayı istənilən qəbulediciyə dəyiş diff --git a/patches/src/main/resources/addresources/values-be-rBY/strings.xml b/patches/src/main/resources/addresources/values-be-rBY/strings.xml index a240a2a52..b040e0879 100644 --- a/patches/src/main/resources/addresources/values-be-rBY/strings.xml +++ b/patches/src/main/resources/addresources/values-be-rBY/strings.xml @@ -1477,7 +1477,8 @@ Second \"item\" text" Вымушаная арыгінальная мова аўдыё Выкарыстоўваць арыгінальную мову аўдыя Выкарыстанне аўдыё па змаўчанні - + + Каб выкарыстаць гэтую функцыю, змяніце \'Падмена відэаструменяў\' на любога кліента, акрамя Android Studio diff --git a/patches/src/main/resources/addresources/values-bg-rBG/strings.xml b/patches/src/main/resources/addresources/values-bg-rBG/strings.xml index 4d5ed022e..0f56d98d2 100644 --- a/patches/src/main/resources/addresources/values-bg-rBG/strings.xml +++ b/patches/src/main/resources/addresources/values-bg-rBG/strings.xml @@ -1476,7 +1476,8 @@ Second \"item\" text" Принудително оригинално аудио език Използване на оригиналния език на аудиото Използване на аудио по подразбиране - + + За да използвате тази функция, променете \'Фалшифициране на видео потоци\' на всеки клиент, освен Android Studio diff --git a/patches/src/main/resources/addresources/values-bn-rBD/strings.xml b/patches/src/main/resources/addresources/values-bn-rBD/strings.xml index 13c02740e..ab28549e3 100644 --- a/patches/src/main/resources/addresources/values-bn-rBD/strings.xml +++ b/patches/src/main/resources/addresources/values-bn-rBD/strings.xml @@ -1472,7 +1472,8 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট মূল অডিও ভাষা বলপূর্বক চালু করুন মূল অডিও ভাষা ব্যবহার করা হচ্ছে ডিফল্ট অডিও ব্যবহার করছে - + + এই বৈশিষ্ট্যটি ব্যবহার করতে, \'ভিডিও স্ট্রিম স্পুফ করুন\' অ্যান্ড্রয়েড স্টুডিও ছাড়া অন্য কোনো ক্লায়েন্টে পরিবর্তন করুন diff --git a/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml b/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml index 278fb685f..876ebac1d 100644 --- a/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml +++ b/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml @@ -1476,6 +1476,8 @@ Povolením této funkce lze odemknout vyšší kvality videa" Vynutit původní jazyk zvuku Použít původní jazyk zvuku Používání výchozího zvuku + + Chcete-li použít tuto funkci, změňte \'Zfalšovat video streamy\' na libovolného klienta kromě Android Studia diff --git a/patches/src/main/resources/addresources/values-da-rDK/strings.xml b/patches/src/main/resources/addresources/values-da-rDK/strings.xml index 695769d76..6738a3d89 100644 --- a/patches/src/main/resources/addresources/values-da-rDK/strings.xml +++ b/patches/src/main/resources/addresources/values-da-rDK/strings.xml @@ -1478,7 +1478,8 @@ Aktivering af dette kan låse op for højere videokvalitet" Tving originalt lydsprog Bruger originalt lydsprog Brug standard lyd - + + For at bruge denne funktion skal du ændre \"Forfalsk videostreams\" til en hvilken som helst klient undtagen Android Studio diff --git a/patches/src/main/resources/addresources/values-de-rDE/strings.xml b/patches/src/main/resources/addresources/values-de-rDE/strings.xml index e8c681d55..4725708e2 100644 --- a/patches/src/main/resources/addresources/values-de-rDE/strings.xml +++ b/patches/src/main/resources/addresources/values-de-rDE/strings.xml @@ -1471,7 +1471,8 @@ Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet w Original Audio erzwingen Original-Audiosprache verwenden Standardaudio verwenden - + + Um diese Funktion zu nutzen, ändere \"Video-Streams fälschen\" auf einen beliebigen Client außer Android Studio diff --git a/patches/src/main/resources/addresources/values-el-rGR/strings.xml b/patches/src/main/resources/addresources/values-el-rGR/strings.xml index b8e11e875..9c8483553 100644 --- a/patches/src/main/resources/addresources/values-el-rGR/strings.xml +++ b/patches/src/main/resources/addresources/values-el-rGR/strings.xml @@ -1475,7 +1475,8 @@ Second \"item\" text" Εξαναγκασμός αρχικής γλώσσας ήχου Χρησιμοποιείται η αρχική γλώσσα ήχου Χρησιμοποιείται ο προεπιλεγμένος ήχος - + + Για να χρησιμοποιήσετε αυτήν τη λειτουργία, αλλάξτε την επιλογή «Παραποίηση ροών βίντεο» σε οποιονδήποτε πελάτη εκτός από το Android Studio diff --git a/patches/src/main/resources/addresources/values-es-rES/strings.xml b/patches/src/main/resources/addresources/values-es-rES/strings.xml index a906c37b6..1018b914d 100644 --- a/patches/src/main/resources/addresources/values-es-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-es-rES/strings.xml @@ -1467,7 +1467,8 @@ Habilitar esto puede desbloquear calidades de vídeo más altas" Forzar idioma de audio original Usar el idioma de audio original Utilizando audio predeterminado - + + Para usar esta función, cambia \'Falsificar transmisiones de vídeo\' a cualquier cliente excepto Android Studio diff --git a/patches/src/main/resources/addresources/values-et-rEE/strings.xml b/patches/src/main/resources/addresources/values-et-rEE/strings.xml index 5365b00e5..c33984447 100644 --- a/patches/src/main/resources/addresources/values-et-rEE/strings.xml +++ b/patches/src/main/resources/addresources/values-et-rEE/strings.xml @@ -1476,7 +1476,8 @@ Selle lubamine võib avada kõrgema video kvaliteedi" Sunni originaalheli keel Algse helikeele kasutamine Kasutan vaikeheli - + + Selle funktsiooni kasutamiseks muutke „Võltsitud videovood” mis tahes muule kliendile peale Android Studio. diff --git a/patches/src/main/resources/addresources/values-fi-rFI/strings.xml b/patches/src/main/resources/addresources/values-fi-rFI/strings.xml index 7d07ef248..34351751a 100644 --- a/patches/src/main/resources/addresources/values-fi-rFI/strings.xml +++ b/patches/src/main/resources/addresources/values-fi-rFI/strings.xml @@ -1476,7 +1476,8 @@ Tämä voi avata korkealaatuisemmat videot" Pakota alkuperäinen äänen kieli Käytetään alkuperäistä ääntä Käytetään oletusääntä - + + Jotta voit käyttää tätä ominaisuutta, muuta \'Huijaa videovirtoja\' mihin tahansa asiakasohjelmaan paitsi Android Studioon diff --git a/patches/src/main/resources/addresources/values-fil-rPH/strings.xml b/patches/src/main/resources/addresources/values-fil-rPH/strings.xml index 4ff17e163..d28b500ee 100644 --- a/patches/src/main/resources/addresources/values-fil-rPH/strings.xml +++ b/patches/src/main/resources/addresources/values-fil-rPH/strings.xml @@ -1474,7 +1474,8 @@ Ang pagpapagana nito ay maaaring magbukas ng mas mataas na kalidad ng video"Pilitin ang orihinal na wika ng audio Ginagamit ang orihinal na wika ng audio Gumagamit ng default audio - + + Para magamit ang feature na ito, palitan ang \'Panggagaya ng mga video stream\' sa anumang client maliban sa Android Studio diff --git a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml index 10224ab62..1ff7e441a 100644 --- a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml +++ b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml @@ -622,9 +622,9 @@ Réglez le volume en balayant verticalement sur le côté droit de l'écran"Le bouton Clip est masqué Le bouton Clip est affiché - Masquer la Boutique - Le bouton Boutique est masqué - Le bouton Boutique est affiché + Masquer \"Magasin\" + Le bouton Magasin est masqué + Le bouton Magasin est affiché Masquer \"Enregistrer\" Le bouton Enregistrer est masqué @@ -1477,7 +1477,8 @@ Activer cette option peut déverrouiller des qualités vidéo supérieures"Forcer la langue audio d\'origine Utilisation de la langue audio d\'origine Utilisation de l\'audio par défaut - + + Pour utiliser cette fonctionnalité, changez \"Simuler les flux vidéo\" pour tout client sauf Android Studio diff --git a/patches/src/main/resources/addresources/values-ga-rIE/strings.xml b/patches/src/main/resources/addresources/values-ga-rIE/strings.xml index 08a8dc8c4..953056e64 100644 --- a/patches/src/main/resources/addresources/values-ga-rIE/strings.xml +++ b/patches/src/main/resources/addresources/values-ga-rIE/strings.xml @@ -1476,7 +1476,8 @@ Is féidir le seo caighdeáin físeáin níos airde a dhíghlasáil" Fórsaigh teanga bhunaidh na fuaime Ag úsáid teanga bhunaidh na fuaime Ag úsáid fuaim réamhshocraithe - + + Chun an ghné seo a úsáid, athraigh \'Bréag-sruthanna físeáin\' chuig aon chliant seachas Android Studio diff --git a/patches/src/main/resources/addresources/values-hu-rHU/strings.xml b/patches/src/main/resources/addresources/values-hu-rHU/strings.xml index 13afc2f10..e918555c7 100644 --- a/patches/src/main/resources/addresources/values-hu-rHU/strings.xml +++ b/patches/src/main/resources/addresources/values-hu-rHU/strings.xml @@ -1473,7 +1473,8 @@ Ez a beállítás lehetővé teszi a magasabb videóminőségek feloldását"Eredeti hang kikényszerítése Eredeti hang használata a hang nyelvén Alapértelmezett hang használata - + + A funkció használatához módosítsa a \"Videóstreamek hamisítása\" beállítást bármely kliensre, kivéve az Android Studiót diff --git a/patches/src/main/resources/addresources/values-hy-rAM/strings.xml b/patches/src/main/resources/addresources/values-hy-rAM/strings.xml index 6b4d613c0..0ee3a1caf 100644 --- a/patches/src/main/resources/addresources/values-hy-rAM/strings.xml +++ b/patches/src/main/resources/addresources/values-hy-rAM/strings.xml @@ -1477,7 +1477,8 @@ Mini-player-ը կարող է գրավվել էկրանից դուրս՝ դեպի Բնօրինակ ձայն օգտագործել լեզուն Օգտագործելով ձայնային օրիգինալ լեզուն Վերջնական ձայն օգտագործվում է - + + Այս հնարավորությունն օգտագործելու համար «Կեղծել վիդեո հոսքերը» տարբերակը փոխեք ցանկացած հաճախորդի, բացի Android Studio-ից diff --git a/patches/src/main/resources/addresources/values-in-rID/strings.xml b/patches/src/main/resources/addresources/values-in-rID/strings.xml index 28b4f93bb..7d237961b 100644 --- a/patches/src/main/resources/addresources/values-in-rID/strings.xml +++ b/patches/src/main/resources/addresources/values-in-rID/strings.xml @@ -622,9 +622,9 @@ Menyesuaikan volume dengan mengusap secara vertikal di sisi kanan layar"Tombol klip disembunyikan Tombol klip ditampilkan - Sembunyikan Toko - Tombol Toko disembunyikan - Tombol Toko ditampilkan + Sembunyikan Belanja + Tombol belanja disembunyikan + Tombol belanja ditampilkan Sembunyikan Simpan Tombol Simpan disembunyikan @@ -835,7 +835,7 @@ Untuk menampilkan menu trek audio, ubah 'Palsukan aliran video' ke iPadOS"Sembunyikan saran penelusuran Saran penelusuran disembunyikan Saran penelusuran ditampilkan - Sembunyikan tombol Toko + Sembunyikan tombol Belanja Tombol belanja disembunyikan Tombol belanja ditampilkan Sembunyikan stiker @@ -1475,7 +1475,8 @@ Mengaktifkan ini dapat membuka kualitas video yang lebih tinggi" Paksa bahasa audio asli Menggunakan bahasa audio asli Menggunakan audio bawaan - + + Untuk menggunakan fitur ini, ubah \'Spoof aliran video\' ke klien apa pun kecuali Android Studio diff --git a/patches/src/main/resources/addresources/values-it-rIT/strings.xml b/patches/src/main/resources/addresources/values-it-rIT/strings.xml index 46ffcd346..f5a1ad788 100644 --- a/patches/src/main/resources/addresources/values-it-rIT/strings.xml +++ b/patches/src/main/resources/addresources/values-it-rIT/strings.xml @@ -1475,7 +1475,8 @@ Abilitare questa opzione può sbloccare qualità video più elevate" Forza la lingua audio originale Utilizza la lingua audio originale Utilizzo audio predefinito - + + Per usare questa funzionalità, cambia \"Falsifica i flussi video\" a qualsiasi client eccetto Android Studio diff --git a/patches/src/main/resources/addresources/values-iw-rIL/strings.xml b/patches/src/main/resources/addresources/values-iw-rIL/strings.xml index 41caf104a..7480855f6 100644 --- a/patches/src/main/resources/addresources/values-iw-rIL/strings.xml +++ b/patches/src/main/resources/addresources/values-iw-rIL/strings.xml @@ -1478,7 +1478,8 @@ Second \"item\" text" כפה שפת שמע מקורית שימוש בשפת שמע מקורית שימוש בשמע ברירת מחדל - + + כדי להשתמש בתכונה זו, שנה את \'זיוף זרמי וידאו\' לכל לקוח מלבד Android Studio diff --git a/patches/src/main/resources/addresources/values-ja-rJP/strings.xml b/patches/src/main/resources/addresources/values-ja-rJP/strings.xml index 5136ca7e7..8128bb2f8 100644 --- a/patches/src/main/resources/addresources/values-ja-rJP/strings.xml +++ b/patches/src/main/resources/addresources/values-ja-rJP/strings.xml @@ -1478,7 +1478,8 @@ Automotive レイアウト オリジナルの音声を強制的に使用 オリジナルの音声トラック (言語) を使用します\n\nオートダビングを含む吹き替えの音声トラックは使用しません アプリが選択した音声トラック (言語) を使用します\n\nオートダビングを含む吹き替えの音声トラックを使用する場合があります - + + この機能を使用するには、「動画ストリームを偽装」のクライアントを Android Studio を除く任意のクライアントに変更してください diff --git a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml index ce4b429ca..bb3d0a511 100644 --- a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml +++ b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml @@ -1483,7 +1483,8 @@ DeArrow에 대해 자세히 알아보려면 여기를 탭하세요" 원본 오디오 스트림 언어 강제로 활성화하기 원본 오디오 스트림 언어를 사용 중입니다 기본 오디오 스트림 언어를 사용 중입니다 - + + 이 기능을 사용하려면, \'동영상 스트림 변경하기\'를 Android Studio를 제외한 다른 클라이언트로 변경하세요. diff --git a/patches/src/main/resources/addresources/values-lt-rLT/strings.xml b/patches/src/main/resources/addresources/values-lt-rLT/strings.xml index 5b631d79c..a2b993423 100644 --- a/patches/src/main/resources/addresources/values-lt-rLT/strings.xml +++ b/patches/src/main/resources/addresources/values-lt-rLT/strings.xml @@ -1477,7 +1477,8 @@ Gali būti atrakinta aukštesnės vaizdo įrašų kokybės, bet galite patirti v Priversti originalią garso kalbą Naudojama originali garso kalba Naudojamas numatytasis garsas - + + Kad naudotumėte šią funkciją, pakeiskite „Klastoti vaizdo įrašų srautus“ į bet kurį klientą, išskyrus „Android Studio“ diff --git a/patches/src/main/resources/addresources/values-lv-rLV/strings.xml b/patches/src/main/resources/addresources/values-lv-rLV/strings.xml index 94ac3125e..862ec7422 100644 --- a/patches/src/main/resources/addresources/values-lv-rLV/strings.xml +++ b/patches/src/main/resources/addresources/values-lv-rLV/strings.xml @@ -1477,7 +1477,8 @@ Var tikt atbloķētas augstākas video kvalitātes, taču var rasties video atsk Piespiest oriģinālo audio valodu Izmantot oriģinālo audio valodu Tiek izmantots noklusējuma audio - + + Lai izmantotu šo funkciju, mainiet \"Viltotās video plūsmas\" uz jebkuru klientu, izņemot Android Studio diff --git a/patches/src/main/resources/addresources/values-nl-rNL/strings.xml b/patches/src/main/resources/addresources/values-nl-rNL/strings.xml index 4274440a8..efe7a43c6 100644 --- a/patches/src/main/resources/addresources/values-nl-rNL/strings.xml +++ b/patches/src/main/resources/addresources/values-nl-rNL/strings.xml @@ -1474,7 +1474,8 @@ Het inschakelen hiervan kan hogere videokwaliteiten ontgrendelen" Forceer de originele audiotaal De oorspronkelijke audiotaal gebruiken Standaard audio gebruiken - + + Om deze functie te gebruiken, wijzig \'Videostreams spoofen\' naar elke client behalve Android Studio diff --git a/patches/src/main/resources/addresources/values-pl-rPL/strings.xml b/patches/src/main/resources/addresources/values-pl-rPL/strings.xml index a07931703..b19d19a24 100644 --- a/patches/src/main/resources/addresources/values-pl-rPL/strings.xml +++ b/patches/src/main/resources/addresources/values-pl-rPL/strings.xml @@ -1472,7 +1472,8 @@ Włączenie tego może odblokować wyższe jakości wideo" Wymuś język oryginalnego dźwięku Używanie oryginalnego języka audio Używanie domyślnego dźwięku - + + Aby użyć tej funkcji, zmień \'Fałszuj strumienie wideo\' na dowolnego klienta z wyjątkiem Android Studio diff --git a/patches/src/main/resources/addresources/values-pt-rBR/strings.xml b/patches/src/main/resources/addresources/values-pt-rBR/strings.xml index a55a776a4..f32cbe2a1 100644 --- a/patches/src/main/resources/addresources/values-pt-rBR/strings.xml +++ b/patches/src/main/resources/addresources/values-pt-rBR/strings.xml @@ -1473,7 +1473,8 @@ Habilitar isso pode desbloquear qualidades de vídeo mais altas" Forçar idioma do áudio original Usar o idioma original do áudio Usando áudio padrão - + + Para usar este recurso, mude \'Falsificar fluxos de vídeo\' para qualquer cliente, exceto o Android Studio diff --git a/patches/src/main/resources/addresources/values-pt-rPT/strings.xml b/patches/src/main/resources/addresources/values-pt-rPT/strings.xml index 1143f071a..4bffd019f 100644 --- a/patches/src/main/resources/addresources/values-pt-rPT/strings.xml +++ b/patches/src/main/resources/addresources/values-pt-rPT/strings.xml @@ -1476,7 +1476,8 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"Forçar idioma original do áudio Usando o idioma de áudio original Usando o áudio predefinido - + + Para usar este recurso, altere \'Falsificar streams de vídeo\' para qualquer cliente, exceto o Android Studio diff --git a/patches/src/main/resources/addresources/values-ro-rRO/strings.xml b/patches/src/main/resources/addresources/values-ro-rRO/strings.xml index c5d24ca34..b94cc4106 100644 --- a/patches/src/main/resources/addresources/values-ro-rRO/strings.xml +++ b/patches/src/main/resources/addresources/values-ro-rRO/strings.xml @@ -1475,7 +1475,8 @@ Activarea acestei opțiuni poate debloca calități video mai mari" Forțează limba audio originală Folosind limba audio originală Utilizează audio implicit - + + Pentru a utiliza această funcție, modificați \"Falsificare fluxuri video\" la orice client, cu excepția Android Studio diff --git a/patches/src/main/resources/addresources/values-ru-rRU/strings.xml b/patches/src/main/resources/addresources/values-ru-rRU/strings.xml index 51af65e40..cf31e0a5e 100644 --- a/patches/src/main/resources/addresources/values-ru-rRU/strings.xml +++ b/patches/src/main/resources/addresources/values-ru-rRU/strings.xml @@ -1483,7 +1483,8 @@ Second \"item\" text" Принудительно оригинальная звуковая дорожка Используется оригинальная звуковая дорожка Используется звуковая дорожка по умолчанию - + + Для использования этой функции, измените \'Подмена видеопотоков\' на любой клиент, кроме Android Studio diff --git a/patches/src/main/resources/addresources/values-sk-rSK/strings.xml b/patches/src/main/resources/addresources/values-sk-rSK/strings.xml index 11775cd14..8b14f7f09 100644 --- a/patches/src/main/resources/addresources/values-sk-rSK/strings.xml +++ b/patches/src/main/resources/addresources/values-sk-rSK/strings.xml @@ -1469,7 +1469,8 @@ Povolením tejto možnosti môžete odomknúť vyššie kvality videa" Vynútiť pôvodný jazyk zvuku Používa sa pôvodný jazyk zvuku Používanie predvoleného zvuku - + + Ak chcete použiť túto funkciu, zmeňte \"Podvrhnúť video streamy\" na ľubovoľného klienta okrem Android Studio diff --git a/patches/src/main/resources/addresources/values-sl-rSI/strings.xml b/patches/src/main/resources/addresources/values-sl-rSI/strings.xml index 1895687ff..a72fe78c7 100644 --- a/patches/src/main/resources/addresources/values-sl-rSI/strings.xml +++ b/patches/src/main/resources/addresources/values-sl-rSI/strings.xml @@ -1476,7 +1476,8 @@ Omogočanje tega lahko odklene višje kakovosti videa" Izsili izvirni jezik zvoka Uporabi izvirni jezik zvoka Uporaba privzetega zvoka - + + Za uporabo te funkcije spremenite \"Ponaredi video tokove\" na katerega koli odjemalca, razen na Android Studio diff --git a/patches/src/main/resources/addresources/values-sq-rAL/strings.xml b/patches/src/main/resources/addresources/values-sq-rAL/strings.xml index d7d26c597..ec07f6b47 100644 --- a/patches/src/main/resources/addresources/values-sq-rAL/strings.xml +++ b/patches/src/main/resources/addresources/values-sq-rAL/strings.xml @@ -1474,7 +1474,8 @@ Aktivizimi i kësaj mund të zhbllokojë cilësi më të larta video" Forco gjuhën origjinale të audios Duke përdorur gjuhën origjinale audio Përdorimi i Zërit Parazgjedhur - + + Për të përdorur këtë veçori, ndryshoni \'Falsifiko transmetimet e videos\' në çdo klient përveç Android Studio diff --git a/patches/src/main/resources/addresources/values-sr-rCS/strings.xml b/patches/src/main/resources/addresources/values-sr-rCS/strings.xml index a546e3742..eae05e2e4 100644 --- a/patches/src/main/resources/addresources/values-sr-rCS/strings.xml +++ b/patches/src/main/resources/addresources/values-sr-rCS/strings.xml @@ -622,7 +622,7 @@ Podesite jačinu zvuka prevlačenjem vertikalno na desnoj strani ekrana"Dugme „Klip” je skriveno Dugme „Klip” je prikazano - Sakrij Prodavnicu + Sakrij dugme „Prodavnica” Dugme „Prodavnica” je skriveno Dugme „Prodavnica” je prikazano @@ -1475,7 +1475,8 @@ Ako ovo omogućite, mogu biti otključani viši kvaliteti videa" Prisili originalni jezik zvuka Korišćenje originalnog jezika zvuka Korišćenje podrazumevanog zvuka - + + Da biste koristili ovu funkciju, promenite opciju „Lažirani video strimovi” na bilo koji klijent osim Android Studio diff --git a/patches/src/main/resources/addresources/values-sr-rSP/strings.xml b/patches/src/main/resources/addresources/values-sr-rSP/strings.xml index 45e3a5627..e84787fda 100644 --- a/patches/src/main/resources/addresources/values-sr-rSP/strings.xml +++ b/patches/src/main/resources/addresources/values-sr-rSP/strings.xml @@ -1478,7 +1478,8 @@ Second \"item\" text" Присили оригинални језик звука Коришћење оригиналног језика звука Коришћење подразумеваног звука - + + Да бисте користили ову функцију, промените опцију „Лажирани видео стримови” на било који клијент осим Android Studio diff --git a/patches/src/main/resources/addresources/values-sv-rSE/strings.xml b/patches/src/main/resources/addresources/values-sv-rSE/strings.xml index f1a93e8e2..d0642166d 100644 --- a/patches/src/main/resources/addresources/values-sv-rSE/strings.xml +++ b/patches/src/main/resources/addresources/values-sv-rSE/strings.xml @@ -1475,7 +1475,8 @@ Om du aktiverar detta kan högre videokvaliteter låsas upp" Tvinga ursprungligt ljudspråk Använder ursprungligt ljudspråk Använder standardljud - + + Om du vill använda den här funktionen ändrar du \"Förfalska videoströmmar\" till valfri klient utom Android Studio diff --git a/patches/src/main/resources/addresources/values-th-rTH/strings.xml b/patches/src/main/resources/addresources/values-th-rTH/strings.xml index 3bb025eef..189784fb2 100644 --- a/patches/src/main/resources/addresources/values-th-rTH/strings.xml +++ b/patches/src/main/resources/addresources/values-th-rTH/strings.xml @@ -1478,7 +1478,8 @@ User id ของคุณเหมือนกับรหัสผ่าน บังคับใช้ภาษาเสียงต้นฉบับ กำลังใช้ภาษาเสียงต้นฉบับ กำลังใช้ออดิโอเริ่มต้น - + + หากต้องการใช้คุณสมบัตินี้ ให้เปลี่ยน \'Spoof video streams\' เป็นไคลเอ็นต์อื่น ๆ ยกเว้น Android Studio diff --git a/patches/src/main/resources/addresources/values-tr-rTR/strings.xml b/patches/src/main/resources/addresources/values-tr-rTR/strings.xml index 5663a9eb3..726beeda2 100644 --- a/patches/src/main/resources/addresources/values-tr-rTR/strings.xml +++ b/patches/src/main/resources/addresources/values-tr-rTR/strings.xml @@ -1483,7 +1483,8 @@ Bunu etkinleştirmek daha yüksek video kalitelerini açabilir" Orijinal ses dilini zorla Orijinal ses dili kullanılıyor Varsayılan ses kullanılıyor - + + Bu özelliği kullanmak için \'Video akışlarını taklit et\' ayarını Android Studio dışındaki herhangi bir istemciye değiştirin diff --git a/patches/src/main/resources/addresources/values-uk-rUA/strings.xml b/patches/src/main/resources/addresources/values-uk-rUA/strings.xml index 76d927db5..11baf5759 100644 --- a/patches/src/main/resources/addresources/values-uk-rUA/strings.xml +++ b/patches/src/main/resources/addresources/values-uk-rUA/strings.xml @@ -622,9 +622,9 @@ Second \"item\" text" Кнопку \"Створити кліп\" приховано Кнопка \"Створити кліп\" показується - Приховати Магазин - Кнопку магазину приховано - Кнопка магазину показується + Приховати \"Покупки\" + Кнопку \"Покупки\" приховано + Кнопка \"Покупки\" показується Приховати \"Зберегти\" Кнопку \"Зберегти\" приховано @@ -1475,7 +1475,8 @@ Second \"item\" text" Примусово оригінальна мова звукової доріжки Використовується оригінальна мова звукової доріжки Використовується стандартна (регіональна) мова звукової доріжки - + + Щоб використовувати цю функцію, змініть клієнт \"Підробки відеопотоків\" на будь-який клієнт, окрім Android Studio diff --git a/patches/src/main/resources/addresources/values-vi-rVN/strings.xml b/patches/src/main/resources/addresources/values-vi-rVN/strings.xml index 69256a2d7..4cea6ef05 100644 --- a/patches/src/main/resources/addresources/values-vi-rVN/strings.xml +++ b/patches/src/main/resources/addresources/values-vi-rVN/strings.xml @@ -1482,7 +1482,8 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"Buộc ngôn ngữ âm thanh gốc Đang dùng ngôn ngữ âm thanh gốc Đang dùng âm thanh mặc định - + + Để dùng tính năng này, hãy đổi \'Giả mạo luồng video\' thành bất kỳ ứng dụng khách nào ngoại trừ Android Studio diff --git a/patches/src/main/resources/addresources/values-zh-rCN/strings.xml b/patches/src/main/resources/addresources/values-zh-rCN/strings.xml index 3f70b70e3..392bc2024 100644 --- a/patches/src/main/resources/addresources/values-zh-rCN/strings.xml +++ b/patches/src/main/resources/addresources/values-zh-rCN/strings.xml @@ -1481,7 +1481,8 @@ Second \"item\" text" 强制使用原始音频语言 使用原始音频语言 正在使用默认音频 - + + 要使用此功能,请将“伪造视频流”更改为除 Android Studio 之外的任何客户端 diff --git a/patches/src/main/resources/addresources/values-zh-rTW/strings.xml b/patches/src/main/resources/addresources/values-zh-rTW/strings.xml index 0aa98bfce..36b19264b 100644 --- a/patches/src/main/resources/addresources/values-zh-rTW/strings.xml +++ b/patches/src/main/resources/addresources/values-zh-rTW/strings.xml @@ -1486,7 +1486,8 @@ Second \"item\" text" 強制使用原始音訊語言 正在使用原始音訊語言 使用預設音訊 - + + 若要使用此功能,請將「偽造視訊串流」變更為 Android Studio 以外的任何用戶端 From e6cce8554116df3c0ea6dbb7440c59c9e73d8334 Mon Sep 17 00:00:00 2001 From: Samo Hribar <34912839+samolego@users.noreply.github.com> Date: Wed, 17 Sep 2025 19:51:33 +0200 Subject: [PATCH 16/19] feat(Viber - Hide ads): Support latest app target (#5863) --- patches/api/patches.api | 1 - .../patches/viber/ads/Fingerprints.kt | 10 ++----- .../patches/viber/ads/HideAdsPatch.kt | 30 +++++++++++++++++-- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/patches/api/patches.api b/patches/api/patches.api index 00b58e88e..24ff0e3a8 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -1877,4 +1877,3 @@ public final class app/revanced/util/resource/StringResource : app/revanced/util public final class app/revanced/util/resource/StringResource$Companion { public final fun fromNode (Lorg/w3c/dom/Node;)Lapp/revanced/util/resource/StringResource; } - diff --git a/patches/src/main/kotlin/app/revanced/patches/viber/ads/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/viber/ads/Fingerprints.kt index 11ebe0d11..29b752cf8 100644 --- a/patches/src/main/kotlin/app/revanced/patches/viber/ads/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/viber/ads/Fingerprints.kt @@ -2,12 +2,6 @@ package app.revanced.patches.viber.ads import app.revanced.patcher.fingerprint -internal val adsFreeFingerprint = 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 - } +internal val findAdStringFingerprint = fingerprint { + strings("viber_plus_debug_ads_free_flag") } diff --git a/patches/src/main/kotlin/app/revanced/patches/viber/ads/HideAdsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/viber/ads/HideAdsPatch.kt index 91bff02c6..0ec31e376 100644 --- a/patches/src/main/kotlin/app/revanced/patches/viber/ads/HideAdsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/viber/ads/HideAdsPatch.kt @@ -1,17 +1,41 @@ package app.revanced.patches.viber.ads +import app.revanced.patcher.extensions.InstructionExtensions.getInstruction +import app.revanced.patcher.fingerprint +import app.revanced.patcher.patch.PatchException import app.revanced.patcher.patch.bytecodePatch +import app.revanced.util.indexOfFirstInstructionReversedOrThrow import app.revanced.util.returnEarly +import com.android.tools.smali.dexlib2.Opcode +import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction +import com.android.tools.smali.dexlib2.iface.reference.TypeReference @Suppress("unused") val hideAdsPatch = bytecodePatch( name = "Hide Ads", description = "Hides ad banners between chats.", ) { - compatibleWith("com.viber.voip"("25.9.2.0")) + compatibleWith("com.viber.voip"("25.9.2.0", "26.1.2.0")) execute { - // Return 1 (true) indicating ads should be disabled. - adsFreeFingerprint.method.returnEarly(1) + val method = findAdStringFingerprint.method + + // Find the ads free string index + val stringIndex = findAdStringFingerprint.stringMatches!!.first().index + + // Search backwards from the string to find the `new-instance` (TypeReference) instruction + val typeRefIndex = method.indexOfFirstInstructionReversedOrThrow(stringIndex) { this.opcode == Opcode.NEW_INSTANCE } + + // Get the class name from the TypeReference + val targetClass = method.getInstruction(typeRefIndex).reference as TypeReference + + // Patch the ads-free method to always return true + fingerprint { + returns("I") + parameters() + custom { method, classDef -> + classDef == targetClass + } + }.method.returnEarly(1) } } From dfff3d7c0a7f49892beab7a86a09074a9cc42fe6 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 17 Sep 2025 17:54:19 +0000 Subject: [PATCH 17/19] chore: Release v5.40.0-dev.1 [skip ci] # [5.40.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.39.1-dev.1...v5.40.0-dev.1) (2025-09-17) ### Features * **Viber - Hide ads:** Support latest app target ([#5863](https://github.com/ReVanced/revanced-patches/issues/5863)) ([e6cce85](https://github.com/ReVanced/revanced-patches/commit/e6cce8554116df3c0ea6dbb7440c59c9e73d8334)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d8c3b1d3b..684d03bd3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [5.40.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.39.1-dev.1...v5.40.0-dev.1) (2025-09-17) + + +### Features + +* **Viber - Hide ads:** Support latest app target ([#5863](https://github.com/ReVanced/revanced-patches/issues/5863)) ([e6cce85](https://github.com/ReVanced/revanced-patches/commit/e6cce8554116df3c0ea6dbb7440c59c9e73d8334)) + ## [5.39.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.39.0...v5.39.1-dev.1) (2025-09-17) diff --git a/gradle.properties b/gradle.properties index 60dc7fafc..9ea70c171 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M org.gradle.parallel = true android.useAndroidX = true kotlin.code.style = official -version = 5.39.1-dev.1 +version = 5.40.0-dev.1 From 6862200a28a579435d99e660165069316528e3fd Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Wed, 17 Sep 2025 23:42:11 +0400 Subject: [PATCH 18/19] chore: Fix api dump --- patches/api/patches.api | 1 + 1 file changed, 1 insertion(+) diff --git a/patches/api/patches.api b/patches/api/patches.api index 24ff0e3a8..00b58e88e 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -1877,3 +1877,4 @@ public final class app/revanced/util/resource/StringResource : app/revanced/util public final class app/revanced/util/resource/StringResource$Companion { public final fun fromNode (Lorg/w3c/dom/Node;)Lapp/revanced/util/resource/StringResource; } + From 8ba9a19ade24c5fe9bd6d4e49772b7663522780e Mon Sep 17 00:00:00 2001 From: brosssh <44944126+brosssh@users.noreply.github.com> Date: Thu, 18 Sep 2025 08:13:46 +0200 Subject: [PATCH 19/19] feat(Instagram): Add `Limit feed to followed profiles` patch (#5908) --- extensions/instagram/build.gradle.kts | 3 + .../instagram/src/main/AndroidManifest.xml | 1 + .../feed/LimitFeedToFollowedProfiles.java | 18 ++++++ patches/api/patches.api | 8 +++ .../patches/instagram/feed/Fingerprints.kt | 20 ++++++ .../feed/LimitFeedToFollowedProfiles.kt | 63 +++++++++++++++++++ .../hide/navigation/HideNavigationButtons.kt | 2 +- .../misc/extension/SharedExtensionPatch.kt | 9 +++ .../extension/hooks/ApplicationInitHook.kt | 9 +++ 9 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 extensions/instagram/build.gradle.kts create mode 100644 extensions/instagram/src/main/AndroidManifest.xml create mode 100644 extensions/instagram/src/main/java/app/revanced/extension/instagram/feed/LimitFeedToFollowedProfiles.java create mode 100644 patches/src/main/kotlin/app/revanced/patches/instagram/feed/Fingerprints.kt create mode 100644 patches/src/main/kotlin/app/revanced/patches/instagram/feed/LimitFeedToFollowedProfiles.kt create mode 100644 patches/src/main/kotlin/app/revanced/patches/instagram/misc/extension/SharedExtensionPatch.kt create mode 100644 patches/src/main/kotlin/app/revanced/patches/instagram/misc/extension/hooks/ApplicationInitHook.kt diff --git a/extensions/instagram/build.gradle.kts b/extensions/instagram/build.gradle.kts new file mode 100644 index 000000000..8cf6305c1 --- /dev/null +++ b/extensions/instagram/build.gradle.kts @@ -0,0 +1,3 @@ +dependencies { + compileOnly(project(":extensions:shared:library")) +} diff --git a/extensions/instagram/src/main/AndroidManifest.xml b/extensions/instagram/src/main/AndroidManifest.xml new file mode 100644 index 000000000..9b65eb06c --- /dev/null +++ b/extensions/instagram/src/main/AndroidManifest.xml @@ -0,0 +1 @@ + diff --git a/extensions/instagram/src/main/java/app/revanced/extension/instagram/feed/LimitFeedToFollowedProfiles.java b/extensions/instagram/src/main/java/app/revanced/extension/instagram/feed/LimitFeedToFollowedProfiles.java new file mode 100644 index 000000000..2367e738a --- /dev/null +++ b/extensions/instagram/src/main/java/app/revanced/extension/instagram/feed/LimitFeedToFollowedProfiles.java @@ -0,0 +1,18 @@ +package app.revanced.extension.instagram.feed; + +import java.util.HashMap; +import java.util.Map; + +@SuppressWarnings("unused") +public class LimitFeedToFollowedProfiles { + + /** + * Injection point. + */ + public static Map setFollowingHeader(Map requestHeaderMap) { + // Create new map as original is unmodifiable. + Map patchedRequestHeaderMap = new HashMap<>(requestHeaderMap); + patchedRequestHeaderMap.put("pagination_source", "following"); + return patchedRequestHeaderMap; + } +} diff --git a/patches/api/patches.api b/patches/api/patches.api index 00b58e88e..f54cb57e8 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -264,6 +264,10 @@ public final class app/revanced/patches/instagram/ads/HideAdsPatchKt { public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } +public final class app/revanced/patches/instagram/feed/LimitFeedToFollowedProfilesKt { + public static final fun getLimitFeedToFollowedProfiles ()Lapp/revanced/patcher/patch/BytecodePatch; +} + public final class app/revanced/patches/instagram/hide/explore/HideExploreFeedKt { public static final fun getHideExportFeedPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } @@ -276,6 +280,10 @@ public final class app/revanced/patches/instagram/hide/stories/HideStoriesKt { public static final fun getHideStoriesPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } +public final class app/revanced/patches/instagram/misc/extension/SharedExtensionPatchKt { + public static final fun getSharedExtensionPatch ()Lapp/revanced/patcher/patch/BytecodePatch; +} + public final class app/revanced/patches/instagram/misc/signature/SignatureCheckPatchKt { public static final fun getSignatureCheckPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } diff --git a/patches/src/main/kotlin/app/revanced/patches/instagram/feed/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/instagram/feed/Fingerprints.kt new file mode 100644 index 000000000..cf8c61118 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/instagram/feed/Fingerprints.kt @@ -0,0 +1,20 @@ +package app.revanced.patches.instagram.feed + +import app.revanced.patcher.fingerprint +import app.revanced.patcher.patch.BytecodePatchContext + +internal val mainFeedRequestClassFingerprint = fingerprint { + strings("Request{mReason=", ", mInstanceNumber=") +} + +context(BytecodePatchContext) +internal val initMainFeedRequestFingerprint get() = fingerprint { + custom { method, classDef -> + method.name == "" && + classDef == mainFeedRequestClassFingerprint.classDef + } +} + +internal val mainFeedHeaderMapFinderFingerprint = fingerprint { + strings("pagination_source", "FEED_REQUEST_SENT") +} diff --git a/patches/src/main/kotlin/app/revanced/patches/instagram/feed/LimitFeedToFollowedProfiles.kt b/patches/src/main/kotlin/app/revanced/patches/instagram/feed/LimitFeedToFollowedProfiles.kt new file mode 100644 index 000000000..3ded4c91a --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/instagram/feed/LimitFeedToFollowedProfiles.kt @@ -0,0 +1,63 @@ +package app.revanced.patches.instagram.feed + +import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +import app.revanced.patcher.extensions.InstructionExtensions.getInstruction +import app.revanced.patcher.patch.bytecodePatch +import app.revanced.patches.instagram.misc.extension.sharedExtensionPatch +import app.revanced.util.getReference +import app.revanced.util.indexOfFirstInstructionOrThrow +import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction +import com.android.tools.smali.dexlib2.iface.reference.FieldReference + +internal const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/instagram/feed/LimitFeedToFollowedProfiles;" + +@Suppress("unused") +val limitFeedToFollowedProfiles = bytecodePatch( + name = "Limit feed to followed profiles", + description = "Filters the home feed to display only content from profiles you follow.", +) { + compatibleWith("com.instagram.android") + + dependsOn(sharedExtensionPatch) + + execute { + /** + * Since the header field is obfuscated and there is no easy way to identify it among all the class fields, + * an additional method is fingerprinted. + * This method uses the map, so we can get the field name of the map field using this. + */ + val mainFeedRequestHeaderFieldName: String + + with(mainFeedHeaderMapFinderFingerprint.method) { + mainFeedRequestHeaderFieldName = indexOfFirstInstructionOrThrow { + getReference().let { ref -> + ref?.type == "Ljava/util/Map;" && + ref.definingClass == mainFeedRequestClassFingerprint.classDef.toString() + + } + }.let { instructionIndex -> + getInstruction(instructionIndex).getReference()!!.name + } + } + + initMainFeedRequestFingerprint.method.apply { + // Finds the instruction where the map is being initialized in the constructor + val getHeaderIndex = indexOfFirstInstructionOrThrow { + getReference().let { + it?.name == mainFeedRequestHeaderFieldName + } + } + + val paramHeaderRegister = getInstruction(getHeaderIndex).registerA + + // Replace the `pagination_source` header value with `following` in the feed/timeline request. + addInstructions( + getHeaderIndex, + """ + invoke-static { v$paramHeaderRegister }, $EXTENSION_CLASS_DESCRIPTOR->setFollowingHeader(Ljava/util/Map;)Ljava/util/Map; + move-result-object v$paramHeaderRegister + """ + ) + } + } +} diff --git a/patches/src/main/kotlin/app/revanced/patches/instagram/hide/navigation/HideNavigationButtons.kt b/patches/src/main/kotlin/app/revanced/patches/instagram/hide/navigation/HideNavigationButtons.kt index ee68c4fe1..cac9c35c3 100644 --- a/patches/src/main/kotlin/app/revanced/patches/instagram/hide/navigation/HideNavigationButtons.kt +++ b/patches/src/main/kotlin/app/revanced/patches/instagram/hide/navigation/HideNavigationButtons.kt @@ -49,7 +49,7 @@ val hideNavigationButtonsPatch = bytecodePatch( val freeRegister = findFreeRegister(insertIndex, loopIndexRegister) val instruction = getInstruction(endIndex - 1) - var instructions = buildString { + val instructions = buildString { if (hideCreate!!) { appendLine( """ diff --git a/patches/src/main/kotlin/app/revanced/patches/instagram/misc/extension/SharedExtensionPatch.kt b/patches/src/main/kotlin/app/revanced/patches/instagram/misc/extension/SharedExtensionPatch.kt new file mode 100644 index 000000000..351b641a4 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/instagram/misc/extension/SharedExtensionPatch.kt @@ -0,0 +1,9 @@ +package app.revanced.patches.instagram.misc.extension + +import app.revanced.patches.instagram.misc.extension.hooks.applicationInitHook +import app.revanced.patches.shared.misc.extension.sharedExtensionPatch + +val sharedExtensionPatch = sharedExtensionPatch( + "instagram", + applicationInitHook, +) diff --git a/patches/src/main/kotlin/app/revanced/patches/instagram/misc/extension/hooks/ApplicationInitHook.kt b/patches/src/main/kotlin/app/revanced/patches/instagram/misc/extension/hooks/ApplicationInitHook.kt new file mode 100644 index 000000000..eca0a885f --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/instagram/misc/extension/hooks/ApplicationInitHook.kt @@ -0,0 +1,9 @@ +package app.revanced.patches.instagram.misc.extension.hooks + +import app.revanced.patches.shared.misc.extension.extensionHook + +internal val applicationInitHook = extensionHook { + custom { method, classDef -> + method.name == "onCreate" && classDef.endsWith("/InstagramAppShell;") + } +}