From 0a6958242bc50371d1be3f24ddfb3b9257c3cf4b Mon Sep 17 00:00:00 2001 From: KobeW50 <84587632+KobeW50@users.noreply.github.com> Date: Wed, 28 Aug 2024 02:43:03 -0400 Subject: [PATCH 01/53] ci: Use simple link in Discord message and suggest release notes (#74) --- .github/workflows/discord_ping_on_release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/discord_ping_on_release.yml b/.github/workflows/discord_ping_on_release.yml index f9dcbb409a..a826fcd438 100644 --- a/.github/workflows/discord_ping_on_release.yml +++ b/.github/workflows/discord_ping_on_release.yml @@ -19,4 +19,4 @@ jobs: content: "<@&1271197877724643461>" title: "Patches `${{ github.event.release.tag_name }}` has been released!" description: | - Click [here]( ${{github.event.repository.html_url }}/releases/tag/${{ github.event.release.tag_name }}) to read the changelog. \ No newline at end of file + Click [here](${{ github.event.release.html_url }}) to read the changelog and release notes. \ No newline at end of file From 984cd218147f5da79e2bf3a495194072117d1d10 Mon Sep 17 00:00:00 2001 From: MondayNitro <87489540+MondayNitro@users.noreply.github.com> Date: Wed, 28 Aug 2024 12:16:43 +0530 Subject: [PATCH 02/53] feat(YouTube/Overlay buttons): add `Collapse` button and update thin-type overlay button icons (#75) * update overlay button icons * Add files via upload * Update OverlayButtonsPatch.kt * allow changing collapse button style * allow changing collapse button style * Update OverlayButtonsPatch.kt * update overlay button icons * update overlay button icons --- .../overlaybuttons/OverlayButtonsPatch.kt | 1 + .../yt_outline_chevron_down_white_24.png | Bin 0 -> 211 bytes .../yt_outline_chevron_down_white_24.png | Bin 0 -> 194 bytes .../yt_outline_chevron_down_white_24.png | Bin 0 -> 257 bytes .../yt_outline_chevron_down_white_24.png | Bin 0 -> 331 bytes .../yt_outline_chevron_down_white_24.png | Bin 0 -> 384 bytes .../yt_outline_chevron_down_white_24.png | Bin 0 -> 264 bytes .../yt_outline_chevron_down_white_24.png | Bin 0 -> 203 bytes .../yt_outline_chevron_down_white_24.png | Bin 0 -> 300 bytes .../yt_outline_chevron_down_white_24.png | Bin 0 -> 381 bytes .../yt_outline_chevron_down_white_24.png | Bin 0 -> 495 bytes ...antum_ic_closed_caption_off_grey600_24.png | Bin 477 -> 538 bytes .../quantum_ic_fullscreen_exit_grey600_24.png | Bin 149 -> 260 bytes .../quantum_ic_fullscreen_exit_white_24.png | Bin 149 -> 260 bytes .../quantum_ic_fullscreen_grey600_24.png | Bin 157 -> 305 bytes .../quantum_ic_fullscreen_white_24.png | Bin 157 -> 305 bytes .../drawable-hdpi/revanced_copy_button.png | Bin 237 -> 336 bytes .../revanced_copy_timestamp_button.png | Bin 419 -> 484 bytes .../revanced_download_button.png | Bin 251 -> 319 bytes .../drawable-hdpi/revanced_speed_button.png | Bin 505 -> 514 bytes .../revanced_time_ordered_playlist_button.png | Bin 253 -> 330 bytes .../revanced_volume_muted_button.png | Bin 519 -> 511 bytes .../revanced_volume_unmuted_button.png | Bin 428 -> 462 bytes .../revanced_whitelist_button.png | Bin 577 -> 504 bytes .../yt_fill_arrow_repeat_white_24.png | Bin 270 -> 381 bytes .../yt_outline_arrow_repeat_1_white_24.png | Bin 312 -> 439 bytes .../yt_outline_arrow_shuffle_1_white_24.png | Bin 305 -> 348 bytes .../yt_outline_gear_white_24.png | Bin 0 -> 657 bytes .../yt_outline_screen_full_exit_white_24.png | Bin 149 -> 260 bytes .../yt_outline_screen_full_vd_theme_24.png | Bin 157 -> 305 bytes .../yt_outline_screen_full_white_24.png | Bin 157 -> 305 bytes ...antum_ic_closed_caption_off_grey600_24.png | Bin 324 -> 342 bytes .../quantum_ic_fullscreen_exit_grey600_24.png | Bin 131 -> 286 bytes .../quantum_ic_fullscreen_exit_white_24.png | Bin 131 -> 286 bytes .../quantum_ic_fullscreen_grey600_24.png | Bin 149 -> 295 bytes .../quantum_ic_fullscreen_white_24.png | Bin 149 -> 295 bytes .../drawable-mdpi/revanced_copy_button.png | Bin 172 -> 266 bytes .../revanced_copy_timestamp_button.png | Bin 288 -> 369 bytes .../revanced_download_button.png | Bin 172 -> 264 bytes .../drawable-mdpi/revanced_speed_button.png | Bin 302 -> 383 bytes .../revanced_time_ordered_playlist_button.png | Bin 170 -> 249 bytes .../revanced_volume_muted_button.png | Bin 367 -> 369 bytes .../revanced_volume_unmuted_button.png | Bin 332 -> 346 bytes .../revanced_whitelist_button.png | Bin 358 -> 352 bytes .../yt_fill_arrow_repeat_white_24.png | Bin 213 -> 315 bytes .../yt_outline_arrow_repeat_1_white_24.png | Bin 240 -> 337 bytes .../yt_outline_arrow_shuffle_1_white_24.png | Bin 213 -> 254 bytes .../yt_outline_gear_white_24.png | Bin 0 -> 469 bytes .../yt_outline_screen_full_exit_white_24.png | Bin 131 -> 286 bytes .../yt_outline_screen_full_vd_theme_24.png | Bin 149 -> 295 bytes .../yt_outline_screen_full_white_24.png | Bin 149 -> 295 bytes ...antum_ic_closed_caption_off_grey600_24.png | Bin 542 -> 637 bytes .../quantum_ic_fullscreen_exit_grey600_24.png | Bin 178 -> 340 bytes .../quantum_ic_fullscreen_exit_white_24.png | Bin 178 -> 340 bytes .../quantum_ic_fullscreen_grey600_24.png | Bin 215 -> 364 bytes .../quantum_ic_fullscreen_white_24.png | Bin 215 -> 364 bytes .../drawable-xhdpi/revanced_copy_button.png | Bin 322 -> 402 bytes .../revanced_copy_timestamp_button.png | Bin 599 -> 601 bytes .../revanced_download_button.png | Bin 309 -> 365 bytes .../drawable-xhdpi/revanced_speed_button.png | Bin 732 -> 661 bytes .../revanced_time_ordered_playlist_button.png | Bin 311 -> 333 bytes .../revanced_volume_muted_button.png | Bin 590 -> 665 bytes .../revanced_volume_unmuted_button.png | Bin 554 -> 582 bytes .../revanced_whitelist_button.png | Bin 846 -> 592 bytes .../yt_fill_arrow_repeat_white_24.png | Bin 363 -> 458 bytes .../yt_outline_arrow_repeat_1_white_24.png | Bin 426 -> 505 bytes .../yt_outline_arrow_shuffle_1_white_24.png | Bin 459 -> 440 bytes .../yt_outline_gear_white_24.png | Bin 0 -> 902 bytes .../yt_outline_screen_full_exit_white_24.png | Bin 178 -> 340 bytes .../yt_outline_screen_full_vd_theme_24.png | Bin 215 -> 364 bytes .../yt_outline_screen_full_white_24.png | Bin 215 -> 364 bytes ...antum_ic_closed_caption_off_grey600_24.png | Bin 758 -> 884 bytes .../quantum_ic_fullscreen_exit_grey600_24.png | Bin 192 -> 375 bytes .../quantum_ic_fullscreen_exit_white_24.png | Bin 192 -> 375 bytes .../quantum_ic_fullscreen_grey600_24.png | Bin 213 -> 404 bytes .../quantum_ic_fullscreen_white_24.png | Bin 213 -> 404 bytes .../drawable-xxhdpi/revanced_copy_button.png | Bin 499 -> 494 bytes .../revanced_copy_timestamp_button.png | Bin 1027 -> 770 bytes .../revanced_download_button.png | Bin 617 -> 480 bytes .../drawable-xxhdpi/revanced_speed_button.png | Bin 1400 -> 939 bytes .../revanced_time_ordered_playlist_button.png | Bin 491 -> 416 bytes .../revanced_volume_muted_button.png | Bin 855 -> 899 bytes .../revanced_volume_unmuted_button.png | Bin 755 -> 779 bytes .../revanced_whitelist_button.png | Bin 1588 -> 896 bytes .../yt_fill_arrow_repeat_white_24.png | Bin 672 -> 589 bytes .../yt_outline_arrow_repeat_1_white_24.png | Bin 759 -> 651 bytes .../yt_outline_arrow_shuffle_1_white_24.png | Bin 856 -> 605 bytes .../yt_outline_screen_full_exit_white_24.png | Bin 192 -> 375 bytes .../yt_outline_screen_full_vd_theme_24.png | Bin 213 -> 404 bytes .../yt_outline_screen_full_white_24.png | Bin 213 -> 404 bytes ...antum_ic_closed_caption_off_grey600_24.png | Bin 951 -> 1067 bytes .../quantum_ic_fullscreen_exit_grey600_24.png | Bin 522 -> 478 bytes .../quantum_ic_fullscreen_exit_white_24.png | Bin 522 -> 478 bytes .../quantum_ic_fullscreen_grey600_24.png | Bin 440 -> 435 bytes .../quantum_ic_fullscreen_white_24.png | Bin 440 -> 435 bytes .../drawable-xxxhdpi/revanced_copy_button.png | Bin 1176 -> 667 bytes .../revanced_copy_timestamp_button.png | Bin 2093 -> 1028 bytes .../revanced_download_button.png | Bin 1085 -> 605 bytes .../revanced_speed_button.png | Bin 2737 -> 1227 bytes .../revanced_time_ordered_playlist_button.png | Bin 1034 -> 481 bytes .../revanced_volume_muted_button.png | Bin 1110 -> 1134 bytes .../revanced_volume_unmuted_button.png | Bin 956 -> 985 bytes .../revanced_whitelist_button.png | Bin 2988 -> 1151 bytes .../yt_fill_arrow_repeat_white_24.png | Bin 1235 -> 655 bytes .../yt_outline_arrow_repeat_1_white_24.png | Bin 1414 -> 721 bytes .../yt_outline_arrow_shuffle_1_white_24.png | Bin 1585 -> 727 bytes .../yt_outline_screen_full_exit_white_24.png | Bin 522 -> 478 bytes .../yt_outline_screen_full_vd_theme_24.png | Bin 440 -> 435 bytes .../yt_outline_screen_full_white_24.png | Bin 440 -> 435 bytes ...yt_outline_screen_vertical_vd_theme_24.xml | 10 +++++----- .../drawable/ic_right_dislike_off_32c.xml | 2 +- .../drawable/ic_right_like_off_32c.xml | 2 +- 112 files changed, 8 insertions(+), 7 deletions(-) create mode 100644 src/main/resources/youtube/overlaybuttons/bold/drawable-hdpi/yt_outline_chevron_down_white_24.png create mode 100644 src/main/resources/youtube/overlaybuttons/bold/drawable-mdpi/yt_outline_chevron_down_white_24.png create mode 100644 src/main/resources/youtube/overlaybuttons/bold/drawable-xhdpi/yt_outline_chevron_down_white_24.png create mode 100644 src/main/resources/youtube/overlaybuttons/bold/drawable-xxhdpi/yt_outline_chevron_down_white_24.png create mode 100644 src/main/resources/youtube/overlaybuttons/bold/drawable-xxxhdpi/yt_outline_chevron_down_white_24.png create mode 100644 src/main/resources/youtube/overlaybuttons/rounded/drawable-hdpi/yt_outline_chevron_down_white_24.png create mode 100644 src/main/resources/youtube/overlaybuttons/rounded/drawable-mdpi/yt_outline_chevron_down_white_24.png create mode 100644 src/main/resources/youtube/overlaybuttons/rounded/drawable-xhdpi/yt_outline_chevron_down_white_24.png create mode 100644 src/main/resources/youtube/overlaybuttons/rounded/drawable-xxhdpi/yt_outline_chevron_down_white_24.png create mode 100644 src/main/resources/youtube/overlaybuttons/rounded/drawable-xxxhdpi/yt_outline_chevron_down_white_24.png create mode 100644 src/main/resources/youtube/overlaybuttons/thin/drawable-hdpi/yt_outline_gear_white_24.png create mode 100644 src/main/resources/youtube/overlaybuttons/thin/drawable-mdpi/yt_outline_gear_white_24.png create mode 100644 src/main/resources/youtube/overlaybuttons/thin/drawable-xhdpi/yt_outline_gear_white_24.png diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/overlaybuttons/OverlayButtonsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/player/overlaybuttons/OverlayButtonsPatch.kt index 4d8ed6af8b..bb2c33f683 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/player/overlaybuttons/OverlayButtonsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/player/overlaybuttons/OverlayButtonsPatch.kt @@ -233,6 +233,7 @@ object OverlayButtonsPatch : BaseResourcePatch( ResourceGroup( "drawable-$dpi", "yt_outline_gear_white_24.png", + "yt_outline_chevron_down_white_24.png", "quantum_ic_closed_caption_off_grey600_24.png", "quantum_ic_closed_caption_off_white_24.png", "quantum_ic_closed_caption_white_24.png" diff --git a/src/main/resources/youtube/overlaybuttons/bold/drawable-hdpi/yt_outline_chevron_down_white_24.png b/src/main/resources/youtube/overlaybuttons/bold/drawable-hdpi/yt_outline_chevron_down_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..075578341e85bf1af0924bee97d33ddb6e91b150 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBI14-?iy0UM=72Dx+F2_Tpde#$ zkh>GZx^prwfgF}}M_)$E)e-c@N{0vVQ$B+ufx97aM4k!q)T-;aLH)-cf7f12J zhwMFEE7>={SqQYH?$F)!1>4z<`rgS}CNjCyed&yxxR8ppf7g1nl9Vp{C(+p+nu-bpQu zj$EP12U1$955(7oa{^U1Y@c$;d$rc%&p)4hzUKS1uWI`F_L9f5PYagTJQgt<8 literal 0 HcmV?d00001 diff --git a/src/main/resources/youtube/overlaybuttons/bold/drawable-xxhdpi/yt_outline_chevron_down_white_24.png b/src/main/resources/youtube/overlaybuttons/bold/drawable-xxhdpi/yt_outline_chevron_down_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..7e210f49c35065087586cbf81de3bd48c21fe020 GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!oCO|{#S9FJ79h;%I?XTvD9BhG z#`eMYCwKXSnShER;M>fb>b6f#Mu$FO@BcabletRze(BF^4fh_DagR~f zedKX_Vpw5}a_*5#>q~wz(>>S=Z}m)(|MK(mgRF^uM=q}2R(FS$U;dJ-|DA%TmIv<1 zx!bfw=oc<|rtn&~?}|j)-eVK3nb&@|C`w)7+NrGCeE8_ZriULNojB=X`1nMxNAUN; zCr(Q=ePlE{MD+XSbcmSu$+#%><+v!FyQL&l`0dQZHWrve85nebGBK?4`SvB^yB0{$ M)78&qol`;+0Og8(#sB~S literal 0 HcmV?d00001 diff --git a/src/main/resources/youtube/overlaybuttons/bold/drawable-xxxhdpi/yt_outline_chevron_down_white_24.png b/src/main/resources/youtube/overlaybuttons/bold/drawable-xxxhdpi/yt_outline_chevron_down_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..325c0e2e6e29db27a58c3c56620e613440196e59 GIT binary patch literal 384 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9EO-XP4l)OOlRpde#$ zkh>GZx^prwfgF}}M_)$E)e-c@Na-yCtjv*C{Z!g}=J!~N0dQtPB>JFCj880nV zHH;D%+XNz|x6ZI)e_;RoE(cII4E*r(y?p0!$}Ri5kGO6*%fJ1dd*6S~k;E9NKRCao{+PXuQ~sYS<{SVI2NDj%ko%!lZsRFpG{&e26dUzt|t<99TGH}u|A-MXIiwRV)Iuq zw-XEI%oH@z$WLnF*=8)H*!-5)|k1|%Oc%$NbBI14-?iy0UM=72Dx+F2_Tpde#$ zkh>GZx^prwfgF}}M_)$E)e-c@N{JEYkjv*C{Z_mXFHX8`AJn$8D@lp+85>i?i z^h%*HfO~2H`_ur=Et0MGDtOF4|K``hyaR&Ayk6dTvVU!uTJWpopZi?@g`Q6F z>g8OKxh&*>s_iZX=7jT-@abihy>B*m-yY~Kh$uZ-daj3krRc2F4jhu*!e5Lw=SQ#ZI}5an!PC{xWt~$(69DqxL*xJe literal 0 HcmV?d00001 diff --git a/src/main/resources/youtube/overlaybuttons/rounded/drawable-xhdpi/yt_outline_chevron_down_white_24.png b/src/main/resources/youtube/overlaybuttons/rounded/drawable-xhdpi/yt_outline_chevron_down_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..fda1975316fcd412daa28aa4ac548a8cd6701ad7 GIT binary patch literal 300 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?2=RS;(M3{v?36l5$8 za(7}_cTVOdki(Mh=l%b*KHm{?3*O0rS{rbpbUp9B^3`b@NT?!o0arUYo?X{VJI< z^U~&`mhO+4K1G6KeRj^tjf{`(2-zQU*Ua?eG=I3+p;`6Q z+l1@ZvnQ|q5V>Qakmu_4>eJSL*lVv^)BfI9NAT$4iK>e#(io*@zn=c!Wt_4$_a?^L pISyOTF5F$Z(Xw42j|t?62LAH2M3qDHr850MTu)a&mvv4FO#swnbSwY> literal 0 HcmV?d00001 diff --git a/src/main/resources/youtube/overlaybuttons/rounded/drawable-xxhdpi/yt_outline_chevron_down_white_24.png b/src/main/resources/youtube/overlaybuttons/rounded/drawable-xxhdpi/yt_outline_chevron_down_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..1e590d18b6800e37d789c61ec27b0ba523aa03cc GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!oCO|{#S9FJ79h;%I?XTvD9BhG z|BSB(4@VU{Wq=>AN7f z%hB4)e1UWcO9GSI2acYC8z=s;wlI`y#N1Plbn2RPdanzUA`{R=DA+nRXkV^LTI%L0 zZhvlVY+Ju|^Uq0|pQUw{Z*g7Hu{izO?};nBmPbUnOLY{-crVL(uxz#KE}`XB3(Qw$ zTNmVHZmv@anzOqvJ9g8=l~Nx|-q%fziu=7XDrd* literal 0 HcmV?d00001 diff --git a/src/main/resources/youtube/overlaybuttons/rounded/drawable-xxxhdpi/yt_outline_chevron_down_white_24.png b/src/main/resources/youtube/overlaybuttons/rounded/drawable-xxxhdpi/yt_outline_chevron_down_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..f361f09c1c657d7b22ad6dfc55b531846900b6b0 GIT binary patch literal 495 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9EO-XP4l)OOlRpde#$ zkh>GZx^prwfgF}}M_)$E)e-c@NaxI=Njv*C{Z*M*HJ!~M*_V6@Yj)Pf)pb?XD z3G)qx&5Y6;n50_-6PnVRdkW@U4Oy@)^O4E6?n?QWQ{<;g{oc33UQd(}Xe=r?;Hu^6 z5t{#I)5cw!e{HH-ziQRwo*dt;v2ttjQnxSbzmwf{$gC>=>g$c^Cy%`QTajcNy+2H| zv;I_DZ?C6Z)Bfi(zkWHKsoR{Jw)pa-R)dRw_Nr^P<~|F3-YIwJ%(LqJAg=!=FKaG3 zab)ZZzrwk~^vo+o7PI@Sm#RpWafR_FI)0uz z?{qF`O73(jXeyitWMxhSvVMl~9ppT;R-{Q-XZge6EB8;$eEEFI<@Zzgw?^IS{+hjD zclqhJ9+!VV-0b#m!kfh%OWV|I?5kdM{n6(~4J8Qgz|~)Deaw@T`bzA;0-mmZF6*2U FngErZ!)O2i literal 0 HcmV?d00001 diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-hdpi/quantum_ic_closed_caption_off_grey600_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-hdpi/quantum_ic_closed_caption_off_grey600_24.png index ffb3e36aa1aa0779a685267c12628ffab5e63616..6a7c881f30304c830b45629997606a54a9ffcaa4 100644 GIT binary patch delta 462 zcmV;<0WtpF1DXVoR)4QaL_t(|0qs}YZNe}Vy$Ru;5yA#^g3=8b0VW_7k6+q9BtWDa zWP^4CG6Eam4VwQ%NzZK^DRGSwwXp<}j}-ZFZ{lP7o@c#7TEMET3HM6~fnAe4AHwVP z`T}MBiVY6_N5kR8`LqL`D(SQDFuPf#aZ#&u=?Oz^TUMB)D9RL6T07*qoM6N<$ Ef=Ch5Q2+n{ delta 401 zcmV;C0dD@91lWCXH7J3;9N9U+;3bOPuEX*ci& z?FKMHHV7Mp0g&iF#Z|Ay7FLO+MDmkPhw*_w&YkTLB@&6aWUiZaT^DdA?1AFY!Co=W zk>&&;D2F?V2V;=Kde|ez>tu&=1aFPsAy`uc@ZJ}=&v6{tzkkcVmG2>?R73IL*`X}U z)^^8=Zj2;o4iyrFBwQl_w~pVuvlHJe8HM9D+ODX73jz(qIM*Z|1l9^MzG8TSJ=2v0 zv6v4GxEDfrw$5~!jn>>QjNi!Fz%`e4NdbfkVtU!YAl&w?^qtk_57|=ysmkWKYe9cX zo;P9Gsj8|;Zhx4Bm+b?`QUIYz-NH(|bW$l;4vtn_1v?|w4xJn|mI&I>?%dq|3rJNq$L$N^1Y|!9!-nFK`#L5`jcWL!OX)Tt$Atxg v_`|i`;oBT}cRx@(Sj?O2Z%`tUh|M<`e0qy5hVt?N015yANkvXXu0mjfiB!0x diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-hdpi/quantum_ic_fullscreen_exit_grey600_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-hdpi/quantum_ic_fullscreen_exit_grey600_24.png index 34097620aba69df1f6b9d2d766baebd55c4df88d..e8264dfb1b3b0414966683fde5fd3056709df95f 100644 GIT binary patch delta 232 zcmVPx#1ZP1_ zK>z@;j|==^1poj5nMp)JRCodH*4qt(FboCI>#Bn=N=E4@bd!#fQP{*aB7fjGAfD1a zQpAVjU?E`#AR>yXYO>W;;@!9hXVFPtiTC3MZ1BR(u%O7Z3SlaL(+nEvvQ*1?2WJkp zzD_K|mxD8j=rU3ZmWlpx!dXPJlb7s~oV=gq4cNkKjIGmt_r_ShfGoVQsaspVU?mRM i2n#yI?JoI5^kjc))uxd!`5j&W0000OH1`x+*Q`LXh|$WH-pH zOhN#Ff07QH(3jxz2f7mz9d0000Px#1ZP1_ zK>z@;j|==^1poj5nMp)JRCodH*4qt(FboCI>#Bn=N=E4@bd!#fQP{*aB7fjGAfD1a zQpAVjU?E`#AR>yXYO>W;;@!9hXVFPtiTC3MZ1BR(u%O7Z3SlaL(+nEvvQ*1?2WJkp zzD_K|mxD8j=rU3ZmWlpx!dXPJlb7s~oV=gq4cNkKjIGmt_r_ShfGoVQsaspVU?mRM i2n#yI?JoI5^kjc))uxd!`5j&W0000OH1`x+*Q`LXh|$WH-pH zOhN#Ff07QH(3jxz2f7mz9d0000Px#1ZP1_ zK>z@;j|==^1poj5#z{m$RCodHm(dNvFbqU5hyl6*-GGh|Mq(01f)QAO4cH*WA|Lq( zu}l0>srP=WDz1CJs_7LVgzSvaTTCfU`LLkRGlcN2u8C{vSAQYRlg_ECpAGe~ch4hi zTxGJ>LZ0?joyz2wA3enB8x*X9#O8-qR31gME;|DY2W$)q(x9MW%HA@;0nc8fiP$SP z!vU9G)we8S5Nj{K_8JtVu{lB3JhXK3j5WfZ;V7t=^k#gMBFa8<#{k12zfO|rkDmfU c$nN<7_4}n=%@2hOEdT%j07*qoM6N<$f|jCo!2kdN delta 128 zcmV-`0Du3n0-XVnBza^>L_t(|+GAiC1*2dTi~RC95dZ)>e=yby5@PKD0000Px#1ZP1_ zK>z@;j|==^1poj5#z{m$RCodHm(dNvFbqU5hyl6*-GGh|Mq(01f)QAO4cH*WA|Lq( zu}l0>srP=WDz1CJs_7LVgzSvaTTCfU`LLkRGlcN2u8C{vSAQYRlg_ECpAGe~ch4hi zTxGJ>LZ0?joyz2wA3enB8x*X9#O8-qR31gME;|DY2W$)q(x9MW%HA@;0nc8fiP$SP z!vU9G)we8S5Nj{K_8JtVu{lB3JhXK3j5WfZ;V7t=^k#gMBFa8<#{k12zfO|rkDmfU c$nN<7_4}n=%@2hOEdT%j07*qoM6N<$f|jCo!2kdN delta 128 zcmV-`0Du3n0-XVnBza^>L_t(|+GAiC1*2dTi~RC95dZ)>e=yby5@PKD0000Px#1ZP1_ zK>z@;j|==^1poj5LO=Ph6-PkV>mt*`wmCD5eQK(c^2N@OzR4P9aXqLR&T%5w8S z8V{uLKpGFENeR?(6tLU$wd2H>?c4D_rmMC4nL9>ye9~x1Z&SghVQqu4KHt#PhO8l( z_cbz6|2q14moCP>gKbgD6zyQ7t|4BuW~i3CC2U$a=l;+W49$r;c-;@w00000NkvXX Hu0mjfiBN}4 delta 209 zcmV;?051Q~0__2iB!9F?L_t(|+GAiC1*2djga7~kvjTB55bp)z10>>|K%7Qx2UP;` zBOp!(;sg?L2@rn;VmE3!XdMt&Q=oq}5Z6%CK^uX%i~{}3fw*D#I0&Q}WXPz4MjbTj zpiu{nI%w2EqYfJ84qAr9-!Rx5)B(hYf!Kiz>;`TAhEvl)B1%vP{ryim_z5x#h?%LD zh6Y2orv`{u4JHTKL%S};WORE#*ozj9N{4px4v>K-k9My|!H5R{6vz4qb!H``00000 LNkvXXu0mjfcLP=P diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-hdpi/revanced_copy_timestamp_button.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-hdpi/revanced_copy_timestamp_button.png index 0e822bb6e94405a20aa21483f146e6c6c9625f36..918455b430d28253c9145253f64e047d9f086432 100644 GIT binary patch delta 459 zcmV;+0W|)j1LOmcBYyx1a7bBm000o2000o20Vd5lGynhq0drDELIAGL9O(c600d`2 zO+f$vv5yPAWVXpplr}GLAn8D0!Civ4Y*c&N9%${Qyqx~d3XBXQ`h@eRk1@Q!it!O5E zGE|WMiwfrdy|TH9f+W-{^#F1or`ZHy%lO9SAo)!q2JU}b*+j8IvFCLRa-FU^9-lF8qTqa?!=Qf_$KU8fUM~XylkzdCm5|LyjbVC3D002ovPDHLkV1mxA B%y0kz delta 394 zcmV;50d@Z51ET|wBYy#ENklY$P4pk+w>4HP;^0EkrvO$bq=WFC|bT1KvefNJ@H*cpf;p?@_0fH(-Kh8c((f%w;d zQ~=_)0x=8S90ZhS0^+quj<^NHUT6;6401GG(hyL-6wUH;K+O9e6Ex5~+e4%3Es+lT z0BRCb>YxrFJ`BVTP^^ijULT9axEurmW|TTe1nQu_Py-jCsdvI+=~Yl72I50lr#xT zdt;8Kr|ds&(0~+m+2oc*>CjFdt`6WbEIDoMfBax0y{jCMqbh*-9hyVl193gsB{dZs o#s{jvvyTo)3_Ab-eY7rmfQ%D&00000NkvXXt^-0~g5i>()Bpeg diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-hdpi/revanced_download_button.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-hdpi/revanced_download_button.png index 86676216765c2b65210a10e886c6d9e9ac2602f6..20f5080b2e1fbe6188ea6421e3eec657975a39b3 100644 GIT binary patch delta 292 zcmV+<0o(rj0lxx}B!3BTNLh0L01%u201%u3Ce1oD00001b5ch_0Itp)=>Px#1ZP1_ zK>z@;j|==^1poj5)Ja4^RCodHmVpg|Fc3w5jRUv=jKByufit*)Be01xI6+5gM{t9B zP0m<}@t`!&kbB9c2|eyU&F2766h)a&2%(FCS|Bkt1`2RMWq+t32^A!vf+Y4Kh=yPr zBX_^JAmUD8e>LT6mUC7UbmjF+R3awLnT0_nqvlVFQ?h+F#(1m^d&PwhF4sF#8+QC9 zZy<|ug3;f#@_$q4=ANIt5%R>hDyh}~%R8a~CH+#}V3bbC^LnGBeqb4wQO!I^$Pmgg qNc|?wAvSD_WgYlUW|N{Qwetda?BACU{{tcb0000qAOL&Gb0xbn&utb{dkb(_B={*kY zL1*ryM}t5(dc>e`Cw+}=T|WP$suV?0rYEJeCBGyz5D7_0LK6C0A$)uTROIS{Gei>Q5IeF*RVcbYvje>|Mu=!p&vP8pII~AxST)K7Yz?YKb*ML<$g0k~SjQn| z@Q~AMI8(s_uz$XIrEq|!m7Jk)H?RcG1EPkR(2Ag5IhVGgJ%?CmMl=x2ghSNvq;k<- zQKCZ(Vs&;f1Ann2|Ew@R7u;TG#{=F?(W}EDYV0rFh#fh504-cQqLOeBBFi5&Bero9 zjt$o!M0RRt(%5V>T?Rz{6re!VDM>TYr_ZBX%?FC%&Is6+9%ni`QK3VVz6tcZz%<6w zrumubE4J{yRNBhiQSF>i$Tl8(d6Wo3D}jUFiGxD9YQ)g0dTpLKYUv#zLeh zCfQIP+1My$r{s}^g_MyE8?Pj<1tmLdB+bHOA$g?4^*uR@F~&G&?!8v`U!Tp)Isf~+ z_uPBtPE?drPC4b2S{a5Bk7_ib7yW2Q6_WomNG0a+1V0Y22!9{8@qiDkq0Y`A#aP7! zx=9mb1SxhyV?c^Ps!6RZp~id%Rr=;boopiPF!GubB<-Dbm-;u&s} zeQI%rtbotbB5AaNVG}_TFkyUEL(oT_#>oqSJ6Lk~L>e zGzRe|!(1XM#DBOMjH@<{!95Bz!{lJ!_+IW`##Z1?wQ)JFHN&*vF(}MPnDKG)Di)|T zZ^WU-5-k`%>quPbKjxl_Cs5@e-B?i!)EOd-xM7PF=I)|Z{lv-6Xg?-Z}U6Vi|Pr8 z3CkF;G0>EFsneNIk1ORf&acti|?l9LbraqYpzi$aVfEIpvg7vOWP0 W0t89KQMPUX0000Px#1ZP1_ zK>z@;j|==^1poj5-$_J4RCodH*4+_;Fc1Xbi(>(l5IV2~>;yZo1gQi&umwu61F!?E zAZ}*xP1%D<^nv?kZhTpB4Sx|a#+d(dnotPAO9IZhfo51>Du2^U8Xlz{bAi2ZBjzXx zurkJ&U(h^<3Vhrojhfy1JK+jR=PAZ0;by4g$U>TndM%G>QL10EeaTtq&0}JzR#Qx~ z{fNt7k;sVW%bjFuOod}zk!@tH_^$%je)!&HCV&3+dvt~3wi5>^No*9I4s)8@%BoJ8 zW-m+(Q<07Zb0}Zbapf8mDK%xX!f8HCFJ@!5?FC3zi1vV=NOAxG002ovPDHLkV1iSp Be=7h0 delta 225 zcmV<703QF!0{sDyB!9$7L_t(|+GAiC1*2dTi~AJ3${}AMo(04+D8L~7zSMG%0}wX=aRm-sP5@Ux^*fA4?Y!3ddE*a2xE?dZ@S%%$v!_* z6+?AiycYp7O;paj4;tqL9)#*Eg|XD<1WU_-vM?bVz2-3r){p}=aC_=CQ?8aB0cvpC zV<$TKFRNw8gQ~suBHvSsilMIAK$*YyUNltnNgW|Ni!7e`T4#|dQqFrSTc{7nMGO`H dEwm|T{Q}fTb}qhg?uq~a002ovPDHLkV1htf&2<0( delta 443 zcmV;s0Yv`)1BV2VR)3sHL_t(|0qvHHQNu6{h82zhx@6#Wdb1`3J9N_II#oeF8`e_m&BGn%kl$Y)~s2-EJR$uF^Pa`vV9B~^)=$- zCVGJ6pukU!hT?u?JMq(y*wiX;v=qj+WzUSg&10x~YDY4a8=%uvVdVJpd z`kr<;HS}QP&d=%>gRIGFYIBig*#Z3GrEX{Ak?ahH0x3OE&>j4QeWFJd0L80oN&jEf zH*V|A?g@;L0DoSS zbtP?#uh8XR?(o}L)MG%~6;vspJ6Yzv$BeWuAf*&k-3E|gO&635qQNQdTng%I#Q42) zyN;PQn>}wm0XzMIy9UL#HfPDKZjCNw!uW#;iQ_O lLZzSzI2NJfYCG#+>jPo~!LmVPP#FLK002ovPDHLkV1oJW(UkxI diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-hdpi/revanced_volume_unmuted_button.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-hdpi/revanced_volume_unmuted_button.png index 3d5d429f2ebd841fb596f968cb1ad529e507e168..519fb948e6ab719c32d349f7550394d5e52e0299 100644 GIT binary patch delta 385 zcmV-{0e=3h1I`1GR)1qjL_t(|0qvImQG+lP$G>>~FC)+m*q}IpZXhc-f$aosClDua z1lT|}P$wuG#P`nU-7`%|Y%dh=^0|A3g#7sMASFN|kw~16F{Y)cF&9LLd8a5a2UtXe z_7wM+3g2XOy^(BHm_X)%vk=g(kxUhcg~*sdpNbwLD$1i%GL3{w zh*>%6`3AOQ<7Xoi=XBUOF4Yt-S(eo-MCVI7Us!z&9R`X8T^m$A%iP)RHCH%JE|ZrO zg^C@^zz_GgS76U$$jv&rhMz|g=x`dPRsPA=jXM9uScYOS_!@*{=!susRqiQcJA~0& z<$`~x|0hlq>U#7*0>8{T4Z4P(&MGf)C>bV16MoR))~=W3y!u{9qpW2NO@%|r^I<8^ zALG_hS4*D)F;G%}`E)!ZCL$Fg^g7wz$hR}(tVkwHToU=1zD>SCJ0jCcR$4QMEv$%K fHYSa*GD1ek26rRe2)PNG4KhM* zgLZ><18OIZgeWx7f*MtPl79r*@UR^K$Ye5^=TS=il5NR;um(s-MRrsZJ=qu5 z010VD6pJg78s7QRLXxdB**Q)Jj9B+J|Cpj&2V-+5u19RtV^_zmZvJbb@JOpBC=sA|DyKJoW>C2G1% x=Q5>z3wemq@4*hQMoo|WLB)RiWHOm|{2rZqNv1Cj|`sd-5h!iTZRulT*waoCpiAR8HoqN1W6OvzBEwSPAIACx5fj=m*dUf6QB zRCWEZeX-Au<`xGvY`+ay1A=x@&GyY!!3^3g{0f>=0)mOpP<$<$U~FlRpFnQ`R`rdW z4Qhh#yUOCMP#d)j*+kzQP!-J~WXNI(d^1&GjunLpdq5!4z~wWtbQB_$oubt?844TS zqFi_btuRSOw|}5MP_makhQ>V6u%zf6+JzDKuedc6pmuCo2v88txCM-H5xPjgMICA^f=CB9 zS5c8*(c&iJP$}4gZf==ODOIOJZK;w$1RVq+D1lNnjfhh#j^Y@r zBro^ee0jO|obzI_Xhb6#ozZT$$Djn);SSt{OHdfbmtBF`9)H*4Fa;a%7wYf=D)1C) z@C&}cJvih`=m>1XgD#nu(1crXxKFIiI|YldBX`i3R32JgQUw?>SfdCHSTc#*Z^5JR zGbm-TMh0HP3M5>Gj>B*G;V6}YcQEHF^cL>wo@zQut6Su@v(s z;e)A=)TT@|rDl{#%$)L=HmSWy%_-ra9Rl8JMLSG z&mY5r&GGyyRokLV=qsh2fOHWh8=?EsLRhvgJ*BvIL4Sn~*a&6yZ!7we;{6-RLoUU& zto=;JhZL{JeY7CYwVz4({QF#l4oZdAekNxan}8?n&hRRggonDPq=iTim@lX4JbZ-r zFah7aN(Fl4HEkiPS}4zHIXI(9?-6XlH@LcYqO=`ud6x<-E_dpg6iTU0@JSz!=HYCw rqpc4PjUu5uyE*)rL@XN7_@Bl<*wy|U{lT)x00000NkvXXu0mjfKnerZ diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-hdpi/yt_fill_arrow_repeat_white_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-hdpi/yt_fill_arrow_repeat_white_24.png index 5d0811f1ebd2636ec021416b2547392805015b67..4038650e28db7b85483b1f024f1fb02d19f9ffad 100644 GIT binary patch delta 354 zcmV-o0iFJi0{sGzB!3BTNLh0L01%u201%u3Ce1oD00001b5ch_0Itp)=>Px#1ZP1_ zK>z@;j|==^1poj65=lfsRCodHm*EYT8b+Jrr%k&63?vcqFS|zGQ=5prSjqa_^K)<#`%;|dP(vG8YFKwD1p?H>3>o3f>v@T|EL zffhX=?4s4V02xLvxAEto9cD)M00qRtP(V9Ow(5Y^j}--N2NW|1l&o%MtDlS-+oF5u si_(H#d%4hDqXth`f1(zxn3#j+1DQL5R0=EN@B!3BTNLh0L01%u201%u3Ce1oD00001b5ch_0Itp)=>Px#1ZP1_ zK>z@;j|==^1poj6Oi4sRRCodHmyK=0Fc5`bDhB8V^$2u>FhVy-H=&czZqNe;Dtfu@5MW z$nay!u*^&s8h^`@`6e{Ov8Pb~3mFk43z5TcAaa!YK0E)y==pn(2y!f$T=|>tq+~5t zCJJq8ZD34t;eQVVmrU!zq7udLvRkPpB+Kq1HrFabDk8n84ULT!l1w+Sm00000NkvXX Hu0mjfZl<$p delta 285 zcmV+&0pk9*1GoZ^B!B-&L_t(|+U?dc3c^4T1<()>iA98TB8W{&J%wlT0%>vzuMh%Z z+Z@DJ@C0JH&cFz178m9x46*~iS`80(v;Hhglg9XX@As725~!g(%%BL8Q*Qr@q6d_e z10Y9=Q={n1SC5}j3mPaJWw!DQ-TBSaf_mk)uPB`wg8)G>F@GRhD`ZQGza(BGCz?2JyD@_FDq={DPp1Ruxz~QC^FI1jCnG zt9S+mG{JP5GXMdhFc8oL&Ku4jWZN86{wcF>7;%lYHX=JLthjZ^xVoVY#P;A j`oF57MJr93nHJ^)ihK~EVBm<800000NkvXXu0mjfNx6Si diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-hdpi/yt_outline_arrow_shuffle_1_white_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-hdpi/yt_outline_arrow_shuffle_1_white_24.png index 06d5f1450242463412892f2e3f999c269e71a74f..291c0c801c562af87f092a9feba401447fe0a2d5 100644 GIT binary patch delta 321 zcmV-H0lxmR0^9Px#1ZP1_ zK>z@;j|==^1poj5@kvBMRCodHmWvI7Kny^88!!SRFan$5Cb)qkFoJHN8|VhL7iw$_ zCwHY66X{DXgio8taXkv)IL^)pYY!k|8$!520Tk2Gp-J4nP=CG$XrROmjXRB@FmA#$ zJ#2vz95_+76u(F-#?eejDP7rlrjjEB!iFWl~b+La124 zQp!{aH&m05Iy#vMDQBkR8F`Hf-}Imb=g#k1Iy1PTh0SU5o6@EnYc=_frpfiA3^>F{TcUJ?6SlozoEo6hkl2Wy!e#^zhb` zc}7#8(gIN{!aWr9hA7SP>gI@A6EF!rDb4kLN>R!OgU5Uz3x9P@Kj6c)iH!*Y!kf+z zwJC!M2C`6(*VlH%;JFU86>5!Ymcdl9hzdq9EEqU$K*v>KRK~d>E(zPO{OpS`)-_XH zJa<7CMi)#Giu=#i8Dq^%5VdCo`Czh8EFcOd19c{WV7Tvt$=Sjl$y-<$u0eZ0v&ol8 cB>$K@D;+0}Xb%Le!2kdN07*qoM6N<$f+vi3SO5S3 diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-hdpi/yt_outline_gear_white_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-hdpi/yt_outline_gear_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..362e44846941b9c8288f1512512efc1424202996 GIT binary patch literal 657 zcmV;C0&e|@P)uN>Vr#^D zbck({YlM{VpmjcqNkcf@A(s$~Fo}4F$5Jv10S4DwtWKjo6cqxwdc?N4t_0C-Ns=DU z4c!SmonboX*ue2bg}@Frko=0LIR7-(R6xjKpGl~AI*TMs?zXzz!hc5@=PW6Z@x`f8 zAFUuba{7_q3!jEcfZH&pR=`tH9wN3wsy!eLgAy~vkmlZET=^B zq^9$W(qRbnev-fG(05z73j@aL8bXu{z6a(A`IaIi;J&gE`7_S;r?%!xYq)TS&+02G8M0r9eX8YW6%eSBHRD z9f_3%JBrwbrxw;+veQ1XO6jfq#)MB1`_bF@R!x2me8&Rl>F|_)dQ|e4f8!z6{;~F@=N4$q0TN00000NkvXXu0mjf1+*u; literal 0 HcmV?d00001 diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-hdpi/yt_outline_screen_full_exit_white_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-hdpi/yt_outline_screen_full_exit_white_24.png index 34097620aba69df1f6b9d2d766baebd55c4df88d..e8264dfb1b3b0414966683fde5fd3056709df95f 100644 GIT binary patch delta 232 zcmVPx#1ZP1_ zK>z@;j|==^1poj5nMp)JRCodH*4qt(FboCI>#Bn=N=E4@bd!#fQP{*aB7fjGAfD1a zQpAVjU?E`#AR>yXYO>W;;@!9hXVFPtiTC3MZ1BR(u%O7Z3SlaL(+nEvvQ*1?2WJkp zzD_K|mxD8j=rU3ZmWlpx!dXPJlb7s~oV=gq4cNkKjIGmt_r_ShfGoVQsaspVU?mRM i2n#yI?JoI5^kjc))uxd!`5j&W0000OH1`x+*Q`LXh|$WH-pH zOhN#Ff07QH(3jxz2f7mz9d0000Px#1ZP1_ zK>z@;j|==^1poj5#z{m$RCodHm(dNvFbqU5hyl6*-GGh|Mq(01f)QAO4cH*WA|Lq( zu}l0>srP=WDz1CJs_7LVgzSvaTTCfU`LLkRGlcN2u8C{vSAQYRlg_ECpAGe~ch4hi zTxGJ>LZ0?joyz2wA3enB8x*X9#O8-qR31gME;|DY2W$)q(x9MW%HA@;0nc8fiP$SP z!vU9G)we8S5Nj{K_8JtVu{lB3JhXK3j5WfZ;V7t=^k#gMBFa8<#{k12zfO|rkDmfU c$nN<7_4}n=%@2hOEdT%j07*qoM6N<$f|jCo!2kdN delta 128 zcmV-`0Du3n0-XVnBza^>L_t(|+GAiC1*2dTi~RC95dZ)>e=yby5@PKD0000Px#1ZP1_ zK>z@;j|==^1poj5#z{m$RCodHm(dNvFbqU5hyl6*-GGh|Mq(01f)QAO4cH*WA|Lq( zu}l0>srP=WDz1CJs_7LVgzSvaTTCfU`LLkRGlcN2u8C{vSAQYRlg_ECpAGe~ch4hi zTxGJ>LZ0?joyz2wA3enB8x*X9#O8-qR31gME;|DY2W$)q(x9MW%HA@;0nc8fiP$SP z!vU9G)we8S5Nj{K_8JtVu{lB3JhXK3j5WfZ;V7t=^k#gMBFa8<#{k12zfO|rkDmfU c$nN<7_4}n=%@2hOEdT%j07*qoM6N<$f|jCo!2kdN delta 128 zcmV-`0Du3n0-XVnBza^>L_t(|+GAiC1*2dTi~RC95dZ)>e=yby5@PKD0000mO^C$sOB&ky?zrTxJ))UkqwojM^LF?IBne~ep(siiMN#&$ zX&(*&)&<*~lE4R)5(^L_t(|0qvC04T3NbhOedrID#X%fpG*TP$qBz659zJ0o}k6 z7{L*60(tL4{hMHN5{k_wL_+uy(%${_4({3#E&LnB4QuVedv8ci6T%o{?jMKdY8(89 zry>DZzg0?=nD!?C8?AL&6vdMS;LB?a7w%ip$c&yq#{~RtsBh(wxhnYfzqI58ApjPs zPQn!Ji{ug^NG{Q))8uX$V6S5uXQ&6Eah};%HV+5s1-(y8OAy-?t(H+D^E+sbb1p*( w9wY!4-3}LCJ(M8FOJ|HH5`f@gu(U8K-Wn!O&D#?C#Q*>R07*qoM6N<$f&$}d$^ZZW diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-mdpi/quantum_ic_fullscreen_exit_grey600_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-mdpi/quantum_ic_fullscreen_exit_grey600_24.png index a87c802eba887daa1cf13bf52a83b840cc3ac974..938ae850e7aa920dcb9f573332b41f87daaf54bb 100644 GIT binary patch delta 258 zcmV+d0sa1i0iFVoB!3BTNLh0L01FcU01FcV0GgZ_00001b5ch_0Itp)=>Px#1ZP1_ zK>z@;j|==^1poj5vq?ljRCodHlYt4sFc3vA;sB124eSQGfx3xK;0kUaZr}(VA#UIZ z-5~x#f@k>AAT1P{2S=OF<$f+)L@E{U{T6X0`USE7wSOUHSbL(aLJVT?H%lg>^+w*O zTYuSa`zwqKV@z9Q0M7E+z9TtL#3n>sw^ErLhKb=}StU74$SKJ=;p?q z_1`3gwEjTcqX8>K4fH(Yq>?e{acuTAqrc=5gHCw+IlVGBUScUR8C^|JJpcdz07*qo IM6N<$g8i0c;s5{u delta 102 zcmV-s0Ga=u0)qjNBwtENL_t(|+GAiC1%n#=|Noy6h_&&^YlGBKVgV}Px#1ZP1_ zK>z@;j|==^1poj5vq?ljRCodHlYt4sFc3vA;sB124eSQGfx3xK;0kUaZr}(VA#UIZ z-5~x#f@k>AAT1P{2S=OF<$f+)L@E{U{T6X0`USE7wSOUHSbL(aLJVT?H%lg>^+w*O zTYuSa`zwqKV@z9Q0M7E+z9TtL#3n>sw^ErLhKb=}StU74$SKJ=;p?q z_1`3gwEjTcqX8>K4fH(Yq>?e{acuTAqrc=5gHCw+IlVGBUScUR8C^|JJpcdz07*qo IM6N<$g8i0c;s5{u delta 102 zcmV-s0Ga=u0)qjNBwtENL_t(|+GAiC1%n#=|Noy6h_&&^YlGBKVgV}Px#1ZP1_ zK>z@;j|==^1poj5yh%hsRCodHl;I5mAq<6E;{a?Rx4~_oj^GGx;wFsX2;K;8aJT_Z zfRBV9Si#uDi-~t%()7|-+6z#K7XBWt1!IgCI4i;fGas{lhJWjY?xF8LZ7{;6V*V+a z*=OCrnL@HK2fdTE*3@Rif?G{MJivwGhnhuJG%-JGaE0AT$3XJ|x5B|TihPr2_|tNiC)v-YfRqY-6VI|*YYU|d4kiPTajx?*}%h`h^5&$qH>%7 delta 120 zcmV-;0Ehpl0+j)fByn6xL_t(|+GAiC1%nR!|NmbQh#ioyHXgOwXlezBvA`LKuL1E? zC{DqnHU&u?NRJb-7R)8X=W_>*1v)^SNrnZPAiblhcofj5sGw~!9Tqv6=7k+?i|bK9 acK`r@Qr8&*TSUbG0000Px#1ZP1_ zK>z@;j|==^1poj5yh%hsRCodHl;I5mAq<6E;{a?Rx4~_oj^GGx;wFsX2;K;8aJT_Z zfRBV9Si#uDi-~t%()7|-+6z#K7XBWt1!IgCI4i;fGas{lhJWjY?xF8LZ7{;6V*V+a z*=OCrnL@HK2fdTE*3@Rif?G{MJivwGhnhuJG%-JGaE0AT$3XJ|x5B|TihPr2_|tNiC)v-YfRqY-6VI|*YYU|d4kiPTajx?*}%h`h^5&$qH>%7 delta 120 zcmV-;0Ehpl0+j)fByn6xL_t(|+GAiC1%nR!|NmbQh#ioyHXgOwXlezBvA`LKuL1E? zC{DqnHU&u?NRJb-7R)8X=W_>*1v)^SNrnZPAiblhcofj5sGw~!9Tqv6=7k+?i|bK9 acK`r@Qr8&*TSUbG0000&U>cv7h@- zA}f$T-_yl0q=ND7l!Lqt3OugSk7L~nSllmgmI#*$&vkGwVwOF~`ytte%eDF8A#W)m zjlaAL=W7T_O%s|Dq&m&d!&*St_Iww#S&AmrS$Xq_7kzR` zx*=a0{$+84`636A9Tp!_xfPFFm}{Q&>F|}v$W=Do*_711-qBlE)|Ag|%b^E3YCqmA m`#w86{mhAT3Y;#7ikUuMuuNpzc{~c}Rt8U3KbLh*2~7ap@l!1T delta 144 zcmV;B0B`?_0;~a$B!6>BL_t(|+GAiC1(bmQ|Nk=qaS9MO5WuxStV@msF+e;Mh#d%E zPar-^js;~v>`$cHBcvGYNNWp@j9M^i!KelFv!D=&Ly6RLj2sJ;fcO#+UnK%hBH033 y)&r-2*n@~-+KgNa^q`dpp^7GFv|6SZ008*fb}Y0k=q~^O00{s|MNUMnLSTaWO*nA? diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-mdpi/revanced_copy_timestamp_button.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-mdpi/revanced_copy_timestamp_button.png index d3f91cdb1e4ba27ce516f2d3ab8fb6091ce958ab..8b3b6d3965520ad06dd73ba224efaac38c2fc379 100644 GIT binary patch delta 342 zcmV-c0jd6=0`UTnB!3BTNLh0L01FcU01FcV0GgZ_00001b5ch_0Itp)=>Px#1ZP1_ zK>z@;j|==^1poj621!IgRCodHRM8QFFbqvS|78S5U<94Ox`9rhP9Pfy6X*zTAS1AW zjKBspk<`P|9xVsw5AQBl+N60TO#(3E-w=HUN~r{wV~<&ll79;!sv!g~T+Zyo1^IC% z#0f%y1j@r^jdHW;7LE%MjD&^bJfpvY2?<8SM$BCh@THi5*65s=-qJiY2 z?@U5cie}Ry=}*inR~3=r)*M4fQa}@tPE*P&MJG|;sU+((<($)GTp0uh)@SfL!Yh;= o>Ps&IAMk_5&_r8sFU$zX8^jTUP7wmCIRF3v07*qoM6N<$f>4==0{{R3 delta 260 zcmV+f0sH>(0-yqrB!A~gL_t(|+GAiC1(bmQ|Nk=qaS9MO5WuxStV@msF+e;Mh#d%E zPar-^js;~v>`$cHBcvGYNNWp@j9M@xEr_701*E2bqAUQ)u>r9m5E}t8J5?z_q`71~U_5kr@B>pXm(=+>VH)5 z5s2e}_z#FC#sWQPC4yeD$V25Bq4fkhm`CmWVgvaG;JPGA{&U>cv7h@- zA}f$T*VDx@q=ND7?pH(zfK-?>O#tO}w7M zFZE|#Iw0jdpEJ^B;gWRy2KAa$r;y@z7x(zs-?TJ8BL_t(|+GAiC1)~5N{Qv(y34}*27`1?8Lpgw04BY~d7)Xv9 z7U%-;2_Tk)Spa2&#B{0U3v(bo3B)x}3}Ty8Vjw>bOWs1UIWcPx#1ZP1_ zK>z@;j|==^1poj66iGxuRCodHRM8Q^KoH$C{wd*fkP@N;C8Ps7KnGMn2~4Wku0=eh_M$ft;8v~ z(q5J?9)T%10d3&if=e)=ZvoRlibqPlm1))DG}Lv0KISP&3y2rmv7sCL&9Jx1aO<9` z3wObdyCd@QoQr*JE9V`6b1E+$BkVwqQ*6-QJ6=n^(EQOs?tJK8NCW4*c`GWJfRPpy zPY`DEllQ(KkX>=UQ*}WR{FUXuCexVO^w~iVJO;Fn?lTmhQ5Y7ylwEM3`$O91ozn4$ z$`OUUPssY6s3t-$=-UMR(Sl&jD?;@!*FKvDe}pSjV8lOQPKJK~0000x^q z$O22KC7rm^JW!kkh|l1&U=guN6o-Cm^oU1S;10y?6j(3^h#d(jS`Wng$;7)xtA`N? Z0KpAoaZ-x35)1$U002ovPDHLkV1gQAb1(n^ diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-mdpi/revanced_time_ordered_playlist_button.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-mdpi/revanced_time_ordered_playlist_button.png index 1889d111b5e5b0aa20ed7c39a860b43c2030d4da..97aa46f6e077de48392a1816d52227a87d832eb3 100644 GIT binary patch delta 221 zcmV<303!dY0r>%tB!3BTNLh0L01FcU01FcV0GgZ_00001b5ch_0Itp)=>Px#1ZP1_ zK>z@;j|==^1poj5j!8s8RCodHldN;N@kU?&)b zAatP+=?@M?x%WQYAE5AiMCij9Bf$|8VtH)f#3%4*$Ye#~b5?|kT+`8kho&O${$qu# z;SS>)gPB4h73RVkwVXuhlKdD01}DnbVlTV{zlQexrtBmF3N)g XisNi!HdHJy00000NkvXXu0mjfWzSh0 delta 142 zcmV;90CE5M0jdFzB!6*9L_t(|+GAiC1tSyu|Ns9u5T5|zQ$*ksqaijlBY6)HZ$-mf zuwan*p3x8+(737vVmop)ZUo|0P`nz7*8uT4ATC2vHy?=q0&yP@bJD^GAPZpNIuM)C w(gIMDm7;|OAAvZTR*{?x#0sOyeQ*N+7&5{8LOk{I00000Ne4wvM6N<$f;MnCcK`qY diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-mdpi/revanced_volume_muted_button.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-mdpi/revanced_volume_muted_button.png index 5f2415e6fe79dc73174f10a63989eae8f0499dea..571c33a78f2141f75f7ccced829805a45b2de89a 100644 GIT binary patch delta 292 zcmV+<0o(rX0`UTnR(}RbL_t(|0qvB54ZkQV15Ij-@h3lp_P7TJl<2Rol51pV=;eXc6bN7X3r4 zgp&xvzzw{DXYdL3Fs+oj1+j%_H$3)5Q|eiWXm9!HA&Us)tzs+i2}+-kUBi`tJj%3( zk7C>$zEG~jS+BXyu_J8!dm1W+I6eTKd%}0b#>P$)@)PRrlZI`%CyJhXHC(~0vwkZ> qU{}5?<3Pma8y$BgpM;e3lez;;5l8&%q2R>;0000eZCwL0OBbS77G&JMb7%IDh9ylp}E>P&@uc4m6Bg zj%XxcwNSubgT^!XOm3!jtGPX_=mntBqR19zjj#B7nu3uQS)GS*+odxxPM+MRp;+kf z?!yKz?D)VZ$>`^B1K8Jdb@Db&n*aa+07*qoM6N<$f&g8GHUIzs diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-mdpi/revanced_volume_unmuted_button.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-mdpi/revanced_volume_unmuted_button.png index 9f7a8ad859297299bb7e726598396ad861b5df83..5f5751d9bbfc8550746b07b916e5bbe748ccd125 100644 GIT binary patch delta 269 zcmV+o0rLLL0@?zQR)6nFL_t(|0qvCG4T3Nbg%9EYj8G>~Hz*tE1mXmapd+|}E4Tq} zfJ^{Rpc~ZJcrllzgjmWC5?=D9$7$bd(*n_~$;ud`XiOoX0oT5ulme9`$r8g8lu>pA zlM~RMe!;uRC{%22WPn^X>a&GH#O4j7MgO;IJ9h0N^%!bUGJh3X1;|0`{8jO9_B`Gg z9$?)Yz!Ph506VaOK}&vVQP(`TH^9nJBrQBWyWK7GO*1C%n12)X3f$>m@eQ#DSh
eciQ3+@3k?y6XitAX_(cxIF(e(id8PA&g T;TysL0000q3 delta 254 zcmVvde+;Q(9cSI|TMJbgJ$xA6536m!zDHi%G*yK!8K!FUZ zp?!~upb)tDLwymB9HC9RVyUk<9yQcJH!D_goRTEbv9_y$w0EQEg}YU_zI1UEko1rK zU4?PKLMJjp-PZD$1gHj0G1jXl{64;&jdi8LcdW59GGd_LKw8E&u=k07*qoM6N<$ Eg3B**d;kCd diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-mdpi/revanced_whitelist_button.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-mdpi/revanced_whitelist_button.png index 1bb71692e5336488133c530403d239640461010a..6c7c8072e41200b86965718145a8ba931cc918f3 100644 GIT binary patch delta 326 zcmV-M0lEI>0^kCWBYyx1a7bBm000XU000XU0RWnu7ytkO0drDELIAGL9O(c600d`2 zO+f$vv5yPEb?%CenNC$Z#b*sIF1#6Ch47XFDii;Vt?saJoYvA1Isg6%eSEt z@WU%h6cUyoBpIC=IyWi-Jd9H$ir#~zrH#ftjNgqUT`o%PK|AF)O_!qosS{a&B38-X zLNa@!8J8}KnRAr{9d=%xpU4RAdm)geS?q?*@5L=7v z;gPqHtPSHgl0SgLc}2%GCuH!lNsXY>0`9tBNj!cBF_8hoSSOCyYoL%-N_W{h=)m9c Y1{$??beLQ1^Z)<=07*qoM6N<$f>UyaH~;_u delta 332 zcmV-S0ki(#0_FmcBYy!cNklBb7+W7`HpvURXigqqMyxX1IcX!Urg+k|XjNy4+3?85gWk?;m zQ4u~j&eQMkbV7mDv zifitnuNCwlXO7<;BwtXl1zpJ9`{q;UJp4t$WrZ1yM>3KPk5^R9>R260~(emeDs eDSZAsJC8M=T7pAPesCoK0000Hkp?I diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-mdpi/yt_fill_arrow_repeat_white_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-mdpi/yt_fill_arrow_repeat_white_24.png index 1335d71199dae93a2d1816fc2d70619290e144fd..b2b2e6f440432c340bed49c78832c4206bf45cbe 100644 GIT binary patch delta 288 zcmV+*0pI@B0lNZ_B!3BTNLh0L01FcU01FcV0GgZ_00001b5ch_0Itp)=>Px#1ZP1_ zK>z@;j|==^1poj5&`Cr=RCodHlu;4FFbsy1UIk1-9e@OIfP_gv!YrTw91IkIggF2S zI4FOi$MMjtDZ9S)yZf&XY5y!;6QV|Ky!TgVO|=N-&>eEAIDZR=IxHn$wSxB0mYE;F z0V^B`<|8zb9tZW%kll$2HsNkb3HBbLQz~X?A;BCAZif3*+|qI`Fh5H{se)%zmO1mr z7yRf^>SmKUxFa21ls-Xxe%b^gX2x86+a=h9`9PnRzZG<|IJY>Fz+nl-2P&II6Dn5q m&O1pQ!PV!ydKus~{^kV((qYQzR(C%D0000DY^212 nEwl(0qh-Px#1ZP1_ zK>z@;j|==^1poj5=1D|BRCodHRBa8yFc7^i6EF#L0206f5+(r&b3jl44h9N9!W@8v zIVkU-OUSs=UYhRLUh>kU*S>4-i)cY^SZiiJ%A8a_b6bYO?foI89P$F0y3nF8hBnK{;Trr1<>FN^?iFLw$ zqY0fF+T1Xbb1;ho4yUi1i@?R*WNRR~H!8;;lz+tEB7t<8 delta 212 zcmV;_04x8|0`LKlB!9O_L_t(|+GAiC1+)hL|Nrj?Vq02TAO^%INU{W|m<@WR02 zRKv-!U>h{slTu7vCB*_;Xu+jLVu8m-N*vfii(oNYCP|Pb{i9VX%>e*gm4_RXo?pBG O0000=~qJl diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-mdpi/yt_outline_arrow_shuffle_1_white_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-mdpi/yt_outline_arrow_shuffle_1_white_24.png index 72ff08ff4b55aafda8b731a98309b2ad2c7e66ad..dd1ef8145ee79f7abe95a5b6befbcbad9d23ae4b 100644 GIT binary patch delta 226 zcmV<803H9;0saAyB!3BTNLh0L01FcU01FcV0GgZ_00001b5ch_0Itp)=>Px#1ZP1_ zK>z@;j|==^1poj5lSxEDRCodHlg zoyZNmLiW#?4Ho1e<>*@Rcdkbc0>$;`l6%q$DMg=Y(MHSpRdj*;fix+lHiUT^OY`_5 c9ca|a4H}snA`*M?Y5)KL07*qoM6N<$f(&h2*Z=?k delta 185 zcmV;q07n1*0o4JJB!8SqL_t(|+GAiC1tSyu|Nnmp5UUbUQv}3Ep!gmT|0l%)RUkeI z#A-ySRR`iTAWKN~g$mRXbs`K0(MQM$Dv%|ouvvm^IFx^c-1vZ5B8bays8}i`kF1N)5gDtC_H>-qlhd=i2{94S zqnunkAF(%q>oA5BUOERZvi773F#7<)+Ymp*@`1PuQ>4C5e-L)8(IxqRiR>BFVL%~W ztlwFiEHc{ktP()6J5XorPPsPy?u-itZ7l|EpByw8n8;Pp#soM(E9`9cst_W1*-drv zK7QF*|8ps_W>EhD9GM_eTcUkbW#FOOid1c|wha6gzs&pi>0g6SC+sn{2*ZTF00000 LNkvXXu0mjf=(NXy literal 0 HcmV?d00001 diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-mdpi/yt_outline_screen_full_exit_white_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-mdpi/yt_outline_screen_full_exit_white_24.png index a87c802eba887daa1cf13bf52a83b840cc3ac974..938ae850e7aa920dcb9f573332b41f87daaf54bb 100644 GIT binary patch delta 258 zcmV+d0sa1i0iFVoB!3BTNLh0L01FcU01FcV0GgZ_00001b5ch_0Itp)=>Px#1ZP1_ zK>z@;j|==^1poj5vq?ljRCodHlYt4sFc3vA;sB124eSQGfx3xK;0kUaZr}(VA#UIZ z-5~x#f@k>AAT1P{2S=OF<$f+)L@E{U{T6X0`USE7wSOUHSbL(aLJVT?H%lg>^+w*O zTYuSa`zwqKV@z9Q0M7E+z9TtL#3n>sw^ErLhKb=}StU74$SKJ=;p?q z_1`3gwEjTcqX8>K4fH(Yq>?e{acuTAqrc=5gHCw+IlVGBUScUR8C^|JJpcdz07*qo IM6N<$g8i0c;s5{u delta 102 zcmV-s0Ga=u0)qjNBwtENL_t(|+GAiC1%n#=|Noy6h_&&^YlGBKVgV}Px#1ZP1_ zK>z@;j|==^1poj5yh%hsRCodHl;I5mAq<6E;{a?Rx4~_oj^GGx;wFsX2;K;8aJT_Z zfRBV9Si#uDi-~t%()7|-+6z#K7XBWt1!IgCI4i;fGas{lhJWjY?xF8LZ7{;6V*V+a z*=OCrnL@HK2fdTE*3@Rif?G{MJivwGhnhuJG%-JGaE0AT$3XJ|x5B|TihPr2_|tNiC)v-YfRqY-6VI|*YYU|d4kiPTajx?*}%h`h^5&$qH>%7 delta 120 zcmV-;0Ehpl0+j)fByn6xL_t(|+GAiC1%nR!|NmbQh#ioyHXgOwXlezBvA`LKuL1E? zC{DqnHU&u?NRJb-7R)8X=W_>*1v)^SNrnZPAiblhcofj5sGw~!9Tqv6=7k+?i|bK9 acK`r@Qr8&*TSUbG0000Px#1ZP1_ zK>z@;j|==^1poj5yh%hsRCodHl;I5mAq<6E;{a?Rx4~_oj^GGx;wFsX2;K;8aJT_Z zfRBV9Si#uDi-~t%()7|-+6z#K7XBWt1!IgCI4i;fGas{lhJWjY?xF8LZ7{;6V*V+a z*=OCrnL@HK2fdTE*3@Rif?G{MJivwGhnhuJG%-JGaE0AT$3XJ|x5B|TihPr2_|tNiC)v-YfRqY-6VI|*YYU|d4kiPTajx?*}%h`h^5&$qH>%7 delta 120 zcmV-;0Ehpl0+j)fByn6xL_t(|+GAiC1%nR!|NmbQh#ioyHXgOwXlezBvA`LKuL1E? zC{DqnHU&u?NRJb-7R)8X=W_>*1v)^SNrnZPAiblhcofj5sGw~!9Tqv6=7k+?i|bK9 acK`r@Qr8&*TSUbG0000%}vZSugI)Sf^jmn8}E<(9npv|lFcz?e?SLlS)Ey$8OKEO3RhUu(P z_myK*dkA?>pe;4Jj4ZKU0T@^hN#s@i90c6DXR8A%mCl6q3P=OHAWQ1%O!z9~8lQk` z{(b^59%r8xc@JS4qbs8sT8z3rhsB@#<1Qxd410%LB%w7pT>^aw+1^96dpa?^d*k3i zp))w`=PY%()k|=(OL71bc!h(fs@^1a$xa002ovPDHLkV1h~t B2gd*a delta 467 zcmV;^0WALg1fB$tReu4qNklYA0_X&k31EZ5 z1dPyZ&@w^20U4kVNJKrj)OKneSJSJ$JDu-r|EXj(QWC&048u5PPEw20>D1A1Pc}pu zJlPZZ;bR-30f_SpvH{A{kd4WoWoWTV2xn-W=L@{axNmOA9Dms}**LTz6~IWw2}S>k z0?4Vq|MF#vQ}p9ej^3>A62QO40w~SF2T(zY^ocGF%{M(dF3p2nU5xAi#PK=W`W#yK zXd90Y=(r>fb98-ZGQdtav?Z>4Y6Ds0CfIE}JU3M6l4t_hoZwa9lzDA|aCSCxTaN{j zofQ%dD~9?ej(?<@=lBG#W4fxUJ|ou}BlGmXuZKTGZp0c2NLxdJ^?}k@0A1+6JYqv8 zTAe0J59ple=Ey`-g}8=~$X4{ju{}OA=g1ZbU5!jM8Ms6G zC8w4>xw>UUmqha{Px#1ZP1_ zK>z@;j|==^1poj5=}AOERCodH*HI0^Fc1ddzXSm|U=nb^Bp_iDZ~zi;FeHG2&B7d1 z!W@iSR$d5OZ{$L^gAGalWPkQ5fRbKbzOIss3cB`+ zLhc?0tQts$4Wz~fQrl`1W$axrOptGmn6DqF<;Ys&oV&qNnB6gjqE4ZxQ$fjT6Z;DY z<0tS|%g*^ooeaZ0Fr}3`4-gR%Ma;R#`rlUU!(w%jd8t#w(o&xi>c^aTO8Akr9Pwwy zCofS?to@Jd*fRZx6DVPTADYzIKx%9t@EAs-SLC)Kw*e6m5v|+{pX}~xVF;8J00000 LNkvXXu0mjf0q%k= delta 150 zcmV;H0BQf!04Umjl53+-dVpHFsFHB zW~?}KESx!e(*gjv%>BT1+83Ds0Rk=?aPObH0C2Vq9MB*?YY(&~M*si-07*qoM6N<$ Ef~3|wU;qFB diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xhdpi/quantum_ic_fullscreen_exit_white_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xhdpi/quantum_ic_fullscreen_exit_white_24.png index 271024bc374550284bbda1fd536f3d688c525041..d631ae0d3403bf1f2b9a8b12fc4c84c9f961e32d 100644 GIT binary patch delta 313 zcmV-90mlBa0n`GJB!3BTNLh0L02UPx#1ZP1_ zK>z@;j|==^1poj5=}AOERCodH*HI0^Fc1ddzXSm|U=nb^Bp_iDZ~zi;FeHG2&B7d1 z!W@iSR$d5OZ{$L^gAGalWPkQ5fRbKbzOIss3cB`+ zLhc?0tQts$4Wz~fQrl`1W$axrOptGmn6DqF<;Ys&oV&qNnB6gjqE4ZxQ$fjT6Z;DY z<0tS|%g*^ooeaZ0Fr}3`4-gR%Ma;R#`rlUU!(w%jd8t#w(o&xi>c^aTO8Akr9Pwwy zCofS?to@Jd*fRZx6DVPTADYzIKx%9t@EAs-SLC)Kw*e6m5v|+{pX}~xVF;8J00000 LNkvXXu0mjf0q%k= delta 150 zcmV;H0BQf!04Umjl53+-dVpHFsFHB zW~?}KESx!e(*gjv%>BT1+83Ds0Rk=?aPObH0C2Vq9MB*?YY(&~M*si-07*qoM6N<$ Ef~3|wU;qFB diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xhdpi/quantum_ic_fullscreen_grey600_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xhdpi/quantum_ic_fullscreen_grey600_24.png index 3227a04361804dacf731dd64df67a2cb98963721..e4702e744478b8c55d3a1bf0995eee8fe274ceda 100644 GIT binary patch delta 337 zcmV-X0j~bn0qg>hB!3BTNLh0L02UPx#1ZP1_ zK>z@;j|==^1poj60ZBwbRCodH*o_T>Fc1achj9=#kP+BKR&WEHfE8d8a0A?+o8UEo zF$Cq#KM?EmP0zgDWMBzl*z^>~GnG$7q6-7}w$$!seIzp$F{F5ed4?X|m zQ)TRBW-T`4t62&d`8(4t#JHKYQbvQ<{7oug@J<2#@is7$9EbVB?&NO)g-?zIcN zd;qaWd1nl}NSXiu002ovPDHLkV1h5~Pc{Gm diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xhdpi/quantum_ic_fullscreen_white_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xhdpi/quantum_ic_fullscreen_white_24.png index 3227a04361804dacf731dd64df67a2cb98963721..e4702e744478b8c55d3a1bf0995eee8fe274ceda 100644 GIT binary patch delta 337 zcmV-X0j~bn0qg>hB!3BTNLh0L02UPx#1ZP1_ zK>z@;j|==^1poj60ZBwbRCodH*o_T>Fc1achj9=#kP+BKR&WEHfE8d8a0A?+o8UEo zF$Cq#KM?EmP0zgDWMBzl*z^>~GnG$7q6-7}w$$!seIzp$F{F5ed4?X|m zQ)TRBW-T`4t62&d`8(4t#JHKYQbvQ<{7oug@J<2#@is7$9EbVB?&NO)g-?zIcN zd;qaWd1nl}NSXiu002ovPDHLkV1h5~Pc{Gm diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xhdpi/revanced_copy_button.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xhdpi/revanced_copy_button.png index 38faa709866b641e18a281f6fc0d5c6211eba3d4..4a417b065c7870f20c677d96851c7e6cded09d16 100644 GIT binary patch delta 376 zcmV-;0f+v=0+IueBYyx1a7bBm000&x000&x0ZCFM@Bjb+0drDELIAGL9O(c600d`2 zO+f$vv5yP!8T0M!dCw*?pCQRlzRnBK WWGaD0kAi^!0000V}XIC*M%u3vqQ!mm-3O zI4RIULAM6ST0?H~O^88A1kv#Hec)PJ``?4l@%zDNaX9a*EPCRz7?v uj2>oqH=)0UqapG!P{+twqG_5I^?m?QDGh!YF2R)m00001s%1la_TBYyx1a7bBm000&x000&x0ZCFM@Bjb+0drDELIAGL9O(c600d`2 zO+f$vv5yPl!Y~Ym|MWTlBe)Zk5z-C1LDLPo0qF!S6O>Ls zJ3-h0IsxefVFOoclsl8-ArljFhrc^vh$AP8WJNYWBoc{4u78;Xfw0!5)EJ!3hGdl_ zNr^t88#g3N8;&QR>v#45UGRgNjATXfjngqCeDmyyJMzQ^eLx0O^5hIULSxKitW2wO zgYJy@BT(#?@Fau*7v*{kkZhBYj4>d5Jdl!b#(Bhmh;!i5L<25OG$1hE_0KH^1eGK2 z^q%>GharP9fPe9=sp1^)fx=@%G9f9PGQ5)C8P18+K}_B{{*OX`OtN-XUPa3gEByu@ z^x^?201G&4W{UL(7Hm&g?k{|d=qrTgkcE!|gSu!`adrbFwhjD9ZN1BJln@4#{6QDo zS7v+dGB~Kp_7Db4rJXyIF?0G)T>#x{PU>s`zdfmWMt{An(oj0zkH!8c`e0ugRp?cA zHxuWad`Eww8NZJ#wAyn#Z;T)>=G45l`hO4-#{=pV*V3~JPt2U-Ml-&8Ymo-zSYD%! z=^4rIfzvlKHyT|IhxEYtIqDZ$F5^#0{{^8@Jk5qm3~uyzOJ=RqU3%P-|K_f^mQ&-g z?6Po6V>;1$!{PkSDLMDq*bVmofEHW7VcCc#&-2algk^&lh(schNT2)xmHY>mX|IKZ P00000NkvXXu0mjfCs+eM delta 575 zcmV-F0>J&*1lI(RBYy%ONklsCWFi5HeF^64 zArR|A3mWrxf#(ziXy2(vk1-J27ovR}mxlbqDius7KoQ_Bz@80(DA;37O$3xSx@fm8 ziGUCMsH6$$B~Sns!Hew2NTx_3|AtEC?m#;m;0G#c!hhVyKnnS15_FL(Hl_-}kwQz% zn?b;zpo>s!F^Lv%EPMV-d3gxjvu@x>F@F=dkrD^}!Fkyf{Vr>rdL9CEZ0kFyajQHx zEt)bwm2V6>rmB^-8eKbWB1DML9Dg20IB8t3cmn_c N002ovPDHLkV1jV50FnRz diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xhdpi/revanced_download_button.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xhdpi/revanced_download_button.png index 4c9ba158518c5cc177459cdccf1711f883e1ef10..7ee1a52afd143638b4fe211c24393bf317b92d60 100644 GIT binary patch delta 338 zcmV-Y0j>VE0__5jB!3BTNLh0L02UPx#1ZP1_ zK>z@;j|==^1poj60!c(cRCodH*Wn4mFc1act2lrobQ9wSZlIfV1vk)DoS-8_H*kaV z0v9ZyKT^nNYPocT(q^CT2p6nZN7x9*#Ecxs(7~NIpa_mb+mw9*h%fl k##8F@jXysC005Nm25`}*mgXFxU;qFB07*qoM6N<$f{K5Lb^rhX delta 282 zcmV+#0ploC~Ta_fAE`S%*@+S5(I=0LI~L)ecwlt3ldR)0u-PC1t>rP3Q)lA zu!-a#*?khw8q_9Mh7Tnt$xTuW5>o;gzCf)$6IzjQk_Lli7=QFd0B0F$wANXBja1?+ zX(dNVJQ9d;)}qE){T7Bz=%BgeisU$J%nm=XiThjDy?JS#O7=51G4S=xYY*+^LqI7P zY+}~UYY%O-y1+=n&3wj=z`{Nh*sMS&seT|(X)hl?TuUBkP_((ECBs6x)r`Qi{yz$&NR~+|(V|;}xK=VFc z%_&ycRLG3=On+@~4LC(=cF2r%vWGTFAa((hX#_Gt^F44PQ109uPGh9PFCEPknW#y_ zi<*ADu`N=ty^l;dY1lhAXE~L03jD&!=6xq*6#p$ex--^UAr{M10*N>wW0(c>O&A>! zgB3nWaaa>FhQ^d>h0)Nba}yYE>XT1ILJQwhvqODpy?<;mg;{&zQ)sh+JtEK{L(K~= zm8eVG3e>DEdb3Fqc7yzc zHa6OYBYy&;Nklu1eLQOP8fB*mQ&B$=!!i5VLE?oTQ;dx#=jKDk`LM`s$1Aji@DXwBa7GXT{T1)ej zu@`so6%TM8d$3;Z(7(M$BVOPL=0??Y4kl?6Z*c+(FsKE&qjXX?biy?l7iRN$SgFh6 zI^xJT)ESHwc!}jpM{ui1Y?4jz*Jo}vgUJqtec5K?9zK`cC*iAb13p-pksK9u0CIw zu{i7f4B3ven|#(54^f%!AQSZJl=#?qcio1+Y4aD+FTwZL>T{yVI*_~`?A9k}fsZ@c z8GP2}8+H9>Ciw0!)L|pqSOy!4+bH#E7h8ho-tYK=b$@@!k!7?E*D$~`=qxl~V4BVM z#CEOKG-T-%{v$W0OL&T9;3~O!)4b}_@yz=(-e5=zYUJv@vf9#sto>SJ^Bu5RAAHS2 zZp<|))RNcoYD*LKIB3Z0hNE8cs7mD>O5eRMSSBF<<}HT2m>yyh#cT9Uv7Q`|>MawH zwYR~LSAUVDc{w-CG1NPNJC+H^scEMnuQbU7D&?j$)H^N5QOgA6uu@~l>!oMkU(ujV zzNP_>N7M|0edKqqRs0-eG106Fw-{r}ngT3tho2J&}b;w((1TT#1Re r?1dk43XHoSZe6%=;lhQB)*L?os>$PV;R4il00000NkvXXu0mjffhB3q diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xhdpi/revanced_time_ordered_playlist_button.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xhdpi/revanced_time_ordered_playlist_button.png index 6d90cea67003e7154a4de9d1ee42c8f227da45c6..a6eb2c90ae48b94070b5c6077c329014c002c94a 100644 GIT binary patch delta 306 zcmV-20nPrm0?h)DB!3BTNLh0L02UPx#1ZP1_ zK>z@;j|==^1poj5;z>k7RCodH*zFC1Fc1ddt8oBFU<60#D2}2V=mg*d#0k(zzzuMM z^BVc#M~YmNOQ^n2a^cUlY2nfwB?15d07&LYiJ1#BO9(3 zVkM7SG2|$1K^2*c$A?lSvHNz-qP>*}8}N$!3#IcCCy8z>$@*femp9l)=81iQkbjWa z$HvY=r2fmHOe^Q_ZQ+fCr<`PYbUu@XZ?h>E0D#|h2jzFa%}|$FWdHyG07*qoM6N<$ Eg2)(!EC2ui delta 284 zcmV+%0ptG70=EK?B!B)%L_t(|+U=OZ3IS0Vg{72@vSKND1PcpgV`pz`!viQ0D-SX3 zJ%XKQ@C=f@9R{IXXY${g#Tb#9{B^$in$?}#ssGMtZX!VlA%qYG7-Jkbg%f%HQYVf8 zC-dZD!nwaNj4MZk5JE`QMK%=sKXhQ<8%F@k5xQS^2++2>;eUt_Ldd6|fw8jA5IjCto18ez5NNPL8-pDLr1*WtW*$Q@HMq?9~ iU|r3~5JCv~OBEg}Ci4&zhK8m900005CHNk$Px$% zO;C`XLWsbIO)w$kc%>%kT?F~tk{y(P*$N0jU=ayfrbXieLVs|J2)U0KV`f@3#v_8p zEx4(nqEU-jLI`|BsKq0C8%;=Kf@dxg3$hfs8hz^eQ@1yKK+!+(B_ zcrRQcusQ&X4guC&r~Wi}6x2i<5yEmWx^i8M!YeR%<_scd88t7h?vhNFN;%x8ZhzNgb3^|xSxWX!mO&q2Q|4^=lvtgq;d-4$8;(C#1T;)fEG3hNP_9RU zNlLbB^&M54Kws1ma9sB}Cv=2k%mElYK@ZSVUs3Z3&7SDvFe*8Nyiy3wufL_-xKe}) zl21C7jyYHYSYY=iUT9-8S32SU!!9vguQ&0Ivo>x7et+Pyj7nt6$dh#|pFTbDFZ#XL zuH}YE$U-0wsy+1|4L(!VvIN|Wwt>%)z~-H%utfr^!!EJ-D{RpTMoUCqR~Yns702rP z;Oqm2rX}Jmpw-VQu^au~!D)#QhJM$pc%6Ez`X3B!vBJ`Ct4`m8=e`ZKSYhdRZEOK! z0WBZ(cu2)J_UOQl!*0~jg4fu5z~7$;ZPBZ{Oeb3CQr{nsvL~X5QSeA23S|6qc(mO0 d;vtarWP@geZa_9D8#JAuY*02} zgp5EpV1$gIDn$X|i(g=eB`Ns5Q{Ew zyt0A7kk6KVpP~sN$8{_bK0X)Cqxi!SX zQN&I&x8VI=XvX7bfgf~NbrJ!dbODMiln??uSCtmcIEfGfwA(~1&d%oV1>C5}Z0X#i zf1h~MeE-XzIe&xzEiWZ{Y$qiHIJAxU9s1v9V8Jy5Mpmm;O&?!;>6?jHcz_@RIvx}e z7xbv>XfLsA;SV)F3LZW}2=KPMS}Txpzp2?BG|%gQkAyiFk)tiz*=PjlM63PSb^Gg^5RfGs2L;s`rrBlP0D1r85JbYHUiV)%}7@GkRnHcLTOKTE= z*OzzP)mMV3hXn9gE>>83ibc&ybu{o?wQ9|nQN%1@5yvHnXlE$`Z~qT+s!o$a1l{1Z z>&{06o|{!EuDzPwBuOHsf+FI%4eef7L|0;SNF)-=<_{<+Z@}Y7EUN$j002ovPDHLk FV1i4aXhC`q&$+9Djz++vE$1D6bgkxp-_-xjL~Qca>bl@%TfqB zy+&(T1htQl8?^IiOFJ4cHqfc5V9v~n#&|@aGjlqu!nw*4@qYqC!_FJ20A52P4!mv# zLt#0eB!JgyUblfEaGVbch*ceO{u1&3#&Q1RjDTRSV}I3q6x_72Qb7min^>+}QMd;I zw~|TtXG?7E0>hfy=gDNUHuCT<&>lSf-)I%u6WS84fmP;0Xlt%C0>soa-lowC1c)MF z;oGqz?)(p2Mt_C&>GbWnRUjZq06Myb>oWB`V~@K}KNSeLf$?&bOiGG?@n3%_g+veY zt&Ke6`T~%~*GUH!MZ7~gzO$pa{RIJ10bk%Rqm;w+W~K58i6YjN@1Fkl{jh~TK*wvV zEY1_ks0xhlV&k3Qh}Z}Ogsu`Z9^XOVI3i*KVwbs9Y;$erI3jf7+BWqX7!pf_PFSPN z>4Qc=0;y&6ELd4;ev^t|hw1uE740=pnfk}bKI-Y>*6_~PkP9RZZDF048ghXhZ}XjY wzk-}##}9ni&!*YvpqE&dju#4rLZQ$Ff3F0A-ya^~lK=n!07*qoM6N<$g5g{5DF6Tf delta 478 zcmV<40U`dz1gZp(R)4=qL_t(|0qvNJZG$inhL28=4N4|xy8+pN4ax|~1Yv`AgQOF* zoq%jWHh@l$c7m&|_=-g_#yn%`KFLC|xzqi3=41oFFbu;mOm`4*CB{~a5PU=hPaM1x zqAGCIL=<8~;2SdYH6hR7BO>thrbMXB%Dw&QU_&Ay~>(+D;kk~p<4^D=8@>jx8R9h=> zzBU??Q|N%T0IaXq4n2*%+1RWUk4G0aTcx*ru0af`;e2TFX zwjYLdx)Z#?T;TtcsBsHf{KReBYf^BW<22bPumm{lLRa&$SoUjy^tn>*Rq*m25Q0x= znU_T13$j939n)pzWAFiOixCAb`6t2^tgf6g>nSer2Vw|#J(|Sc1}N%2G9hMBYyx1a7bBm000&x000&x0ZCFM@Bjb+0drDELIAGL9O(c600d`2 zO+f$vv5yPkJmStbC z722s%+rd(;0Ot+nfL(1;l>!Xj#F zYY(xY1^4Sb{ePAWCuKqjV!%ef<_k_(L=|louuG9G<&!cI5o{JJkcN$pnkbhN(U8ez zBx)3A>I92m1LeH8*cvtQe_v2HNCft~^l?f3H*n)IS3#dR&-(E}Kd&AlzFjK23Rr}I z2wAY(XqD0%C~D9X9rU0Y^)AaGD2P%cqnUl1{(;E#UeDd@TpFAO z9~|yEd!4<`fA`*Nt+cerB8x1t$o>}_92}ek)ldh`&dNk=BH#?=0oej_77-S6jy*?x*R_Ws`vU0c$e!;XD zyOX&R_$r1@I5qTx`8ag{`%7`|n=65z?eM~#HNK7tb$`lkOmI$^D&cY_r5#nij;fX0 zRE*+TQzi7?Mqekpb=;SZ;#pHA@Now&_&RA)R#_NejENGAJqP!F187xBoF6cE@>YVe zXW)^A0xq8~NMfv)5{x+uUA_S{s2C|pGK)=G31z7rz5&#zk}CJ`5m*VO>OJoC_YGi% z_Tx$qAAfnA}tak)byGO0@?sx?;rT^HQf> zYcXdH%!{`HXm{ERmxI(H|DBn%R3eKkvdAJ!WPbr?(J2p(e~mN%0000aX zU;GDnxD9A$EH|>FJV6QQx!k$7jGW4CA12&VM!3J9UcE5YuYj?M(=j zh=y2bh&f7x#wRf$Dg+>Z!ZO8hOsGbWyQ->gkrD=|-T%^V^K^_jo~Tcx=Y*Q+@dx#Q zl>C^18i{d{uhb)CfSP@w&e4zjCGY<)pKC`Cu#0&ihZ%@AFT_5?DS4)37Oq3h3!~2f zO}8u;tV=|Y#eYK_Gx94!11zadt6><%8h(+d)Ld%Fby>Vdl?hdA^(H!i%cKF13gG(A zOqRS2MkY9bj{GC~slLL<1O@nQ>5Gx^4zTOGeJH#FDSoi=1(MqZh0*9J1S5f8zIWu3K!hI?dO*sqJ?1? b#zFH9OZ0b&8i~;_00000NkvXXu0mjf)pou7 delta 337 zcmV-X0j~ba1M32iBYy!hNklZAa8zzw_=d4JCggmsn*fGa!^oq-a5 za`Q9A8BhX*&EF-FR{}(dycj?qc`?8SzDOf41{g=Hyvjoy3t$ef;M5-iE|=^3f=GEm z%&h`Uctsy#EtrQQWD+2heU|@?Ie^e`vGEEGSZNA?k$U*|h-x)|G5{Z+>7=Kezyi;5vHdwTXH%DUv zF(M|mVq%3DA>p~kM1}$IpHMS{KXQsvo~ta&9^eu(P?*EA?9+4(9czjYxaWdmALQxwu#qc&gyDZo_*Ok0_8%3Jny z<@DiE+AuJlZV|M##-JJaEA_?1SQ{9dxBJ4%K&axG-dS9zBc6GqSV*Ggk}D{%N#^GG zU7XAj5LOpkT%h15E#_^pfj??mo(){HQ)O-C9EgvOiTJL<8FOs+`LUZ=B9TZWPMR<8 WlDa;uMjgQb0000b;@5JfFl6e%eXMP#H%h%QAsJEhA6DFs5% zAdW!69ddvaDL6tXe2PdZP)^_jP|%vn{FSC~WftVW^1_VtDpvNsS?$hv2?7lb4UM~w zvMf{Z10r7qX5auaFC{SP5KKg3=d;90SHj{YJuoCP0$-q@tbYU^xGCMnmLZUXHCU4P zmK8AXd1DCtfdOd`#9%Lze`f3frhu9JKPB@_0VkO!3-B|4sQ`X|scgyxc&r&a2fx(J zUm@^WISP+pTr;-gtnywU&;?ImdQQM~xlh15c(5G*+A4u7gjGNVRKQZe91Lub8m&>I0( z=A8&IGfx+&WWJCOZq~>ATHe#Rz}E3qO5*~NTrw4M=`o@`Dchjm-Qs%1w015yANkvXXu0mjfxFoOy diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xhdpi/yt_outline_arrow_shuffle_1_white_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xhdpi/yt_outline_arrow_shuffle_1_white_24.png index faccff747be482db8227de668b5950812938eb1e..cdc76769a92cd842911434c4317bd8068c046fb3 100644 GIT binary patch delta 415 zcmV;Q0bu^i1Goc_BYyx1a7bBm000&x000&x0ZCFM@Bjb+0drDELIAGL9O(c600d`2 zO+f$vv5yPC!!QtqFA@VVLPlT%V1sTznS^!&HfT11P5>J) zLfPQ)ObenRuK%ufBi$!iR;}~-yg-1oOE0;|Jh=Z~lxA%>5|ZI1`5o z6j#ENbC+6y(gjOjr*W>u*$sFWPBt->gYB-00iS@#_gdEPv#Z0HD78R>Q=%!o;`2#J3_=JjWm0elM3qg7}})=EszYCLc27A0_^o zzzh#_Mp8y>>H1q9bJ(hzq9 zaim`yY4RCOK8FWv00u;dARa;>tmM1&yUz+>K->~URtCb6e4EDk0UVXcr-5)KZ~T`A zz)^`~c%f|al>itJ`|uC^=!5VjZ(Oqtzou?-MJ2xAb`9`n#;lE2BV>69S9%D=J)+8OfmTMm4n{@0L*|C#1 zvT4>lHM<*vIB`KFJxY|>Z3tqIAf9Z9l*j4PyNy+eQ+P2cK#YAJ_sqh(1o2!zumi;0 z=Lup!5IqgS3c%4}txCMm(o(ffeoQ4kxB#wVB=7mKbt?hCaemm+`}1XJ@|AsB6p2J4 ckx0a#KczR~*=!&{3IG5A07*qoM6N<$f?FcUT>t<8 diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xhdpi/yt_outline_gear_white_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xhdpi/yt_outline_gear_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..097ca76a887d801fef2480f943c7895f8bc99e1b GIT binary patch literal 902 zcmV;119|+3P)7nsvpucMO1>75ySL?YDQM8VEYWOIq!Ja83 zC`2rDqP1FhyiUm4X?(3MBXKxZxHMylxE=4e2VZE4(lrsZoCnWg zA+Qf0iuX*sPc$8l-~;ydfDc9h>tW500!dmjS99!%N8!5bHz6Gi7FM|ht~gA_c# zUTg3Yjqhv`TBZTtAU*WlstAsL}t19nn1dhXw zQf*@3NpQRq=WtEsEk+a;o<=h=nUJNY#>T=^L{pvx>ZvTVC^cX<)!|H8jpOnqpOfcO zPV0ko270R9o62Yjo#z|4k8MPZ^T3h=`gd3e7X#is=q~47o#$krCl=X8xES!H-T#zC zZjl`L@fl|pG4b%@!O~tyEo1vb4Y)?PG^#K38trMc*7!<`ESW~va82bk{;lAj+Q_yu zvdD;Iuo1q>Ta2(_>nJM;G6KgNNk}nAyK-YtoZjW0vZN8E>z{`1LD+HbEGOe|SW-^6 zzL6kz%Mxw`Tyn6|rmjWvk#dcO(jq{~p&OBl_j=vrf3U)FYTU3lYAw75grzw!o*zi| zp2yN@VVyiQFGdqu*C}St%4XOU!n=6bFThSHN~w}&$JE#&dOjhqz{?qISQgQCcxhM) zOTgZ$(7m--PsrK}V@nHPI*bb+1w5a&x(S|k&PZRxY_A{qN-_RJ60y%%DL?*&NQh~G z-j)7spwE3j2*Ov01S*Y{mru}p`AOYNCI9f1zEYmx9)WJfT-1*nvAb%7 literal 0 HcmV?d00001 diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xhdpi/yt_outline_screen_full_exit_white_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xhdpi/yt_outline_screen_full_exit_white_24.png index 271024bc374550284bbda1fd536f3d688c525041..d631ae0d3403bf1f2b9a8b12fc4c84c9f961e32d 100644 GIT binary patch delta 313 zcmV-90mlBa0n`GJB!3BTNLh0L02UPx#1ZP1_ zK>z@;j|==^1poj5=}AOERCodH*HI0^Fc1ddzXSm|U=nb^Bp_iDZ~zi;FeHG2&B7d1 z!W@iSR$d5OZ{$L^gAGalWPkQ5fRbKbzOIss3cB`+ zLhc?0tQts$4Wz~fQrl`1W$axrOptGmn6DqF<;Ys&oV&qNnB6gjqE4ZxQ$fjT6Z;DY z<0tS|%g*^ooeaZ0Fr}3`4-gR%Ma;R#`rlUU!(w%jd8t#w(o&xi>c^aTO8Akr9Pwwy zCofS?to@Jd*fRZx6DVPTADYzIKx%9t@EAs-SLC)Kw*e6m5v|+{pX}~xVF;8J00000 LNkvXXu0mjf0q%k= delta 150 zcmV;H0BQf!04Umjl53+-dVpHFsFHB zW~?}KESx!e(*gjv%>BT1+83Ds0Rk=?aPObH0C2Vq9MB*?YY(&~M*si-07*qoM6N<$ Ef~3|wU;qFB diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xhdpi/yt_outline_screen_full_vd_theme_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xhdpi/yt_outline_screen_full_vd_theme_24.png index 3227a04361804dacf731dd64df67a2cb98963721..e4702e744478b8c55d3a1bf0995eee8fe274ceda 100644 GIT binary patch delta 337 zcmV-X0j~bn0qg>hB!3BTNLh0L02UPx#1ZP1_ zK>z@;j|==^1poj60ZBwbRCodH*o_T>Fc1achj9=#kP+BKR&WEHfE8d8a0A?+o8UEo zF$Cq#KM?EmP0zgDWMBzl*z^>~GnG$7q6-7}w$$!seIzp$F{F5ed4?X|m zQ)TRBW-T`4t62&d`8(4t#JHKYQbvQ<{7oug@J<2#@is7$9EbVB?&NO)g-?zIcN zd;qaWd1nl}NSXiu002ovPDHLkV1h5~Pc{Gm diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xhdpi/yt_outline_screen_full_white_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xhdpi/yt_outline_screen_full_white_24.png index 3227a04361804dacf731dd64df67a2cb98963721..e4702e744478b8c55d3a1bf0995eee8fe274ceda 100644 GIT binary patch delta 337 zcmV-X0j~bn0qg>hB!3BTNLh0L02UPx#1ZP1_ zK>z@;j|==^1poj60ZBwbRCodH*o_T>Fc1achj9=#kP+BKR&WEHfE8d8a0A?+o8UEo zF$Cq#KM?EmP0zgDWMBzl*z^>~GnG$7q6-7}w$$!seIzp$F{F5ed4?X|m zQ)TRBW-T`4t62&d`8(4t#JHKYQbvQ<{7oug@J<2#@is7$9EbVB?&NO)g-?zIcN zd;qaWd1nl}NSXiu002ovPDHLkV1h5~Pc{Gm diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/quantum_ic_closed_caption_off_grey600_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/quantum_ic_closed_caption_off_grey600_24.png index 1c7bbe156d408cd76853b78f595423cdd110d514..2b5bb5d8ec51c862c963e6a26cfe95c75b50b299 100644 GIT binary patch delta 812 zcmeyy`h{&mXgxEhr;B4q1>@V<@qM=p1dg$@?AhjCknfPspq}xaMJ92ji$K0^eusU~ zH+|mU9KJzG~)S=ePXw(s1kCqjme=&#FKBOnFo8DzlSiyWbuwoRguo zn#JpAq~hxr_ZwWRI47C~9c9yOu*iQIUTC)C=)4t92~h+?CZ@v2GL(vQV^9p+$U=cECWbsj81TzEHE~!nt@4I5t#UGCI%sgK= z{1OOR@UY;_S)!!Ub&;^(+*;gc0+vuy(un(ijq2>h_*pVhcz z!{;9-J}ylb{ULGv5xyQj@_5M>YC07brU0$Yt zki}{FkFFD4u`$ow4=euRUi?o>*Q(cd$=#nd`|PeS(_i|hJMr9)s1litGg@pK9p*dV zz7lY1{|px?y^nqE@we2HUqjuFiyqC%EVLk_GF2uf2OT=a*2>0zG7q%4 zidH(WOTF=B;S^7+w;31CO-l@JUfT>0Vz4voLBSoZpz~OJ>tVa|n)&P*^w`NR2raerf_@VDg}U0Pcw&iP&yd@l6h47&_q8gN>pnzuD- z?;W)qyTEoWmu-S}XFspz*tl%&E3stzj`Hi(6<5Q#>zDZ#>GnFyR`o{r;^(s5e`x;B;H}%M2VU7CweY+8Gn?_SxN*v52D0->DS7- zZ~`BfxND9I|HQZm*!MxpPZD#hlGmX2V-=Bciw=bco`Q2Y40;70JA*cx&DGen_b)O5Q;it>aaSLxk3`W(t}E*InK_k9fRh79|Y|tz(_-A54d&Z+Q7YJxjAG zpqWK4f5j$~$sgmAhxJ1|40?KLz^sqEu(x8Za1D8f_CfuucO3f@v z8dOV6Tjv2j>K-(&P>7QGphk)__`f}!?OQYSV>Hil_W*TK^fxFq>{d!maCIfQ+$q;S zG;`=HCx2}v%m$(9f#V z_Q}Nch^2YZ3_UIHo|p#PEP`uZckI7I>7Jd}7$z5gvCRrJAcPP?2qAi4;zRa{V06I`YuEM5iQw; zIRR=7qBA;r0@Mu5nL_4SY|FR5^5TEBr*`c2lM|JHT1^C+1_WWLms+nxZ7;m>r{=Ez z<&uEqKYH)Je=f2A@~k6AYp*PJ=lx;4@0HWLmU_Vnjt*>$k}N3#FvcBiMX@cvEo@Au ziO;>T$tYi^wtrj7YR8ogU+zYW#=2*&sSaS;K4apmXUVhljWaG=>n;1UhVf&)>t8-) zYj%*`4X+nQ+AgR}0FjR5?7TIz_bH+$BMN z!3;bHxCH)laPprxo@l3j0VwS3>EaktF()}ef^{*2q=A;=4KFqek&P{C2WGrk$h)}f zM3{-G2+IVKMh6kgF1Ldk67L#z?M&S;mDM>)F!1Uz4T+Tu4EJstuo|9Tpba#R!PC{x JWt~$(69C1lP5}S_ diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/quantum_ic_fullscreen_exit_white_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/quantum_ic_fullscreen_exit_white_24.png index fa3838a7e3a6d19d733cd00c67c89ce5b166f52b..ec962d35e65464b602cee323c5d8224f53bacea4 100644 GIT binary patch literal 375 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!oCO|{#S9FJ79h;%I?XTvD9BhG zi4;zRa{V06I`YuEM5iQw; zIRR=7qBA;r0@Mu5nL_4SY|FR5^5TEBr*`c2lM|JHT1^C+1_WWLms+nxZ7;m>r{=Ez z<&uEqKYH)Je=f2A@~k6AYp*PJ=lx;4@0HWLmU_Vnjt*>$k}N3#FvcBiMX@cvEo@Au ziO;>T$tYi^wtrj7YR8ogU+zYW#=2*&sSaS;K4apmXUVhljWaG=>n;1UhVf&)>t8-) zYj%*`4X+nQ+AgR}0FjR5?7TIz_bH+$BMN z!3;bHxCH)laPprxo@l3j0VwS3>EaktF()}ef^{*2q=A;=4KFqek&P{C2WGrk$h)}f zM3{-G2+IVKMh6kgF1Ldk67L#z?M&S;mDM>)F!1Uz4T+Tu4EJstuo|9Tpba#R!PC{x JWt~$(69C1lP5}S_ diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/quantum_ic_fullscreen_grey600_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/quantum_ic_fullscreen_grey600_24.png index 66a60db633d2ba85116e9b6e6cbe53f5cdcccaaf..87eb4b20eed662e8299f217e4255cfc78a7d8416 100644 GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!oCO|{#S9FJ79h;%I?XTvD9BhG zXO$ro)wqx|6-cF?6=5mqqr@K+hz#vZOTf|4mxAHE2iGs9_+&d7i*ZfPyJpS Sw`g4`^XV5$HB diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/quantum_ic_fullscreen_white_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/quantum_ic_fullscreen_white_24.png index 66a60db633d2ba85116e9b6e6cbe53f5cdcccaaf..87eb4b20eed662e8299f217e4255cfc78a7d8416 100644 GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!oCO|{#S9FJ79h;%I?XTvD9BhG zXO$ro)wqx|6-cF?6=5mqqr@K+hz#vZOTf|4mxAHE2iGs9_+&d7i*ZfPyJpS Sw`g4`^XV5$HB diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/revanced_copy_button.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/revanced_copy_button.png index ede23c0ec9128f2823bd88c142c01005f1aa595e..dddff2044490bae4aa1380b26c870e18cca18f80 100644 GIT binary patch literal 494 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!oCO|{#S9FJ79h;%I?XTvD9BhG z3W=*;Pe>|4or-kEGhyMh+$kXTF`1PDR#{*zjX_T#*)Vp=bA&GsVB}^?4N%>chO1d z6`Sr|UTw~|zW&F*Q~Z_ZbJD+-Rq0&15&f^qIM|f$a(>&5d#AW&+^MoVx`X$exXhoY zYeo0i%Lvx&IkSvc&i@DdTw}S7Eb9Qt3l^Y(#*UxIYIq^=zekNueZ#^293;jN9@^(W6}w%+4%KJ|T-Q1qUw z;`Uz)I<(VWKFqas0h)2h)5S5QV$R#^+l87OL|PL?t|W^IcSWAD{QWO~nb@@Ioy{Uv z^Y$;?apw4;oQ)A;$^S!@GNp@yvef1_Muc%cZKydIvXNye*(}`YTGCD<|O}2ux5mh&O0A5PxBXQ+#zL>njRD=8auL(sizVeXdL;SFi+Zl!9F2}hqcrGF-tKW1v&5`T%BJO-I&h39L|9DkRQ+T2<_ zNSkJ(kj{j(LxSc4vU|KkKIV9|LZq4jUD>ANvqFBK5vfK%y?r&|Yy&-GvA3qkOFi+@XHSZ9iN=MN=1}A&4 z$IyI~Gk>W^x@&}W2||v4`T07E5z7m?q}Yz;Q7?2DkD{7bjt$Bk&|Zg`6H@f!e=T+t ze+7Q7b3>A5+{?>HJl|~3cTMK(r7T0LvYe%!C!{8=aW12k3F+sAEc0H^vvuZOj@Bt@ z$0a{Vu7?Mx++cdlJ3IZ5=J9Q`OeHT5n0MysFm9akyU~0f&OYoBvBzDH6U#I;A#{*z zN{3d+%B=P9Ly{P)iDjmQw83kjhlB2%8hX$PSML|gY_ycSi5hhrxR1Ulol^YQJ|*bk n0$16$Pqq(4L_|bHM9ugENMJc*XWWbg00000NkvXXu0mjfhx|^+ literal 1027 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`ol6-Q7#jk7LR^8||D#~wLSXt&uEoGO zXebHt3uf>vZ%ES=IrP79=j{UrzXa)aNnJY{9{Vx*jlZ8yf?c0)qE+$qO`B(w+D5#L z<65_!PwZUJbvcfUb8hk`E!t)5w)MzcZb?yVwa6#WlnMe|+GabS`rfQJId`s3wR^uI z+m8=FS)&_GmhHJJUZL_;c1h=}q6_D>)9cROkYB-X;Utk)oP01Jm@YPXx;TbZ%z1k~ zJo=D<2-|~Z3%+-~9UAXCnZMtwe!utV-tXVmXD^t#&CHWkKL13y?(4aH9y4R>bCcjHT7678*lc?c=!9>`f|Jb%JX#$6n4M+v#8$Eo8k1PEr;HF zOb)eg$!2&Rc7Nf^>$15ySxa<_Htcn7U9)3#yhf124)zC%wr_)FEe;%3zT4!^`Oxsp zP{_AP(=S|#ahyzm+gQu&X%Q~lo FCIC9-r0)O# diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/revanced_download_button.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/revanced_download_button.png index 1084bce581f155b9f2ccc341ba06132fdf50cb81..7414a3d623104e9f95fd8b34d2966a928ce232ea 100644 GIT binary patch delta 455 zcmaFK@_>1QaymW)(SCAnRY;$Nz;-OXeI+gLYP$Oq3Zhme4C%=eO;S5i~pepOV;1O)n0cv z(*;jBC@?qjuowy8V-#F=co_Q1dq&x=fIqo++MliHzI;1%+x%MfyGLK%)w!g*enIG_ zJO7?~z1nxX?@hMdp-!v%tm!$Y;~bl{)r)3r-srK@p}W5O@@ZEowy2yracY;IpZN6Y z(HEnMMRTT|>3H&Geyi|}5_O5?TlGwYPQG;d7%}PbtqiSZ;q1_a4f@NO{(WhCAMzk> zYQ`)zwqLPfs;f9fu8J%>zP}Rc@&Kuf`8xJ1yW;t?Icer?u+*F7auEyATe@Tp)_%;6JZ+mhCWU)(?eef>aDBj$X~7`wx$c1D4knK) z4iz2V4vwC_qILSoCM-Quzp}ketM{IkemuGV@6iL3;`*JKR2;CO4O~p0f7Wn>O0Ij< zr)6oriltPutznM;>;{e#iVx~{SUR#i5h%DbM}et`!y?a5fYFjg#$3IlL58Vswy=u> zALH?}oJtDq4UeC(2u^T5P*~hFi-{xNtbbwn1>NOpmvuL49=~C8#f^QIl*9dnO4l#E zJ!-e%`}67FgqZg>c6qEjnA8_$zj$G1$+Rb8W$O7H=hYM}xu;4@^_1IfmR&Nv-g(x; zpWH&%_A^Z~4zOIkXJ{|0??QjXu8Nk^=NB#vTz9KMP<^Y1ucC!pUfyH|&Iy>vVK!$CgP!}Z>kPFs QE;9gur>mdKI;Vst0JxX;ng9R* diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/revanced_speed_button.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/revanced_speed_button.png index 42f829840ae0c56de4c7dcee0032c18c82de266d..976cfda936abf82848f8cc7aa05f1096c0a31056 100644 GIT binary patch delta 928 zcmV;R17H033abZ@8Gi-<0033(vqt~`010qNS#tmYAvgd4Avgg=mN8%e0004VQb$4n zuFf3k00004XF*Lt006O%3;baP0009(NklUKT4K@MYV4`m%OoTS=KDgXf$f@-eIMbEKe*o`BSsZ)EIbAC`)0P zvaBc^HOmAEi0WeeCw}lp1?@sz8kQx?A81!bqvYG>mDG>si?nkuVlj;My_D z=?3BF!I*ta4k%{=LDO+76%WS9hzaJ4tB6ZHiH9pwPHE!aGjck!xq>ni8?0_O4YS zF+DDIbfJuurLp#o_0&iV>5ZYLeWoY+*?kJcg7ndT#{>zX{v1y+bLcxwV)e;ZqJ2;0 zQm+S;Q@hN=jIl9&Hi!YW&pp48fFmxo!};t*Iyc-=y7v17cS@@rT|uOaZ7b+vSsyQ4 zDD#=e(tm1)Kh#p9!x;6KP4-+1o|tiWtPmQ@hrY@d*#ts{YI@*uoUZi)a zje~M3oC&pq{jEzM*BE4H>1zbUC|_;WDg!^2WG*@GR5+hEt9|Fv;WON@C%#1>NN3&0 z0)BUs1r-k0G%SzE zL~aGSnEZXt7Z=V^P{?xT?-RePxU)n!3ajlDk6abh9JtA)sIC3bv0;7TmflC4&4$`_ zprA!3a}KIVKU=GfR1~4`PVICl?D!PBT#$fs{)0~p+PQ*S@e%`r^fSAi)i`GZJ_@n} zYJZ90QCjU&n}a{pPFR!Iqc5csf8sm=?%brrK%i6)8>n6Ue#Jnbb^&gJSWvt8ttfEi zbgajF&aUN-fAGO=%Qtx8=7af4on1m^_c5@~J9FQ(#rrK+bHJ(*Hswggov(ttb1`K_ z{P7k0ukBtlYR*4D#M}CUAP9mW2!bF8f*BwP$N3ARq)!Mi=!g0M00002_mLR^8||D#|8hd}y!|f(DKUs78*RA8Sfl6|6hibaz7L&!-L-;}SF5q-=p{xZ2ajF{EP7+i5SuFFS}F z?G8~A5zQ9}N!iHC#i0?961c&^HEN}_UP9;E>Ca($;2NxGE|-Vr!Js zRf%U;t{n{C-=Zo4G~e`I=if z?cJy5G0)LC_w&aV-@x7C3IPuTV^R|IV*85Msr-ohrThJ%)>%nCAWt=PopS$)@`H|v zc{`p2FZrDow3dB)N8jxye=;(|`W9QCJi7bSyO3<2?;PLv9m>2aBCp`Gr6;+mK=j;U zPv4Df!71JG*>*t={adf*&x=alBRY#W-~ZL&BUL#y_&yOr~1shyH4Nua=h?_1xrd;&yZU@AP9V%dh`P-jH%~lIp&HOx%xJ3$8mVT?ghK22WQ%mvv4FO#oz1 Bo;Cmg diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/revanced_time_ordered_playlist_button.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/revanced_time_ordered_playlist_button.png index 24a8f417c66270eab3b8d7bd6583abdf2b3d76fd..cf45b643c10accdcb5da7963b27a109653b434f9 100644 GIT binary patch delta 390 zcmV;10eSxG1E2$tBYyx1a7bBm001F4001F40Y#QEU;qFB0drDELIAGL9O(c600d`2 zO+f$vv5yP)0001xrBnm6nO{ofcM;F_uJ)VVKwk;&;LHK3eD$1^9hrLWbQP!`XblF+F zdhBXSH82YYsDGX`-m4F}n!cODpKF+9?6Xh8zqhnB%EBbfxX#YXATM07*qoM6N<$f+>ZkBme*a delta 466 zcmV;@0WJQZ1M35jBYy$1NklTk~&;S4c diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/revanced_volume_muted_button.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/revanced_volume_muted_button.png index 03fd8becdf9925e12b954510e8716dbf38f28d2a..620286389d37a7d6edb5502c2a021ab22fb98315 100644 GIT binary patch delta 827 zcmV-B1H}B-27?EXReu8*Nklygti5P&xf|49dDI!Fno0#bshfa?I$0aW00 za7P89gFpoi6(m%!tgy@}vTW-WTQ>X6XwHwdtou%H&jBzD!!QiPFbu;m46`y2F{AVm zW`@deq*OpkNI5k&e1aLl7wTk0Q9&N@mf0j>mo!9CA<7ga(SLh$N(Y0eiqaP5Bo#@r zESW)6Ew00yq$Ej}r@)u~aov)9n+V)JV6S$NW$*OV;;A%C1_O5XB6Y*$PR}*W4V* zEnm;$Ydl@{^AYqy?eyB&Gvpv3OLgGrj0?10r;6RWws8M%K}j=hHZ z$@-u>O1djkcGCBd^n2uf27$!rq#tl(B1U4qE60C3YN8e6+i_oq=0R=Ql;awv0^R39 zl_3w;U4MXDi+_gka{k*ygDFA3iDISYkr`rK7P!So8P$oR_YR|P6Fb9gU($ydIodf; zflX8TFc9C{-00ew?!5!Ke4z6K43jIzKOt4H`8?C9Nm>oMIM$@S#d|9yzZ_D=BuNt_ z&VwhD%KOyqj_Eq*5Db!zhFTTtYe}K!y$B4FI)A?e##xrs%JUg4i5^M%2>xa$8J1*_V!goqFVMu4@*4L^E!a!~_lD~%X$+QR0ZX!g zB{W&Uk}NPtTK>vDHj1Pg*S2_#1vdZhmI1>s48t%?mp?+-@CGHtB4Ypm002ovPDHLk FV1h7Jf*=3@ delta 783 zcmV+q1MvKV2iFFWReu8PNkl8H^>OypxMCQpzZ|D z2I&TBCr~$#I)Ssn1)gw%0EI(PjN|(T+ZyEBo#{9 zs~mK?qOGYWNm@P+hNPY)**R^E*2IzsIbDw=)dKD@a-20IsodBtg(MuuG-r+wiONa8 z-F`wzVk8-IBrPOB)Uz?_-9Sl}N<#ZFokWnT`+&9FYAT^%NjUa9xdh!97hn&iStx0r zLy)R_tLFkW5Pu;_p0g#?zr%nLv(bv~pawAGI0*y$m7Fa!id>R#%AOG47&)xhS&I+* zf%cQ=Eutkk>Z7!xPCI7RyNkX@1iX=HxKO$k$s^ZR229{}1N%j~a z3Flj4%6|!Nuhm=M!vLqZ#6*%IsKdk)TzS4$pRY47$DAZXP>YFI0dRVIMQ;jZWk!gUjnDQ6CqnljZyao zE{PdQEg_b=rKF3kyYHF9A*m(CQpQR0=_UKI7Jp0sz$ymgiyu9)+t8MD6=1-R7gWnQ zy*o)E;B>6Sl3cJP0`Im@@`2;@q(vK+g!cMTc1cB66eDPi*K&pND_qbTcUEwmqa9Rf zwD*&)0$e35i2zF?z>)~CBmxde9WYZ2Ni4{Pk`(=~4h+LE48vR<&ls~b^b&F!%K!iX N00>D%PDHLkV1iXtS#1CS diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/revanced_volume_unmuted_button.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/revanced_volume_unmuted_button.png index f7e65288f7324b17135a1221f078f50d37cb4f29..9dc60eef6db2c162ed4adad7aaa10de1114fd12a 100644 GIT binary patch delta 705 zcmV;y0zUoo1&aodR)3&LL_t(|0qvUcaoR8xhabKEUphfN0wd4~$_R9Vc7vo7G#kJM zO(!55kWOGSfs+Z8_bxIBBe47=`;hbd?sR9)LdKupd$uKr0000000000004Ty7_;HF zB;dy!C?U#&IR&CzSjL>&+9T=@fdee0@Q9LVDhM2q^s-{cFMo+oY)T4jG>uylpU{lk zJt+~n+_nu#D&bd$l~ZwBQ3M`Ie<^nyIVM(+9dFu5w_lVi4LL~!Ipfw;S=J+uoMeLR z_;-DbI|ygw1f7WV2`Rod)!btglmi|)Wk*56Hc*lqMd~}`V0h$g&2ha56(no|`npk6 znQOl7pOGUcP=6=|39WZ1i5#c@oRoYf1vanef!*b0vc7^(+`dgFlb6V=dduHm%QzSM zJaGGIw-?+VX(-J5n{`)?>PKV*35%BgQ}@`U-!JX7$J*JC1u0RbSOW>= ze{Fpd%Ms=QedNLv+$5TA_%}RLM^Xs-&j()9@JNbITYtpAI@@2lbrv*KiuJ{pmi;?t zTXj>&T~P1jF6gyoe?gI?s6jVv4`N&=9w|L90fpa9!IFkT@f@`Bj1l`B^bqi!{UjPG z87jq=CjHdIMM3tVbY?$3krHi+?YR98=qEq2e%u#Hl5RgJo?XDB#mw1O3+f&7zC3f1 zZjmXr41egqa{4dmn(;}B5EPWE<}lw>Q4V+{Z4`n+C(M>zg5N@a zPMndHa?<{`k8uaZoGIK1#&zpjp36Qpsq2I}U8m1?;jqS$lzQno&(!i^C8YToBgcgjVU&riNj)=vOJ2qA2z6x^k^A3R*H{_C;`%A(kmdUqa+6#O^qjM&wrHj&_b4hX!-*3gh?%3 zcAlgaUIX^c)QlZJY|8DtbQ7o3{m5XI!@yiGI)awR6oV{XRpuDO@BIK~9nvLKrxBHE#$=7NrkPeT59(VjNOG z_j22}qji;Be{n zyFsmZlBPI%7FDNK2sPcG7koK&rdA0k=LD)hOmwFUrasRZ^Gjl*W~;n`{_5peF}GgS zC@V|gnhA_Ghm>kSf^(b~iJAo}LiH0rp-Zbb?jl+cLI@#*5JCtcggoOf{L>ja72(AHb1mO7Yc>%j&g-6S2!-yko_Y24P96@>bMLyq3r9ObDyZr3*?Fv$$GkH zN0}0b;UdoyFnCS7}3&&8C8DOZgx_dzoJOh+_uGN1o}LsHAJFo{+#38i-YFy zK09-bEfShJ(Fr{H1pWwZ{|#nB6J00TJZXo@g+;n)``!s-h(J1C9bsgVbb&sDCrb(B z%?h3rM1P1tjkf;<0*EA%(Dwg;Cm{mqF8lz2L=Z{ucW#h^7|GaDqZ^tN`~{>SRx-AP zNI2mgF*??bJi>y6h=gX2RzoV#d?{Rfn$uS#>%6ohB1WEC@Da%hue3`+GPGiPk*Z^| zNNB!dTp=}RPAx?7B2~|n72Lh$JtgFT~MBp@en zxGwb!kwA<;pA-cguCB63HjakB#Bz5ur+hapQjH6aD0u&KzRieqwECofjmLmAfX+Rj zxsuXTZB-$cG@P zhfoTiDoX4v%2dRe=A`oPRqxxUA!GYj;B-+|(9@RV{$rzRlt4h_OgAs zXNmmM5wi)ni1K5axH1A3fkP%_i1yNndlYyUF*(FOT3 z@E#NwP590eBfm70 z;C|fn?oO&Vbsj`ZjOfLqyq#`gOV9l3Kkw_jL&@8McsgXS60*J&@PB$J%p1-`m{4VrBP zhktyD>hnu5Nn_p$@2?%c22CI38JU)`&2&w{CjDV5y@x=24Vr31r_$Nd*sDO3P8##H zMg{SEz6NPhPob%qOrju@+#l8%l~}v4LGD)7yj5mVfJv8_Sk1k8g|9*G;jBr$Oe1HL zt}?Nj&h`plgZ5kXTqf&sH0gTNeZb2d-+yFY>>jZ<(hq$5`sBlr*&8>tG>PdZ8QqJn zkDTPW5X}RMDwvYIr++5(Gck!e8X8t;aL@M>lS=r(5jy6|{d@cMfTwMfsPTg7ebbLU zWj176jBsbl5?w%&Q z7B!sAc?Z5&lX8|2UmlTq5WWu-T7RE2H@;VP8StGICe1|XAW&$1PEU3g#8-mvtT5?H zgbo9R*5@pZzqIT!;Coxd7EyMUGpvNTZm`cpYJJY?49mAH1;=#oigDIAQOgcxA4K5{ z@K&8tEkW^~Nl0=X)V&|L`L2K2)<29s;G#24(#4_hNl-PVT7sfg7Hy9qQGY{I-}iw} zfr}wF?r^5E-4P2*ot`tc2)zPm9rJ0R&?*akMbTXOoHKT8Izg^Xxdmv6pL@=+SvwAT z!MK5Vj%@@kqNb8wyA`kO6v?Q(fo@tyv=W?OSK?c?HRGvKz8`?byEUk;FO^zWqgRG& zfPSk{KL&o3{T*N%BalDSwtozGH*n%PJGq(MsAXcO97M2wLZG?*0if?kK5>j>{m$b- z;ASXdFOA&#pG~ZZ?a(42_dBQsr=C%|lWqbFfga-exq>G3^l>=>bT@qmhJk(&^c8nN zjn+HhT1%%#!Clli;$7fe=zvM(eIGj)3=Y>A90(2s2Z95^f#5)JARRam90(5hI`BVb W&dj}+s>L$^0000_AGe1IJ2?6=(-)1xW|S4$^^I zLF_==gq!uK~$|}-149E&Bou=$4pAj(A5mYljyg=a0 z0-c&XN8n5X`M$F-ron+?j-v(zian0%9cT`5RIkH)O&q=LqKETz$deQXQW)zTs3wlm zi$s%apQ-7yiCw|Ne`=~ak06~wkWr*hk(Ecx-<@U z0wcAM^DdR7W{lKACDImj%thMfd>i>R#vvjiA`06t%9qm5ALuy|00000NkvXXu0mjf DojUv& delta 649 zcmV;40(Sk)1fT_wBYy&CNklA?@p(__2px~y` zdY2Ygu04W?OV1#?0SZun z0u-PC1t?HgfjEu_h;d!_uhf14rib`LNF!2O6DV!OgXkoUNPk313*?x`=;27RIT6Vw zg!M%7j1=X_XYGQcc8pFN){cHVw2|%xv7e-!L{T&o2SbG=n-ih$ks1X~RIJ z%+jI=H9)9E7k`crX#rA+qXkGUjs_srIH7^6#;L<~&=C$&R}K`K^RIH(*Fm!~J^sYC z%_Bz98B!i#`r38sl?M_Kz}&lrG25%dDQ5PilHUZfu)4aN-$owU)+dJhk0mEpQ-A^# zpa2CZ;6=d6*SwcXb0)!U$0oXNA!1x|eB}ICbGiYjkAILRPg+VhUP)UB2^0bd!}}6( zYRTQq)qoiyqVP!ir~}f5qY6kPP8C2)J=G8#6l1=v-Y|WRke9hNyhJ7UVa{6No7EJKvqCD^ z&^vBccYn)ncbQv_!?HGOq8F&vcJX~W~w$ic_$d&9Pq9}Sp zLlGR1H($xa7)tp@Li%X3!5O9_F|83NU999DEq27QSlR-47fZ0Ko&<`oUZO|x z{;{<0!v5&<7=JAV)x}H@@7Pt4O3<-#f(gh+I4X#Me1)S%ACS**R0tL1Ega=zm~TWX z;0pP0T=XR$bZhYvdUmYS8wvUx%1`Ms%$J7bw9V_t|IWJ%<)`#sK`uzuEaAxz0(wE- z#critVL*BhsQB%hZW3fbYvk8ozaT$`bWN9;(sV~F41cHw1FFG*YA~Q0L7Yiv(%sKs z=H^emmRlnvU59xy-I{rY1MFfo7*Gu_0hv;NKmeQ{q>EFadeD>u<#U70^}=sLCQ$G(p;V8XGbTX_CO`9&Js}3hHlltS8o4w;bjUQ*tTd^sWGt2-0 N002ovPDHLkV1oQb5t{%2 delta 736 zcmV<60w4X01@{GzBYy(ENklMiHFb#KS(B;JKX%t0W*ARRGdWPe9SLXrjogs|} z2r{J02Uq74t_>{qN2ouy*wj_M1V~7(gH{&94&yFitl>C~r zqjlJ=B(~wE@?pUu$-=W3+FnCV$qVNkH5t5|TFqZ+}`6^A(2|Kn^pGuefXLXVhMI zID;i13o-&CAPWIYHAj#Ike6A^;-l7T+)GWt;VjhUd2V2gO&mcx$X33x+z-s!p`wX^ z9MZR&5|D*aC4l7B1GHuFomCy9@GH@*`u|@BFdeAKJ9M+|jNo%moI~U~R9d`_AOt1f zpVAdxkAK*{D;;4|IuJN=*b} zROneu;2@ZEwtB+$HdGdKYgj}j&tcxgd4-t)$6Fv3bo7E(!3$;kEpi{E?#n}22*cVt zpJF&FU5p~>GhLJ(dJ{8?8*R+UnE2>=Qq^#aM-CZsGXMj0U) zK(clTDT|6xMo0#btlb_+a%bJnvKjfZ1k%CCgCGDBAOR8}0TLhq5+H%*68HhHwAW{y S4cAcs0000uK diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/yt_outline_arrow_shuffle_1_white_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/yt_outline_arrow_shuffle_1_white_24.png index 2ddb3c4e5eb837a31a52d76687ce7345e050a1af..f7471cec27177285858386f72b4adf094ea782fe 100644 GIT binary patch delta 581 zcmcb?c9&&>ayVH9=0F?6`MEUican zxqVvE1q-8XH6Q#qPrkO6I~Lf&-nDs(;r8EprAuVwG@EjE#S5jXmG>u_OtRaz=woim zo2qAfF8$YEBO^Qe|C8uR`_jAmZ)6m?z3SMkt2g14;7aAbb%(ttHeQ)Bao3|8kDsyy z1-tALIXoCvd4iO2kcZ6daDN3;wDskt z?>QB^O=RzePq*uQHa&eJ_E&JS#;@Lu8zVHgn)rCb;;G;ZJ7a)gMA5W~GeAO~u6{1- HoD!M<`sDx? delta 834 zcmcc1a)WJxay_%Wr;B4q1>@UU)q&9W%;La_Fs<6Hhs5nvczI$t!XD`x2!k#CvexP|3bTK z;GX5OE*<64$DfN^++X~E=61#9OP{^0Rh5@k`68WF)Dq`kcIh%h()&gB7rVYZ*|%GI z(@N)E7w<-IpZMg#Lz&__0gcknH$JbBS|UH^{TG=<7iBlTD)_eZn}qGeV~xq>6V9gA ze|eo5W!zj+{6eOqkgf0Nld8IgQ%7u6qWR0(o35~^XFKptcysd7YKC-vUhYk6Eq~iF zJg*E3@R-C>t9p~AsySuf1viUn%zrDHwI;7|UR867G0jVwd3n!V`vpc9y?wNF?(DbN zHlH{8pZgtg`*B~v zHp%aTzV}$`XNa7zED(DaZoJIFeu3Jy`67F{H+(BN#L}1)Ej~YRvWCYE-}K$hDX+Od z9XiEX;1um=;qdEhWwz=?`(D|jb`Q2V?2`WV>a7aHS59??1Izc{T{G#K(%vk&xr< zvwDf~gdNkw7la<*6nO4XH9>Si=%K<1dK22$FPT1PzQ=}0Pj9xx_rrXJRmJ&VPT{Mc z{U&*x{?{Vqjc@^FunRuA*?-klzc4TPv&>)n?Nj$2@jSFXQ26$F z&woEBcuka8yq|5(tmLEfTFk8jn@ucaxNR&QM5C;*r`<*!jz7#!E-?&OU#3_y0D-5g KpUXO@geCy}d3crp diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/yt_outline_screen_full_exit_white_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/yt_outline_screen_full_exit_white_24.png index fa3838a7e3a6d19d733cd00c67c89ce5b166f52b..ec962d35e65464b602cee323c5d8224f53bacea4 100644 GIT binary patch literal 375 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!oCO|{#S9FJ79h;%I?XTvD9BhG zi4;zRa{V06I`YuEM5iQw; zIRR=7qBA;r0@Mu5nL_4SY|FR5^5TEBr*`c2lM|JHT1^C+1_WWLms+nxZ7;m>r{=Ez z<&uEqKYH)Je=f2A@~k6AYp*PJ=lx;4@0HWLmU_Vnjt*>$k}N3#FvcBiMX@cvEo@Au ziO;>T$tYi^wtrj7YR8ogU+zYW#=2*&sSaS;K4apmXUVhljWaG=>n;1UhVf&)>t8-) zYj%*`4X+nQ+AgR}0FjR5?7TIz_bH+$BMN z!3;bHxCH)laPprxo@l3j0VwS3>EaktF()}ef^{*2q=A;=4KFqek&P{C2WGrk$h)}f zM3{-G2+IVKMh6kgF1Ldk67L#z?M&S;mDM>)F!1Uz4T+Tu4EJstuo|9Tpba#R!PC{x JWt~$(69C1lP5}S_ diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/yt_outline_screen_full_vd_theme_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/yt_outline_screen_full_vd_theme_24.png index 66a60db633d2ba85116e9b6e6cbe53f5cdcccaaf..87eb4b20eed662e8299f217e4255cfc78a7d8416 100644 GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!oCO|{#S9FJ79h;%I?XTvD9BhG zXO$ro)wqx|6-cF?6=5mqqr@K+hz#vZOTf|4mxAHE2iGs9_+&d7i*ZfPyJpS Sw`g4`^XV5$HB diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/yt_outline_screen_full_white_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxhdpi/yt_outline_screen_full_white_24.png index 66a60db633d2ba85116e9b6e6cbe53f5cdcccaaf..87eb4b20eed662e8299f217e4255cfc78a7d8416 100644 GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!oCO|{#S9FJ79h;%I?XTvD9BhG zXO$ro)wqx|6-cF?6=5mqqr@K+hz#vZOTf|4mxAHE2iGs9_+&d7i*ZfPyJpS Sw`g4`^XV5$HB diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxxhdpi/quantum_ic_closed_caption_off_grey600_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxxhdpi/quantum_ic_closed_caption_off_grey600_24.png index bbc208b84c1fe719cdfc6855b32e97d19360f84f..777d3eea92e82920393f090bce5f5fa11ef47945 100644 GIT binary patch delta 995 zcmdnazM5k~Sp5M{7srqa#kCOK-lI4{c5a7rCt0#h& zU(TE}Z(dy9_S-YGRJsWr1IV$)Eb0H*cOz+x+rM)>gJqk@eN<@4vU7 zq`aJEN%UX-e_xv%e5Rj%>OOt1q7wU^AMqT$^Ggrre(IHpP+xHS?Y7EGYA3Sq-Mwpi zGHC9bt>4a6KaKrx>wC+WI2#+ABd@S)}+>a@Ii2> zRJ@I?t?H(OCwJ99|M#U)CsJLZ{^;Rw$M}^^Db0`fKB&$s^O-is@6d+B(u=>x^|NR= zGfh!sJT-wK)uX{k#X(YN0S{+D8(4Vfm$s^hNq#w>>)sW6o^XCqv8_q9;WdZ(oyoU0 z>&Aa7;`Eo>dAu}d(@S4K7On4OufDSAIbT?;vag|J0H93 z31C>N?x2;i$4T~+N^eq7p_Z0h_VTOygIX%Qe{rBB)>WVKc z1&dGW{rztGzs_2Q&t2{GCo%owAKol{o^aIjo&TfMIgge`*L=Gm9DK4VzOATP;=XOb z`s>G2G`kkHW$&3hc`|1`tJoi-E5~Z=<`*vRxgRGU*l4w^;?WA>31Yw2YfiZEk!2sJ zHV)5Qzsf)KNkim2d+P3K>C0rZ-z(0uc*Qbj{(SRmuS>U?n>?InO?9`@Qu4Kc$Z2(c~L0lN{zfG4^@aqoE~Ny=|}X zVb=-84CY?_>c8c(j3+KhJv#3tlk1Vk$MhF%s1Mk%dO=CH)aj*i{=WI*Gk4n6N?OfZ z{b2gS`j=d6(I+o_%y~F_16s@?Mfl8erd2j6se&`{&Pj-BF`4q#@XGLDLOU1+5J$8J0F# zh|UNR@CvY6z}WVNPn^H_;N#u4FU1yrpLsFk$n}NQjzZgoTo@3b;H}oFkn3MN(zn}K zN=?)CmyY`{n;O8bAR8Zgb^GCm1;@LUr8M3(SJiKf(DC#XZTNr1{1_YgwvT7&XV&%Er#D;r=N4R7_gccKVDspwAM+FY0{iCKvZ|NfwLH}L z9o^5+qsWk4&v8J4$)F9)MqV>x~;#Nj>T53XCXsh{Q= zRlY8a-FiIj-`1+oB;hY#&*bVJEj(D{bF@D5R$}$1d(y80I~nf0WU8O^zOwj}#AlbE zCqBO^xhx!9SS0!OY{j;^w_AS&{4x0Q?3vorH;rwVdW~+~4oE!8?=0+jbS3As^(*(D z<~wjb_IZfM%Wo`ooYKw=#{?P-SrT{{C6JiAzr-IhTKCy#%NgeE-8UMye!noUe#e)M z3NI&2zZkGCWUI~V&CXui!|Q~%+<%|GvHvL_M>gll=H$+|zAHBf-EWxYckF6yYPQ&C zm%26FdB21|Zpm$byY8^iZ~bd7YR&a&{<358ua3^s+jKduHgcD( zZnyE{6xQywDKEbTJ)FJ)!zVCLt?6bknaaNvIG8DrH8*UVa#bxJ$~7E z|3X9FmiX|W_d~?*eC-y>baOr*I_C-RUq6XW`@?uuFa61Xk>2*mtJzt3Yx|SBi|<;N z-rA!2!~NHzc_N$s+1{Q0FU9>y#*CEZyH^=++k3MqF0fz2ib(hjbN7F1RDL9SVZIee(9_k=Wt~$(697UlolyV) diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxxhdpi/quantum_ic_fullscreen_exit_grey600_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxxhdpi/quantum_ic_fullscreen_exit_grey600_24.png index 8c0361fb02c9ff07297e486e1c86ff474c617837..80336495b2257306609d9b500da9893904d15a19 100644 GIT binary patch literal 478 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9EO-XP4l)OOlRpde#$ zkh>GZx^prwfgF}}M_)$E)e-c?ia-J@ZAr*{o?*!%^HV|oj_&Ae+O_3*zqcMO@ zy46slIp~GNl!I1mvds<}%i?2cljL>G-HTM7-x2~E3k472M0H)( zZtYwqTT;4oO0&?B8?Q6wvBmzD_^tA%tNqF~Z+Wjv{a@4HgmHgVh!AX$WSoJWxVd=J z+;UUt*!Pj!H+NNLwbZq5yFBTr{Ov0;#qZkswgwtaQ!r*S@UCZX(W_(kEf1Ne|MUe5 z%n=L^xL&q@$y&Sq;+~9M$(m1nIg|WuXN1jqXZvhR@FL57oaVc1-tJ)edpO_p?(#{2 zqKR${X~jB@*1g)^FQ<2|&0Ac*y+^b9ud|52e7pjws$ z9EA6-ZJYLo71_S9I@)$Kj`P)d-OjTMUT^rpd>!sIhKBn0(x=vZ+8UyvdJ81#>FVdQ I&MBb@0LeSB{{R30 literal 522 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>V7%z*;uum9_x6sVS4^VF(L&zE zfgREw$sAED3pu5vnb#@bY;Aqb;dp^JLZy0xS61$oL#7%LGUp%GUTr_>QWIzN^Zx^r zPZi&--!~ookoN2u&|oO&akwO%e)MMPK8xtTrpYJQm=zzde17Kp^)oip;|i|LF@Ao> zvZj}PqGWDZTG}`F^h@#PpJS>n-Yn6ZYyI5)_w5Yt4F3PQv!~9Sx%Z*Ym+R;DeA{4e zX)ZNqOS|zmrfG97n;CEZ{61sj{<3FFw?sJ1og&7)V)CUV#?qiDodteg-K z>7N1B=k%W++Br+8V);H(gTe~DWM4fWJd3E diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxxhdpi/quantum_ic_fullscreen_exit_white_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxxhdpi/quantum_ic_fullscreen_exit_white_24.png index 8c0361fb02c9ff07297e486e1c86ff474c617837..80336495b2257306609d9b500da9893904d15a19 100644 GIT binary patch literal 478 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9EO-XP4l)OOlRpde#$ zkh>GZx^prwfgF}}M_)$E)e-c?ia-J@ZAr*{o?*!%^HV|oj_&Ae+O_3*zqcMO@ zy46slIp~GNl!I1mvds<}%i?2cljL>G-HTM7-x2~E3k472M0H)( zZtYwqTT;4oO0&?B8?Q6wvBmzD_^tA%tNqF~Z+Wjv{a@4HgmHgVh!AX$WSoJWxVd=J z+;UUt*!Pj!H+NNLwbZq5yFBTr{Ov0;#qZkswgwtaQ!r*S@UCZX(W_(kEf1Ne|MUe5 z%n=L^xL&q@$y&Sq;+~9M$(m1nIg|WuXN1jqXZvhR@FL57oaVc1-tJ)edpO_p?(#{2 zqKR${X~jB@*1g)^FQ<2|&0Ac*y+^b9ud|52e7pjws$ z9EA6-ZJYLo71_S9I@)$Kj`P)d-OjTMUT^rpd>!sIhKBn0(x=vZ+8UyvdJ81#>FVdQ I&MBb@0LeSB{{R30 literal 522 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>V7%z*;uum9_x6sVS4^VF(L&zE zfgREw$sAED3pu5vnb#@bY;Aqb;dp^JLZy0xS61$oL#7%LGUp%GUTr_>QWIzN^Zx^r zPZi&--!~ookoN2u&|oO&akwO%e)MMPK8xtTrpYJQm=zzde17Kp^)oip;|i|LF@Ao> zvZj}PqGWDZTG}`F^h@#PpJS>n-Yn6ZYyI5)_w5Yt4F3PQv!~9Sx%Z*Ym+R;DeA{4e zX)ZNqOS|zmrfG97n;CEZ{61sj{<3FFw?sJ1og&7)V)CUV#?qiDodteg-K z>7N1B=k%W++Br+8V);H(gTe~DWM4fWJd3E diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxxhdpi/quantum_ic_fullscreen_grey600_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxxhdpi/quantum_ic_fullscreen_grey600_24.png index d89c1b793dc48400478793eba17443c9aa2229cc..4f4c275c5299b3080bfc17c5a54eadd761c291f4 100644 GIT binary patch literal 435 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9EO-XP4l)OOlRpde#$ zkh>GZx^prwfgF}}M_)$E)e-c@Navq*8jv*C{Z|^+xJnSHG{9(6+gLy$~-XpG3 z7V{HoR!(=9C|fwqRhV~)zp3f_L%shY^VyviuuS^U%)RAoG{`L=P=7VVDtcOKeEDyq zV}-Mpea>gUnr$(~(C_P?<(pE!K6{=zXZNveiB!G0cSRPlaO~E7JXbH8Kfm|5?Q}ag zyYqHy1s^Q6+wpAEqN;uEmky?$m6tjoB%)Z@4sabk=S*mi8ol;77p!+GVT-KW`3wQKY9`nkcaVV-gM zvt3*Ns8wr(9|F1OMu+N)i0#*n++Ls9q$j+&Zo}J&Q^DS6V8}UTz4R?Nd&gW}1(1lR LtDnm{r-UW|EBK$n literal 440 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>V669aaSW-5dwa*wi#brF^X z?Gr{SwQp2sg?&#-PF%Y5no@_hpmgq)YqAlXi&`1GpYOErU8m^NHdBV}AHSdZp5J=y zB@cN)CPG1$#!{ZC8#gWYkxEgYe{<@LtqFB=kK}E9Y%o7_x%XSG?WgvBx}l(c%FS+j zuHoWYQ=eb=d{ef#=kw08U03Q#Px3$A?YM60+DnO?h1)j8o;~&XwMtoafZER->)5PS zdo+xnx>ttBg`e2DY3BLd=rb$Qp8h;7wEKvk@l#LB6VGo={mEoE)%s~gtIy||v7M3J z&-A_DdGZx^prwfgF}}M_)$E)e-c@Navq*8jv*C{Z|^+xJnSHG{9(6+gLy$~-XpG3 z7V{HoR!(=9C|fwqRhV~)zp3f_L%shY^VyviuuS^U%)RAoG{`L=P=7VVDtcOKeEDyq zV}-Mpea>gUnr$(~(C_P?<(pE!K6{=zXZNveiB!G0cSRPlaO~E7JXbH8Kfm|5?Q}ag zyYqHy1s^Q6+wpAEqN;uEmky?$m6tjoB%)Z@4sabk=S*mi8ol;77p!+GVT-KW`3wQKY9`nkcaVV-gM zvt3*Ns8wr(9|F1OMu+N)i0#*n++Ls9q$j+&Zo}J&Q^DS6V8}UTz4R?Nd&gW}1(1lR LtDnm{r-UW|EBK$n literal 440 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>V669aaSW-5dwa*wi#brF^X z?Gr{SwQp2sg?&#-PF%Y5no@_hpmgq)YqAlXi&`1GpYOErU8m^NHdBV}AHSdZp5J=y zB@cN)CPG1$#!{ZC8#gWYkxEgYe{<@LtqFB=kK}E9Y%o7_x%XSG?WgvBx}l(c%FS+j zuHoWYQ=eb=d{ef#=kw08U03Q#Px3$A?YM60+DnO?h1)j8o;~&XwMtoafZER->)5PS zdo+xnx>ttBg`e2DY3BLd=rb$Qp8h;7wEKvk@l#LB6VGo={mEoE)%s~gtIy||v7M3J z&-A_DdGZx^prwfgF}}M_)$E)e-c?47?=z^T^vIy7~kHx=zGUOr1jzEzx_Z;Sco_Ik_vM@s(fdrmoj^z6N{ zdqHB&p*nZ#fVkQc_x7v@d;gsK^5fa`f8T9x_1e5UzVQ9zLNcf)bvSslm z=aa=OcZZ+3p7B*PN%HOOl=`KT`yTISi=80JI76_3Vj{AQVcGv#`=SNb%1pcZuikWm zVuSD2ddnHyDR1POuDNRPcP=Q`gb{6=;evd=6)KS_sjG2Az#T|3#?UJeyGM|#+>^Sc<+al_8+_$FbBh$0AkdT`W=CGyA5TTX_iALcPVc g6YjggB9>uBe>6w-eHP19V2Ss1aSW-5dpkFJMOv}MvGgRL z;!`s;#f{HQkSy=wI6C3;0tqLzlQBL!Lt{D$lw*Vz%DfYK%%o|~XSrmVPiNsCgXowE zk1d|Q`Dn9uec9jd_uj0$`Tp1Xw?D7GPpe_K~nQplnHjy20KtG*^OwX8FPfu`Kc>b8l zew9P4XLz}$E4Fg4aC>O9q=50NMogQC-U2D0ibJd+iwh)!b~I#(=s9zV2lO6F^?1m% zDsTsnW{iXBFwoQ`ZcxlP`^Di7CKI+}tZ(>%-t4N^e!x&0qYy&~(P%@Cy^am>t=ov+$wsafP-YUmq!!Fz@9y)P1e}OQ%ZiUi(V-1CcZK zHMoA!`o+4arC(53c>U`W(t_?UmvlbWiKB@fSugO(h#3IX^{qk2$ zzg&zz|Kj!}9p-4`A1qD(bq>5q2PTgc#%clc2(1S(;sG2wY>Ca z97j5ge4Vd5k hEDp@@~0drDELIAGL9O(c600d`2 zO+f$vv5yP&{PEeR2W&+rN zb^_W70u#UnPA4cEygr=-xW-QGM6wj;``zhiav>)EoF`khReykph=_=Yh=_=Yh=_=y znjs@1GS?p`+CCz!M{Rer+3Xh%g|7S)ZGR;%l{SN^(+~Mw@?|%QV?>g?1c}?i?zPR4 zua%agBSi2P>7C*Km2d0sxwc!R@zf73YR?(nPznv<7E_}iY}xqApCSYLcU(38t}9HD zxQ_0*-XasWG=DY%xJCqTke5dsnA`$5I1C^$29Ov7NQ?m_#sCtFawO~zrs^Y_=Xw-* zaJ!gShyw0*5TE^&bS_!+ceb=#{=P}2ZGn+Ywgl-) zyo9^+rob>pTj_%+5ZUBPkS{kk=w9*P8jtPPZdzVvpIhqtm0FfAuuoEzAb(RuwXVLj z{LWG~i+@&~ zXpX%YZI$1jueY0y-!~ZFbOP}6FSH$LnnvrISbxM|dylGoFH zU4J4X8PKp|`Co(WJ)e3M zH%(>R$(;+|PvlRA?;iG1u36qLeZiB3xH(MQN?QK4zfRmGA)#l&tu`!k*HYBET-nDN zbfw2h@+}k_mKi#PN+PcOsF$T^ylyT!Ins>iPfx002ovPDHLkV1jF#(-Z&z literal 2093 zcmcJR`!~~%AIG=GT(+gJOR*uol6+dBHFC=(bDL=ww5Il%RG26fAD39Uq>`4bPZ0^b zZ#C5z36bI3?* zc$!8{o!5a27Ri+xYUg+5b4x_}XZLd~G`8RXeLULhUZ^E4wmo=ZG4n_Fn+N6BQonRJ zroJB*j@T^lx=LM>vc6}2aeklDeJzQHU)Paf`aiMk0W!u-dYkzWs#e>wc*OgpDq&_q zCqd6n=qr(*h0{j*c#dNp@r+qsP4UV|*#ImecEINSV%f%=|2js_I;RZ zk&9v@|Nlcbzsc;U(4flCp3{gA;L@0US3Cs5mXWhEoNk($oI(<;qvsST<|BV z5pY}qb{>bmDL}C?@t)oPX@U;27Qy{+q6Z_s96ELVBxB)67@)ySp*G{l8H=x8$O@@R zk^-N4aIQLk+HJp)o*XRC?uLcuOL1ctbFOk1WaVFsfEu6>n3@_MyJg@T7fPJbub?vY zaytiR`ff8m70ZJOD`Fbj`*Y6eL2c1uegmvFLq3tF3wet7#6pU~ykrh#2|%ulvv8v= z%>D3NJ2gygqTa?#7e!^14|>&u>sOH9_)bUmPH=#9VEs>Aog+=hjxv18tP1;(qf8G) z-eZKv`PPUw81{gMGO%}ON2E3ikdC@Y)4V{3|deE4jc{K%O*GF z8H4by@~%#TedOI<6=<#~7W>+d%Hs}&Hnb;LL*7C|@Vh!FPHo8+q@J$_w=)_wUyQ0W z93@1U8P+p89CN{J?%a4F^bV?G{BUcp^UbbOfMT`}rxHukmz*7Bg`}ADYqaPbupQ|P z2{NWAIyC{E%|RrdL|{fS)ZmlJM#8S>6tTVeUGo#Gj`Y<1LXVQ7$l1Tp0;o0>Tb)M9 zra$e&+Vjk#t^dk#n2vhX68LQIsJooFtpYWHd1o2Es6rw>cU9*-URhXfQbFg_o7X!w zRpv=TtlKwn2OXCSjLk6`wOT?)utbw{wU2Q@k+(LOPtS8VX7cY;#43;`flU4>Bz%pm z2Fb}03)V5pN)C-;Xn1#3&Gg@qjNP{b@ltEg_x+4Ac!=#w?ZZ!OWJT=u96d%7EY}ts z`Zw5Gxs4|5wb#G$@B`++$H(_vm!3sJTSY|!M3nluXmzu8^43F?DnTS;<2|Qh%YzM~ z=B2bpo9w`GNM$r5Rq^cx-SB`wGxXH$w(<;wOz2^0u-%^@yg&V`*7*om^tnmLLfrYxN^)Uz{hiAAa zsZss9|9sF6qcE2Yb)BpxFWxh4^ z5Pid+0rm#RBj=8FvD_I6C#t{gn#;;``n{#8^``S4!r{%za6uRQCOB?G^ujR7Pl-iW z7FIdtO{Pc#Qn{ryU?gJ5w$RF1W+5My2c9~|EpNpOtcXp{$?huH6$iO9qsu-=DE6@R%viPyzqSrw?-};-pOGdLR^lBv`S)lXjN{PR`s%m5WxKWbqCp* zh&2;VI`7&txm6@dUML|=IfMFf1ol!X+onZm3i4XG_y!QiJW=Gjp>u(yDH8BN7BE|Q zPX{Tc>0pk#v?_5KbemN#oRsWu`(CE7!m8XZ$H2_QFNW`eKP{dOvCE&epMcdPD=0=hN#JGd zWOt{t3F`vtW1gswXX+6jJL|-4M3#IuYaaRU>5U;TYcix~GT#{a&{p06PyjC2=ax6) F^goBI&@cc1 diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxxhdpi/revanced_download_button.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxxhdpi/revanced_download_button.png index b8c7c48dc8e42e833c0e179f63ad48719fd9c71d..b94deec446f8500085b0ca2a7e20f31d1eff0484 100644 GIT binary patch literal 605 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9EO-XP4l)OOlRpde#$ zkh>GZx^prwfgF}}M_)$E)e-c@Na-Te1978G?-`@G}d&oiLz{l{%|2H-EERfzZ z+oDODVfGHr90q9-^#i=;t{3#4^{nqG-y`?4ZqhQZtk&^y5{b$f1yfkXS|^8IV8w#o7e@a*3z9&>HaH}>YY zy#`_n(tn)2ufzIxnVSUHfe-&Py;}A$@Yqk<$T6MC;LnLRr4~ksIwfYoV^@HJ+Dbrj zlf6sAkCi?h2R_{WS#W6E<~^P+%z}&f_wRgvFnQ+xM4r8qQw?TpbtzMH`ttDi|IK`I z-kK9rf7Ut#inzyy?vnW%^z-(n&l)qc*w&ptvFdN6(bU`qw{y+;AEz!s1jfc_mKjf9 zDhS(p=lxlJC7>)_>4&q{!lf?Lo=i$TTPPem_260gT{T{E^GYiD^KQR<-sh#{ExO>! z)v$M`SF>4oqvu%FN^9v>Gw&@)dys&O|%(hE&@9&v5X?nBW>-{XS eC}Ln}(5_{U{^U}5oeaSW-5dpp~=TP9SbEtyS4 zl9x}#xNkzD8%w?G6de;zz1SU{58MO`la-pd9sjWFeU`p+EJf7ZsJmuDY=?r^ao3og zhJhDcZT9tlpK`bOxpQyq9j#xr4_arf3*LUN`rO;<<=ItyvPQ=wl6wr131e>;9nbR~ z(VBhJUs+rh*7~;U%RCd$!aY&PXU+@QcztPqGS~6frE^|#nlCWSb4b3^aBK%-Zy~eP zV>Xjxycs>x7bHlQVAguD>C2vys9PP(`?5SXZhj%lZq~4|$miHIxznX*oF=nY1y;rH z(%P%K*3&w|GUyfeen??J<69NUlxhIOn;gEQmM5!YumGIpk>)ceTEXa_WRTN~UA3M2jlAMS6((Oydla_IQ{ko4QSnR~Q`M z@^VjYY_bPR-i~Q+#_VFsHoiFCSZp4;cdenZ~=XKBWH&w(6uk)x+Va)fG_wr9Y zGmrN~@ezU3rZJ}_dcKB#>|FUiTWgVydw$x(8GCgUZ(nl1R9v|)k70dbpG4Bmwrt7f zjeFkw5#O|6bM+zTm)pLq`!eZ^r_aL~*Dc(6HpYGaufOs8ybrx!R(`1j3qCikk2~_O z`q1}FduJRnTwi(iee;dI>VKxadQlhm#?=1Q`}@Zi{}F%O^(E!aN6&AC3l?lF_Fpmc z_bmCRlTGA4G^y|5{VwP>rT_2qCD)e*2hMwbM)x65f613k&)jDQR2<-*_rdHAdu8A} zi%(~sy1(RpnffwA_WO<_?`#(?o^BeSEZh5tQNQBQZ8uqSiA8^||5|cIW#6Q@PPsH6 zpYJSO%~g?~Puki(U{$*m22|joH@W4W6hq*w4^dg~jEn(*3wfky^RUgVy)L4|8`^M@?Bi)yDdH{$`ak zYZQOF8`_PGaoe*0`sKxPvI2~&yLRyN_Ye;78pET{an^LB{Ts5|7rcR diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxxhdpi/revanced_speed_button.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxxhdpi/revanced_speed_button.png index e2472374543c6811b87746ae778e546a7271cebf..4f8d1a7086a90073e5dcd0515130d8dfac88dbce 100644 GIT binary patch delta 1208 zcmV;p1V{U^70U^bBYyx1a7bBm001mY001mY0i`{bsQ>@~0drDELIAGL9O(c600d`2 zO+f$vv5yP=mvxdC={7~=|R0#XJ=;>m>p5*xkxLKN*b;dX)V7K zteb4HT zabZ7ZT&UM$Hh&`BysEK66xLTd9%{BCU8_PJdM??+7V0~@$h<5ucd9V9M+%`BqtH*B zf75a91?Eg#;1!u${p1C2$V;;#?rH9WGS#yilWoY0R~6x{;)CcYeA()+!KT$w_~q=o zd<;4YKdE@DLR5y-P(95w6@D`DmR_dH3#3G3_%h|fr+<1$WTo%F$e=ax}5E^1FX zw}_k}KpSvZ;9yFRLGSPufhn&3(4pilaZG3dtwZn8n4IO{x ztSc}8g$zSf$HAsw2#orLoV~#}iqw9%e`@=S(SIAb$+hF46+rct5?QEyri7J9UohOA zcAUe(Te#6{dxrq1j^Q%?<`y3tYZI1!%@^=RkFy9sg`AS?j5=6q-+d2X=x_k`cjA}x zFUej>Bj2^sVFU0t5Nj9aZRL~d!GB9`oCe7g`T41x!@7d42VuiWDtJJ3yqCQ#hdmkh zr+*lyp0(q5u;ele%CzGL_^~payASy*nF7oh5Zx!nLY#s zlEY2(`~Fj@0GD335rrT9zMfPnz*Z&F4HDo|0hM;_V@$Y%olv32dU<<{9$-E7vLy=h z4*jRQ-^Kek@IzmIc!m$!&4-seVQR0zn}3w#_m?)?=E>m;1-b>N5>Q4QiH>#&Kd)wsK-#oegIMU@N zDQVOWi3J?E4#N7nN{-h@Z*=~iiBS8Iq|@$#lu>(CHiJ)w42-_q8!KvW$#I?u4u821 z_^lnkrg0$Gj{m?nLl}x;Yl;ulo(hNQ{f01h~qgx;(LwC$E zQ)FHa$uNNHop93+k(z&NXDu>SVV?9@zZtsfI`}VUQGH7;WJCLp%pNAIa;j& zjj`1)HJdS>IgIi|Ok_mv4V9HpVKM$>gOg9&zJW2u7-Nhv#u#IaF~%5Uj4{R-JK`T@ WKy;m;RYxoU0000g literal 2737 zcmZ`*`#%$k1D#?UniV6;MV|ABnD^TdR?V21E*W!;>k*kRCf6g6+LEM=Sjy(gGoiTG zyOl>6N)hFq=5f78EaKb!1Mc~J&N;uI^ZA_5p<>WZ5V2EY0002u;_Tr5)BXM>82D3X zAHvEUCDZ60>6Ui(_NX5U$mZT4(*POG0e;N&S&QB1j`D= zj!N)Sct^RV`Fh4v!EJr}e^XKftyu(wO++HsvM=GvPT^jG2^JXm&!z%Iyol>TS`X*m z@5dJeG3S|626_fbL|@Xui7w7 zt(jSM-XGl3f(SfmYmIwYkYtqfd$k*B?<2!b@S;xA+W%2$v~lGP4zcLqPs+YiBXGqx z#QKfp(6}qUgTacnJVP32VG4}-v(?21R}bv+dlJ5>@h5nd+#u#%9BH$Vfwt^zDW*j5 zIXo;K(+Sx4L4c?B&}P0Tb9QeDBFX7F+6_97$s`sx-u&QVAPM2U7>5Mc?$`5P(xr{HQwf?S&$fw zJ=WclClKR5=arzk31!@MDQ*DwHGSRIDZXi5souIOuJo>L z-&r+Vj0Oh8cw{TDVDxpub9AUz>jl3BE=G7K2Az5bIW98$MBlXFu3#ZlOhr{u@_qG^y6UAbSmeg{6}nY#j7XhT>b zk(wL&?F$LO85firqP`H?l-1Hkbe(=NBp~RoUA>BLP_!+70@bux`-PT4`c@-^T;O!h z4Tjwa!!|sYfosh#^>%QMw>Xz$YijQe?lGo>P>-4`i891O{to0@h4CrcQ7R-eKYi)U z);Jnl5WQHnny)GR*e?;a7`Kk)pG86VN%x&Z@pGb|eAwVj#;IEO3Z#nwLhWLH6li0--&lhdY}E7B4buncKlDW)?VCRGmIY_?1`=)a}ab{(5lTTjd# zpAbgX{WhW^U4Cf=w4Zh1cIB{be{cKCzFOxUgk% zG{bf=Vb;`9dRQk0TxbI}6Svz}PpFx)%>7(GcjG?8@|9A}Sak4M^(lJ5FFIDyHnsKb zOlS%($f~gES2Mx6W5XH4qwVyTuo2mBs{=3$3*77^kYKp`G zM);oaj>#I^<3*W)c_0iE*3I}R2Rb-_FwQv`JkgCKjge+C=M^UU&YSlYoPK5)tMhpz zgB^MNXdgqm=giaXl*p8cb!YOo&`Il3?#9lEU#7lO+b!KnYz2-FLphLQJaE|jErH0t{mjDO4g(B)hi8^ zkSV@7ZF9P0F?l;(K6$b`zDRO1__hxf_|Y@ROglOB`HtI~&pr2Esl%kAG{wxne5*j6 zVt%DdGQ9WF+eQ~>=tUC(o{AwSwUGvKHT0WbJE8`=x-~749yPaS)SKU@sMSX)CN2_- zRFkr5YUb|c<%L*I@3lC~y`-jJP&JdDD*ibo8aiM5@%l zZ6Qw~r-0RRF-8;7**!KJwA9S$<%#P#IQjJ{JX26DTdPIY!n%a6CEc0zt%g4{6NO7} zNHP96u0xp<`2Ot9PHOyMeQW>D5wsF{owFjK;-hnw+OdkEHd<_(m*@=?b5I#N^nP#wWJCfca?0AG*kl|TkPebo1j0VYc@z(OWbna3wR*yRC)2Z$JI-gsu*A z>pK14TqQ|#x$tFh7&SiK3Dmi6!AWS3Qf3MNlB}1e^Td4Rt0_yl&rDrG7`t? zR_~spPb^F#JP^FI$#vhIzk8jLPoKe?D7urBq*A70ahICJSzd!6ZQQxeGrsSs70V+2 zLRg$cVw|1AD8a~TU1ZvtW}tj>V{^23^c61p01g+s^>maYP>vcz;pna7FxQMc67SxY zt}ztf`D;;{0k}*Bcw>GsuqzJ}qAa1JWFv%vbb9LTZ`7f-W1D6<*l>1QZuEsH&7%52 zM-D#J3e>C)oSKvCU7qhc)-@Bzyqr;Ik^K)Ep4J859&+L(5Zz>4?x< zQbjmuS(dES>S)~+BltH!Zz>Z3ZXF$Zf8=YamwdO}a+kl0BBr4dSYmGFqWK1X==%N^ zfzCZeFE;hkuL6Xy_bS=iE$H10C+#6|0vI8Nt$3{Z!U6N)zwT8^T%@*6izH7Em_k{Ys8qBHM4v(i`?t#_|s7i5ya z*pP>p_?M(reFxIn8My~1?Iu$FhOQ9{zQ~1=9+p~Ru-kZs?WJ!m%L+) g|NHV8X5Kv%+Ot3~5~Ma1e_m05izC{h8tHfA|2SVUm;e9( diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxxhdpi/revanced_time_ordered_playlist_button.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxxhdpi/revanced_time_ordered_playlist_button.png index e2a1ce7750d11bbb59e513a01a88ca388c3c8eee..0091681e05f815d30ee9b810824499921a160994 100644 GIT binary patch delta 456 zcmeC;c*s0Kxt@Wuz$3DlfkDR`gc+CGPFu;qz`$4>9?hB+>J&-p#-YVINj zA6F5vznm}BPeIkT{$M?H?scHX;eBiOMkU64yWZ6+G4bzu-CRpe7vS( zslv3h#NW&RPV8R#y61g+P0o&UOi7wmT8qA>uCmBq$)5RT?v>2Az4QK-mRptoi(4-C z+O1Qk|6KM$o*7*d%f8NvZkxX*`3!69EW1x}d!|{Q6I}J{fLi_mx6WUGE)+KMr34SqT;+x4yDA0 z@*6g85Ku`=R21Y+a%_s|IPTQJYNm4UBS(^zlHtdWBd4nS-k)B3?vCYR->)`Ncc1)L z-R~3b8~%0Y_ma@^yO+01Nwo+#aVR1aO1x+4b2xHZl7*&j4#D~^d|RT zcRTGmwb1CB+x>MZ4j+OaMpkHlS{ALhsi$^Tez=js51|^y`p5;s|62BMeyVg>BL3hc zuyE#wO|2?Z60K{v;?w$ft_#~4s~fiMbn>5?vVWl#ceiUx3j8VH_S85SIn(%VQK0U@ zmj(4Z@~0y^tHUXAp_&a-U(b`GiC;IW#R{h}KRf6;k^8|Prc*n_qP|B+{^kI?Y4XFu z3e8VSdjcFJ#e0)e-%PIEJ?WrR>dKthl0)(zs^|Wl=4{vhHS1W!LZ0-WWva|g^AjJ2 z3*>Or^3Fft{`W(oeC>tqJKv4#U&o23y)mux(8#Wfq_&ebzJ_wE&PGt4k5pf=LMTNto|sxX_&9$bLMv9 zLM5|PL3*A-a+m&}Txd5fE5hRd`|C%Q+xk2+wuQ7W(JeW`azn_{FuLCSLec(@uT6ed ztV*;MKJe;BH8<-_-3?dsC$n(W2-)zQcbO-r^7#4!>sp(u8|HB;%!&HVdao_FfK?{f zR3`GjEO)5tG)3#pZXfkuuaBR*&+fN*?cD39tMblp%KMwXdC%FA*}nXNnuU1Zx8E8n zV#_Mywohm&`u5#!5BK}jqMeJ@*Iy3%^7ZZxw?7t>pXZi^SZ+RhJec>jEn`c*$hrJ` ztm22&w0~VpSg3YJ<%7qH8^8E#d$);sU;A4cRReTS4d;t3AG-VcKiJ&KSvhx7SJzW- z2Oj$c`3IN_ICH-J7BNlOs^0LS_$9AR)0vNwxL< z4A%4GxyqteUFUK=kmb*?Ua-P^YH|Vd9A@{Qf4k;H{A2kb=QLk8M)7^Kx9(HxEK%0e z(;4F4lt%1mzu@NmGyJma;VORyf6F~LZYL+oHFlXZcZT{iw42{MI9ZI#Y|aM5OF{CB z^rWsCGybVMS^QVFfINCX-k=-QBV>cR8)O4# zgLVU_6C@kR8#tZdRYc^15Xd|OGAO_APIt)#fy4(73^+sp0000000000000000001h ziecu4mV$bj?)u$bH&hASv+u4o)r_wER=?0wEfRQ$dj2idhJUJTqw={X3G7C_%Xg}Y z?tyoX7b#wXqv4qBs~RIJmay%v1N(c!nrfj|2?|xw?C%jjsTOLMpy;0SuDec-m$1ysV^@!0wq!ZUGICr>I-1i4+ppKTXUkK$m@Im3iWdR)AlL zmB15A2PA+mjNy**cT^iO5>oX5oyRQ+;eOeo?p~nCAVDhNjUObWyXV0w`;KZPv4l$n zu(T&QdO=+?B9nv?Vg$4-3?n=q3%*jVL`t~jJ`TqSP=D-&_uDg~GQ$w}+m=nh^$;oH zi3G5lMsWX)b#Iwr$WyTrg2NFB@RW5g%%e5#JyAkFQ8}mq@^DVVYPC92JklA_U*l)h zBgE5MA0-J;1W8DMs>HP*{j>FZG6A0{AHM?AH8gCIZxS|LYk#49sB#_y(;ltg%lklP zj{(AaFMpmL1?24`cs9iSH31WBIRLSa#Z z@RfSPRVi&2G^d24AZ<4J#R*W%B;lVR?M=kJlVqEQvTPgg(f)v?B?3+cJh?Dra*YSAorb0gMZ`Kg4ziQEng^s-&avhMC&=+A7eLJ z6(xfEF5QrfhK4a-aqO;*IVNzw2he!( zc-HA(&OG0%FzVy^x6nmB-5|_82sK`9Xen_2<%!8~#M9q$k%prk32;2$mX^jj32f~N z^MAYtg6)%X4K0x=3GCRE=XnkU-&*9a`S z@e*|QBay{$MndaIpIpL+Z2cw^5?W9CWD*=@f1K8D;*ro!q>q-s?&FYK`lv`-Bgd~D z?X7!72e}rBCE;v1;4~-jUd!U8&ikbp5`Ti?aUuz80`F)E!2@EXghg(FMk8&NJmazj z@Bj$~00{-a{r|gzgt_7Vt40U*0|~ic|E4@7%z>w}5A6OoHIR@RN5!v=zhPj`jSfMB zinsm_2|3}gPrZLq2-XOYReuBPNklK(j&B37Qeq37QS65wbzt36c$x zPLL7YPLL7gPT+KczfdWOgFqG$AW;7Aj`MLc7UGjZ@UTS)A%qY@2qAEbr`Yj~zq2^v+$dPGDK*YKZ`C1`ZF;}CIB z=|W0i1rl_(bO$@%r36ZspmAISC8Px1*l@tGJ35yVNFkwbqzjeKBm(FrYlmWQq?i&g zoQ21fVDccP5Pw60(fCi)5((HRoLeb{kP;k?A5}nq-W$s~%NP$dp(J3~C#Mo{hT%M6 zCnXU=0^HB(wL}Kppr8D_L5V1#mIPSNUDmfi6G=iX2|zbnUPOLS0!#2MryFsHZpG94 z@fBI#^)Y!g2>+i+?8=26Qf^R8mWTeGvD0rpIt{ zmR~o7Zk@&!d!0%fLxMwqR|8@=80+~-KHU)PYbaSrfO{_CJC?LY`Pnn$4-$?>!ceKS zL&P!Rh(`SQZRE2O@I}H=Ng4^?#E-p^&q{#F*Nq42{XdNImBg3e+kkr`|50WVQ-BxB z!B)~s(0>bVpFG~bH}aLtBpU&mg(Q6Tc<-Z;uVf}!3D7JgVJeRjnCt{-GM5mPECpyX zl~5V^z04$A0h)jkevKS!WkIqQpa~&Cea4-7`Dr=ysE+-S=~PDkujB&U+rOu9asw3X zYfLTX1$A!40}K}tw~`BRueSt|fbsqPl}rRLv44RB{5J@gb;xHEFYG~!U=lF?4Qt^a zA$vt?}NIx1u>Ap&luxCCvU? z1q}QCt-LozB-AI$>2Txy90_>68LQ0wpdoNbs3(@anJM86@2T5yVMy?8#O)jjqzB#X zS3efMWg(3cmIjs?EhQud!wDNDqz1#e!hd2CvX2QzKE$s%j-7Q6&?bZRWeDPd_SAp$9d59o7H<00{s| KMNUMnLSTa4%+F~6 diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxxhdpi/revanced_volume_unmuted_button.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxxhdpi/revanced_volume_unmuted_button.png index 2591bf7c6dfb924ca95a0284a82ec5906054f1e3..3a0a8d9d0c68f1e3d1bc15addf8c84829674dcd0 100644 GIT binary patch delta 913 zcmV;C18)4h2iXUZR)20uL_t(|0qxxDZQC#u1>ozV|LYB^Owf+tY|strPS9*%cYquY&|o zuE+0=GG6*|0#^siU;&itd-Xzip{3&bJ(bV_*mdTM?~1s2H!)}c<+`61-4(S|zBmBB z@iYThPhIS334b~&|CRvkvczXTxj1d%%4gpSS}H#u5Wv-U5;F4~z27n4V}q8;-|~RH zAa7ZsmQd3Q)DHqDp{?@E|7!(cmm}&%xH=Ymra9@V{IZNz0MwN?K`grs{M7fQ)|r7<9(cp*rSy4@CF!&7Sk znqAP5WX;-2%(U}9rxCiN-ls{*4Z;mTt@0;6U$ulV^tKc`|2Goi;vqiQmgcS@1RfAT#<$&= zl?++$UF!%T)~$&zi`)8LEg{6XId>a-os-lMLX6wfvqf+HuGm{6S0B(29XHI97edHK zlz)EvVKbhhFE}BDdPr}_Rd}I?s|-OsfQHJ)W2$vn`FX9HZpYdagvG_)&MPW^1g4UI za{bFX_5|T@@x)8Y_0Z>s(oyjlV{a#%hOXwyzM259EDNcj;#0$*GW78P n000000000000000WBL!gn#V2nFPjqp015yANkvXXu0mjf+TyZ% delta 883 zcmV-(1C0FH2fPQ6R)0}RL_t(|0qxxHanmpu2Jj~w-zgJdCZJ4!nSgFUn1F7OFhR=% zfe8u|q#LwM5N|-3;6*w+txvWb%hsP<^!)C8J*P?IzK<sY4D7>aw+V+I-mmx%?ioIqCiK${=TS6#6HK{vOR|upzFZ7)gcy%Oor|GFE2*eV? z7CAGDe-NyFwwx2Lkt0j-wGsiTzkesWpAQC#A0vPZ>Gl)yX^M^%KX?GmHk2veH@OkT zk5&ljcGS-MD1WdNU$?)zL;>V;6buyqvS&{$9scg&^*5NH=e;*LH$%m5em^IG_G_I( z=s61XcAZb>>{#)e=WIO%pgH%ZrP~B9;mHdmq>Hb9tc{2FYWcWWEFKZYX2Kr)(^&ri zPrL=7{;97r{Haq1;ul}j#dq!5-W%(|#-t{Z{xK9+)_);j@!JF)-plDIXkOFy1|Il2 z0zP4$7<+!3F23t{lDTc~;eoFJ=3EuTF8;x1xcOtO7x3UE!q5f1$7w6!rZU#w!Gok% zL5UTP=YhSk{u&5-n@~0drDELIAGL9O(c600d`2 zO+f$vv5yP%CSThU#k{G`+vtlF*RE=#MnJxxiFAM$!ad^ZUg%Fvl9GPt{Wfq?< z>k=oCo<-V;bbqg}DLVJK)8Cc)_rrjDHqu^N8)HQf-*0sRy9!+vWJwdz!cp*skZKYg)>E z!p>oH(4lbWUcVY}O^PDahCL;v4(xG%GveB$L~z)1pww{~{WSCX#YBKwPncAh z76WSKs(;HpjU+JF`dX3O6z$=OL310CnKx=&VK7WH4TZGWU`W7Ilzx*Jw2xcYvOCAX= zK(J`Dh$46&*#!mXt6;&Wa6><=!Cs=y?s$`QDu zjYluid$MJ!2+x!=ut!8Eq!Z^eM1+EJ1~cEF4`7eihqWw#`( zMn#c9|J#u_DS{;04kl3B)|}8!vvv_G^nbssS5Y7^ZZD!{?IQHKfd4|k)06Xng5Tjr z`vf^eJ>W9Wx^Rk-_m%qwNw;>*)s&s0|^Mm`89%K>n z-@0HdT8xi9;D!p)KusyjLN90{h6oJ;w16x&Zta54O}@1HZL__VLr_~+`PRqkaLx1 z-mbiNC*c>lt$+D=^I7J><>ym{zhgi1!RAZNk13t{OY^tpAI-m-|1ke${@eUdMgGm- z`0Q`ypUj)hUn_%io%v?-1apzOV|nk+!7p*E>V>W~ziO^F4=vjbgRj|@>&#Qlx0;_) zX87-v4*j!vy?KrKe)DbS>&$b_mzys$Uum9azRA4I{C}wVCG)4sclXTHRI zn7N>Qp3XoSfTx<@H2-OSP3aJ9?@)83n60~;Pd49Reo^UkzUya72Y$$Wi@C}?QL*uu zlqKe!6w|WEJjguQJWTNc_=J^;8M?&0()_xzn*MICH{WBPVLnJ%c{`QQ*n0S(@2qsr zPZSft%ztGN=$Nezf2NxAhw|EOg|FSt+}*s7`E2uY^M{%k zXa?lN=HrxS-mUzOR>Kdxley4*q4{m4BR8m831#~M{Mq*A>B=nU8tgW+^fazB=bL+K z$RKVDltCbxV#V>S_g4m<70aMwo-kEw%p=O{TYnEa$-IkVSHGgoSHh$|LFp7C98AEw z%(Kj+lv&82&PbG^L|H^a3^F0?1&V3HEU^-=Fi$cMplx}5tD$r#gYaEt5VqysLlYVfR>B4i@d-^r6ONh{jBj8SFbIUctCeW4bAv$iLYzKu%v<#d zZGbWe@btEEETJy!nHwgMX2e zk1N`c+@S6MxN6e{pMXEZ{E#VcRMc4ZD%!OQlsFp4MaSZF@dNu8ZCDAnQwD*R&;_5s z#6mbk;>I5^!7!%l#m+z2p`6C5}K0Z z98$Jz1WMRBPtonkBGFV%F&CC?H-CjX<`a|+9QF`c1x%dBXp#w5I}}liO^r_~sv^5% zXhK7UEOp2yD4RBCR`1BOqU7#VwyPaHgc6>i{ottHsK~iPC1rKUCnziZ7-glh3UJ2D z%67Fwi3o5|Y@Fi*h=k^r?Y0DU$S3eTN_7SW0@s==$~Lt^i4cf>=rES%2Y*z>{bk!> zPzQX1QU&sKrP>0Sf}E$ha8$92?5C1+5qc6YkNiMtxld3O)1``;s6`QhCutK6?_R||aOCz?N3wjKXx8h^?*^2T z4=US?6Ka7^P*wm{;Z$>TZ={LFRsdP>V6&b2{AnN37zQ=$6BH+m+)mNKkCfn}F&{v^ z{yHTLMTR)6Y%^0(Lw`O&QGdz)xi8uOYIEPRT`f>{y{=Zu%P-^q%QiC!HQ*Bz{p&T# zIRh%IId`yk*{&8S!W4oOLL9otv1OZ?gc|S(N|_=%V+fEWp_I9Av;00*@REx2y;-rx zE6X-B4b|uq6fth0`8h>?VfEinO;yY(`uGZMu8%h&&8h~Upnq(?at;mi!#yrn#JOhn zhL!5EWy-S05nrMP^>NLxPf$9WB#d(e6l$^kI`aO;rl1jhg0cZ~ zvLe2*x<9TQOyA-)jlmCfq;f8R0U%o75OiaCK?#lE6Ev|0OwB9O!>MX8%G)ZGno#x# z*d@auU!`o^H&eDzKqL4Br6zQ~GMS#IHvf!)A8cnOBD$!0F?P!cODSJ$(;!UACn$rk zxVo;Loqs=oqL=Xd57dcbGfCTtiYVf0BtxDI8qp_o0!r9+ilQ2lwA@s^EQg>u0@_)h z&>1MY`AVg9gF#rY)X*$YQ|e&>jo=eH13FnbDMM&V=c67{NyZ*3hoJW;uW16B@ChiJ zbpBAE&>1LB`3}ma4PhKVfWf}O`AT#&zr3bSD1QPQk~#|RAaEF9cK8G(f*8coNVx1D z57flvikeEcS*xy2rz!&5QsubO4b^ioNm#9$u7qy;1Z5Dg{nXQZMi~UQ^f-Y|H3d3* zt>T?h*MGLMGTBn4!|?;G&etoQKdXEKgMeIdjI!LRCt_m*C(VXFD}K0^sl$y*Q?8JyYU6M*tVt;p59;3qWktasDpk#x8-fAM4B_#0$}ZQVX}ig_tV*77Q2jkSe8K>V$aR$YPEGtm z6$62U!OLE#R3T%dvB8)y{KY;>bsE>R8Gke&f8#S&5S>nVNhcm}zE-K_Br!zKN7dY@ z{AMWkm~_>tgTH~d%}^o`W;bT(Nb}X2_}NPa0`r8jx`^(2ApPmqakI=HO3wMqa$V#q+=qVs{`s23^s{ElXmPZ&TM2s&YjVt;xt zL2oxdt7z{;Ca9~}Y5WByffd4_U_O}H6v{Gq*mOD_4GJgEwU`=|S@tScE0xXE@~}#V z?r154z)HYJt<%IxSfv_jVQYnwyx}O>{yRy@AJ!^P`WmIvnTePz1_Lv~jK)OJ@pKG> z!|X?ieXo*WouT*ugu;=e5XFx$2!BLwoC-aUzm@G~6*Q43u{zjs!|a@+NE)0>A)2~a zaiV0{IL*_Q-MITIvwX^(y(K6aGnqYm9vn`oHFRzS${=6{@E4dW9PK>CapIKG=lL)H z&+5S$&s8FzNp1V6P-F}4Pj=6JYE2${RA68=#+B8hM~@yodi3bgqeqV(Js^7Y=+UD` dj~@RY_%Ft@(`sPx3&Q{a002ovPDHLkV1n4r*;fDn diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxxhdpi/yt_fill_arrow_repeat_white_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxxhdpi/yt_fill_arrow_repeat_white_24.png index 86134162b9e076dcb486d3889653e8da082d37ad..f851bdd84996467a4be6c14d6f7143f03d702c7a 100644 GIT binary patch delta 631 zcmV--0*L+736BMkBYyx1a7bBm001mY001mY0i`{bsQ>@~0drDELIAGL9O(c600d`2 zO+f$vv5yP9D6nD2xadAVLLn*t2wu2s!DnmqaLx2o)eg1#(0f$$<2UKIy|m ze4FagUME`VF&~XaJLzcX0Bi9d;FMk>TnR2Umg85(pAq0P8`=N%Z=`0;8`kHWmpGHW ze>(OY!2R%z*M9&uWcR~29s@MPU$=(8bvJzDEx?)KPsJlo0m2R6cnJ`4_{Kwku){aC z2T1#i@p0J?AK&TER}z7TQ;^Z;_Sihfr9|Q-fGKs(XECl(>a;_E!U#|p z0Sdd8VcpBuRin<=PXPb`03d=v_lA0VIAY`Q%(iXDz5O0u)Ao!ioe) z5w?8vBzpiI{z4z#^zlKEm;HIy+JjSN1W%g@el4BeZ(rRPC4~!+oZajYDuB1)n=k=9 z4&Q_b;C1-MeSqZr9xK-YQh(krJxK>I{*Lx0000*yaN?InaI&= RFc$y-002ovPDHLkV1m7r5=#I8 delta 1216 zcmV;x1V8(a1=9(TBYy;%Nkl_f&~^dqOmhE@)ddtLV^ui z&>5o^{saC2#%Q92QegNhlpi1!6mLkhCKNQr_*S5W(U_>qwcK;O_ubd_+%x-RJ;_Q4 z=M?wMn%VozoIUey+h&Y0#u#IaF~%5U)(L>!)L!ao>WO^ajDHLp{TTHg^`T72*Ud<< zv3F9hP?xChs153U>Ttf-j6gHsRq6`$nEH*nOTB9o)&LuMdow`|euw&<`n#E+k>H## zHqC_RsJE$m%><1Eg(K&Lb)a5Oz1U39NcfrhrJ3NIunw9D8VL$V-!>DR6V?fw6Q-w` z;G8fe>gA}O6MqoX`+d~&MRkyRnYxIWqzxmXMo!=lJVc$L&QWg`)?3sq>Jb+7pA-1Q z&QkZOAF0ja`jz?<3p5fo&~r}U4?B;T-v71q!{@~J)Cbhw{OnzTtp+@#Zd2Eb=?3); z^#G9r2J}3iQ75Q9`PsVwTMhV%I!!%ONY7F)P)Dh&h<_ZQXVDwcr__o3%w2)423)32 zAztsQXb)nk`X(ZeDF>+WKce2y_593TfvpC7NuA91^a|n?`Xu!^^#k<>BJ8N=tMU7c z`^!``05J>R)f!(teG}31`;YmVY6i5%SI>V5(eu^#bz**|paJUnYW!=6uv07MXDS(h zImG--1%CrDrtaA1VP+DTqo!cIEr0W{w7^!c4_ZYJ5GEil9^s zrGKI*kASg2^n5kG%KRQ8%KlXTr;(tCRAE$iv&>l-fJMw#&sXEC;8lgMDuC4kc3Xc_ z-TByb4 z`PsVwk+5Wf4lmLnMgz(Lw-ARNkziG{4;5aa5hiFPY#Kj((I0ItsG;S#W98 z%bN*9PSByJGC?CjAxfJzY{J-JH76(>={R8hpGJbi(bzN-oD-%5&I!|^UfxV_PM8v` z<^)aeuOR+>hznoWK{H{<37Vu`LOCo|+kka}MNZJ4jB>^Cy1^nRXce{p>Af+=7-Nhv e#u#JFy!Z#26w}0+2Az}u0000@~0drDELIAGL9O(c600d`2 zO+f$vv5yPK~#7F?c9M)<3JFF;mPR=paiailmH!E2g#Li6+kCI2XsIQ z&_U7x>0p?Z4FrcoBDQySM*kV?3E6@O)IW9?E< zS6}>hgiurIcC5YXSAjW#*Y!edA8F1_iv?T{SE8m z<|V;s^wDwT0Dr<4zla(@DRTJY7ZC&Ki@zBZ|216ki)aCyDE?9+iWES);ulc@NLl8c8l_^#s4iqX!qdM$)W#GN2X;S$Ikm;Ki=#e{%6NuB!elh0R4WsP^UP* z{qAjljw zfBEbpMz5cuF?2x~jR2exfHMMcMgYzTz!?EJi!>Khjg2Yx=a_ajQTHe~G}l0^<^Yc_ z$Qc1RBLHVE0ceItJ|jfx7jZ{gmBAx_kyA}0E^DF1*2!4^ZHJ0V;MGDt&IRuqX~ef@rU&gFgI=N%fI z_r32u=g#wiFAQ_gCk4$pnpr->E;636T>g6asC%~rnW7Ly{>S<~lbs9EFt42Z@Ie}krGqs<3 zoti9IZ%`Mg-_RldoWL)3kou9jMa>nizo~oZpph_xoO1%d*df^T{@<=I-X^Y6r>G77 z+Oq(?2Hc=7QePIPuc&XS>#!V9q3ij8+DonT*PaFFHGkkUY9F<+AU#e!L+z$MhvfiW zi|&Y~sJ;H0vjV*ad_qmYZtqIbI@nV6*RVXM9H7R3kJ_c<{+hD_y#{ltM?GJSpJ&|frbGi^v*0zU@zvAkU_C$onC~ggfYkWv`Om?6z8b%rnC~gj z0QGz|{(l#+uv1pd_mpG++7RgUZxy?>+<#^v_?eZ|Q`9-?r}SOR zjQJi6-+)J`M_~(Ke$u4ht@oc<2w3lbf%*nE(=9jVdoX+ho~O>hN=W>Y!Kc(){xb^! z8v##HN2v2jWyX9DhHt=Y)HPUw^k}v6egByU1%I}5{v!1fwbmam5)9vfSE)lyJwAc2e(BzlH(x0IN7w57koc zQEIC{XAt=Jw!of9{SpSu1FXkZw~XtlRsNho2m=-Xy%Q(>{LmAn|04`&m@uGW!hnVe z1AiJO3}~1zpkcy*hN;s4q}yf;@T{Tr)NH^i*yOQ#*09>2v*fASfUU6Q6D^}?Ic1MO zXUS8u0pqX*L@gw0LGh43XUP)=G)x$<2w?R$dhDmif1CaBhanm8HtfmRU(}R8XR)-> z0N8dgdf;6>{5}GEAimO{`yiyxz5**LQGX53VSmnILE8*~m3pi3Rq~gu^FidxhNsFT(h0PFc`e1(V`u(Cgu|7j%XB2^fb-7K>e z2A~u3)$`T(s^^)76~O8Ov#q}=-T?H+eD!=azDmDU0-jym@1_j~_?WM-qn@wE*MF^O zc44QRVhuo{G2c_90Vp`;dx|pv^T&L>+NoDO^{S_iS8MAfXae?XZ7~M;n6H*eyi4M2a)uh2~QI_x!nz3%Vp`E%Dr*!5&@fa1P3tkA|4Z6tdG z^tet-!ZWZfTq=|Uv_w2txRl4V<$umWf9+WSOIR{Nn-^&lqYCAK3$V?OCJUA}o7#^7 zm(FVkwl=SAykvq#f^vYi`8o~T_De5U_$|Ro(HKg&g@&1+kuU?>;7)f$mth;1G zxAtli=+6ln3EKKmCTJ_j>}SD6qh6j&sB(ffJ(UR>2?|kqX(LRi8}#P{g>55k2dv*| zBt$r>n`A=dgeF1cgl17MPbNf8XcF}21WoU!VgEiP3SUP-GNH-|nxvhDEmemBqXM0r zpnn+^7006not&Um)cmLSK@bE%5ClOG1VIo4?czS38{CT!LSdu;0000@~0drDELIAGL9O(c600d`2 zO+f$vv5yPcmBt{ zBKv?3?}E|UkB6=I31KcjW~}nfkMCEW)A|3E7DW4jnE5_oil5uPAOE)82Ncy(2?^o1 zSAc4vge&3e<9|QR7och`VIq9}{jV+xP&Jk?6@GZWp8`}(CEN->EYnv3s)iC$!Vk;! zSAeoCAvOH4Y@Y=vixTF9AC~X80JUWabHfko^j(13qJ$;khxPg|K$R?EY4~B?eH5T3 zO1P7S)`TC{FJ8bFhoh5(qofb=cGPtAxbzHE2w9KF#(xFs-_j$RPlC&$cfxO3XzeS1 z_tt#&6TTtBH$?b`2;UIl8zOu|gl~xO4H3Q}!Z$?th6vvf;Ts}+Lpj5DD^BX{Qs(f- z^9w%(w-pM1LIp_^P?I zgzgJ)8-IS!Us6KX1#B69w9Q#1bX$N$_|dkLOX#uy%kZN)B$d!z0X2jl&E;kZT@_GM z_|cpuOX#M68pDs~cC~~q3aB~!(L@Q)O&8EY_@jvu+AN@@@J9(H93``_Qh=-I;s`hY zb~TUk{x&;psqK~T_IArMdAr2u96jc;pb6Ov2szhu>9t-OIN{$=^0t-w`9D~P@Ai1x mN&o-=000000000$6>t0eoNp?s80000O!pm delta 1569 zcmV++2HyGC1+ff}BYy?>Nkl-TyB+ zi|$v``=77Qzux`oe#@3Qj^j9v<2a7vIF92uj^j9v<2a7vOn(jlcA(Z#yHP8st* z8`S;OkEOCo2gA`(FC6RLTWqpLPfnweTMlY z=(qvO{Qar>sDIC?zo?&JCg@IRr6;Ip)QQv?B|4KjhuTU#hxsJvxB<&yMLwLmiTV*{ z!k5$o)PeeWyx+J9*R(UWONkVr$52mF-(fxpx@bFsRyZ}s9ocI z+J@J(8dm&=sSl|?sqbOUTfc)yFbM_-mplkzi5`5Gd{mKf_Eonp%k#dP0iM9j-wmU&a50`kVTidXzd2))Um2MS=-4 zAm0;iq<(;zpi%Y^buhIu-mfWi?r;r?9bJ=(|0{Jnbu6qWs4-8b0V&9Of=ozz!UwQl zT%&JwynoNQ(K*Ap^O>)aui~E)ey+x>r=!U>Kp^W0_fqe|Owg#)t*`uT%mke)oHNdR z#g0b)f7gOO86aSBv>(ibv?nNcHR?1P$J!Hg>~Id9OXrL;|4{urw|(yn7}gV1fJdl9 zFvgysV~2C-Tt%5bFaXdu15!}j6BGd|%>NOvlz-@$u#vBG6lQ+GKK(R6ptvWfAa_uw zqM#t7qGQ2|tYYUge?i01X9EN*j`qc1PxuXHf}X)^^#tu3j!~5PrICjzFd*#-hfy~m z>j~db+o+9Lpg?74UkuOu(x#8T8;}BvqvK&Fq&?vymjf|qbSLC{!Y9;4)L!xS3!&m7%X}3*pZS&l@Z)wnQhQLR!{!vuLyPko zV+UDJxCi#>>08vr)ZX#7MPPpBD{d-h{?ro+nD&J8sV&rcRGbJ8#ZNO|MOX0~`$Mlc zz~X3k*qaPhi(fnQoe>GeubuhMB7tXqyMKh@$C+RGIp3)PJoDQl6yGzyY2caPE}{5w z=KFJg6QDTr^#Pk_{vv^7XdD$e9oO zNZCzV459e7G9Pw#>;2&EmM*zE{ZdM znV`2V?xapb1ryNsNqH=s`6_;`*VkdwoBO~__!QZDM>0Wof(kq| z($M$UQm{msKMd^)GeLL4^{}rT$$x}zsmEYXN2}ufQqX4uu*8|a5U@h(DM%*hPEZ_u z3^PIRs20Xi*sp&EU<{dG28w%v?gYirW)zqZ_UVrS7<1;A0gIzK>MjiS1pQlg!az?z z4-FV==9i&k!%WaM#6970>Imd|0{UbC8qEAMV1?DS&W)@mTnAep zBJBy=Vc+OK7n5iJI+XckAnOS-A>R|8rmm%4gQ5SMi}&vw=wRlT0W(1#cjtS8R(p8~ zw#J1>&}9SA(acBnVvzO1RXa(#n)e(oyvR_4b>NHI-9zJdWQN3gCyv< z0eWiKO1+5=Wj+?aWZ5gQV#g%txB+^0z7)2|kxb}B=3|N$?bEWAGcXhMOSh8wF_@NR zD+RK(LlsA@WPVJzo(-^GP)D<<_?0QgaU92S9LI4S$8j9TaU92S92&=QoDT3Wvc`DT T!|~0m00000NkvXXu0mjf*_0BT diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxxhdpi/yt_outline_screen_full_exit_white_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxxhdpi/yt_outline_screen_full_exit_white_24.png index 8c0361fb02c9ff07297e486e1c86ff474c617837..80336495b2257306609d9b500da9893904d15a19 100644 GIT binary patch literal 478 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9EO-XP4l)OOlRpde#$ zkh>GZx^prwfgF}}M_)$E)e-c?ia-J@ZAr*{o?*!%^HV|oj_&Ae+O_3*zqcMO@ zy46slIp~GNl!I1mvds<}%i?2cljL>G-HTM7-x2~E3k472M0H)( zZtYwqTT;4oO0&?B8?Q6wvBmzD_^tA%tNqF~Z+Wjv{a@4HgmHgVh!AX$WSoJWxVd=J z+;UUt*!Pj!H+NNLwbZq5yFBTr{Ov0;#qZkswgwtaQ!r*S@UCZX(W_(kEf1Ne|MUe5 z%n=L^xL&q@$y&Sq;+~9M$(m1nIg|WuXN1jqXZvhR@FL57oaVc1-tJ)edpO_p?(#{2 zqKR${X~jB@*1g)^FQ<2|&0Ac*y+^b9ud|52e7pjws$ z9EA6-ZJYLo71_S9I@)$Kj`P)d-OjTMUT^rpd>!sIhKBn0(x=vZ+8UyvdJ81#>FVdQ I&MBb@0LeSB{{R30 literal 522 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>V7%z*;uum9_x6sVS4^VF(L&zE zfgREw$sAED3pu5vnb#@bY;Aqb;dp^JLZy0xS61$oL#7%LGUp%GUTr_>QWIzN^Zx^r zPZi&--!~ookoN2u&|oO&akwO%e)MMPK8xtTrpYJQm=zzde17Kp^)oip;|i|LF@Ao> zvZj}PqGWDZTG}`F^h@#PpJS>n-Yn6ZYyI5)_w5Yt4F3PQv!~9Sx%Z*Ym+R;DeA{4e zX)ZNqOS|zmrfG97n;CEZ{61sj{<3FFw?sJ1og&7)V)CUV#?qiDodteg-K z>7N1B=k%W++Br+8V);H(gTe~DWM4fWJd3E diff --git a/src/main/resources/youtube/overlaybuttons/thin/drawable-xxxhdpi/yt_outline_screen_full_vd_theme_24.png b/src/main/resources/youtube/overlaybuttons/thin/drawable-xxxhdpi/yt_outline_screen_full_vd_theme_24.png index d89c1b793dc48400478793eba17443c9aa2229cc..4f4c275c5299b3080bfc17c5a54eadd761c291f4 100644 GIT binary patch literal 435 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9EO-XP4l)OOlRpde#$ zkh>GZx^prwfgF}}M_)$E)e-c@Navq*8jv*C{Z|^+xJnSHG{9(6+gLy$~-XpG3 z7V{HoR!(=9C|fwqRhV~)zp3f_L%shY^VyviuuS^U%)RAoG{`L=P=7VVDtcOKeEDyq zV}-Mpea>gUnr$(~(C_P?<(pE!K6{=zXZNveiB!G0cSRPlaO~E7JXbH8Kfm|5?Q}ag zyYqHy1s^Q6+wpAEqN;uEmky?$m6tjoB%)Z@4sabk=S*mi8ol;77p!+GVT-KW`3wQKY9`nkcaVV-gM zvt3*Ns8wr(9|F1OMu+N)i0#*n++Ls9q$j+&Zo}J&Q^DS6V8}UTz4R?Nd&gW}1(1lR LtDnm{r-UW|EBK$n literal 440 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>V669aaSW-5dwa*wi#brF^X z?Gr{SwQp2sg?&#-PF%Y5no@_hpmgq)YqAlXi&`1GpYOErU8m^NHdBV}AHSdZp5J=y zB@cN)CPG1$#!{ZC8#gWYkxEgYe{<@LtqFB=kK}E9Y%o7_x%XSG?WgvBx}l(c%FS+j zuHoWYQ=eb=d{ef#=kw08U03Q#Px3$A?YM60+DnO?h1)j8o;~&XwMtoafZER->)5PS zdo+xnx>ttBg`e2DY3BLd=rb$Qp8h;7wEKvk@l#LB6VGo={mEoE)%s~gtIy||v7M3J z&-A_DdGZx^prwfgF}}M_)$E)e-c@Navq*8jv*C{Z|^+xJnSHG{9(6+gLy$~-XpG3 z7V{HoR!(=9C|fwqRhV~)zp3f_L%shY^VyviuuS^U%)RAoG{`L=P=7VVDtcOKeEDyq zV}-Mpea>gUnr$(~(C_P?<(pE!K6{=zXZNveiB!G0cSRPlaO~E7JXbH8Kfm|5?Q}ag zyYqHy1s^Q6+wpAEqN;uEmky?$m6tjoB%)Z@4sabk=S*mi8ol;77p!+GVT-KW`3wQKY9`nkcaVV-gM zvt3*Ns8wr(9|F1OMu+N)i0#*n++Ls9q$j+&Zo}J&Q^DS6V8}UTz4R?Nd&gW}1(1lR LtDnm{r-UW|EBK$n literal 440 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>V669aaSW-5dwa*wi#brF^X z?Gr{SwQp2sg?&#-PF%Y5no@_hpmgq)YqAlXi&`1GpYOErU8m^NHdBV}AHSdZp5J=y zB@cN)CPG1$#!{ZC8#gWYkxEgYe{<@LtqFB=kK}E9Y%o7_x%XSG?WgvBx}l(c%FS+j zuHoWYQ=eb=d{ef#=kw08U03Q#Px3$A?YM60+DnO?h1)j8o;~&XwMtoafZER->)5PS zdo+xnx>ttBg`e2DY3BLd=rb$Qp8h;7wEKvk@l#LB6VGo={mEoE)%s~gtIy||v7M3J z&-A_Dd - - - + + + + \ No newline at end of file diff --git a/src/main/resources/youtube/shorts/actionbuttons/youtubeoutline/drawable/ic_right_dislike_off_32c.xml b/src/main/resources/youtube/shorts/actionbuttons/youtubeoutline/drawable/ic_right_dislike_off_32c.xml index 6022bbe42b..59b94d86b4 100644 --- a/src/main/resources/youtube/shorts/actionbuttons/youtubeoutline/drawable/ic_right_dislike_off_32c.xml +++ b/src/main/resources/youtube/shorts/actionbuttons/youtubeoutline/drawable/ic_right_dislike_off_32c.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/src/main/resources/youtube/shorts/actionbuttons/youtubeoutline/drawable/ic_right_like_off_32c.xml b/src/main/resources/youtube/shorts/actionbuttons/youtubeoutline/drawable/ic_right_like_off_32c.xml index e86d8426d2..6d0d226d8c 100644 --- a/src/main/resources/youtube/shorts/actionbuttons/youtubeoutline/drawable/ic_right_like_off_32c.xml +++ b/src/main/resources/youtube/shorts/actionbuttons/youtubeoutline/drawable/ic_right_like_off_32c.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file From 4c228532955aa9129fb759eb7898a45c8944f6c9 Mon Sep 17 00:00:00 2001 From: Francesco Marastoni <49027005+Francesco146@users.noreply.github.com> Date: Wed, 28 Aug 2024 07:23:12 +0000 Subject: [PATCH 03/53] feat(YouTube/Video playback): add an option to disable toasts when changing the default values (#78) * feat(YouTube/Default Quality & Speed): add an option to disable toasts when changing the default values * chore: re-add space removed by ide * feat: apply code review suggestions --------- Co-authored-by: inotia00 <108592928+inotia00@users.noreply.github.com> --- src/main/resources/youtube/settings/host/values/strings.xml | 6 ++++++ src/main/resources/youtube/settings/xml/revanced_prefs.xml | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml index 27d5644a50..7ee1c9a154 100644 --- a/src/main/resources/youtube/settings/host/values/strings.xml +++ b/src/main/resources/youtube/settings/host/values/strings.xml @@ -1226,9 +1226,15 @@ Limitations: Remember playback speed changes Playback speed changes apply to all videos. Playback speed changes only apply to the current video. + Show a toast + A toast will be shown when changing the default playback speed. + A toast will not be shown when changing the default playback speed. Remember video quality changes Quality changes apply to all videos. Quality changes only apply to the current video. + Show a toast + A toast will be shown when changing the default video quality. + A toast will not be shown when changing the default video quality. Restore old video quality menu Old video quality menu is shown. Old video quality menu is not shown. diff --git a/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/src/main/resources/youtube/settings/xml/revanced_prefs.xml index 4eb8bfd75f..fa59a21afa 100644 --- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml +++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml @@ -573,7 +573,9 @@ + + From 010a19fc9ee88d6aa0a365283a4c41637d8ada66 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Wed, 28 Aug 2024 16:46:29 +0900 Subject: [PATCH 04/53] feat(YouTube Music): add support versions `7.15.52` ~ `7.16.52` --- .../branding/icon/CustomBrandingIconPatch.kt | 11 +++- .../misc/splash/CairoSplashAnimationPatch.kt | 2 +- .../components/PlayerComponentsPatch.kt | 64 +++++++++++++------ .../ShuffleClassReferenceFingerprint.kt | 36 ++++++++--- .../music/utils/compatibility/Constants.kt | 4 +- 5 files changed, 84 insertions(+), 33 deletions(-) diff --git a/src/main/kotlin/app/revanced/patches/music/layout/branding/icon/CustomBrandingIconPatch.kt b/src/main/kotlin/app/revanced/patches/music/layout/branding/icon/CustomBrandingIconPatch.kt index 0c2c6dc095..e1f67deb89 100644 --- a/src/main/kotlin/app/revanced/patches/music/layout/branding/icon/CustomBrandingIconPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/layout/branding/icon/CustomBrandingIconPatch.kt @@ -162,10 +162,15 @@ object CustomBrandingIconPatch : BaseResourcePatch( // Change splash icon. if (ChangeSplashIcon == true) { - splashIconResourceGroups.let { resourceGroups -> - resourceGroups.forEach { - context.copyResources("$appIconResourcePath/splash", it) + // Some resources have been removed in the latest YouTube Music. + // For compatibility, use try...catch. + try { + splashIconResourceGroups.let { resourceGroups -> + resourceGroups.forEach { + context.copyResources("$appIconResourcePath/splash", it) + } } + } catch (_: Exception) { } } diff --git a/src/main/kotlin/app/revanced/patches/music/misc/splash/CairoSplashAnimationPatch.kt b/src/main/kotlin/app/revanced/patches/music/misc/splash/CairoSplashAnimationPatch.kt index 37190159fe..5c60085e3a 100644 --- a/src/main/kotlin/app/revanced/patches/music/misc/splash/CairoSplashAnimationPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/misc/splash/CairoSplashAnimationPatch.kt @@ -20,7 +20,7 @@ import app.revanced.util.literalInstructionBooleanHook "com.google.android.apps.youtube.music", [ "7.08.54", - "7.13.52", + "7.16.52", ] ) ] diff --git a/src/main/kotlin/app/revanced/patches/music/player/components/PlayerComponentsPatch.kt b/src/main/kotlin/app/revanced/patches/music/player/components/PlayerComponentsPatch.kt index 1518547664..8bc50eed10 100644 --- a/src/main/kotlin/app/revanced/patches/music/player/components/PlayerComponentsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/player/components/PlayerComponentsPatch.kt @@ -34,6 +34,8 @@ import app.revanced.patches.music.player.components.fingerprints.QuickSeekOverla import app.revanced.patches.music.player.components.fingerprints.RemixGenericButtonFingerprint import app.revanced.patches.music.player.components.fingerprints.RepeatTrackFingerprint import app.revanced.patches.music.player.components.fingerprints.ShuffleClassReferenceFingerprint +import app.revanced.patches.music.player.components.fingerprints.ShuffleClassReferenceFingerprint.indexOfImageViewInstruction +import app.revanced.patches.music.player.components.fingerprints.ShuffleClassReferenceFingerprint.indexOfOrdinalInstruction import app.revanced.patches.music.player.components.fingerprints.SwipeToCloseFingerprint import app.revanced.patches.music.player.components.fingerprints.SwitchToggleColorFingerprint import app.revanced.patches.music.player.components.fingerprints.ZenModeFingerprint @@ -740,28 +742,53 @@ object PlayerComponentsPatch : BaseBytecodePatch( it.mutableMethod.apply { rememberShuffleStateObjectClass = definingClass - val startIndex = it.scanResult.patternScanResult!!.startIndex - val endIndex = it.scanResult.patternScanResult!!.endIndex - val imageViewIndex = - getTargetIndexWithFieldReferenceTypeOrThrow("Landroid/widget/ImageView;") + val constIndex = getWideLiteralInstructionIndex(45468) + val iGetObjectIndex = getTargetIndexOrThrow(constIndex, Opcode.IGET_OBJECT) + val checkCastIndex = getTargetIndexOrThrow(iGetObjectIndex, Opcode.CHECK_CAST) + + val ordinalIndex = indexOfOrdinalInstruction(this) + val imageViewIndex = indexOfImageViewInstruction(this) + + val iGetObjectReference = + getInstruction(iGetObjectIndex).reference + val invokeInterfaceReference = + getInstruction(iGetObjectIndex + 1).reference + val checkCastReference = + getInstruction(checkCastIndex).reference + val getOrdinalClassReference = + getInstruction(checkCastIndex + 1).reference + val ordinalReference = + getInstruction(ordinalIndex).reference - val shuffleReference1 = getInstruction(startIndex).reference - val shuffleReference2 = - getInstruction(startIndex + 1).reference - val shuffleReference3 = getInstruction(endIndex).reference - val shuffleFieldReference = shuffleReference3 as FieldReference rememberShuffleStateImageViewReference = getInstruction(imageViewIndex).reference rememberShuffleStateShuffleStateLabel = """ - iget-object v1, v0, $shuffleReference1 - invoke-interface {v1}, $shuffleReference2 + iget-object v1, v0, $iGetObjectReference + invoke-interface {v1}, $invokeInterfaceReference move-result-object v1 - check-cast v1, ${shuffleFieldReference.definingClass} - iget-object v1, v1, $shuffleReference3 - invoke-virtual {v1}, ${shuffleFieldReference.type}->ordinal()I - move-result v1 + check-cast v1, $checkCastReference + """ + + rememberShuffleStateShuffleStateLabel += if (getInstruction(checkCastIndex + 1).opcode == Opcode.INVOKE_VIRTUAL) { + // YouTube Music 7.16.52+ """ + invoke-virtual {v1}, $getOrdinalClassReference + move-result-object v1 + + """.trimIndent() + } else { + """ + iget-object v1, v1, $getOrdinalClassReference + + """.trimIndent() + } + + rememberShuffleStateShuffleStateLabel += """ + invoke-virtual {v1}, $ordinalReference + move-result v1 + + """.trimIndent() } val constructorMethod = @@ -770,7 +797,7 @@ object PlayerComponentsPatch : BaseBytecodePatch( constructorMethod.apply { addInstruction( - implementation!!.instructions.size - 1, + implementation!!.instructions.lastIndex, "sput-object p0, $MUSIC_PLAYBACK_CONTROLS_CLASS_DESCRIPTOR->shuffleClass:$rememberShuffleStateObjectClass" ) } @@ -836,9 +863,10 @@ object PlayerComponentsPatch : BaseBytecodePatch( sget-object v0, $MUSIC_PLAYBACK_CONTROLS_CLASS_DESCRIPTOR->shuffleClass:$rememberShuffleStateObjectClass """ + rememberShuffleStateShuffleStateLabel + """ iget-object v3, v0, $rememberShuffleStateImageViewReference - invoke-virtual {v3}, Landroid/widget/ImageView;->performClick()Z + if-eqz v3, :dont_shuffle + invoke-virtual {v3}, Landroid/view/View;->callOnClick()Z if-eqz v1, :dont_shuffle - invoke-virtual {v3}, Landroid/widget/ImageView;->performClick()Z + invoke-virtual {v3}, Landroid/view/View;->callOnClick()Z :dont_shuffle return-void """ diff --git a/src/main/kotlin/app/revanced/patches/music/player/components/fingerprints/ShuffleClassReferenceFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/player/components/fingerprints/ShuffleClassReferenceFingerprint.kt index 058bb631dc..64f792f243 100644 --- a/src/main/kotlin/app/revanced/patches/music/player/components/fingerprints/ShuffleClassReferenceFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/music/player/components/fingerprints/ShuffleClassReferenceFingerprint.kt @@ -2,20 +2,38 @@ package app.revanced.patches.music.player.components.fingerprints import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.MethodFingerprint +import app.revanced.patches.music.player.components.fingerprints.ShuffleClassReferenceFingerprint.indexOfImageViewInstruction +import app.revanced.patches.music.player.components.fingerprints.ShuffleClassReferenceFingerprint.indexOfOrdinalInstruction +import app.revanced.util.containsWideLiteralInstructionIndex +import app.revanced.util.getReference +import app.revanced.util.indexOfFirstInstruction import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode +import com.android.tools.smali.dexlib2.iface.Method +import com.android.tools.smali.dexlib2.iface.reference.FieldReference +import com.android.tools.smali.dexlib2.iface.reference.MethodReference internal object ShuffleClassReferenceFingerprint : MethodFingerprint( returnType = "V", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, parameters = emptyList(), - opcodes = listOf( - Opcode.IGET_OBJECT, - Opcode.INVOKE_INTERFACE, - Opcode.MOVE_RESULT_OBJECT, - Opcode.CHECK_CAST, - Opcode.IGET_OBJECT - ), - strings = listOf("Unknown shuffle mode") -) + strings = listOf("Unknown shuffle mode"), + customFingerprint = { methodDef, _ -> + methodDef.containsWideLiteralInstructionIndex(45468) && + indexOfOrdinalInstruction(methodDef) >= 0 && + indexOfImageViewInstruction(methodDef) >= 0 + } +) { + fun indexOfOrdinalInstruction(methodDef: Method) = + methodDef.indexOfFirstInstruction { + opcode == Opcode.INVOKE_VIRTUAL && + getReference()?.name == "ordinal" + } + + fun indexOfImageViewInstruction(methodDef: Method) = + methodDef.indexOfFirstInstruction { + opcode == Opcode.IGET_OBJECT && + getReference()?.type == "Landroid/widget/ImageView;" + } +} diff --git a/src/main/kotlin/app/revanced/patches/music/utils/compatibility/Constants.kt b/src/main/kotlin/app/revanced/patches/music/utils/compatibility/Constants.kt index aa452910a9..6405d96e17 100644 --- a/src/main/kotlin/app/revanced/patches/music/utils/compatibility/Constants.kt +++ b/src/main/kotlin/app/revanced/patches/music/utils/compatibility/Constants.kt @@ -11,8 +11,8 @@ object Constants { "6.33.52", // This is the latest version with the legacy code of YouTube Music. "6.42.55", // This is the latest version that supports Android 7.0 "6.51.53", // This is the latest version of YouTube Music 6.xx.xx - "7.12.52", // This was the latest version that was supported by the previous patch. - "7.13.52", // This is the latest version supported by the RVX patch. + "7.15.52", // This was the latest version that was supported by the previous patch. + "7.16.52", // This is the latest version supported by the RVX patch. ) ) ) From c992f4ac9c9ca5398ca250ffffb8a7dbbb0763ce Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Wed, 28 Aug 2024 16:55:58 +0900 Subject: [PATCH 05/53] feat(YouTube Music/Video playback): add an option to disable toasts when changing the default values --- .../music/video/playback/VideoPlaybackPatch.kt | 12 ++++++++++++ .../resources/music/settings/host/values/strings.xml | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/src/main/kotlin/app/revanced/patches/music/video/playback/VideoPlaybackPatch.kt b/src/main/kotlin/app/revanced/patches/music/video/playback/VideoPlaybackPatch.kt index 9ac5bbd5e4..4173158b07 100644 --- a/src/main/kotlin/app/revanced/patches/music/video/playback/VideoPlaybackPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/video/playback/VideoPlaybackPatch.kt @@ -115,10 +115,22 @@ object VideoPlaybackPatch : BaseBytecodePatch( "revanced_remember_playback_speed_last_selected", "true" ) + SettingsPatch.addSwitchPreference( + CategoryType.VIDEO, + "revanced_remember_playback_speed_last_selected_toast", + "true", + "revanced_remember_playback_speed_last_selected" + ) SettingsPatch.addSwitchPreference( CategoryType.VIDEO, "revanced_remember_video_quality_last_selected", "true" ) + SettingsPatch.addSwitchPreference( + CategoryType.VIDEO, + "revanced_remember_video_quality_last_selected_toast", + "true", + "revanced_remember_video_quality_last_selected" + ) } } diff --git a/src/main/resources/music/settings/host/values/strings.xml b/src/main/resources/music/settings/host/values/strings.xml index b39aec33e8..905bc8af5c 100644 --- a/src/main/resources/music/settings/host/values/strings.xml +++ b/src/main/resources/music/settings/host/values/strings.xml @@ -271,8 +271,12 @@ Some features may not work properly in the old player layout." Add or change available playback speeds. Remember playback speed changes Remembers the last playback speed selected. + Show a toast + Show a toast when changing the default playback speed. Remember video quality changes Remembers the last video quality selected. + Show a toast + Show a toast when changing the default video quality. Custom speeds must be less than %sx. Using default values. Invalid custom playback speeds. Using default values. Changing default speed to %s. From d6739ef77892a7aad1fcb2f0c0e2bd5725220430 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Wed, 28 Aug 2024 17:19:55 +0900 Subject: [PATCH 06/53] fix(YouTube/SponsorBlock): handle if the user enters an invalid number into any SB settings --- src/main/resources/youtube/settings/host/values/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml index 7ee1c9a154..a486fd061e 100644 --- a/src/main/resources/youtube/settings/host/values/strings.xml +++ b/src/main/resources/youtube/settings/host/values/strings.xml @@ -1421,6 +1421,7 @@ Limitation: Dislikes may not appear if the user is not logged in or in incognito Skip count tracking is not enabled. Minimum segment duration Segments shorter than this value (in seconds) will not be shown or skipped. + Invalid time duration. Your private user id This should be kept private. This is like a password and should not be shared with anyone. If someone has this, they can impersonate you. Private user id must be at least 30 characters long. From 4dd72556afe21ac99b078e8c34ba3322493adfa5 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Wed, 28 Aug 2024 18:22:54 +0900 Subject: [PATCH 07/53] feat(YouTube/Spoof client): allow forcing AVC codec with iOS --- .../youtube/settings/host/values/strings.xml | 11 +++++++++-- .../resources/youtube/settings/xml/revanced_prefs.xml | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml index a486fd061e..4bb7628215 100644 --- a/src/main/resources/youtube/settings/host/values/strings.xml +++ b/src/main/resources/youtube/settings/host/values/strings.xml @@ -1600,6 +1600,13 @@ Limitation: Feed videos will play for less than 1 minute before encountering pla Client is spoofed. "Client is not spoofed. Video playback may not work." Turning off this setting may cause video playback issues. + Spoof client type + Force iOS AVC (H.264) + iOS video codec is AVC (H.264). + iOS video codec is AVC (H.264), VP9, or AV1. + "Enabling this might improve battery life and fix playback stuttering. + +AVC (H.264) has a maximum resolution of 1080p, and video playback will use more internet data than VP9 or AV1." Show in Stats for nerds Spoofed client is shown in Stats for nerds. Spoofed client is hidden in Stats for nerds. @@ -1626,12 +1633,12 @@ Limitation: Feed videos will play for less than 1 minute before encountering pla "Spoof client to iOS. Side effects include: -• HDR video is supported only on AV1 codec. +• HDR is supported only with AV1 codec. • Watch time is not saved in watch history on brand account." "Spoof client to iOS. Side effects include: -• HDR video is supported only on AV1 codec. +• HDR is supported only with AV1 codec. • Watch history does not work with a brand account." Android Testsuite "Spoof client to Android Testsuite. diff --git a/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/src/main/resources/youtube/settings/xml/revanced_prefs.xml index fa59a21afa..592a75c59d 100644 --- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml +++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml @@ -613,6 +613,7 @@ + ReVanced Extended + Рестартирайте, за да заредите оформлението нормално + Опреснете и рестартирайте + Акаунт + Скриване на менюто на акаунта + Скрива елементи от менюто на акаунта в персонализиран филтър. + Промяна на филтъра на менюто на акаунта + Списък с имена на менюта на акаунти за филтриране, разделени с нови редове. + Скриване на празни компоненти + Скрива празните компоненти в менюто на акаунта. Скриване на връзки + Скрива имейл/@ник в менюто за промяна на акаунта. + Скриване на информацията за поверителност + Скриване на подробностите за поверителност / правила и условия. + Лента с действия + Скриване на бутоните за харесване и нехаресване + Скрива бутоните „Харесвам“ и „Не харесвам“. Не работи в стария интерфейс на плейъра. + Скриване на бутона за коментари + Скрийте бутона „Коментари“. + Бутон \"Запазване\" + Скрива бутона \"Запазване\". + Скриване на бутона за изтегляне + Скрива бутона „Изтегляне“. + Скриване на бутона за споделяне + Скрива бутона „Споделяне“. + Скрийте бутона \"Радио\" + Скрива бутона \"Радио\". + Скриване на етикетите на бутоните за действие + Скрива. етикетите на бутоните за действие. + Замяна на бутона за изтегляне + "Бутонът \"Изтегляне\" отваря външната програма за изтегляне. + +• Заменя само бутона за изтегляне в плейъра. +• Не отменя бутона за изтегляне в изскачащото меню или библиотеката." Име на пакета на външно приложение за изтегляне Име на пакета на приложението за изтегляне като NewPipe или YTDLnis. + Външна програма за изтегляне + Внимание + "%1$s не е инсталиран. +Моля, изтеглете %2$s от уебсайта." %s не е инсталирано. Моля инсталирайте го. + Реклами + Скриване на рекламите в режим на цял екран + Скриване на рекламите в режим на цял екран. + Как да затворите реклами на цял екран + "Ако е активирана, рекламата на цял екран се затваря чрез бутона Затвори. +Ако е деактивирано, рекламата на цял екран е блокирана. (могат да възникнат нежелани реакции)" + Рекламите на цял екран са блокирани. (Тип на диалоговия прозорец: %s) + Рекламите на цял екран са затворени. + Скриване на общите реклами + Скриване на общите реклами. + Скриване на музикални реклами + Скрива реклами преди възпроизвеждане на музика. + Скриване на платените промоции + Скриване на платените промоции. + Скриване на изскачащи реклами Premium + Скрива изскачащи реклами Premium. + Скриване на банера за подновяване на Premium + Скриване на банера за подновяване на Premium. + Падащо меню + Компактен изглед на прозореца + "Активира компактно изскачащо меню на телефони. + +Известни проблеми: +• Скрийнсейвърите на албуми в раздела \"Библиотека\" стават по-малки в мрежа. +• Интерфейсът за автоматично изключване може да изглежда необичайно." + Добавете опция „Скриване на мълчанията“ + "Добавя „Скриване на мълчанията“ към падащото меню „Скорост на възпроизвеждане“. + +Информация: +• Тази функция е предназначена за подкасти. +• Тази функция все още е в процес на разработка, така че може да е нестабилна." + Скриване на бутоните за харесване и нехаресване + Скриване на компонента с 3 колони + Скрийте бутона „Добавяне към опашката“ + Скриване на менюто за субтитри + Скрийте менюто „Изтриване на плейлист“ + Скрийте менюто „Изтриване на опашката“ + Скрийте менюто „Изтегляне“ + Скрийте менюто „Редактиране на плейлист“ + Скрийте менюто „Отиди на албум“ + Скрийте менюто „Отидете на страницата на изпълнителя“ + Скрийте менюто „Отидете на епизод“ + Скрийте менюто „Отидете на подкаст“ + Скриване на менюто & за помощ + Скрийте менюто „Пусни следващия клип“ + Скрийте менюто „Качество“ + Скрийте менюто „Премахване от библиотеката“ + Скрийте менюто „Изтриване на плейлист“ + Меню за докладване + Скрийте менюто „Запазване за гледане по-късно“ + Скрийте менюто „Запазване в библиотеката“ + Скрийте менюто „Запазване в плейлист“ + Скрийте менюто „Споделяне“ + Скрийте бутона „Разбъркване“ + Скрийте менюто „Изчакване на заспиване“ + Скрийте менюто „Стартиране на радио“ + Меню \"Статистика за сис. администратори\" + Скрийте менюто „Абониране“ / „Отписване“ + Скрийте менюто „Подробности за заглавие“ + Продължете да гледате + Видеото продължава от текущото време на гледане, когато отидете в YouTube. + Гледайте в YouTube + Невалиден Url адрес на видеото. + Заменете менюто „Премахване от опашката“ + Заменя менюто „Премахване от опашката“ с менюто „Гледайте в YouTube“. + Заменете менюто „Докладвай“ + Заменя менюто Доклад с менюто Скорост на възпроизвеждане. + Запазете доклада в коментарите + Запазва менюто Доклад в раздела за коментари непокътнато. + Главни + Промяна на началната страница + Изберете на коя страница да се отвори приложението. + Хит-парад + Преглед + Начало + Библиотека + Абонаменти Изкл. принудителни автоматични субтититри Изкл. принудителни автоматични субтититри. + Désactiver la redirection du bouton \"Je n\'aime pas\" + Деактивира пренасочването към следващата песен, когато щракнете върху бутона „Не харесвам“. Позволи Пейзажен Режим + Активира пейзажен режим при завъртане на телефона. Вкл. на филтър по избор Активира персонализиран филтър за скриване на компонентите на оформлението. Редактиране на потребителския филтъра Филтриране на компонентите по имена. + Невалиден потребителски филтър: %s. + Скрийте менюто „Настройки“ + "Скриване на елементи от менюто с настройки. +Това не само скрива менюто с настройки на YT Music, но и менюто с разширени настройки на ReVanced." + Филтър на менюто „Настройки“ + Списък с имена на менюта на параметри за филтриране, разделени с нов ред. + Скриване на секцията с бутони + Скриване на секцията с бутони в емисията. + Скриване на рафта с Препоръчани + Скриване на рафтовете с предложения в емисиите. + Скрийте рафтовете „Списъци за изпълнение“ + Скрива рафтовете с карти „Списъци за изпълнение“ в емисии. + Скрийте рафта „Семпли“ + Скриване на рафтовете с Семпли в емисиите. + Скриване на бутона за предаване на Тв + Скрива бутона \"Излъчване\". + Скриване на панела с Категории + Скриване на панела с категории. + Скриване на изскачащ бутон + Скрива плаващите бутони в библиотеката. + Скрийте бутона „Докоснете за актуализиране“ + Скриване на бутона „Докоснете за актуализиране“. + Скрийте бутона \"История\" + Скрива бутона \"История\" от лентата с инструменти. + Бутон за Известия + Скрива бутона „Известие“ от лентата с инструменти. + Бутон за \"Звуково търсене\" + Скрива бутона „звуково търсене на музика“ от лентата за търсене. + Бутон за \"гласово търсене\" + Скрива бутона „Гласово търсене“ от лентата за търсене. + Възстановете стария стил на рафта „Библиотека“ + Възстановява стария стил на рафт \"Библиотека\". (Експериментално) + Скриване на прозореца за възрастово ограничение + "Премахва диалоговите прозорци. Това не заобикаля възрастовите ограничения, но ги приема автоматично." + Подлъгване за версията на приложението + "Заменя клиентската версия със старата. + +• Това ще промени външния вид на приложението, но може да възникнат неизвестни проблеми. +• Ако деактивирате тази опция, след като я активирате, старият интерфейс може да остане, докато данните на приложението не бъдат изчистени." + Подлъгване за версията на приложението + Задайте желаната фалшива версия на приложението. + 4.27.53 - Деактивира радио режима в регионите на Канада + 6.11.52 -Изключва речта в реално време + Лента за навигация Включване на черна навигационна лента Задава цвета на лентата за навигация на черен. + Скриване на бутон за Начало + Скрива бутона \"Начало\". + Скриване на бутона \"навигация\" + Скрива. бутона за Преглед. + Бутона за Библиотека Скриване лентата за навигация Скриване лентата за навигация. Скриване на навигационен панел + Плеър A játékos színmegfelelésének engedélyezése Цветът на плейъра на цял екран съответства с цвета на минимизирания. Kapcsolja be az állandó összeomlott lejátszót diff --git a/src/main/resources/music/translations/es-rES/strings.xml b/src/main/resources/music/translations/es-rES/strings.xml index d7f5ad4ec0..f5d41c41fc 100644 --- a/src/main/resources/music/translations/es-rES/strings.xml +++ b/src/main/resources/music/translations/es-rES/strings.xml @@ -1,10 +1,16 @@ + ReVanced Extended + Reiniciar para cargar el diseño normalmente + Actualizar y reiniciar + Cuenta Ocultar menú de cuenta - Ocultar elementos del menú de la cuenta. + Oculta elementos del menú de la cuenta. + Filtro de menú de cuenta + Lista de nombres del menú de la cuenta a filtrar separados por una nueva línea. Ocultar componente vacío Oculta componentes vacíos en el menú de la cuenta Ocultar asa @@ -12,22 +18,117 @@ Ocultar contenedor de términos Oculta los términos del contenedor de servicio. + Barra de Acción + Ocultar botones Me gusta y No me gusta + Oculta los botones \"Me gusta\" y \"no me gusta\". No funciona en el diseño del reproductor antiguo. + Ocultar botón de comentarios + Oculta botón de comentarios. + Ocultar botón Guardar + Oculta botón Guardar. + Ocultar botón Descargar + Oculta el botón Descargar. + Ocultar botón de compartir + Oculta el botón Compartir. + Ocultar botón de emisoras de radio + Oculta el botón Radio. + Ocultar etiquetas de botón de acción + Oculta las etiquetas de los botones de acción. + Reemplazar botón de acción de Descarga + "El botón Descargar abre su descargador externo. + + • Solo anula el botón de acción Descargar en el reproductor. + • No anula el botón Descargar en el menú desplegable o en la pestaña Biblioteca." Nombre del paquete del descargador externo Nombre del paquete de su aplicación de descargas externas instalada, como NewPipe o YTDLnis. + Descargador externo + Advertencia + "%1$s no está instalado. +Descarga %2$s desde el sitio web." %s no está instalado. Por favor, instálelo. + Anuncios + Ocultar anuncios en pantalla completa + Oculta anuncios en pantalla completa. + Cerrar anuncios en pantalla completa + "Si está habilitado, los anuncios a pantalla completa se cierran mediante el botón Cerrar. +Si está deshabilitado, se bloquean los anuncios a pantalla completa. (puede haber efectos secundarios)" + Se han bloqueado anuncios en pantalla completa. (Tipo de diálogo: %s) + Se han cerrado anuncios en pantalla completa. + Ocultar anuncios generales + Oculta anuncios generales. Ocultar anuncios de música Oculta los anuncios antes de reproducir una pista. + Ocultar etiqueta de promoción pagada + Oculta etiqueta de promoción pagada. + Ocultar popups de promoción premium + Oculta popups de promoción premium. + Ocultar banner de renovación premium + Oculta banner de renovación premium. + Menú desplegable Activar diálogo compacto "Activa el diálogo compacto en el teléfono. Problemas conocidos: - La carátula del álbum en la estantería de la biblioteca también se hace más pequeña. - El diseño del temporizador puede parecer inusual." + Añadir interruptor para recortar silencios + "Añade un interruptor para recortar silencios en el menú desplegable de velocidad de reproducción. + +Información: +Esta función es para podcasts. +Esta función aún está en desarrollo, por lo que puede ser inestable." + Ocultar botones Me gusta y No me gusta + Ocultar componente de 3 columnas + Ocultar menú de Añadir a la cola + Ocultar menú de Subtítulos + Ocultar menú Borrar lista de reproducción + Ocultar menú de Descartar cola + Ocultar menú de Descarga + Ocultar menú Editar lista de reproducción + Ocultar menú de ir al álbum + Ocultar menú de ir al artista + Ocultar menú de ir a episodios + Ocultar menú de ir al podcast + Ocultar menú Ayuda & Comentarios + Ocultar menú de reproducción siguiente + Ocultar menú de calidad + Ocultar menú de eliminar de la biblioteca + Ocultar menú de quitar de la lista de reproducción + Ocultar menú Denunciar + Ocultar menú de Guardar episodio para más tarde + Ocultar menú de Guardar en biblioteca + Ocultar menú de Guardar en lista de reproducción + Ocultar menú de Compartir + Ocultar menú de Reproducción aleatoria + Ocultar menú de Temporizador de sueño + Ocultar menú de Iniciar radio + Ocultar menú Estadísticas para Nerds + Ocultar menú Suscribirse / Desuscribirse + Ocultar menú de vista de créditos de canción + Continuar viendo + Continúa el vídeo desde el tiempo actual cuando se cambia a YouTube. + Ver en YouTube + Url del video no válida. + Reemplazar el menú descartar cola + Reemplaza el menú de descartar cola por el de ver en YouTube. + Reemplazar menú Denunciar + Reemplaza el menú Denunciar con el menú Velocidad de reproducción. + Mantener Denunciar en comentarios + Mantiene intacto el menú Denunciar en la sección de comentarios. + General + Cambiar página de inicio + Seleccione en qué página se abre la aplicación. + Ranking + Explorar + Inicio + Biblioteca + Suscripciones Desactivar subtítulos automáticos Desactiva la activación automática de los subtítulos forzados en el reproductor de vídeo. + Desactivar redirección de No me Gusta + Deshabilita la redirección a la siguiente pista al hacer clic en el botón No me Gusta. Activar modo horizontal Permite entrar en modo horizontal mediante la rotación de la pantalla del teléfono. Activar filtro personalizado @@ -35,47 +136,128 @@ Problemas conocidos: Editar filtro personalizado Filtra los nombres de los componentes separados por líneas + Filtro personalizado no válido: %s. + Ocultar menú de configuración + "Oculta elementos del menú de configuración. +Esto oculta no solo el menú de ajustes de YT Music, sino también el menú de ajustes de ReVanced Extended." + Filtro de menú de configuración + Lista de nombres del menú de configuración de YouTube a filtrar separados por una nueva línea. Ocultar estante de botones Oculta el estante de botones de la página de inicio y del explorador. Ocultar estante de carrusel Oculta el estante de carrusel de la página de inicio y del explorador. + Ocultar tarjeta de lista de reproducción + Oculta la tarjeta de lista de reproducción del feed. + Ocultar estante de Samples + Oculta estante de Samples en el feed. Ocultar botón de transmisión Oculta el botón de trasmisión en la parte superior de la página de inicio y en la parte superior del reproductor. Ocultar barra de categorías Oculta la barra de categorías musicales de la parte superior de la página de inicio. + Ocultar botón flotante + Oculta el botón flotante en la pestaña Biblioteca. + Ocultar el botón Toque para actualizar + Oculta el botón Toque para actualizar. Ocultar botón de historial Oculta el botón de historial en la barra de herramientas. + Ocultar botón de Notificaciones + Oculta el botón de notificaciones en la barra de herramientas. + Ocultar botón de búsqueda de sonido + Oculta el botón de búsqueda de sonido en la barra de búsqueda. + Ocultar botón de búsqueda por voz + Oculta el botón de búsqueda por voz en la barra de búsqueda. + Restaurar el estante de la biblioteca de estilo antiguo + Devuelve la pestaña Biblioteca al estilo antiguo. (Experimental) + Eliminar diálogo de discreción del espectador + "Elimina el diálogo de discreción del espectador. +Esto no evita la restricción de edad. Solo la acepta automáticamente." Modificar versión de aplicación - "Modificación de la versión del cliente a la versión antigua + "Modificación de la versión del cliente a la versión antigua. -- Esto cambiará la apariencia de la aplicación, pero pueden producirse efectos secundarios desconocidos -- Si más tarde se desactiva, la antigua interfaz de usuario puede permanecer hasta que se borren los datos de la aplicación" +- Esto cambiará la apariencia de la aplicación, pero pueden producirse efectos secundarios desconocidos. +- Si más tarde se desactiva, la antigua interfaz de usuario puede permanecer hasta que se borren los datos de la aplicación." Objetivo de la versión de la app a modificar Seleccione el objetivo de la versión de la app a modificar 4.27.53 - Desactivar el modo radio en las regiones canadienses + 6.11.52 - Desactivar letras en tiempo real + Barra de navegación Activar barra de navegación negra Establece el color de la barra de navegación en negro. + Ocultar botón de Inicio + Oculta el botón de Inicio. + Ocultar botón de Samples + Oculta el botón de Samples. + Ocultar botón de Explorar + Oculta el botón Explorar. + Ocultar botón de Biblioteca + Oculta el botón de la biblioteca. + Ocultar botón de Actualización + Oculta el botón de Actualización. Ocultar barra de navegación - Ocultar barra de navegación. + Oculta barra de navegación. Ocultar etiquetas en barra de navegación Oculta las etiquetas en la barra de navegación. + Reproductor + Desactivar gesto de minireproductor + Desactivar el gesto de deslizar para cambiar de pista en el minireproductor. + Desactivar gesto del reproductor + Desactivar el gesto de deslizar para cambiar de pista en el reproductor. + Activar fondo de reproductor negro + Cambia el color de fondo del reproductor a negro. Activar coincidencia de color de reproductores Hace coincidir el color del reproductor a pantalla completa con el de minimizado. Activar reproductor minimizado forzado Mantiene el reproductor permanentemente minimizado incluso si se reproduce otra pista. + Añadir botón siguiente al minireproductor + Añadir botón siguiente pista al minireproductor. + Añadir botón anterior al minireproductor + Añadir botón pista anterior al minireproductor. + Activar deslizar para descartar el minireproductor + Permite deslizar hacia abajo para descartar el minireproductor. Activar modo zen Añade un tinte gris al reproductor de vídeo para reducir la fatiga visual. + Activar el modo Zen en podcasts + También activa el modo Zen para podcasts. + Ocultar Interruptor de Audio / Video + Oculta el interruptor de Audio / Video en el reproductor. + Ocultar normas del canal + Oculta las normas del canal en la parte superior de la sección de comentarios. + Ocultar botones de marca de tiempo y emoji + Oculta los botones marca de tiempo y emoji al escribir comentarios. + Oculta la capa que aparece al tocar dos veces + Oculta la superposición oscura que aparece al tocar dos veces para buscar. + Ocultar el botón Compartir en pantalla completa + Oculta el botón Compartir en el reproductor de pantalla completa. Recordar estado de repetición Recuerda el estado de la repetición. - Recordar estado del aleatorio - Recuerda el estado del aleatorio. + Recordar estado aleatorio + Recuerda el estado del aleatorio (shuffle). + Restaurar paneles emergentes de comentarios antiguos + Devuelve los paneles emergentes de comentarios al estilo antiguo. + Restaurar el fondo del reproductor antiguo + Devuelve el fondo del reproductor al estilo antiguo. + Activar diseño antiguo del reproductor + "Devuelve el diseño del reproductor al estilo antiguo. +Algunas características pueden no funcionar correctamente en la disposición del reproductor antiguo." + Video Editar velocidades de reproducción personalizadas Agregar o cambiar las velocidades de reproducción disponibles + Recordar cambios de velocidad de reproducción + Recuerda la última velocidad de reproducción seleccionada. + Recordar cambios de calidad de vídeo + Recuerda la última calidad de vídeo seleccionada. Las velocidades de reproducción personalizadas no son válidas. Restablezca a los valores predeterminados. + Velocidades de reproducción personalizadas no válidas. Utilizando valores predeterminados. + Cambiando la velocidad predeterminada a %s. + Cambiando la calidad predeterminada con datos móviles a %s. + Error al establecer calidad. + Cambiando la calidad predeterminada con Wi-Fi a %s. + Return YouTube Dislike + Activar Return YouTube Dislike Muestra el número de vídeos que no te gustan. Porcentaje de No Me Gusta En lugar del número de no me gusta, se muestra el porcentaje de no me gusta. @@ -84,6 +266,7 @@ Problemas conocidos: Mostrar mensaje si la API no está disponible Se muestra el mensaje si la API de ReturnYouTubeDislike no está disponible. Acerca de + ReturnYouTubeDislike.com Los datos son proporcionados por la API Return YouTube Dislike. Pulse aquí para obtener más información. Los no me gusta están temporalmente no disponibles (la API no responde). Los no me gusta no están disponibles (estado %d). @@ -91,11 +274,89 @@ Problemas conocidos: Los no me gusta no están disponibles (%s). Oculto + SponsorBlock + Activar SponsorBlock + SponsorBlock es un sistema colaborativo para omitir partes molestas en vídeos de YouTube. + Mostrar mensaje si la API no está disponible + Muestra un mensaje si la API de SponsorBlock no está disponible. + Mostrar mensaje al omitir segmento automáticamente + Mensaje emergente que se muestra cuando se salta un segmento automáticamente. + Cambiar URL de la API + Dirección que el SponsorBlock utiliza para hacer llamadas al servidor. No cambie esto a menos que sepa qué está haciendo. + Restablecer la URL de la API. + La URL de la API no es válida. + URL de API cambiada. + Cambiar el comportamiento del segmento + Patrocinador + Promoción pagada, referencias pagadas y anuncios directos. No es para promoción propia ni para menciones gratuitas a causas, creadores, sitios web o productos que les gusten. + Promoción no remunerada/autopromoción + Cuando hay una autopromoción o no remunerada. Esto incluye secciones específicas sobre mercancía, donaciones o información sobre con quién colaboraron. + Recordatorio de interacción (Suscribirse) + Un breve recordatorio para dar me gusta, suscribirse o seguirlos en medio del contenido. Si es largo o sobre algo específico, debe estar en la sección de autopromoción. + Intermedio / Animación de introducción + Un intervalo sin contenido real. Puede ser una pausa, un fotograma estático o una animación que se repite. No incluye transiciones que contengan información. + Tarjetas finales / Créditos + Créditos o cuando aparecen las tarjetas finales de YouTube. No para conclusiones con información. + Vista previa / Resumen / Gancho + Colección de clips que muestran lo que está por venir o lo que sucedió en el vídeo o en otros vídeos de una serie, donde toda la información se repite en otra parte. + Tangente de relleno / Chistes + Escenas tangenciales añadidas solo para relleno o humor que no son necesarias para entender el contenido principal del vídeo. No incluye segmentos que proporcionen contexto o detalles de fondo. + Música: Sección sin música + Solo para usar en vídeos musicales. Secciones de vídeos musicales sin música, que no estén ya cubiertas por otra categoría. + Patrocinador omitido. + Autopromoción omitida. + Recordatorio molesto omitido. + Introducción omitida. + Intermisión omitida. + Intermisión omitida. + Créditos omitidos. + Vista previa omitida. + Vista previa omitida. + Resumen omitido. + Relleno omitido. + Se omitió una sección sin música. + Varios segmentos omitidos. + Omitir automáticamente + Deshabilitar + SponsorBlock no está disponible temporalmente. + SponsorBlock no está disponible temporalmente. (estado %d). + SponsorBlock no está disponible temporalmente. (la API no responde). + Color: + Color cambiado. + Restablecer color. + Código de color inválido. Restablecimiento de color predeterminado. + Restablecer color + Los datos son proporcionados por la API de SponsorBlock. Pulsa aquí para aprender más y ver las descargas para otras plataformas. + Acerca de + sponsor.ajay.app + Otros + Eludir las restricciones regionales de imágenes + Reemplaza el dominio que está bloqueado en algunas regiones para que las miniaturas de la lista de reproducción, avatares de canales, etc. puedan ser recibidas. + Cambiar la hoja de compartir + Cambia la hoja de compartir en la app a la hoja de compartir del sistema. + Activar nueva animación de bienvenida + Habilita la animación de bienvenida \"Cairo\" cuando se inicia la aplicación. Activar registro de depuración Imprime el registro de depuración + Incluir búfer en registro de depuración + Incluye el búfer en el registro de depuración. Activar códec opus "Activa el códec Opus 250/251 al reproducir audio." + Abrir GmsCore + Activa los ajustes de mensajería en la nube para recibir notificaciones. + GmsCore no está instalado. Instálalo. + Acción necesaria + "GmsCore no tiene permiso para ejecutarse en segundo plano. + +Sigue la guía \"Don't kill my app!\" para tu dispositivo y aplica las instrucciones a tu instalación de GmsCore. + +Esto es necesario para que la aplicación funcione." + Abrir página Web + "Las optimizaciones de la batería para GmsCore deben estar desactivadas para evitar problemas. + +Pulsa el botón de continuar y desactiva las optimizaciones de la batería." + Continuar Desinfectar enlaces compartidos Elimina los parámetros de consulta de seguimiento de las URL al compartir enlaces. Importar / Exportar @@ -107,8 +368,9 @@ Problemas conocidos: Los ajustes se han exportado correctamente. Importar Copiar - Error de importación: %s. + Error de importación: %s Configuración restablecida por defecto Configuración importada de %d + Restablecer Ajustes copiados en el portapapeles. diff --git a/src/main/resources/music/translations/ja-rJP/strings.xml b/src/main/resources/music/translations/ja-rJP/strings.xml index 41ff6f8c8a..702edad26a 100644 --- a/src/main/resources/music/translations/ja-rJP/strings.xml +++ b/src/main/resources/music/translations/ja-rJP/strings.xml @@ -200,6 +200,10 @@ YT Music の設定だけでなく、ReVanced Extended の設定も非表示に ナビゲーションバーのラベルを非表示にします。 プレーヤー + ミニプレーヤージェスチャーを無効にする + ミニプレーヤーでスワイプによる曲の変更を無効にします + プレイヤージェスチャーを無効にする + プレイヤーでスワイプによる曲の変更を無効にします。 黒のプレイヤー背景を有効化 プレイヤーの背景の色を黒に固定します。 カラーマッチプレーヤーを有効化 @@ -329,6 +333,8 @@ YT Music の設定だけでなく、ReVanced Extended の設定も非表示に その他 画像表示の地域制限を回避 プレイリストのサムネイルやチャンネルアバターなどを受信できるように、一部の地域でブロックされているドメインを置き換えます。 + 共有メニューを変更 + アプリ内共有メニューからシステムの共有メニューに置き換えます。 Cairo のスプラッシュアニメーションを有効化 アプリ起動時にCairo のスプラッシュアニメーションを有効にします。 デバッグログ diff --git a/src/main/resources/music/translations/ko-rKR/strings.xml b/src/main/resources/music/translations/ko-rKR/strings.xml index b6a2726f10..f66cacd39c 100644 --- a/src/main/resources/music/translations/ko-rKR/strings.xml +++ b/src/main/resources/music/translations/ko-rKR/strings.xml @@ -202,9 +202,9 @@ YT Music 설정 메뉴뿐만 아니라 ReVanced Extended 설정 메뉴도 숨겨 플레이어 미니 플레이어 제스처 비활성화 - 미니 플레이어에서 트랙을 변경하기 위해 스와이프를 비활성화합니다. + 미니 플레이어에서 \'스와이프 제스처로 트랙 변경\'을 비활성화합니다. 플레이어 제스처 비활성화 - 플레이어에서 트랙을 변경하기 위해 스와이프를 비활성화합니다. + 플레이어에서 \'스와이프 제스처로 트랙 변경\'을 비활성화합니다. 검정 플레이어 배경 활성화 플레이어 배경 색상을 검정으로 설정합니다. 색상 일치 플레이어 활성화 @@ -248,8 +248,12 @@ YT Music 설정 메뉴뿐만 아니라 ReVanced Extended 설정 메뉴도 숨겨 사용하고 싶은 재생 속도 값을 추가하거나 변경할 수 있습니다. 재생 속도 저장 활성화 재생 속도 값을 변경할 때마다 저장합니다. + 팝업 메시지 표시하기 + 기본 동영상 재생 속도 값으로 변경되었을 때, 팝업 메시지를 표시합니다. 동영상 품질 저장 활성화 동영상 품질 값을 변경할 때마다 저장합니다. + 팝업 메시지 표시하기 + 기본 동영상 화질 값으로 변경되었을 때, 팝업 메시지를 표시합니다. 사용자 정의 재생 속도는 %s배속보다 작아야 하므로 기본값으로 초기화합니다. 잘못된 재생 속도 값이므로 기본값으로 초기화합니다. 기본 재생 속도 값을 %s으로 변경합니다. diff --git a/src/main/resources/music/translations/ru-rRU/strings.xml b/src/main/resources/music/translations/ru-rRU/strings.xml index 5fc2577b6f..d7aed0ffc8 100644 --- a/src/main/resources/music/translations/ru-rRU/strings.xml +++ b/src/main/resources/music/translations/ru-rRU/strings.xml @@ -137,6 +137,11 @@ Настройте, какие компоненты фильтровать, обозначая конец каждого из них новой строкой. Недопустимый пользовательский фильтр: %s. + Скрыть меню настроек + "Скрывает элементы меню настроек. +При этом скрывается не только меню настроек YT Music, но и меню настроек ReVanced Extended." + Фильтр настроек меню + Список названий меню настроек для фильтрации, разделенных новыми строками. Скрыть ряд кнопок Скрывает ряд кнопок с главной страницы и со вкладки \"Навигатор\". Скрыть карусель треков @@ -195,6 +200,10 @@ Скрывает подписи под кнопками навигации. Плеер + Отключить жест мини плеера + Отключает свайп для переключения треков в миниплеере. + Отключить жест плеера + Отключает свайп для переключения треков в плеере. Включить черный фон плеера Меняет адаптивный цвет фона плеера на черный. Цветовое соответствие проигрывателей @@ -322,6 +331,8 @@ sponsor.ajay.app Разное + Обойти ограничения изображений по региону + Заменяет заблокированный в некоторых регионах домен, чтобы можно было получать миниатюры плейлистов, аватары каналов и т. д. Анимация заставки Каир Включает анимацию заставки Каир при запуске приложения. Ведение журнала отладки diff --git a/src/main/resources/music/translations/uk-rUA/strings.xml b/src/main/resources/music/translations/uk-rUA/strings.xml index da2dd0c594..2cad8c3753 100644 --- a/src/main/resources/music/translations/uk-rUA/strings.xml +++ b/src/main/resources/music/translations/uk-rUA/strings.xml @@ -348,7 +348,7 @@ • Останні YouTube Music клієнти за умовчанням використовують аудіокодек OPUS. • Це буде корисно лише для користувачів, які користуються дуже старими клієнтами." Відкрити GmsCore - Увімкніть \"Харні повідомлення\", щоб отримувати сповіщення. + Увімкніть \"Хмарні повідомлення\", щоб отримувати сповіщення. GmsCore не встановлено. Встановіть. Потрібна дія "GmsCore не дозволено працювати у фоні. diff --git a/src/main/resources/music/translations/vi-rVN/strings.xml b/src/main/resources/music/translations/vi-rVN/strings.xml index 153238f7c9..f063c483b0 100644 --- a/src/main/resources/music/translations/vi-rVN/strings.xml +++ b/src/main/resources/music/translations/vi-rVN/strings.xml @@ -9,8 +9,8 @@ Tài khoản Ẩn trình đơn Tài khoản Ẩn các thành phần của trình đơn Tài khoản bằng bộ lọc tuỳ chỉnh. - Bộ lọc menu tài khoản - Danh sách tên menu tài khoản cần lọc, cách nhau từng dòng một. + Bộ lọc mục Tài khoản + Nhập tên các mục Tài khoản mà bạn muốn lọc được phân cách bằng dòng. Ẩn mục trống Ẩn các mục trống khỏi trình đơn Tài khoản. Ẩn tên người dùng @@ -40,7 +40,7 @@ • Không ghi đè lên nút Tải xuống trong Trình đơn tuỳ chọn hoặc Thư viện." Tên gói ứng dụng trình tải xuống Nhập tên gói ứng dụng trình tải xuống đã cài đặt trên thiết bị của bạn, chẳng hạn như NewPipe hoặc YTDLnis. - Trình tải xuống bên thứ ba + Trình tải xuống bên ngoài Chú ý "%1$s chưa được cài đặt. Vui lòng tải xuống %2$s từ trang web." @@ -73,13 +73,13 @@ Hạn chế: • Ảnh bìa Album trong thẻ Thư viện (Danh sách phát, Podcast, Bài hát, Đĩa nhạc, Nghệ sĩ,...) cũng thu gọn theo. • Bố cục Hẹn giờ ngủ có thể xuất hiện bất thường." Bật/Tắt Cắt bỏ khoảng im lặng - "Thêm nút Cắt bỏ khoảng im lặng vào tuỳ chọn tốc độ phát. + "Thêm nút Bật/Tắt Cắt bỏ khoảng im lặng vào tuỳ chọn tốc độ phát. Cụ thể: • Tính năng dành cho podcast. • Tính năng vẫn đang được phát triển nên có thể chưa ổn định." Ẩn các nút Thích và Không thích - Ẩn thành phần có 3 dòng + Ẩn thành phần 3 cột Ẩn mục Thêm vào danh sách chờ Ẩn mục Phụ đề Ẩn mục Xoá danh sách phát @@ -247,8 +247,12 @@ Lưu ý:\n- Tuỳ chọn này sẽ thay đổi giao diện ứng dụng, tuy nhi Thêm giá trị tốc độ phát mà bạn muốn thay đổi hoặc chỉnh sửa các giá trị tốc độ phát hiện có. Ghi nhớ thay đổi tốc độ phát Ghi nhớ giá trị tốc độ phát được chọn gần đây nhất. + Hiện một thông báo ngắn + Hiện một thông báo ngắn khi thay đổi tốc độ phát mặc định. Ghi nhớ chất lượng video Ghi nhớ chất lượng video nhạc được chọn gần đây nhất. + Hiện một thông báo ngắn + Hiện một thông báo ngắn khi thay đổi chất lượng mặc định của video. Tốc độ phát tuỳ chỉnh không hợp lệ. Đã đặt lại tốc độ phát về mặc định. Tốc độ phát tùy chỉnh không hợp lệ. Đã khôi phục lại các giá trị mặc định. Đã lưu tốc độ phát mặc định thành %s. @@ -333,6 +337,8 @@ Lưu ý:\n- Tuỳ chọn này sẽ thay đổi giao diện ứng dụng, tuy nhi Khác Bỏ qua hạn chế khu vực cho hình ảnh Thay thế miền bị chặn ở một số khu vực để có thể thu được được ảnh bìa video của danh sách phát, ảnh đại diện kênh, v. v. + Thay đổi giao diện chia sẻ + Chuyển giao diện chia sẻ trong ứng dụng sang của hệ thống. Sử dụng hoạt ảnh kiểu Cairo Sử dụng hoạt ảnh kiểu Cairo khi khởi động ứng dụng. Nhật ký gỡ lỗi diff --git a/src/main/resources/youtube/translations/bg-rBG/strings.xml b/src/main/resources/youtube/translations/bg-rBG/strings.xml new file mode 100644 index 0000000000..c2268a79d4 --- /dev/null +++ b/src/main/resources/youtube/translations/bg-rBG/strings.xml @@ -0,0 +1,1561 @@ + + + + Включване на контролите за достъпност на видеоплеaра? + Вашите контроли са променени, защото е активирана услуга за достъпност. + + Настройки ReVanced + Търсене %s + Експериментални настройки + Желаете ли да продължите? + Рестартирайте, за да заредите оформлението нормално + Опреснете и рестартирайте + Нормално + Име на приложението за изтегляне на видео + Име на пакета на приложението за изтегляне като NewPipe или YTDLnis. + Външна програма за изтегляне + Внимание + "%1$s не е инсталиран. +Моля, изтеглете %2$s от уебсайта." + %s не е инсталирано. Моля инсталирайте го. + + Реклами + Скриване на рекламите в режим на цял екран + Рекламите в режим на цял екран са скрити. + Рекламите в режим на цял екран са показани. + Как да затворите реклами на цял екран + Рекламите на цял екран се затварят чрез бутона Затвори. + "Рекламите на цял екран са блокирани. + +Страничен ефект: Изображенията в публикации в общността може да бъдат блокирани на цял екран." + Рекламите на цял екран са блокирани. (Тип на диалоговия прозорец: %s) + Рекламите на цял екран са затворени. + Скриване на общите реклами + Общите реклами са скрити. + Общите реклами се показват. + Скриване банерите за стоки + Банерите за стоки са скрити. + Банерите за стоки се показват. + Скриване на платените промоции + Промоционалните етикети са скрити. + Промоционалните етикети се показват. + Скриване на самоспонсорирани карти + Самоспонсорираните карти са скрити. + Самоспонсорираните карти се показват. + Скриване на видео рекламите + Видео рекламите са скрити. + Видео рекламите се показват. + Скриване на банера за преглед на продукти + Продуктовите банери са скрити. + Продуктовите банери се показват. + Скриване на резултатите от уеб търсенето + Резултатите от уеб търсенето са скрити. + Резултатите от уеб търсенето са показани. + Скриване на YouTube Premium промоциите + YouTube Premium промоциите са скрити. + YouTube Premium промоциите се показват. + + Алтернативни миниатюри + Начало /Home/ + Абонаменти + Раздел \"Вие\" + Плейлисти, предложения + Резултати от търсенето + Оригинални миниатюри + DeArrow & оригинални миниатюри + DeArrow & Неподвижни кадри + Неподвижни кадри + Относно DeArrow + "DeArrow предоставя миниатюри на публиката за видеоклипове. Тези миниатюри често са по-подходящи от тези, предоставени от самия YouTube. Ако е активирано, URL адресите на видео ще бъдат изпратени до API сървъра, без да се изпращат други данни. Ако видеоклипът няма миниатюри на DeArrow, ще се покажат или неговите оригинални миниатюри, или заснети кадри. Щракнете, за да научите повече за DeArrow." + Показване на известие, ако API не е наличен + Показва се известие, ако DeArrow не е наличен. + Не се показва известие, ако DeArrow не е наличен. + DeArrow API адрес + URL адресът на крайната точка за съхранение на миниатюри DeArrow. + Неподвижни миниатюри + Неподвижните кадри се вземат от началото / средата / края на всяко видео. Тези изображения са вградени в YouTube и не се използва външен API. + Използване на бързо заснемане на кадри + Използват се кадри със средно качество. Миниатюрите ще се зареждат по-бързо, но видеоклипове на живо, неиздадени или много стари може да показват празни миниатюри. + Използване на висококачествени снимки. + Времето на видеоклипа, от който ще бъдат взети кадрите + Начало на видеото + Средата на видеото + Края на видеото + DeArrow временно не е наличен. (код на състоянието: %s) + DeArrow временно не е наличен. + + Ограничения за областта на изображението + Прескочете забраната за зареждане на изображение + Домейнът yt4.ggpht.com се използва за зареждане на изображения. + Оригиналният домейн се използва за зареждане на изображения\n\nАктивирането на тази настройка може да коригира зареждането на изображения, които са блокирани в някои региони. + + Начална страница + Скриване на албумни карти + Албумните карти са скрити. + Албумните карти се показват. + "Скрива следните рафтове: +- Извънредни новини +- Продължете да гледате +- Разгледайте още канали +- Пазаруване +- Гледайте отново" + Скриване на рафта с Препоръчани + Скриване на филмовите рафтове + Филмовите рафтове са скрити. + Филмовите рафтове се показват. + Скриване на показващи се раздели под видеоклипове + Падащите менюта са скрити. + Показват се. + Бутон за субтити + Бутона за субтити е скрит. + Бутона за субтити се показва. + Лента за търсене в емисията + Лентата за търсене в емисията е скрита. + Лентата за търсене в емисията се показва. + Скриване на анкети в емисиите + Анкетите за емисии са скрити. + Анкетите за емисии се показват. + Скриване на рафтовете със снимки + Рафтовете със снимки са скрити. + Рафтовете със снимки се показват. + Скриване на последните постове + Последните постове са скрити. + Последните постове се показват. + Скриване на бутон за последните клипове + Бутона за последните клипове е скрит. + Бутона за последните клипове се показва. + Скриване на микс плейлист + Плейлист микса е скрит. + Плейлист микса се показва. + Скриване на филмовите рафтове + Филмовите рафтове са скрити. + Филмовите рафтове се показват. + Скриване на бутона \"Уведоми ме\" + Бутона \"Уведоми ме\" е скрит. + Бутона \"Уведоми ме\" се показва. + Игри в YouTube + Игри в YouTube са скрити. + Игрите в YouTube се показват. + Скриване на бутона Покажи още + Бутона Покажи още е скрит. + Бутона Покажи още се показва. + Секция на канала в раздела „Публикации“ + Лентата „Абонаменти“ е скрита. + Показва се лентата „Абонаменти“. + Секция за билети + Рафтовете с билети са скрити. + Рафтовете с билети се показват. + + Панел с категорий + Скриване или показване на лентата с категории в емисията, резултатите от търсенето и свързаните видеоклипове. + Скриване на горната лента с категории в емисията + Скриване на горната лента с категории в емисията. + Показване на горната лента с категории в емисията. + Скриване в сродни видеоклипове + Сродните видеоклипове са скрити. + Свързани видеоклипове се показват. + Скриване на резултатите от уеб търсенето + Резултатите от търсенето са скрити. + Резултатите от търсенето соказват. + + Страница на канала + Скриване или показване на елементи на страницата с канали. + Използвайте филтър за раздели на канали + Филтърът за раздела на канала е активиран. + Филтърът за раздела на канала е деактивиран. + Промяна на филтъра за раздели на канала + Разделен с нов ред списък с имена на раздели, на страници, на канали за филтриране. + "Примери: + Shorts +Плейлисти +Маркет" + Бутон за разглеждане на магазина + Бутон за разглеждане на магазина е скрит. + Бутон за разглеждане на магазина се показва. + Скриване на секцията с членуващи + Рафта с членуващи е скрит. + Рафта с членуващи се показва. + Скриване на връзките към канала + Връзките в горната част на профила на канала са скрити. + Показани са в горната част връзки към профила на канала. + Скриване на секцията \'За Вас\' + Секцията \'За Вас\' е скрита. + Секцията \'За Вас\' се показва. + + Публикации в общността + Скрийте или покажете публикации в общността в емисията и канала. + Скриване на страницата на канала + Скрит в канала. + Показват се в канала. + Скриване в емисията свързаните видеоклипове + Свързаните видеоклипове са скрити. + Свързаните видеоклипове се показват. + Публикации в общността и в абонаменти + Скрит в емисията „Абонаменти“. + Показва се в емисията „Абонаменти“. + + Падащо меню + Скрийте или покажете компонентите на падащото меню в лентата с помощта на филтър. + Филтър за изскачащо меню на лентата + Изскачащите менюта за емисии са включени. + Изскачащите менюта за емисии са изключени. + Филтър за изскачащо меню на лентата + Разделен с нов ред списък с имена на раздели, на страници, на канали за филтриране. + + Видео филтри + Скриване на видеоклипове въз основа на ключови думи, брой гледания или тяхната продължителност. + + Филтър по ключова дума + Скриване на видеоклипове в началната страница с ключови думи + Видеоклиповете в раздела Начало се филтрират с помощта на ключови думи. + Видеоклиповете в раздела Начало не се филтрират по ключови думи. + Скриване на резултати от търсения с ключови думи + Резултатите от търсенето се филтрират с помощта на ключови думи. + Резултатите от търсенето не се филтрират по ключови думи. + Скриване на видеоклипове от абонаменти с ключови думи + Видеоклиповете в емисията за абонаменти се филтрират. + Видеоклиповете в емисията за абонаменти не се филтрират. + Скриване на коментари по ключови думи + Коментарите се филтрират. + Коментарите не се филтрират. + Ключови думи, които да бъдат скрити + "Ключови думи и фрази, които да бъдат скрити, разделени с нови редове\n\nДуми с главни букви в средата трябва да бъдат въведени с големи букви (например: iPhone, TikTok, LeBlanc)." + За филтриране с ключови думи + "Началната страница, публикациите и резултатите от търсенето се филтрират, за да се скрие съдържание, което съответства на ключови думи. +Ограничения: +•Някои Shorts може да не са скрити. +• Някои елементи на потребителския интерфейс може да не са скрити. +• Търсенето на дума -ключ може да не покаже никакви резултати." + Невалидна ключова дума. Не може да се използва: „%s“ като филтър + Невалидна ключова дума. „%1$s“ е по-малко от %2$d знака. + Ключовата дума „%1$s“ ще скрие всички видеоклипове. + + Препоръчани видеоклипове + Скриване на Препоръчани видеоклипове + "Скрива следните препоръчани видеоклипове: + +• С етикет „Само за членове“. +• С фрази като „Хората също са гледали“ под видеоклипа. +• От канали, за които не сте абонирани (по-малко от 1000 гледания)." + Скриване на видеоклипове с малко гледания + Скрийте видеоклипове с по-малко от 1000 гледания от емисията и от канали, за които сте се абонирали. + + Филтриране по продължителност + Скриване на видеоклипове въз основа на тяхната продължителност + Скрийте видеоклипове, по-кратки или по-дълги от предпочитанията ви.\n\nИзвестен проблем: Не работи с предложени видеоклипове под плейъра, но ще скрие клеймото им за време. + Продължителност, по-голяма от посочената + Видеоклиповете с по-голяма продължителност ще бъдат скрити. + Ограничение за минимална продължителност + Видеоклиповете с по-малка продължителност ще бъдат скрити. + + Филтрирайте по брой гледания + Скриване на видеоклипове въз основа на броя гледания + Скрийте видеоклиповете с по-малко или повече гледания от предпочитанията ви.\n\nИзвестен проблем: Видеоклиповете с 0 гледания не са правилно филтрирани. + Ограничение за максимален брой гледания + Видеоклиповете с повече гледания от този брой няма да бъдат показани. + Минимално ограничение за гледане + Видеоклиповете с повече гледания от този брой ще бъдат скрити. + Ключове за редактиране + Езиков шаблон за брой изгледи (букви/дума на вашия език) -> стойност (ключова стойност) трябва да е на нов ред преди знака \"->\". Ако превключите езика на приложението или системата, трябва да нулирате тази настройка.\n\nПримери:\nEnglish: 10K views = K -> 1000, views -> views\nБългарски: 10 K показвания = K -> 1000, показвания -> views + K -> 1 000\nM -> 1 000 000\nB -> 1 000 000 000\nviews -> views + + Основни настройки + Промяна на началната страница + Разглеждане на канала + По подразбиране + Проучване + Игри + История + Библиотека + Харесани + На Живо + Филми + Музика + Търсене + Shorts + Спорт + Абонаменти + Популярни + За Гледане по-късно + Невалидна начална страница, нулиране по подразбиране. + Принудителните автоматични аудио пътеки са деактивирани + Задължителните аудио записи са деактивирани. + Задължителните аудио записи са активирани. + Изкл. принудителни автоматични субтититри + Принудителните автоматични субтититри са изключени. + Принудителните автоматични субтититри са включени. + Анимация при стартиране на приложението + Новата начална анимация е изключена. + Новата начална анимация е включена. + Градиентен екрана за зареждане + Екранът за зареждане с градиент е активиран. + Екранът за зареждане с градиент е деактивиран. + Плаващ бутон за микрофона + Плаващия бутон за микрофона е скрит. + Плаващия бутон за микрофона се показва. + Скриване на сивия разделител + Сивите разделители са скрити. + Сивите разделители са показани. + Скриване на лентата за състояние + Лентата на състоянието е скрита. + Лентата на състоянието се показва. + Прозорец за възрастово ограничение + "Премахва диалоговите прозорци. Това не заобикаля възрастовите ограничения, но ги приема автоматично." + Вкл. на оформление като на телефон + Подлъгване на dpi за оформление като на телефон. + Вкл. на режим за таблет + Подлъгване на dpi за оформление като на таблет. + Действие на бутона \"Изтегляне\" за видео + Бутонът за изтегляне от YouTube отваря вашата външна програма за изтегляне. + Бутонът за изтегляне на YouTube отваря собствената програма за изтегляне на приложението. + Преназначаване на бутона за изтегляне на плейлист + Бутонът за изтегляне от YouTube отваря вашата външна програма за изтегляне. + Бутонът за изтегляне на YouTube отваря собствената програма за изтегляне на приложението. + Име на приложението за изтегляне + Име на пакета на приложението за изтегляне като NewPipe или YTDLnis. + Променете версията на приложението + Подправена версия + Не подправена версия + "Версията на приложението YouTube ще бъде променена на по-стара. +Това ще промени външния вид и функциите на приложението, но ако по-късно се деактивира, се препоръчва да изчистите данните на приложението, за да избегнете грешки в потребителския интерфейс." + Редактирайте версията на приложението, която да бъде приложена + Въведете версията на приложението, която да се приложи. + Версия за модификация на приложението + 17.30.34 - Възстановява стария изглед + 17.41.37 - Връщане на секцията с плейлиста към стария стил + 18.05.40 - Възстановяване на старото поле за писане на коментари + 18.17.43 - Възстановяване на стария стил на изскачащия панел + 18.33.40 - Възстановяване на старата лентата с действия за Shorts + 18.38.45 - Възстановяване на старото поведение на качеството на видеото по подразбиране + 18.48.39 - Деактивира изгледите и харесванията да се актуализират в реално време + + Меню на акаунта + Скриване или показване на елементи в менюто на акаунта и раздела Вие. + Скриване на менюто на акаунта + "Скриване на елементи от менюто на акаунта и раздела \"Вие\". +Някои компоненти не могат да бъдат скрити." + Промяна на филтъра на менюто на акаунта + Разделен с нов ред списък с имена на раздели, на страници, на канали за филтриране. + Скриване на връзки + Идентификаторът е скрит. + Идентификаторът се показва. + + Потребителски филтър + Скриване на компоненти с помощта на потребителски филтри. + Активиране на потребителските филтри + Потребителският филтър е активиран. + Потребителският филтър е деактивиран. + Потребителски филтър + + Списък с низове за изграждане на пътя на компонента, които да се филтрират, разделени с нов ред. + Невалиден потребителски филтър: %s. + + Минимизиран екран за възпроизвеждане + Променете стила на минимизирания екран за възпроизвеждане. + Минимизиран тип екран за гледане + Оригинал + Телефон + Таблет + Модерен 1 + Модерен 2 + Модерен 3 + Действие с двойно докосване + "Действието с двойно докосване е активирано. + +• Докоснете двукратно, за да промените минимизирания видеоклип към по-голям размер. +• Докоснете два пъти още веднъж, за да промените към оригиналния размер." + Действието с двойно докосване е деактивирано. + Разрешете плъзгане и местене на мини-плеера + Активирано е минимизирано плъзгане и пускане на екрана. + Деактивирано минимизирано плъзгане и пускане на екрана. + Бутони за разширяване и свиване на екрана + Бутоните са скрити.\n(плъзнете миниплейъра, за да разширите или затворите) + Бутони за разширяване и свиване на екрана са видими. + Възпроизвеждане на екранни текстове, етикети + Подтекстовете са скрити. + Подтекстовете се показват. + Бутони за напред и назад + Бутони за напред и назад са скрити. + Бутони за напред и назад са показани. + Прозрачност на менютата + Стойност на прозрачност между 0-100, където 0 е прозрачно. + Прозрачността на менюто на плейъра трябва да бъде между 0-100. Нулирайте стойностите по подразбирне. + + Бутони за навигация + Скриване или показване на елементи от лентата за навигация. + Бутони за навигация в тесен стил + Разстоянието между бутоните за навигация е по-тясно. + Разстоянието между бутоните за навигация ежнормално. + Бутон Създай клип + Бутонът за създаване е скрит. + Бутона за създаване се показва. + Скриване на бутон за Начало + Бутона за начало е скрит + Бутона за начало се показва + Бутона за Библиотека + Бутона за библиотека е скрит + Бутона за библиотека се показва + Бутон за Известия + Бутонът за известия е скрит. + Бутонът за известия се показва. + Бутон кратки клипове Shorts + Бутона за кратки клипове е скрит. + Бутона за кратки клипове се показва. + Бутона за Абонаменти + Бутона за абонаменти е скрит. + Бутона за абонаменти се показва. + Навигационен панел + Навигационния панел е скрит. + Навигационния панел се показва. + Разменете бутоните „Създаване“ с „Известия“ + "Разменя позициите на бутона Създаване с бутона Известия чрез подправяне на информация за устройството. + +• Може да се наложи устройството да се рестартира, за да влезе в сила промяната на тази настройка. +• Деактивирането на тази настройка зарежда повече реклами от страната на сървъра. +• Трябва да деактивирате тази настройка, за да направите видео рекламите видими." + Полупрозрачна лента за навигация + Навигационната лента е полупрозрачна. + Навигационната лента е непрозрачна. + + Меню с настройки + Скриване на елементи в менюто с настройки на YouTube. + Филтриране на менюто с настройки на YouTube + Скриване на елементи в менюто с настройки на YouTube. + Филтър на менюто с настройки на YouTube + Списък с заглавия на менюта с настройки на YouTube за филтриране, разделени с нов ред. + "Акаунт +Спестяване на данни +Субтитри" + + Лента с инструменти + Скрива или променя елементи, разположени в лентата с инструменти, като бутони на лентата с инструменти, лента за търсене, заглавия. + Промяна на логото на YouTube + Включен логотип Premium. + Включен стандартен логотип. + Широка лента за търсене + Широката лента за търсене е включена + Широката лента за търсене е изключена + Широка лента за търсене с лого + Логото на YouTube се появява до широката лента за търсене. + Широка лента за търсене замества логото на YouTube. + Активирайте широката лента за търсене в раздела \"Вие\" + "Тази опция ще деактивира бутона \"Настройки\" в раздела \"Вие\" +Използвайте следната последователност: +раздел \"Вие\" -> Страница на канала -> Меню -> Настройки" + Скриване на бутона за предаване на Тв + Бутонът за предаване е скрит. + Бутонът за предаване се показва. + Бутон Създай клип + Бутонът за създаване е скрит. + Бутона за създаване се показва. + Бутон за Известия + Бутонът за известия е скрит. + Бутонът за известия се показва. + Подсказки, миниатюри на думи за търсене + Миниатюрите в историята на търсене са скрити. + Показват се миниатюри в историята на търсене. + Бутон за търсене на изображения + Бутон за търсене на изображения е скрит. + Бутон за търсене на изображения се показва. + Бутон за \"гласово търсене\" + Бутон за гласово търсене на е скрит. + Бутон за гласово търсене се показва. + Заменете бутона \"Създаване\" + Заменете „Създаване“ с бутон за настройки. + Action à attribuer au bouton + "Докоснете, за да отворите настройките на RVX. +Докоснете и задръжте, за да отворите настройките на YouTube." + "Докоснете, за да отворите настройките на YouTube. +Докоснете и задръжте, за да отворите настройките на RVX." + + Плейър + Прозрачност на на плейъра + Стойност на прозрачност между 0-100, където 0 е прозрачно. + Непрозрачността на наслагването на плейъра трябва да бъде между 0-100. Нулирайте стойностите по подразбиране. + Изскачащи прозорци на плейъра + Изскачащите панели на плейъра са деактивирани. + Изскачащите панели на плейъра са активирани. + Скрива бутона за скорост + "Деактивирайте „Възпроизвеждане с 2x>> скорост при продължително натискане. + +Бележки: +• Активирането на тази настройка ще възстанови функцията „Плъзнете наляво или надясно за търсене“. +• Деактивирането на тази настройка не налага активирането на скоростния интерфейс." + Стойност на скоростния интерфейс + Стойност на скоростта, приложена при продължително натискане, между 0 и 8,0. + Скоростта трябва да е между 0-8.0, нулирайте. + Воден знак на канала + Водният знак на канала е скрит. + Водният знак на канала се показва. + Дарителска кутия + Кутията за дарения е скрита. + Кутията за дарения се показва. + Докоснете два пъти, за да скриете филтъра за наслагване + Филтърът за наслагване с двойно докосване е скрит. + Филтърът за наслагване с двойно докосване се показва. + Скриване на препоръките в края + Препоръките в края са скрити + Препоръките в края се показват + Скриване на филмовата лента + Филмовата лента е скрита + Филмовата лента се показва. + Скриване на инфо. карти + Информационните карти са скрити. + Информационните карти се показват. + Скриване на информационните панели + Информационните панели са скрити. + Информационните панели се показват + Съобщения за чат на живо + Съобщенията в чата на живо са скрити.\n\nТази настройка се отнася и за кратки видеоклипове на живо. + Показват се съобщения от чат на живо.\n\nТази настройка се отнася и за кратки видеоклипове на живо. + Медицински информационен панел + Медицински панел скрит. + Медицински панел се показва. + Скриване на съобщение при превъртане + Съобщението при превъртане е скрито. + Съобщението при превъртане се показва. + Съобщение при пренавиване + Съобщение при пренавиване е скрито. + Съобщение при пренавиване се показва. + Препоръчителни действия + Предложенията за действе са скрити + Предложенията за действе се показват. + Скриване на времевите реакции + Времевите реакции са скрити. + Времевите реакции се показват. + Препоръчан видеоклип в края на възпроизвеждането + "Екранът за предложения на видеоклипове е скрит, когато автоматичното пускане е изключено. + +Автоматичното пускане може да се промени в настройките на YouTube: +Настройки → Автоматично пускане → Автоматично пускане на следващия видеоклип" + Препоръчаният видеоклип се показва в края на възпроизвеждането. + Интерфейс за мащабиране + Интерфейс за мащабиране ескрит. + Интерфейс за мащабиране се показва. + Незабавно автоматично пускане + Ако автоматичното пускане е активирано, следващият видеоклип ще се възпроизведе веднага. + Ако автоматичното пускане е активирано, следващият видеоклип ще се възпроизведе след края на обратното броене. + + Бутони за действие + Скриване или показване на бутони за действие под видеоклипове. + Изключете подсветката на бутоните „Харесвам“ и „Не харесвам“ + Бутоните \"Харесвам\" и \"Не харесвам\" няма да светят, когато бъдат натискани. + Бутоните \"Харесвам\" и \"Не харесвам\" ще светят, когато бъдат натискани. + Скриване на бутона за клип + Бутона за клип е скрит. + Бутона за клип се показва. + Скриване на бутона за изтегляне + Бутона за изтегляне е скрит. + Бутона за изтегляне се показва. + Скриване на бутоните за харесване и нехаресване + Бутоните \"Харесвам\" и \"Не харесвам\" са скрити. + Бутоните \"Харесвам\" и \"Не харесвам\" се показват. + Скриване на бутона за ремикс + Бутона за ремикс е скрит. + Бутона за ремикс се показва. + Скриване на бутона за докладване + Бутона са докладване е скрит. + Бутона са докладване се показва. + Бутон \"Награди\" + Бутона за наградите е скрит. + Бутона за наградите се показва. + Бутон \"Запазване\" + Бутон \"Запазване\" е скрит. + Бутон \"Запазване\" се показва. + Скриване на бутона за споделяне + Бутона за споделяне е скрит. + Бутона за споделяне се показва. + Скриване на бутона за пазаруване + Бутона за пазаруване е скрит + Бутона за пазаруване се показва + Скриване на бурона за благодарност + Бутона за благодарност е скрит. + Бутона за благодарност се показва. + + Подсветка около видеото + Изключете подсветка около видеото или прескочете ограничението в режим за пестене на батерията. + Заобикаляне на ограниченията за подсветка около видеото + Подсветката около видеото е включен при пестене на енергия. + Подсветката около видеото е изключен при пестене на енергия. + Деактивирайте подсветката около видеото + Подсветка около видеото е деактивирана. + Подсветка около видеото е активирана. + Деактивирайте подсветка около видеото на цял екран + Подсветка около видеото е деактивирана на цял екран. + Подсветка около видеото е активиран на цял екран. + + Панел на канала + Скрийте или покажете елементи от лентата на канала под видеоклипа. + Скриване на бутон за присъединяване + Бутона за присъединяване е скрит + Бутона за клип се показва. + Скриване на бутона за стартиране на пробен период + Бутона за пробен период е скрит. + Бутона за пробен период се показва. + + Коментари + Скриване или показване на секцията за коментари. + Скриване на насоките на канала + Насоките на канала са скрити. + Насоките на канала се показват. + Скриване на банер за коментари от членове + Банера за коментари от членове е скрит. + Банера за коментари от членове се показва. + Скриване на секцията с коментари + Секцията с коментари е скрита. + Секцията с коментари се показва. + Скриване на секцията с коментари в началната емисия + Секцията с коментари в началната емисия е скрита. + Секцията с коментари в началната емисия се показва. + Скр. преглед на коментар + Прегледа на коментар е скрит. + Прегледа на коментар се показва. + Скриване на типа коментар за визуализация + Това не променя размера на секцията за коментари, така че е възможно да отворите повторението на чата на живо в секцията за коментари. + Това преоразмерява секцията за коментари, така че е невъзможно да се отвори повторението на чата на живо в секцията за коментари. + Бутон за създаване на Shorts + Бутонът за създаване на Кратко видео е скрит. + Бутонът за създаване на Кратко видео се показва. + Скриване на бурона за благодарност + Бутона за благодарност е скрит. + Бутона за благодарност се показва. + Скриване на инструмента за избор на емоджи и клеймо за време + Бутоните за клеймо за време и емотикони са скрити. + Бутоните за клеймо за време и емотикони се показват. + + Падащо меню + Скриване или промяна на елементи от изскачащото меню на екрана на видеоплейъра. + Промяна на типа превключване на настройките + Използват се превключващи бутони с текст. + Използват се бутони за превключване. + Меню на аудио + Менюто “Audio Track” е скрито. + Менюто “Audio Track” се показва. + Скриване на менюто за субтитри + Менюто за субтитрие скрито. + Менюто за субтитрие се показва. + Скриване на менюто за избор на качество + Долният колонтитул на менюто с надписи е скрит. + Долният колонтитул на менюто с надписи се показва. + Скриване меню на заключен екран + Менюто на заключен екран е скрито. + Менюто на заключен екран се показва. + Меню за повече информация + Менюто за повече информация е скрито. + Менюто за повече информация се показва. + Меню за скорост на видеото + Менюто за скорост на видеото е скрито. + Менюто за скорост на видеото се показва. + Скриване на подсказка в менюто за избор на качество + Предложение в менюто за избор на качество е скрито. + Предложение в менюто за избор на качество се показва. + Скриване на подсказка в менюто за избор на качество + Предложение в менюто за избор на качество е скрито. + Предложение в менюто за избор на качество се показва. + Скрий Меню за докладване + Менюто за докладване е скрито. + Менюто за докладване се показва. + + Допълнителни настройки + Подсветка около видеото + Менюто за подсветка около видеото е скрито. + Менюто за подсветка около видеото се показва. + Скриване на менюто & за помощ + Менюто & за помощ е скрито. + Менюто & за помощ се показва. + Скриване на менюто слушане с YouTube Music + Слушане с YouTube Music е скрито. + Слушане с YouTube Music се показва. + Скриване на менюто за повторение + Менюто за повторение е скрито. + Менюто за повторение се показва. + Меню \"Картина в картината\" + Менюто Картина в картината е скрито. + Менюто Картина в картината се показва. + Скриване на менюто за премиум контроли + Менюто за премиум контроли е скрито. + Менюто за премиум контроли се пказва. + Скрийте елемента \"Стабилно ниво на звука\" + Стабилно ниво на звука се показва. + Постоянно ниво на звука е скрито. + Меню \"Статистика за сис. администратори\" + Менюто \"Статистика за системни администратори\" е скрито. + Менюто \"Статистика за системни администратори\" се показва. + Меню за гледане в VR + Менюто за гледане в VR е скрито. + Менюто за гледане в VR се показва. + + Цял екран + Скрийте или променете елементи, свързани с режим на цял екран. + Панел за взаимодействие + Панелът за взаимодействие е деактивиран. + Панелът за взаимодействие е активиран. + Показване на раздел със заглавие на видеоклипа + "Показва раздела със заглавието на видеоклипа на цял екран. + +Ограничение: Заглавието на видеоклипа изчезва при щракване." + Скриване на прегледа на авт. изпълнение + Прегледа на авт. изпълнение е скрит. + Прегледа на авт. изпълнение се показва. + Бутон за повторение на чата на живо + Бутонът за повторно възпроизвеждане на чат на живо е скрит.\n\nНе се появява на цял екран при затваряне на чат на живо. + Бутонът за повторно възпроизвеждане на чат на живо се показва.\n\nНе се появява на цял екран при затваряне на чат на живо. + Свързани видеоклипове + Скрит. +Скрива раздела с още видеоклипове в бързи действия и свързани видеоклипове. + Показан. +Има предвид раздела за още видеоклипове в бързи действия и свързани видеоклипове. + + Бързи действия + Скриване на меню с Бързи действия + Бързи действия са скрити. + Бързи действия се показват. + Скриване на бутона за коментари + Бутон за коментари е скрит. + Бутона за коментиране се показва. + Скриване на бутона за нехаресване + Бутона за нехаресване е скрит. + Бутона за нехаресване се показва. + Скриване на бутона за харесване + Бутона за харесване е скрит. + Бутона за харесване се показва. + Скриване на бутона за чат + Бутона за чат е скрит. + Бутона за чат се показва. + Скриване на бутон за Още + Бутона за повече е скрит. + Бутона за повече се показва. + Скриване на бутона за отваряне на микс плейлист + Бутона за микс плейлист е скрит. + Бутонът за отваряне на микс плейлист се показва. + Скриване на бутона за плейлист + Бутона за микс плейлист е скрит. + Бутонът за отваряне на плейлиста се показва. + Бутон \"Запазване\" + Бутон \"Запазване\" е скрит + Бутон \"Запазване\" се показва + Скриване на бутона за споделяне + Бутона за споделяне е скрит. + Бутона за споделяне се показва. + Височина на лентата за напредък + Промяна на височината на лентата за прогрес, стойности между 0-32. + Височината трябва да е между 0-32, нулиране. + + Пейзажен режим при отиване на цял екран + Пейзажният режим в режим на цял екран е деактивиран. + Пейзажният режим в режим на цял екран е активиран. + Вкл. компактни контроли + По-малките стилови контроли са активирани. + По-малките стилови контроли са деактивирани. + Принудително винаги на цял екран + "Видеоклиповете ще превключат в режим на цял екран в следните случаи: + +• Когато започне видео. +• Когато се натисне клеймо за време в коментарите." + Запазете пейзажен режим + Запазва пейзажен режим при изключване и включване на цял екран. + Запазване на времето за изчакване в пейзажен режим + Броят милисекунди, за да принудите пейзажния режим да работи. + + Вибрация при докосване (обратна връзка) + Деактивирайте или активирайте вибрационен отговор за събития. + Изкл. вибрация за обратна връзка при главите + Вибрация за обратна връзка е изключена. + Вибрация за обратна връзка е включена. + Изкл. вибрация при плъзгащи контроли + Вибрация за обратна връзка е изключена. + Вибрация за обратна връзка е включена. + Изкл. хаптична обратна връзка при превъртане + Вибрация за обратна връзка е изключена. + Вибрация за обратна връзка е включена. + Изкл. вибрация за обратна връзка при превъртане + Вибрация за обратна връзка е изключена. + Вибрация за обратна връзка е включена. + Изкл. вибрация при зум + Вибрация за обратна връзка е изключена. + Вибрация за обратна връзка е включена. + + Бутони на екрана за възпроизвеждане + Скриване или показване на бутони на екрана на видеоплейъра. + Скриване на бутона за авто. изпълнение + Бутона за авто. изпълнение е скрит. + Бутона за авто. изпълнение се показва. + Скриване на бутона за Субтитри + Бутона за субтити е скрит. + Бутона за субтити се показва. + Скриване на бутона за предаване на Тв + Бутонът за предаване е скрит. + Бутонът за предаване се показва. + Бутон за минимизиране + Бутон за минимизиране е скрит. + Бутон за минимизиране се показва. + Бутон за Цял екран + Бутон за цял екран е скрит. + Бутон за цял екран се показва. + Скриване предишен & следващ бутон + Бутоните са скрити. + Бутоните се показват. + Скриване на бутона за YouTube Music + Бутрона за YouTube Music е скрит. + Бутрона за YouTube Music се показва. + + Добавете бутони към екрана за възпроизвеждане + Показване бутон за авт. повторение + "Докоснете, за да превключите повторение +Докоснете и задръжте, за да превключите на пауза след повтарвне." + Показване на бутона за копиране на URL адреса на видеоклипа + "Докоснете, за да копирате URL адреса на видеоклипа +Докоснете и задръжте, за да копирате URL адреса на видеоклипа с маркер за време." + Копиране на връзка с времеви печат + "Натиснете, за да копирате URL адреса на видеоклипа с клеймо за време. +Натиснете и задръжте, за да копирате клеймо за време." + Бутон за изключване на звука + Натискането на бутона изключва/включва звука на текущото видео. + Показване на бутона за изтегляне чрез външно приложение + Докоснете за избор на външно свалящо приложение. + Показване бутон за скорост + "Бутон за регулиране на скоростта на възпроизвеждане. Натиснете, за да отворите прозореца за промяна на скоростта на възпроизвеждане 1.0x." + Пок. бутон за \"Бял списък\" + Натиснете - Отворете \"Бял списък\". +Натиснете и задръжте - Отворете настройките на \"Бял списък\". + Бутон за показване на подредени по време плейлисти + "Докоснете, за да генерирате плейлист с всички видеоклипове в канала от най-старите до най-новите, натиснете продължително, за да отмените." + Добавяне на канал към белия списък + Проверка или премахване на листа с канали доб. в белия списък. + Каналът %1$s е добавен в %2$s белия списък. + Неуспешно добавяне на \"%1$s\" канала към %2$s белия списък. + Каналът \"%1$s\" е премахнат от %2$s белия списък. + Неуспешно премахване на канала %1$s от %2$s белия списък. + Премахване на канала „%1$s“ от белия списък на %2$s? + Няма канали в белия списък. + Не е добавен в Бял списък. + Добавен към белия списък. + Скорост на възпроизвеждане + SponsorBlock + Неуспешно зареждане на информация за канала. + Нулиране на скоростта на възпроизвеждане: %sx. + Натиснете продължително, за да промените състоянието на бутона. + Времевата отметка е копирана в клипборда. (%s) + Връзката е копирана в клипборда. + URL адрес с отметка за време, копиран в клипборда. + + Времева Скала на възпроизвеждане + Конфигуриране на компоненти Скалата за възпроизвеждане. + Индикатор на времето за възпроизвеждане + Индикатор на времето за възпроизвеждане е Вкл. + Индикатор на времето за възпроизвеждане е Изкл. + Добавете тип информация + Индикатор за качество на видеото. + Индикатор за скорост на възпроизвеждане. + Променя действието на индикатора за време + Докоснете, за да отворите менюто за скорост на възпроизвеждане или качество на видеото. + Докоснете, за да видите оставащото време. + Промяна на цвета на индикатора за време + Стойността за избор на цвят на лентата за време е включена. + Стойността за избор на цвят на лентата за време е изключена. + Стойност по избор за цвят на лентата за време + Въведете кода за цвят на лентата за време. + Активиране на докосването на лентата за време + Докосването на лентата за време е включено. + Докосването на лентата за време е изключено. + Скриване на лента за време на плейъра + Лентата за време на плейъра е скрита. + Лентата за време на плейъра се показва. + Миниатюри на лентата за възпроизвеждане + Миниатюрите са скрити. + Миниатюрите се показват. + Заглавие в лентата за напредък + Главите са скрити. + Главите се показват. + Времево клеймо на видеоклипа + Времето клеймо е скрито. + Клеймо за време се показва. + Стари миниатюри на времевата линия + Над лентата за възпроизвеждане се появяват миниатюри. + Миниатюрите се показват в режим на цял екран. + Лента за прогрес на тема Кайро + "Лентата за прогрес на тема Кайро е активирана. +Страничен ефект: +Темата Кайро се прилага и към точките за известия." + Темата Кайро в лентата за напредък е деактивирана. + + Описание на видеото + Скриване или показване на компонентите от описанието на видеоклиповете. + Анимация на числа в реално време + Анимацията на числа в реално време е деактивирана. + Анимацията на числа в реално време е активирана. + Раздел с функции + Секциите „Популярни места“, „Игри“ и „Музика“ под описанието са скрити. + Показват се секциите „Популярни места“, „Игри“ и „Музика“ под описанието. + Скриване на секцията с глави + Разделът със секции е скрит. + Секцията с заглавия се показва. + Секция със съдържание + Разделът „Как е създадено това съдържание“ е скрит. + Появява се. + +Относно раздела „Как е създадено това съдържание“. + Скриване на раздела за информационни карти + Разделът за информационни карти е скрит. + Разделът за информационни карти е показан. + Раздел „Ключови понятия“ + Раздел „Ключови понятия“ са скрити. + Раздел „Ключови понятия“ се показват. + Скрийте секцията „Подкасти“ + Разделът „Подкасти“ е скрит. + Показва се секцията „Подкасти“. + Скриване на връзки за пазаруване + Връзките за пазаруване са скрити. + Връзките за пазаруване се показват. + Скриване на раздела за транскрипция + Разделът за транскрипция е скрит. + Разделът за транскрипция е показан. + + Деактивирайте взаимодействието с описание на видеоклипа + "Деактивирайте следните взаимодействия, когато се отвори описанието на видеоклипа: + +• Докоснете за превъртане. +• Натиснете продължително, за да изберете текст." + Автоматично отваряне на видео описание + Описанието на видеоклипа се отваря автоматично. + Описанието на видеоклипа не се отваря автоматично. + Заглавие в панела с описание на видеоклипа + "Въведете заглавие в описанието на видеоклипа на вашия език. +Опцията „Отваряне на описанието автоматично“ може да не работи, ако стойността на заглавието не съвпада със заглавието в описанието." + Описание + + Shorts + Скриване на Shorts плейъра при стартиране на приложението + Shorts плейъра при стартиране на приложението е скрит. + Shorts плейъра при стартиране на приложението се показва. + + Shorts рафтове + Скрийте рафтовете Shorts + "Скрива рафтовете за кратки видеа + +Известен проблем: Официалните заглавки в резултатите от търсенето са скрити." + Скриване в „начало“ и „подобни видеоклипове“ + Скрити в емисиите „начало“ и „подобни видеоклипове“. + Показва се в емисиите „начало“ и „подобни видеоклипове“. + Скриване в емисията „Абонаменти“ + Лавицата за кратки видеоклипове в емисията за абонаменти е скрита. + Показва се в емисията „Абонаменти“. + Скриване на резултатите от уеб търсенето + Резултатите от търсенето са скрити. + Резултатите от търсенето се показват. + Скриване в историята на гледане + Скрити в историята на гледане. + Показват се в историята на гледане. + + Промяна на състоянието - повторение на Shorts + Автоматично изпълнение + По подразбиране + Пауза + Повтори + + Плейър за кратки клипове + Скриване или показване на компоненти в Shorts плейъра. + Скриване на бутон за присъединяване + Бутона за присъединяване е скрит. + Бутона за присъединяване се показва + Скрийте бутона „Абониране“ + Бутонът „Абониране“ е скрит. + Показва се бутонът „Абониране“. + Скриване на заглавието на пауза + Заглавието на пауза е скрито. + При поставяне на пауза заглавие не се скрива. + Показване на бутони при пауза + Бутоните при пауза се скриват. + Бутоните при пауза се показват. + Скриване на платените промоции + Промоционалните етикети са скрити. + Промоционалните етикети се показват. + Скриване на бутона за пазаруване + Бутона за пазаруване е скрит. + Бутона за пазаруване се показва. + Бутон \"Специални благодарности\" + Бутон \"Специални благодарности\" е скрит. + Бутон \"Специални благодарности\" се показва. + Скриване на маркираните продукти + Маркираните продукти са скрити. + Маркираните продукти се показват. + Етикет за местоположение + Етикет за местоположение е скрит. + Етикет за местоположение се показва. + Бутон за запазване на аудиото в плейлиста + Бутонът за Запазване в плейлиста е скрит. + Бутонът за Запазване в плейлиста се показва. + Скриване на предложенията за търсене + Предложенията за търсене са скрити. + Предложенията за търсене се показват. + Скриване на информационните панели + Информационните панели са скрити. + Информационните панели се показват. + Скриване на раздела на чата на живо + Раздела Чата на живо е скрит.\n\nБутонът за връщане назад в Раздел няма да бъде скрит. + Показва се раздела Чата на живо.\n\nБутонът за връщане назад в раздела няма да бъде скрит. + Скриване на лентата на канала + Лентата на канала е скрита. + Лентата на канала е показана. + Заглавие на видеото + Заглавието е скрито. + Заглавието се показва. + Скриване на музикални метаданни + Метаданни са скрити. + Метаданни се показват. + Скриване на етикет за връзка към видеоклипа + Етикетът за видео връзка е скрит. + Етикетът за видео връзка се показва. + + Бутони за действие + Скриване на бутона за харесване + Бутона за харесване е скрит. + Бутона за харесване се показва. + Скриване на бутона за нехаресване + Бутона за нехаресване е скрит. + Бутона за нехаресване се показва. + Скриване на бутона за коментари + Бутон за коментари е скрит. + Бутон за коментари се показва. + Скриване на бутона за ремикс + Бутона за ремикс е скрит. + Бутона за ремикс се показва. + Скриване на бутона за споделяне + Бутона за споделяне е скрит. + Бутона за споделяне се показва. + Скрийте бутона „Звук“ + Бутона за Звук е скрит. + Бутона за Звук се показва. + + Анимация / Обратна връзка + Скриване на фона на бутона за възпроизвеждане & и пауза + Фонът на бутоните е скрит. + Показва се фонът на бутоните. + Анимация на двойно докосване + Оригинал + Харесва ми + Палец нагоре (тема Кайро) + Сърце + Сърце (цветно) + Скрит + + Активиране на дата и час + "Времевите показатели са активирани. +Ограничения: +• Тази настройка позволява не само времеви показатели, но позволява скриване на елементи от потребителския интерфейс чрез докосване на фона на екрана за възпроизвеждане. +• Тъй като това е функция на Google, която все още се разработва, оформлението може да се развали." + Времевите показатели са деактивирани. + Продължително натискане на времето + Натиснете и задръжте клеймото за време, за да превключите състоянието на повторение на Shorts. + Долно поле на \"мета\" панела + Отстъп от лентата за възпроизвеждане към панела „мета“ Диапазон от 0 до 64. + Полето в долната част на мета панела трябва да е между 0-64, Нулирайте по подразбиране. + Скриване на лентата с инструменти + Лента с инструменти е скрита. + Лента с инструменти се показва. + Скриване лентата за навигация + Навигационната лента е скрита. + Навигационната лента се показва. + Заменете псевдонима на канала + Използва се името на канала. + Използва се псевдонимът на канала. + + Плъзгащи контроли + Управление авто-яркост с жестове + Когато намалите яркостта с жест до минимум, се активира автоматична яркост. + Когато намалите яркостта с жест до минимум, автоматичната яркост Не се активира. + Задаване на яркост чрез плъзгане + Задаването на яркост чрез плъзгане е включено. + Задаването на яркост чрез плъзгане е изключено. + Настройване на звука чрез плъзгане + Настройването на звука чрез плъзгане е включено. + Настройването на звука чрез плъзгане е изключено. + Вкл. запазване и възстановяване на яркост + Запазване и възстаовяване яркостта при включване или изключване на цял екран. + Не се запазва или възстаовява яркостта при включване или изключване на цял екран. + Активиране на плъзгащи контроли + Докоснете и задръжте, за да активирате жеста за плъзгане. + Докоснете, за да активирате жеста за плъзгане. + Разрешаване на вибрация + Вибрация за обратна връзка е включена. + Вибрация за обратна връзка е изключена. + Плъзне в режим Заключен екран + Жестовете за плъзгане са активирани в режим „Заключен екран“. + Жестовете за плъзгане са деактивирани в режим „Заключен екран“. + Видимост на фона на плъзгащите контроли + Видимостта на фона на плъзгащите контроли. + Праг на величината на плъзгане + Амплитудата на движение, разпозната като жест. + Размер на текста при плъзгане + Размера на текста на плъзгащите контроли. + Размер на областта за жестове + Процентът от площта на екрана, който може да се плъзне.\n\nЗабележка: Това също засяга зоната с двойно докосване за придвижване напред/назад във видеоклипа. + Областта за плъзгане не може да бъде по-голяма от 50. Нулиране на стойността по подразбиране. + Задръжка на плъзгащата контрола за показване + Време за което плъзгащата контрола е видима. + Деактивирайте автоматичната HDR яркост + Автоматичната яркост при HDR е изключена. + Автоматичната яркост при HDR е включена. + Жест за превключване на цял екран + Превключването към цял екран чрез плъзгане на долната част на плейъра е активирано. + Превключването към цял екран чрез плъзгане на долната част на плейъра е деактивирано. + Активирайте жестове за превключване на видеоклипове + Жестове нагоре/надолу за възпроизвеждане на следващо/предишно видео. + Жестовете нагоре/надолу няма да възпроизведат следващия/предишния видеоклип. + Авто + + Видео + Скорост на възпроизвеждане по подразбиране + Предпочитано качество при мобилни данни + Предпочитано качество при Wi-Fi + Изкл. HDR клипове + HDR клиповете са изключени. + HDR клиповете са включени. + Деактивирайте скоростта на възпроизвеждане за потоци на живо + Скоростта на възпроизвеждане по подразбиране е деактивирана за потоци на живо. + Скоростта на възпроизвеждане по подразбиране е активирана за потоци на живо. + Вкл. на скорост на видеото по избор + Скоростта по избор на видеото е включена. + Скоростта по избор на видеото е изключена. + Персонализиран панел за скорост на възпроизвеждане + Използва се персонализиран диалогов прозорец. + Използва се падащ панел в стар стил. + Редактиране на скоростите по избор на видеото + Добавяне или смяна на възможните скорости. + Запомнете промените в скоростта на възпроизвеждане + Промените в скоростта на възпроизвеждане се отнасят за всички видеоклипове. + Промените в скоростта на възпроизвеждане се отнасят само за текущия видеоклип. + Запомнете промените в качеството на видеото + Промените в качеството се отнасят за всички видеоклипове. + Промените в качеството се отнасят само за текущия видеоклип. + Възстановете старото меню за качество на видеото + Показва се старото меню за видео качество. + Старото меню за видео качество е скрито. + Променете скоростта на възпроизвеждане на Shorts + Скоростта на възпроизвеждане по подразбиране се прилага за Shorts. + Скоростта на възпроизвеждане по подразбиране не се прилага за Shorts. + Пропуснат предварително зареден буфер. + Пропусни предварително зареден буфер + "Пропуска предварително заредения буфер в началото на видеоклиповете, за да приложи незабавно качеството на видеото по подразбиране. + +Информация: +• Когато видеото започне, има забавяне от приблизително 0,3 секунди. +• Не се прилага за HDR видеоклипове, видеоклипове на живо или видеоклипове, по-кратки от 15 секунди." + Активирането на тази настройка може да причини проблеми с възпроизвеждането на видео. + Уведомление при пропуске + Уведомлението се показва. + Уведомлението е скрито. + Лъжливи параметри на устройството + "Преоразмерява вашето устройство, за да покже видеоклипове с по-високо качество, които може да не са налични на вашето устройство." + Сменете софтуерния кодек AV1 + Заменя софтуерния кодек AV1 с кодека VP9. + Отхвърлете софтуерния кодек AV1 + "Принудително отхвърляне на софтуерния кодек AV1 +След приблизително 20 секунди буфериране ще бъде приложен друг кодек." + Буфериране поради софтуерен кодек Av1 (прибл. 20 сек.). + Смяна на скоростта на видеото на %s. + Смяна на качеството при мобилни данни на %s. + Грешка при настройка на качеството на видеото. + Смяна на качеството при Wi-Fi на%s. + Скоростите по избор трябва да са по-малки от %sx. Връщане на стойностите по подразбиране. + Невалидна скорост на видеото. Връщане на стойности по подразбиране. + + Return YouTube Dislike (показва нехаресванията) + Вкл. на Return YouTube Dislike + Нехаресванията се показват. + Нехаресванията не се показват. + Пок. нехаресвания в кратките клипове + Нехаресванията се показват в кратките клипове. + "Нехаресванията се показват в Shorts +Ограничение: Нехаресванията може да не се показват в режим „инкогнито“ или ако не сте влезли в акаунта си." + Нехаресванията са скрити в кратките клипове. + Нехаресвания като процент + Нехаресванията се показват като процент. + Нехаресванията се показват като число. + Компактен бутон за харесване + Включен компактен бутон \"Харесва ми\". + Компактният бутон „Харесва ми“ е деактивиран. + Показване на известие, ако API не е наличен + Показва известие, ако Return YouTube Dislike не е наличен. + Не се показва известие, ако ReturnYouTube Dislike не е наличен. + + За програмата + ReturnYouTubeDislike.com + Данните за нехаресване са от Return YouTube Dislike API. Докоснете за да научите повече. + Нехаресванията временно не са налични (изтече времето за изчакване на API). + Нехаресванията не са налични (status %d). + Нехаресванията не са достъпни (достигнат лимит на API). + Нехаресванията не са налични (%s). + Презареждане на видеото за гласуване чрез ReturnYouTubeDislike + Скрито + + SponsorBlock + Включване на SponsorBlock + SponsorBlock е система за прескачане на досадни части от видеоклиповете в YouTube. + + Външен вид + Пок. бутона за гласуване + Показва се бутонът \"Гласуване\" за сегмент. + Бутонът \"Гласуване\" за сегмент е скрит. + Компактен бутон за пропускане + Мин. ширина на бутона за пропускане. + Най-добър изглед на бутона за пропускане. + Авт. скриване на бутона за пропускане + Бутона за пропускане се скрива след няколко секунди. + Бутона за пропускане се показва за цялата част. + Показв. известие при автом. пропуск. част + Показване на известие при автоматично пропусната част. Докоснете тук за пример. + Известието не се показва. Докоснете тук за пример. + Показване на дължината на видеото без сигментите + Дължината на видеоклипа минус комбинираната дължина на сегмента е показана в скоби до пълната дължина на видеоклипа. + Цялата дължина на видето се показва. + + Промени поведението на сигмента + Спонсори + Платена промоция, платени препоръки и директни реклами. Не за самореклама или безплатни препоръки за каузи/създатели/уебсайтове/продукти, които се харесват на автора. + Неплатена/Самореклама + Подобно на „спонсорство“, но за безплатна реклама или самореклама. +Това включва търговия със стоки, дарения или информация с кого каналът има сътрудничество. + Напомняне за действие (абониране) + Когато има кратко напомняне да харесате, да се абонирате или да последвате канала по средата на съдържанието. Ако е дълго или за нещо специфично, трябва да е под „самореклама“. + Акцентиране + Частта от видеото която повечето хора търсят. + Пауза / Начална анимация + Интервал без реално съдържание. Може да бъде пауза, статичен кадър, повтаряща се анимация. Това не трябва да се използва за преходи, съдържащи информация. + Крайни карти / информация + Информация или когато се показват крайните карти на YouTube. Не за заключения с информация. + Преглед/Обобщение + Колекция от клипове, които показват какво предстои в този видеоклип или в други видеоклипове от поредицата, където цялата информация се повтаря по-късно във видеоклипа. + Пълнеж/Шеги + Сцени извън темата, добавени само за пълнеж или хумор, които не са необходими за разбирането на основното съдържание на видеоклипа. Това не трябва да включва сегменти, предоставящи контекст или справочни данни. + Музика: Част без музика + За използване само в музикални видеоклипове. Това трябва да се използва само за части от музикални видеоклипове, които вече не са обхванати от друга категория. + Пропусни + Акценти + Пропусни спонсор + Пропусни промоция + Пропусни подканване + Пропусни до акцент + Пропусни въведение + Пропусната пауза + Пропусната пауза + Пропусни заключение + Пропусни преглед + Пропусни преглед + Пропуснете обобщението + Пропусни пълнеж + Пропусни част без музика + Пропусни част + Пропуснат спонсор + Пропусната самореклама. + Пропуснато досадно напомняне + Пропуснато до акцент + Пропуснато въведение + Пропусната пауза. + Пропусната пауза. + Пропуснато заключение + Пропуснат преглед. + Пропуснат преглед. + Пропуснато повторение. + Пропуснат пълнеж + Пропусната част без музика + Пропуснат неизпратен сегмент + Пропуснати множество части + Автоматично пропускане + Авт. пропускане веднъж + Пок. бутон за пропускане + Показв. в лентата за време + Деактивиране + Цвят: + Цветът е променен + Цветът е възстановен + Невалидна стойност за цвета + Възстанови + Връщане на цветовете + Настройките са копирани в клипборда. + + Създаване на нови части + Показване на бутона за нова част + Бутона създаване за нова част се показва + Бутона създаване за нова част не се показва. + Настройване стъпка на новата част + Милисекундите с който се преместват бутоните за настройка при създаване на част. + Стойността трябва да е положително число. + Вижте указанията + Указанията съдържат правила и съвети за създаване на нови части. + Следвайте указанията + Прочетете указанията на SponsorBlock преди да създадете нови части. + Вече ги прочетох + Покажи ми + + Основен + Показване на известие, ако API не е наличен + Показва се известие, ако Api на SponsorBlock не е наличен. + Не се показва известие, ако Api на SponsorBlock не е наличен. + Активиране проследяването на броя пропускания + Показва в класацията на SponsorBlock колко време е спестено. Съобщение се изпраща при всяка пропусната част. + Прослед. на броя пропускания е изкл. + Минимална продължителност на сегмента + Части, по-кратки от тази стойност (в секунди) няма да бъдат пропускани или показвани. + Невалидна продължителност. + Вашият уникален потребителски id + Това трябва да се пази тайно. То е като парола и не трябва да се споделя с никого. Ако някой го притежава, той може да се представи вместо вас. + Личният Id трябва да е с дължина поне 30 знака. + Промяна URL на API + Адресът, който SponsorBlock използва засвързване към сървъра. + Нулиране URL адреса, на API. + URL адресът е невалиден. + URL API е променен. + Копирай + Импортиране / Експортиране на настройките + Вашата JSON конфигурация на SponsorBlock може да бъде импортирана/експортирана в ReVanced Extended и други платформи на SponsorBlock. + Вашата JSON конфигурация на SponsorBlock може да бъде импортирана/експортирана в ReVanced Extended и други платформи на SponsorBlock. Той съдържа вашия личен документ за самоличност. Бъдете внимателни, когато го споделяте с други. + Настройките са успешно въстановени. + Неуспешно импортиране: %s. + Неуспешно експортиране на %s. + Вашите настройки на SponsorBlock съдържат лично Id.\n\nВашето Id е като парола и не трябва да се споделя с никого\n + Не показвай отново + SponsorBlock временно не е наличен. + SponsorBlock временно не е наличен (status %d). + SponsorBlock временно не е наличен (API timed out). + Не може да се изпрати сегмент: %s. + SponsorBlock временно не работи. + Не могат да се изпратят сигменти: (статус:%1$d %2$s). + Не може да се изпрати частта.\nБроят е ограничен (Твърде много от един и същ потребител или IP). + Не може да се изпрати частта: %s. + Не може да се изпрати частта.\nВече съществува. + Частта е изпратена успешно. + Не може да се гласува за сегмент (изтече времето за изчакване на API). + Не може да се гласува за частите: (статус: %1$d %2$s). + Не може да се гласува за сигмента: %s. + Положителен вот + Отрицателен вот + Промяна на категорията + Няма сегменти, за които да гласувате. + Изберете категорията на частта + Категорията е изкл. в настройките. Вкл. я за да можете да изпратите. + Нова част в SponsorBlock + Задаване на %s като начало или край на нов раздел? + начало + край + сега + Частта започва от + Частта свършва до + Времената точни ли са? + Сегментът продължава от\n\n%1$s\nдо\n%2$s\n\n(%3$s)\n\nГотов ли е за изпращане? + Началото трябва да бъде преди края. + Първо маркирайте две места в лентата за времето. + Преглед и проверка на частта за нормално пропускане. + Ръчно редактиране на времената на частта + Желаете ли да редактирате времената за начало или край на частта? + Зададено е невалидно време. + + Статистика + Статистиката е временно недостъпна (API не работи). + Зареждане... + SponsorBlock е деактивиран. + Вашето потр. име: <b>%s</b> + Докоснете за промяна потребителското име + Не може да се промени потреб. име: Състояние: %1$d%2$s. + Потребителското име е успешно променено. + Репутацията ви е <b>%.2f</b> + Създадохте <b>%s</b> части + SponsorBlock класация + Спасихте хората от <b>%s</b> сегменти + Докоснете за да видите статистиката и тези допринесли най-много. + Това е <b>%s</b> от живота им.<br>Щракнете, за да видите класацията. + Пропуснали сте <b>%s</b> части + Това е <b>%s</b>. + Нулиране на брояча на пропуснати части? + %1$s часове %2$s минути + %1$s минути %2$s секунди + %s секунди + + Относно + sponsor.ajay.app + Данните са предоставени от SponsorBlock API. Докоснете тук за повече информация и изтеглияния. + + Разни + Активиране на регистрирането на грешки + Дневникът за остраняване на грешки е активиран. + Отчетите за грешки са изключени. + Вкл. отчети за грешки + Файлове с отчети за грешки в буфера. + Файлове с отчети за грешки не включват буфера. + Включване на външен браузър + Външния браузър е включен. + Външния браузър е изключен. + Отваряне на връзки директно + Заобикаляне на URL пренасочвания. + Следване на правилата за пренасочване по подразбиране. + Отвори настройките по подразбиране + За да отваряте връзки към YouTube с помощта на RVX, конфигурирайте „Отваряне на поддържани връзки“ и активирайте поддържаните уеб адреси, които искате. + Отвори GmsCore + Включете облачното известяване за да поучавате известия. + GmsCore не е инсталиран. Инсталирайте го. + Нужно е действие + "GmsCore няма разрешение да работи във фонов режим. +Следвайте инструкциите „Don't kill my app!“ за вашето устройство и го приложете към вашия GmsCore. Това е необходимо, за да работи приложението." + Отвори интернет адрес \"website\" + "За да избегнете проблеми е необходимо да изключите оптимизацията на батерията за GmsCore. + +Натиснете \"Продолжи\" и изкючере оптимизацията на батерията." + Продължи + Почистване на споделените връзки + Премахва параметрите на заявката за проследяване от URL адресите при споделяне на връзки. + Изключване на QUIC протокол + "Изключване на CronetEngine's QUIC протокол." + Списък със приложения за споделяне + Използва се от системният лист за споделяне. + Списък с приложения за спделяне – вграден. + Активирайте кодека OPUS + Активирайте кодека OPUS, ако съдържанието в плейъра е подходящо за кодека. + Фалшив параметър на плейъра + "Променя параметрите на плейъра, за да предотврати проблеми с възпроизвеждането + +Вече известни проблеми: +• Не е наличен висок битрейт +• Миниатюрите на напредъка не работят във видеоклипове на спонсори +• Изтеглянето на видео може да не работи +• Видеото може да не започне от последното гледане." + Фалшив параметър на плейъра във емисията + "Параметърът на плейъра е подправен за видеоклипове в емисии. +Ограничение: Автоматично възпроизвежданите видеоклипове в емисиите ще се показват в историята ви на гледане." + "Параметърът на плейъра не е подправен за видеоклипове в емисиите. + +Известен проблем: Видеоклиповете в емисията ще могат да се възпроизвеждат нормално за по-малко от минута, преди да започнат проблеми с възпроизвеждането." + + Импортиране / Експортиране на настройките + Импортиране / Експортиране на настройките. + + Импортиране / Експортиране като файл + Експорт на настройки + Експортирайте настройките във файл. + Внасяне на настройки + Импортиране на настройки от файл. + + Импортирайте / Експортирайте настройки в текст + Импортирайте / Експортирайте настройки в текст + Импортирайте или експортирайте настройки като текст. + Неуспешно експортиране на настройките. + Настройките са експортирани успешно. + Внасяне на настройки + Копирай + Неуспешно импортиране на настройките. + Настройките се нулират до стойностите по подразбиране. + Настройките са импортирани успешно. + Нулирай + Настройките са копирани в клипборда. + + Подмяна на версията (на клиента) + Подмяна на версията, за да предотвратите проблеми с възпроизвеждането на видео. + Подмяна на версията + Версията е подменена. + "Клиентът не е подправен. Възпроизвеждането на видео може да не работи." + Деактивирането на тази настройка ще доведе до проблеми с възпроизвеждането на видео. + Начин за подмяна на версията + Принудително AVC (H.264) за iOS + Видео кодекът на iOS е AVC (H.264). + Видео кодекът на iOS е AVC (H.264), VP9, or AV1. + "Активирането на това може да подобри живота на батерията и да коригира прекъсванията при възпроизвеждане. + +AVC (H.264) има максимална разделителна способност при 1080p и възпроизвеждането на видео ще използва повече интернет данни от VP9 или AV1." + Показване в \"Разширени статистики\" + Фалшивият клиент се показва в Разширена статистика. + Фалшивият клиент не се показва в Разширена статистика. + + Опции за фалшифициране на клиента + Основни + Предаване на живо + Shorts, Клипове + Подмяна за видеоклипове, които не могат да се възпроизвеждат + iOS + Android + Вграден Android плейър + Тестов пакет за Android + Android TV + Android VR + TV HTML5 + Web + + За програмата + iOS + "Подмяна на клиента на iOS Ограничения: +• HDR видео се поддържа само с кодек AV1. +• Времето за гледане не се записва в историята на каналите." + "При замяна на iOS клиент. +Ограничения: +• Няма HDR видео. +• Няма меню за скорост на възпроизвеждане. +• Видео с високо качество може да не е налично. +• Историята на сърфиране не работи с акаунт на марка. +• Излъчванията на живо не могат да се възпроизвеждат във фонов режим +• Излъчванията на живо не са налични на Android 8.0." + Тестов пакет за Android + "При подмяна на клиента за Android Testsuite. + +Страничните ефекти включват: +• Няма HDR видео. +• Липсва менюто за аудио запис. +• Надписите може да не са налични. +• Липсва бутон за изтегляне. +• Липсват карти за краен екран. +• Миниатюра на лентата за търсене с ниско качество." + Android TV + "При подмяна на клиента за Android TV (YouTube TV). Странични ефекти: +• HDR качеството не е налично. +• Менюто за аудио запис не е налично. +• Субтитрите може да не са налични. +• Бутонът за действие за изтегляне не е наличен. +• Миниатюрите на лентата за напредък са с ниско качество. +• Някои предавания на живо не са налични за възпроизвеждане." + Android VR + "При подмяна на клиента за Android VR. + +Ограничения: +• Няма HDR видео. +• Видеопаузата може да не работи правилно. +• Миниатюрите на лентата за възпроизвеждане на Shorts ще бъдат с ниско качество. +• Не могат да се възпроизвеждат детски видеоклипове." + + История на гледане + Променя настройките, за хронологията на гледане. + Управление на цялата история + Кликнете, за да отворите управлението на хронологията на гледане в YouTube. + Тип хронология на гледане + Оригинал + Замени домейна + Блокиране на хронологията на гледане + Преглед на състоянието на хронологията + • Хронологията на гледане е блокирана. + "• Настройки за хронология на гледане по подразбиране на вашия акаунт в Google. +• Историята на гледане може да не работи с Маркови акаунти, ако имате активирана настройка за подмяна на плеара във версия на iOS" + "• Следва настройките на хронологията на сърфирането в акаунта ви в Google. +• Историята на сърфиране може да не работи поради DNS или VPN. +• Историята на сърфиране може да не работи с акаунт на марка. +(Активирана настройка на клиент за подправяне и избран клиент за iOS)" + • Следва настройките на хронологията на сърфирането в акаунта ви в Google. + "• Следва настройките на хронологията на сърфирането в акаунта ви в Google. +• Историята на сърфиране може да не работи поради DNS или VPN." + + Информация за корекции + + Информация за корекции + Информация за приложените корекции. + + Ползвани инструменти + + Други + По избор + По подразбиране + AFN Синя + AFN Червена + MMT + Revancify синя + Revancify Червена + YouTube + По подразбиране + Изключване + Включване + По подразбиране + diff --git a/src/main/resources/youtube/translations/hu-rHU/strings.xml b/src/main/resources/youtube/translations/hu-rHU/strings.xml index 0fd843279e..adaf00e6ab 100644 --- a/src/main/resources/youtube/translations/hu-rHU/strings.xml +++ b/src/main/resources/youtube/translations/hu-rHU/strings.xml @@ -16,8 +16,8 @@ Külső letöltéskezelő Figyelmeztetés "A(z) %1$s nincs telepítve. -Kérjük, töltsd le a(z) %2$s a weboldalról." - %s nincs telepítve. Kérjük telepítse. +Töltsd le a(z) %2$s weboldalról." + %s nincs telepítve. Kérlek telepítsd. Hirdetések Teljes képernyős hirdetések elrejtése @@ -191,14 +191,14 @@ Lejátszási listák Elrejtése a csatornában Elrejtve a csatornában. Megjelenítve a csatornában. - Elrejtése a kezdőképernyő hírfolyamban és a kapcsolódó videóknál - Elrejtve a kezdőképernyő hírfolyamban és a kapcsolódó videóknál. - Megjelenítve a kezdőképernyő hírfolyamban és a kapcsolódó videóknál. - Elrejtése az előfizetési hírfolyamban - Elrejtve az előfizetési hírfolyamban. - Megjelenítve az előfizetési hírfolyamban. + Elrejtés a kezdőlapon és a kapcsolódó videóknál + Elrejtve a kezdőlapon és a kapcsolódó videóknál. + Megjelenítve a kezdőlapon és a kapcsolódó videóknál. + Elrejtés a feliratkozások között + Elrejtve a feliratkozások között. + Megjelenítve a feliratkozások között. - Flyout menü + Felugró menü Komponensek elrejtése vagy megjelenítése a hírfolyam lebegő menüjében. Hírfolyam lebegő menü szűrő bekapcsolása A hírfolyam lebegő menü szűrő be van kapcsolva. @@ -207,7 +207,7 @@ Lejátszási listák Szűrendő lebegő menü neveinek listája, új sorral elválasztva. Videó szűrő - Videók elrejtése kulcsszavak vagy nézettség alapján. + A videók elrejtése kulcsszavak vagy nézettség alapján. Kulcsszó szűrő Videók elrejtése a kezdőlapon kulcsszavak alapján @@ -241,20 +241,20 @@ Lejátszási listák Az 1000-nél kevesebb megtekintést elért videók elrejtése a Kezdőlapon, amiket a leiratkozott csatornákról töltöttek fel. Időtartam szűrő - Videók elrejtése időtartam alapján + Videók elrejtése hossz alapján Videók elrejtése rövidebb vagy hosszabb időtartam alapján.\n\nIsmert hiba: Nem fogja elrejteni a lejátszóban található kapcsolódó videókat, csak az időbélyegjét. - Hosszabb időtartamú, mint - Az ennél hosszabb időtartamú videók el lesznek rejtve. + Hosszabb, mint + Az ennél hosszabb videók el lesznek rejtve. Rövidebb időtartamú, mint Az ennél rövidebb időtartamú videók el lesznek rejtve. Megtekintések szűrő Ajánlott videók elrejtése megtekintések alapján - Ajánlott videók elrejtése, ha kevesebb a megadott számnál a megtekintések száma. - Több, mint nézettség - Az ennél több nézettségű videók el lesznek rejtve. - Kevesebb, mint nézettség - Az ennél kevesebb nézettségű videók el lesznek rejtve. + Az ajánlott videók elrejtése, ha a megtekintések száma kevesebb a megadott számnál.\n\nIsmert probléma: a 0 megtekintésű videókat a rendszer nem szűri. + Nagyobb a nézettsége, mint + Az ennél nagyobb nézettségű videók el lesznek rejtve. + Kisebb a nézettsége, mint + Az ennél kisebb nézettségű videók el lesznek rejtve. Nézettség kulcsok Adja meg nyelvi sablonját a videók alatt megjelenő nézetek számához a felhasználói felületen. Minden kulcs (a nyelvében levő betű/szó) -> érték (a kulcs jelentése) új sorban legyen. A kulcsok a \"->\" előtt helyezkednek el. Ha megváltoztatja az alkalmazás vagy a rendszer nyelvét, akkor vissza kell állítania ezt a beállítást.\n\nPéldák:\nAngol: 10K views = K -> 1000, views -> megtekintések\nSpanyol: 10 K vistas = K -> 1000, vistas -> megtekintések K -> 1 000\nM -> 1 000 000\nB -> 1 000 000 000\nviews -> megtekintések @@ -278,9 +278,9 @@ Lejátszási listák Felkapott Megnézem később Érvénytelen kezdőlap, visszaállítás az eredetire. - Az automatikus hangpályák erőltetett letiltása - Az automatikus hangpályák erőltetve letiltva. - Az automatikus hangpályák erőltetve engedélyezve. + Kényszerített automatikus hangsávok letiltása + A kényszerített automatikus hangsávok le vannak tiltva. + A kényszerített automatikus hangsávok engedélyezve vannak. Kényszerített automatikus feliratok letiltása A kényszerített automatikus feliratok le vannak tiltva. A kényszerített automatikus feliratok engedélyezve vannak. @@ -349,7 +349,7 @@ Előfordulhat, hogy egyes komponensek nincsenek elrejtve." Egyedi szűrők engedélyezése Az egyedi szűrő engedélyezve van Az egyedi szűrő ki van kapcsolva - Egyedi szűrő + Egyéni szűrő A szűrendő összetevő útvonal építő karakterláncok listája új sorral elválasztva Érvénytelen egyedi szűrő: %s @@ -535,7 +535,7 @@ Az automatikus lejátszás a YouTube beállításaiban módosítható: Beállítások → Automatikus lejátszás → Következő videó automatikus lejátszása" Megjelenik a javasolt videó záróképernyője. Nagyítás fedés elrejtése - A nagyítás fedés el van rejtve. + A nagyítás fedés elrejtve. A nagyítás fedés látható. Automatikus lejátszás visszaszámlálás átugrása Ha az automatikus lejátszás engedélyezve van, a következő videó azonnal lejátszódik. @@ -1402,6 +1402,9 @@ Egy másik kodek kerül alkalmazásra kb. 20 másodperc pufferezés után."Linkek megosztásakor eltávolítja a nyomkövetés lekérdezési paramétereket az URL-ekből. QUIC protokoll letiltása "A CronetEngine QUIC protokoll letiltása." + Megosztási lap módosítása + A rendszer megosztási lap van használatban. + Az app-on belüli megosztási lap van használatban. OPUS kodek engedélyezése Engedélyezi az OPUS kodeket, ha a lejátszó válasza tartalmazza az OPUS kodeket. Lejátszó paraméter hamisítása diff --git a/src/main/resources/youtube/translations/it-rIT/strings.xml b/src/main/resources/youtube/translations/it-rIT/strings.xml index 87c118b675..d5e5cf8c31 100644 --- a/src/main/resources/youtube/translations/it-rIT/strings.xml +++ b/src/main/resources/youtube/translations/it-rIT/strings.xml @@ -2,22 +2,22 @@ Vuoi attivare i controlli di accessibilità del riproduttore? - I tuoi controlli sono diversi poichè un servizio di accessibilità è attivato + I tuoi controlli sono diversi poiché un servizio di accessibilità è attivato. ReVanced Extended - Cerca nelle impostazioni + Cerca %s Opzioni sperimentali Desideri procedere? Riavvia per caricare l\'interfaccia normalmente Aggiorna e riavvia Normale - Nome pacchetto downloader video - Nome del pacchetto dell\'app downloader esterna installata, ad esempio NewPipe o YTDLnis. - Scaricare esterno + Nome pacchetto scaricatore video + Nome del pacchetto dello scaricatore esterno installato, ad esempio NewPipe o YTDLnis. + Scaricatore esterno Attenzione "%1$s non è installato. Si prega di scaricare %2$s dal sito web." - %s non è installato. Per favore installalo + %s non è installato. Per favore installalo. Annunci Nascondi gli annunci a schermo intero @@ -27,251 +27,251 @@ Si prega di scaricare %2$s dal sito web." Gli annunci a schermo intero sono chiusi tramite il pulsante Chiudi. "Gli annunci a schermo intero sono bloccati. -Limitazione: l'immagine dei post della community a schermo intero potrebbe essere bloccata." +Limitazione: Le immagini dei post della community a schermo intero potrebbero essere bloccate." Gli annunci a schermo intero sono stati bloccati. (DialogType: %s) Gli annunci a schermo intero sono stati chiusi. Nascondi gli annunci generali - Gli annunci generali sono nascosti - Gli annunci generali sono visibili - Nascondi lo scaffale del merchandising - Lo scaffale del merchandising è nascosto - Lo scaffale del merchandising è visibile + Gli annunci generali sono nascosti. + Gli annunci generali sono visibili. + Nascondi le sezioni del merchandising + Le sezioni del merchandising sono nascoste. + Le sezioni del merchandising sono visibili. Nascondi l\'etichetta della promozione a pagamento L\'etichetta della promozione a pagamento è nascosta. L\'etichetta della promozione a pagamento è visibile. - Nascondi le schede autopromozionali - Le schede autopromozionali sono nascoste - Le schede autopromozionali sono visibili + Nascondi le schede auto promozionali + Le schede auto promozionali sono nascoste. + Le schede auto promozionali sono visibili. Nascondi gli annunci video - Gli annunci video sono nascosti - Gli annunci video sono visibili + Gli annunci video sono nascosti. + Gli annunci video sono visibili. Nascondi il banner dei prodotti - Il banner dei prodotti è nascosto - Il banner dei prodotti è visibile + Il banner dei prodotti è nascosto. + Il banner dei prodotti è visibile. Nascondi i risultati di ricerca del web - I risultati di ricerca del web sono nascosti - I risultati di ricerca del web sono visibili + I risultati di ricerca del web sono nascosti. + I risultati di ricerca del web sono visibili. Nascondi la promozione di YouTube Premium - La promozione di YouTube Premium è nascosta - La promozione di YouTube Premium è visibile + La promozione di YouTube Premium è nascosta. + La promozione di YouTube Premium è visibile. - Thumbnail alternative - Home + Anteprime alternative + Scheda Home Scheda iscrizioni - Tu + Scheda Tu Playlist del riproduttore, video consigliati Risultati di ricerca - Thumbnails originali - DeArrow & Thumbnails originali - DeArrow & Thumbnails alternativi - Thumbnails alternativi - Informazioni su DeArrow - "DeArrow fornisce thumbnails provenienti da crowdsourcing per i video di YouTube. Questi thumbnails sono spesso più rilevanti di quelle fornite da YouTube. Se attivato, gli URL dei video verranno inviati al server API e non vengono inviati altri dati. + Anteprime originali + DeArrow & anteprime originali + DeArrow & catture statiche + Catture statiche + DeArrow + "DeArrow fornisce anteprime provenienti da crowdsourcing per i video di YouTube. Queste anteprime sono spesso più rilevanti di quelle fornite da YouTube. -Tocca qui per saperne di più su DeArrow" +Se attivato, gli URL dei video verranno inviati al server API e non vengono inviati altri dati. Se un video non ha un'anteprima DeArrow, vengono mostrate l'anteprime originale o una cattura statica. + +Tocca qui per saperne di più su DeArrow." Mostra una notifica toast se l\'API non è disponibile - Notifica toast visibile se l\'API di DeArrow non è disponibile - Notifica toast nascosta se l\'API di DeArrow non è disponibile - DeArrow API endpoint - L\'URL dell\'endpoint cache dei thumbnails di DeArrow. Non cambiarlo a meno che tu non sappia cosa stai facendo - Informazioni sui thumbnails alternativi - I thumbnails alternativi sono presi dall\'inizio, metà o fine di ogni video. Queste immagini sono integrate in YouTube e non viene usato nessun API esterno - Attiva thumbnails alternativi veloci - I thumbnails alternativi di media qualità sono attivati. I thumbnails caricheranno più velocemente, ma i video dal vivo, quelli non rilasciati e molto vecchi potrebbero mostrare thumbnails vuoti - Ithumbnails alternativi di alta qualità sono attivati - Il tempo del video da cui prendere il fotogramma - Inizio video - Metà video - Fine video - DeArrow temporaneamente non disponibile (%s) - DeArrow temporaneamente non disponibile + Notifica toast visibile se DeArrow non è disponibile. + Notifica toast nascosta DeArrow non è disponibile. + Endpoint API di DeArrow + L\'URL dell\'endpoint della cache delle anteprime DeArrow. + Catture statiche del video + Le catture statiche sono prese dall\'inizio, da metà o alla fine di ogni video. Queste immagini sono integrate in YouTube e non viene usata nessuna API esterna. + Attiva catture statiche veloci + Utilizzando catture statiche di media qualità. Le anteprime si caricheranno più velocemente, ma i video in tempo reale, i video non ancora rilasciati, o video molto vecchi potrebbero mostrare anteprime bianche. + Utilizzando catture statiche di alta qualità. + Il punto del video da cui prendere la cattura statica + Inizio del video + Metà del video + Fine del video + DeArrow temporaneamente non disponibile. (status code: %s) + DeArrow temporaneamente non disponibile. - Restrizioni della regione dell\'immagine - Bypassa restrizioni della regione dell\'immagine - Utilizzando host immagine yt4.ggpht.com. - Usando l\'host immagine originale.\n\nAbilitando questo si possono correggere le immagini mancanti che sono bloccate in alcune regioni. + Restrizioni regionali delle immagini + Aggira restrizioni regionali delle immagini + Utilizzando l\'host yt4.ggpht.com per le immagini. + Usando l\'host originale per le immagini.\n\nAbilitando questo si possono correggere le immagini mancanti che sono bloccate in alcune regioni. Feed Nascondi le schede degli album - Le schede degli album sono nascoste - Le schede degli album sono visibili - "Nasconde i seguenti scaffali: + Le schede degli album sono nascoste. + Le schede degli album sono visibili. + "Nasconde le seguenti sezioni: • Ultime notizie • Continua a guardare • Esplora altri canali • Ascolta di nuovo • Shopping • Guarda di nuovo" - Nascondi scaffale carosello - Nascondi lo scaffale dei chip - Lo scaffale dei chip è nascosto - Lo scaffale dei chip è visibile - Nascondi il chip espandibile - Il chip espandibile è nascosto - Il chip espandibile è visibile - Nascondi il Pulsante dei sottotitoli del feed + Nascondi sezione a carosello + Nascondi la sezione dei chip + La sezione dei chip è nascosta. + La sezione dei chip è visibile. + Nascondi il chip espandibile sotto i video + Il chip espandibile è nascosto. + Il chip espandibile è visibile. + Nascondi il pulsante dei sottotitoli nel feed Il pulsante Sottotitoli è nascosto. Il pulsante Sottotitoli è mostrato. - Nascondi barra di ricerca nel feed + Nascondi la barra di ricerca nel feed La barra di ricerca nel feed è nascosta. - La barra di ricerca del feed è mostrata - Nascondi i sondaggi nei feed - I sondaggi nei feed sono nascosti - I sondaggi nei feed sono visibili - Nascondi lo scaffale delle immagini - Lo scaffale delle immagini è nascosto - Lo scaffale delle immagini è visibile + La barra di ricerca del feed è visibile. + Nascondi i sondaggi nel feed + I sondaggi nel feed sono nascosti. + I sondaggi nel feed sono visibili. + Nascondi le sezioni delle immagini + Le sezioni delle immagini sono nascoste. + Le sezioni delle immagini sono visibili. Nascondi i post più recenti - I post più recenti sono nascosti - I post più recenti sono visibili + I post più recenti sono nascosti. + I post più recenti sono visibili. Nascondi il pulsante Video Più Recenti - Il pulsante Video Più Recenti è nascosto - Il pulsante Video Più Recenti è visibile - Nascondi le Mix Playlist - Le Mix Playlist sono nascoste - Le Mix Playlist sono visibili - Nascondi lo scaffale dei film - Lo scaffale dei film è nascosto - Lo scaffale dei film è visibile - Nascondi il pulsante Avvisami nei feed - Il pulsante Avvisami nei feed è nascosto - Il pulsante Avvisami nei feed è visibile - Nascondi riproducibili - I giocabili sono nascosti. - I giocabili sono mostrati. - Nascondi il pulsante \'Mostra di più\' - Il tasto \'mostra altro\' è nascosto - Il pulsante \'Mostra di più\' è mostrato. + Il pulsante Video Più Recenti è nascosto. + Il pulsante Video Più Recenti è visibile. + Nascondi le playlist mix + Le playlist mix sono nascoste. + Le playlist mix sono visibili. + Nascondi la sezione dei film + La sezione dei film è nascosta. + La sezione dei film è visibile. + Nascondi il pulsante Avvisami + Il pulsante Avvisami è nascosto. + Il pulsante Avvisami è visibile. + Nascondi Giochi Interattivi + I Giochi Interattivi sono nascosti. + I Giochi Interattivi sono visibili. + Nascondi il pulsante Mostra di più + Il tasto Mostra di più è nascosto. + Il pulsante Mostra di più è visibile. Nascondi il carosello delle iscrizioni - Il casello delle iscrizioni è nascosto. - Il casello delle iscrizioni è mostrato. - Nascondi lo scaffale degli eventi - Lo scaffale degli eventi è nascosto - Lo scaffale degli eventi è visibile + Il carosello delle iscrizioni è nascosto. + Il carosello delle iscrizioni è visibile. + Nascondi la sezione degli eventi + La sezione degli eventi è nascosta. + La sezione degli eventi è visibile. Barra delle categorie Nascondi o mostra la barra delle categorie nel feed, nella ricerca e nei video correlati. - Nascondi la barra delle categorie nei feed + Nascondi nel feed Nascosto nel feed. Mostrato nel feed. Nascondi nei video correlati Nascosto nei video correlati. - Mostrato nei video correlati. + Visibile nei video correlati. Nascondi nei risultati della ricerca - Nascosto nei risultati di ricerca. - Mostrato nei risultati di ricerca. + Nascosto nei risultati della ricerca. + Visibile nei risultati della ricerca. Profilo del canale Nascondi o mostra i componenti nel profilo del canale. - Abilita filtro scheda canale - Il filtro scheda canale è abilitato. - Il filtro scheda canale è disabilitato. - Filtro scheda canale + Abilita filtro sulle schede del canale + Il filtro sulle schede del canale è abilitato. + Il filtro sulle schede del canale è disabilitato. + Filtro sulle schede del canale Elenco dei nomi delle schede dei canali da filtrare, separati da nuove righe. "Shorts Playlist Negozio" Nascondi il pulsante Esplora Negozio - Il pulsante Esplora Negozio è nascosto - Il pulsante Esplora Negozio è visibile - Nascondi lo scaffale degli abbonati - Lo scaffale degli abbonati è nascosto - Lo scaffale degli abbonati è visibile + Il pulsante Esplora Negozio è nascosto. + Il pulsante Esplora Negozio è visibile. + Nascondi la sezione degli abbonati + La sezione degli abbonati è nascosta. + La sezione degli abbonati è visibile. Nascondi i link in cima al profilo del canale - I link in cima al profilo del canale sono nascosti - I link in cima al profilo del canale sono visibili - Nascondi lo scaffale Per Te - Lo scaffale Per Te è nascosto - Lo scaffale Per Te è visibile + I link in cima al profilo del canale sono nascosti. + I link in cima al profilo del canale sono visibili. + Nascondi la sezione Per Te + La sezione Per Te è nascosta. + La sezione Per Te è visibile. Post della community Mostra o nascondi i post della community nel feed e nel canale. Nascondi nel canale Nascosto nel canale. - Mostrato nel canale. - Nascondi nella home feed e video correlati - Nascosto nella home feed e video correlati. - Mostrato Nella home feed e video correlati. - Nascondi i post della community nel feed delle iscrizioni - I post della community nel feed delle iscrizioni sono nascosti - I post della community nel feed delle iscrizioni sono visibili + Visibile nel canale. + Nascondi nella home e nei video correlati + Nascosto nella home e nei video correlati. + Visibile nella home e nei video correlati. + Nascondi nel feed delle iscrizioni + Nascosti nel feed delle iscrizioni. + Visibili nel feed delle iscrizioni. Menu a comparsa Nasconde o mostra i componenti del menu a comparsa nel feed. - Abilita il filtro del feed menu a comparsa - Il filtro del feed menu a comparsa è abilitato. - Il filtro del feed menu a comparsa è disabilitato. - Filtro del feed menu a comparsa + Abilita il filtro sul menu a comparsa del feed + Il filtro sul menu a comparsa del feed è abilitato. + Il filtro sul menu a comparsa del feed è disabilitato. + Filtro sul menu a comparsa del feed Elenco dei nomi dei menu a comparsa da filtrare, separati da nuove righe. - Filtro video + Filtro sui video Nascondi video per parole chiave o visualizzazioni. - Filtro parola chiave - Nascondi i video della scheda Home tramite parole chiave - I video della scheda Home sono nascosti tramite parole chiave - I video della scheda Home non sono nascosti tramite parole chiave - Nascondi i video dei risultati di ricerca tramite parole chiave - I video dei risultati di ricerca sono nascosti tramite parole chiave - I video dei risultati di ricerca non sono nascosti tramite parole chiave - Nascondi i video della scheda Iscrizioni tramite parole chiave - I video della scheda Iscrizioni sono nascosti tramite parole chiave - I video della scheda Iscrizioni non sono nascosti tramite parole chiave + Filtro per parola chiave + Nascondi i video della scheda Home per parole chiave + I video della scheda Home sono filtrati tramite parole chiave. + I video della scheda Home non sono filtrati per parole chiave. + Nascondi i risultati di ricerca per parole chiave + I risultati di ricerca sono filtrati per parole chiave. + I risultati di ricerca non sono filtrati per parole chiave. + Nascondi i video della scheda iscrizioni per parole chiave + I video della scheda iscrizioni sono filtrati. + I video della scheda iscrizioni non sono filtrati. Nascondi commenti per parole chiave I commenti sono filtrati. I commenti non sono filtrati. - Modifica il filtro delle parole chiave - "Configura le parole chiave e le frasi da nascondere separate da nuove righe. - -Le parole con lettere maiuscole al centro devono essere inserite con il maiuscolo (es: iPhone, TikTok, LeBlanc)" - Informazioni sul filtro delle parole chiave - "I risultati di Home, Iscrizioni e Cerca vengono filtrati per nascondere i contenuti che corrispondono alle parole chiave. + Parole chiave da nascondere + "Parole chiave e frasi da nascondere, separate da nuove righe. +Parole con lettere maiuscole all'interno devono essere inserite con il maiuscolo (es: iPhone, TikTok, LeBlanc)." + Informazioni sul filtro per parole chiave + "Home / Iscrizioni / I risultati della ricerca vengono filtrati per nascondere i contenuti che soddisfano le frasi delle parole chiave. -Problemi noti: -• Alcuni Short potrebbero non essere nascosti -• Alcuni componenti dell'interfaccia potrebbero non essere nascosti -• La ricerca di una parola chiave potrebbe non mostrare risultati" - Parola chiave non valida, non è possibile usare \'%s\' come filtro - Parola chiave non valida. \'%1$s\' è minore di %2$d caratteri +Limitazioni: +- Alcuni Short potrebbero non essere nascosti. +- Alcuni componenti della interfaccia utente potrebbero non essere nascosti. +- La ricerca di una parola chiave potrebbe non mostrare alcun risultato." + Parola chiave non valida. Non è possibile usare: \'%s\' come filtro + Parola chiave non valida. \'%1$s\' è lunga meno di %2$d caratteri. La parola chiave \'%1$s\' nasconderà tutti i video. Video consigliati Nascondi video consigliati "Nasconde i seguenti video consigliati: -• Video con tag 'Solo per l'iscrizione'. -• Video con frasi come 'Persone guardano anche' sotto. -• Video caricati da canali non iscritti che hanno meno di 1.000 visualizzazioni." - Nascondi video con basse visualizzazioni - Nascondi video con meno di 1.000 visualizzazioni dai feed home che sono stati caricati dai canali non iscritti. +• Video con tag 'Solo per membri'. +• Video con frasi come 'Persone guardano anche' sotto." + Nascondi video con poche visualizzazioni + Nascondi video con meno di 1.000 visualizzazioni dalla home che sono stati caricati dai canali a cui non si è iscritti. - Filtro durata - Nasconde i video in base alla durata - Nasconde i video con più breve o più lunga durata.\n\nProblema noto: Non nasconderà i video nei video relativi al riproduttore ma nasconderà il timestamp. + Filtro sulla durata + Nasconde i video in base alla loro durata + Nasconde i video con più breve o più lunga durata.\n\nProblema noto: Non nasconderà i video nella sezione di video correlati, nella pagina di riproduzione dei video; invece ne nasconderà solo il timestamp. Più lungo della durata I video con durata superiore a questo numero saranno nascosti. Più breve della durata I video con durata inferiore a questo numero saranno nascosti. - Filtro Conteggio visualizzazioni - Nascondi i video consigliati per le visualizzazioni - Nascondi i video consigliati con meno di un numero specificato di visualizzazioni. + Filtro sul numero di visualizzazioni + Nascondi i video consigliati per il numero di visualizzazioni + Nascondi i video consigliati con meno di un numero specifico di visualizzazioni.\n\nProblema noto: I video con 0 visualizzazioni non vengono filtrati. Maggiore delle visualizzazioni - I video con visualizzazioni maggiori di questo numero saranno nascoste. + I video con più visualizzazioni di questo numero saranno nascosti. Meno delle visualizzazioni - I video con viste inferiori a questo numero saranno nascosti. + I video con meno visualizzazioni di questo numero saranno nascosti. Visualizza chiavi - Specifica il tuo modello di lingua per il numero di visualizzazioni mostrate sotto ogni video nell\'interfaccia utente. Ogni chiave (una lettera/parola nella tua lingua) -> valore (significato della chiave) deve essere su una nuova riga. Le chiavi vanno prima del segno \"->\". Se cambi l\'app o la lingua di sistema, devi reimpostare questa impostazione.\n\nEsempi:\nEnglish: 10K views = K -> 1000, views -> views\nSpanish: 10 K vistas = K -> 1000, vistas -> visualizzazioni + Specifica il tuo modello linguistico per il numero di visualizzazioni mostrate sotto ogni video nell\'interfaccia utente. Ogni chiave (una lettera/parola nella tua lingua) -> valore (significato della chiave) deve essere su una nuova riga. Le chiavi vanno prima del segno \"->\". Se cambi la lingua dell\'app o di sistema, devi reimpostare questa impostazione.\n\nEsempi:\nInglese: 10K views = K -> 1000, views -> visualizzazioni\nSpagnolo: 10 K vistas = K -> 1000, vistas -> visualizzazioni K -> 1 000\nM -> 1 000 000\nB -> 1 000 000 000\nvisualizzazioni -> visualizzazioni Generale Cambia la scheda iniziale Esplora canali - Home (predefinita) + Predefinita Esplora Gaming Cronologia - Raccolta (Tu) + Libreria Video piaciuti Diretta Film @@ -282,51 +282,52 @@ Problemi noti: Iscrizioni Tendenze Guarda più tardi - Scheda iniziale non valida, ripristinata al predefinito. + Scheda iniziale non valida, ripristinata al valore predefinito. Disabilita le tracce audio automatiche forzate Le tracce audio automatiche forzate sono disattivate. Le tracce audio automatiche forzate sono abilitate. Disattiva i sottotitoli automatici forzati - I sottotitoli automatici forzati sono disattivati - I sottotitoli automatici forzati sono attivati - Disabilita l\'animazione dell\'avvio + I sottotitoli automatici forzati sono disattivati. + I sottotitoli automatici forzati sono attivati. + Disabilita l\'animazione all\'avvio L\'animazione di avvio è disabilitata. L\'animazione di avvio è abilitata. Attiva la schermata di caricamento gradiente - La schermata di caricamento gradiente è attivata - La schermata di caricamento gradiente è disattivata + La schermata di caricamento gradiente è attivata. + La schermata di caricamento gradiente è disattivata. Nascondi il pulsante fluttuante del microfono - Il pulsante fluttuante del microfono è nascosto - Il pulsante fluttuante del microfono è visibile + Il pulsante fluttuante del microfono è nascosto. + Il pulsante fluttuante del microfono è visibile. Nascondi i separatori grigi - I separatori grigi sono nascosti - I separatori grigi sono visibili - Nascondi le notifiche snackbar - Le notifiche snackbar sono nascoste - Le notifiche snackbar sono visibili - Nascondi la finestra di discrezione del visualizzatore - "Questo non bypassa la restrizione di età, ma lo accetta automaticamente" + I separatori grigi sono nascosti. + I separatori grigi sono visibili. + Nascondi la snack bar + La snack bar è nascosta. + La snack bar è visibile. + Rimuovi la finestra di discrezione del visualizzatore + "Rimuove la finestra di discrezione del visualizzatore. +Questo non aggira la restrizione di età. La accetta solamente in automatico." Attiva l\'interfaccia da telefono - Simula un diverso valore DPI per usare alcune parti dell\'interfaccia da telefono + Camuffa i dpi per usare alcune interfacce da telefono. Attiva l\'interfaccia da tablet - Simula un diverso valore DPI per usare alcune parti dell\'interfaccia da tablet + Camuffa i dpi per usare alcune interfacce da tablet. Sovrascrivi il pulsante di download video - Il pulsante nativo per il download video apre il tuo downloader esterno. - Il pulsante nativo di download video apre il nativo in-app downloader. - Sovrascrivi il pulsante download playlist - Il pulsante nativo di download della playlist apre il tuo downloader esterno. - Il pulsante nativo di download della playlist apre il nativo in-app downloader. - Nome pacchetto playlist downloader - Nome del pacchetto dell\'applicazione esterna di downloader installata, come YTDLnis. - Simula la versione dell\'app - Versione spoofata - Versione non spoofata - "La versione dell'app sarà spoofata per una versione più vecchia di YouTube. + Il pulsante nativo per scaricare il video apre il tuo scaricatore esterno. + Il pulsante nativo per scaricare il video apre lo scaricatore nativo. + Sovrascrivi il pulsante per scaricare una playlist + Il pulsante nativo per scaricare una playlist apre il tuo scaricatore esterno. + Il pulsante nativo per scaricare una playlist apre lo scaricatore nativo. + Nome del pacchetto dello scaricatore di playlist + Nome del pacchetto dello scaricatore esterno installato, come YTDLnis. + Camuffa la versione dell\'app + Versione camuffata + Versione non camuffata + "La versione dell'app sarà camuffata a una versione meno recente di YouTube. Questo cambierà l'aspetto e le caratteristiche dell'app, ma possono verificarsi effetti collaterali sconosciuti. -Se in seguito è disattivato, si consiglia di cancellare i dati dell'app per prevenire i bug dell'UI." - Modifica la versione dell\'app da simulare +Se disattivata in seguito, si consiglia di cancellare i dati dell'app per evitare errori grafici." + Modifica la versione da camuffare dell\'app Digita la versione dell\'app da simulare La versione dell\'app da simulare 17.33.42 - Ripristina la vecchia interfaccia @@ -335,7 +336,7 @@ Se in seguito è disattivato, si consiglia di cancellare i dati dell'app per pre 18.17.43 - Ripristina il vecchio pannello a comparsa del riproduttore 18.33.40 - Ripristina la vecchia barra d\'azione degli Shorts 18.38.45 - Ripristina il comportamento della vecchia qualità video predefinita - 18.48.39 - Disabilita \'visualizzazioni\' e \'mi piace\' dall\'essere aggiornato in tempo reale + 18.48.39 - Disabilita l\'aggiornamento in tempo reale di visualizzazioni e dei Mi piace Menù account Nascondi o mostra gli elementi nel menu account e nella scheda Tu. @@ -343,7 +344,7 @@ Se in seguito è disattivato, si consiglia di cancellare i dati dell'app per pre "Nascondi gli elementi del menù dell'account e della scheda Tu. Alcuni componenti potrebbero non essere nascosti" Modifica il filtro dei menù dell\'account - Elenco dei nomi dei menu degli account da filtrare, separati da nuove righe. + Elenco di nomi dei menu degli account da filtrare, separati da nuove righe. Nascondi l\'handle L\'handle è nascosto L\'handle è visibile @@ -358,69 +359,69 @@ Alcuni componenti potrebbero non essere nascosti" Configura i componenti da nascondere separati da nuove righe Filtro personalizzato non valido (%s) - Mini riproduttore + Riproduttore minimizzato Cambia lo stile del riproduttore minimizzato nell\'app. - Tipo di Mini riproduttore + Tipologia del riproduttore minimizzato Originale Telefono Tablet Moderno 1 Moderno 2 Moderno 3 - Azione doppio tocco + Abilita azione al doppio tocco "L'azione a doppio tocco è abilitata. -• Moderno 1: Doppio tocco per cambiare il video minimizzato a una dimensione maggiore. -• Moderno 2, 3: Doppio tocco per chiudere il video minimizzato." +• Toccare due volte per aumentare la dimensione del video minimizzato. +• Toccare nuovamente due volte per ripristinare la dimensione originale." Azione a doppio tocco è disabilitata. - Abilita trascinamento e rilascio - Trascinamento e rilascio è abilitato. - Trascinamento e rilascio è disabilitato. + Abilita il trascinamento e rilascio + Il trascinamento e rilascio è abilitato. + Il trascinamento e rilascio è disabilitato. Nascondi i pulsanti espandi e chiudi - I pulsanti sono nascosti.\n(fai scorrere il mini riproduttore per espandere o chiudere) + I pulsanti sono nascosti.\n(fai scorrere il riproduttore minimizzato per espandere o chiudere) I pulsanti Espandi e chiudi sono mostrati. - Nascondi sottotitoli - I sottotitoli sono nascosti. - I sottotitoli sono mostrati. - Nascondi i pulsanti salta avanti e indietro - Salta avanti e indietro sono nascosti. - Salta avanti e indietro sono mostrati. - Opacità di sovrapposizione - Il valore dell\'opacità è compreso tra 0 a 100, dove 0 è trasparente. - L\'opacità della sovrapposizione del Mini riproduttore deve essere compresa tra 0-100. Reimposta ai valori predefiniti. + Nascondi i sottotesti + I sottotesti sono nascosti. + I sottotesti sono mostrati. + Nascondi i pulsanti salta avanti e salta indietro + Salta avanti e salta indietro sono nascosti. + Salta avanti e salta indietro sono mostrati. + Opacità della copertura + Il valore dell\'opacità è compreso tra 0 e 100, dove 0 è trasparente. + L\'opacità della copertura del riproduttore minimizzato deve essere compresa tra 0 e 100. Reimpostati i valori predefiniti. Pulsanti di navigazione Nascondi o mostra i componenti della sezione della barra di navigazione. - Abilita pulsanti di navigazione stretti - La spaziatura tra i pulsanti di navigazione è stretta. + Abilita pulsanti di navigazione ristretti + La spaziatura tra i pulsanti di navigazione è ristretta. La spaziatura tra i pulsanti di navigazione è normale. - Nascondi il pulsante crea - Il pulsante crea è nascosto. - Il pulsante Crea è mostrato. - Nascondi pulsante Home + Nascondi il pulsante Crea + Il pulsante Crea è nascosto. + Il pulsante Crea è visibile. + Nascondi il pulsante Home Il pulsante Home è nascosto. - Il pulsante Home è mostrato. - Nascondi pulsante libreria + Il pulsante Home è visibile. + Nascondi il pulsante Libreria Il pulsante Libreria è nascosto. - Il pulsante Libreria è mostrato. - Nascondi pulsante notifiche - Il pulsante Notifiche è nascosto. - Il pulsante Notifiche è mostrato. + Il pulsante Libreria è visibile. + Nascondi il pulsante notifiche + Il pulsante notifiche è nascosto. + Il pulsante notifiche è visibile. Nascondi il pulsante Shorts Il pulsante Shorts è nascosto. - Il pulsante Shorts è mostrato. + Il pulsante Shorts è visibile. Nascondi la pagina Iscrizioni - Il pulsante iscrizioni è nascosto. - Il pulsante d\'iscrizione è mostrato. + Il pulsante Iscrizioni è nascosto. + Il pulsante Iscrizioni è visibile. Nascondi le etichette della barra di navigazione - Le etichette della barra di navigazione sono nascoste - Le etichette della barra di navigazione sono visibili - Scambia crea con notifiche - "Scambia le posizioni del pulsante crea e notifica tramite informazioni sul dispositivo di spoofing. + Le etichette della barra di navigazione sono nascoste. + Le etichette della barra di navigazione sono visibili. + Scambia il pulsante Crea con il pulsante notifiche + "Scambia le posizioni del pulsante Crea con il pulsante notifiche camuffando informazioni del dispositivo. • Potrebbe essere necessario riavviare il dispositivo per rendere effettiva la modifica di questa impostazione. • Disabilitare questa impostazione carica più annunci dal lato server. -• Dovresti disabilitare questa impostazione per rendere visibili gli annunci video." +• Dovresti disabilitare questa impostazione per rendere visibili gli annunci nei video." Abilita barra di navigazione traslucida La barra di navigazione è traslucida. La barra di navigazione è opaca. @@ -429,7 +430,7 @@ Alcuni componenti potrebbero non essere nascosti" Nascondi gli elementi del menu delle impostazioni di YouTube. Nascondi menu impostazioni di YouTube Nascondi elementi nel menu delle impostazioni di YouTube. - Filtro menu impostazioni di YouTube + Filtro sul menu delle impostazioni di YouTube Elenco dei nomi dei menu delle impostazioni di YouTube da filtrare, separati da nuove righe. "Account Risparmio dati @@ -443,63 +444,65 @@ Sottotitoli" Attiva la barra di ricerca estesa La barra di ricerca estesa è attivata La barra di ricerca estesa è disattivata - Abilita barra di ricerca larga con intestazione - L\'ampia barra di ricerca include l\'intestazione di YouTube. - L\'ampia barra di ricerca non include l\'intestazione di YouTube. + Abilita la barra di ricerca larga con intestazione + La barra di ricerca ampia include l\'intestazione di YouTube. + La barra di ricerca ampia nasconde l\'intestazione di YouTube. Attiva la barra di ricerca estesa nella scheda Tu - "L'attivazione di questa impostazione disattiverà il pulsante Impostazioni nella scheda Tu. + "L'attivazione di questa impostazione disabilita il pulsante Impostazioni nella scheda Tu. -In questo caso, usate il seguente percorso: -Scheda Tu > Visualizza canale > Menù > Impostazioni" - Nascondi il pulsante trasmetti - Il pulsante trasmetti è nascosto. - Il pulsante trasmetti è mostrato. - Nascondi il pulsante crea - Il pulsante crea è nascosto. - Il pulsante Crea è mostrato. - Nascondi il pulsante notifica - Il pulsante notifica è nascosto. - Il pulsante notifica è mostrato. - Nascondi i thumbnails nella cronologia delle ricerche +In questo caso, per accedere alle impostazioni, utilizzare il seguente percorso: +Scheda Tu → Visualizza canale → Menu → Impostazioni" + Nascondi il pulsante Trasmetti + Il pulsante Trasmetti è nascosto. + Il pulsante Trasmetti è mostrato. + Nascondi il pulsante Crea + Il pulsante Crea è nascosto. + Il pulsante Crea è visibile. + Nascondi il pulsante di Notifiche + Il pulsante di Notifiche è nascosto. + Il pulsante di Notifiche è visibile. + Nascondi il anteprime nella cronologia delle ricerche I thumbnails nella cronologia delle ricerche sono nascosti I thumbnails nella cronologia delle ricerche sono visibili Nascondi il pulsante di ricerca immagine Il pulsante di ricerca immagine è nascosto. - Il pulsante di ricerca immagine è mostrato. + Il pulsante di ricerca immagine è visibile. Nascondi pulsante di ricerca vocale Il pulsante di ricerca vocale è nascosto. - Il pulsante di ricerca vocale è mostrato. - Sostituisci il pulsante crea - Sostituisce il pulsante crea con il pulsante impostazioni. + Il pulsante di ricerca vocale è visibile. + Sostituisci il pulsante Crea + Sostituisce il pulsante Crea con il pulsante Impostazioni. Tipo di azione da assegnare al pulsante - "Tocca per aprire le impostazioni RVX. + "Tocca per aprire le impostazioni di RVX. Tocca e tieni premuto per aprire le impostazioni di YouTube." "Tocca per aprire le impostazioni di YouTube. -Tocca e tieni premuto per aprire le impostazioni RVX." +Tocca e tieni premuto per aprire le impostazioni di RVX." Riproduttore L\'opacità personalizzata della sovrapposizione del riproduttore Il valore dell\'opacità è compreso tra 0 a 100, dove 0 è trasparente - L\'opacità della sovrapposizione del riproduttore deve essere compresa tra 0 e 100, ripristinata al predefinito. + L\'opacità della copertura del riproduttore deve essere compresa tra 0 e 100. Ripristinati i valori predefiniti. Disabilita i pannelli popup del riproduttore I pannelli popup del riproduttore automatico sono disabilitati. I pannelli popup del riproduttore automatico sono abilitati. Disattiva la sovrapposizione della velocità quando tieni premuto - "Disattiva il \"2x\" quando tieni premuto. + "Disabilita la funzione '2x>>' tenendo premuto. -Nota: disattivando la sovrapposizione della velocità verrà ripristinato lo \"Scorri la barra di avanzamento\" della vecchia interfaccia" - Valore sovrapposizione velocità - Valore sovrapposizione velocità tra 0-8.0. - Il valore della sovrapposizione di velocità deve essere compreso tra 0-8.0. Reimposta ai valori predefiniti. +Nota: +• Disattivando la funzione di sovrimpressione della velocità, si ripristina il comportamento del 'Trascina per scorrere il video' del vecchio layout. +• Disattivando questa impostazione non si abilita forzatamente la sovrimpressione della velocità." + Valore di sovrimpressione di velocità + Valore di sovrimpressione di velocità tra 0 e 8.0. + Il valore di sovrimpressione di velocità deve essere compreso tra 0 e 8.0. Ripristinati i valori predefiniti. Nascondi il watermark nei video Il watermark nei video è nascosto Il watermark nei video è visibile Nascondi il riquadro della raccolta fondi Il riquadro della raccolta fondi è nascosto Il riquadro della raccolta fondi è visibile - Nascondi il filtro di sovrapposizione doppio tocco - Il filtro di sovrapposizione a doppio tocco è nascosto. - Il filtro di sovrapposizione doppio tocco è mostrato. + Nascondi il filtro di sovrimpressione al doppio tocco + Il filtro di sovrimpressione al doppio tocco è nascosto. + Il filtro di sovrimpressione al doppio tocco è visibile. Nascondi le schede finali Le schede finali sono nascoste Le schede finali sono visibili @@ -512,9 +515,9 @@ Nota: disattivando la sovrapposizione della velocità verrà ripristinato lo \"S Nascondi i pannelli informativi I pannelli informativi sono nascosti I pannelli informativi sono visibili - Nascondi messaggi della chat dal vivo - I messaggi chat dal vivo sono nascosti.\n\nQuesta impostazione si applica anche alle Short dal vivo. - I messaggi chat dal vivo sono mostrate.\n\nQuesta impostazione si applica anche alle Short dal vivo. + Nascondi i messaggi della chat dal vivo + I messaggi della chat dal vivo sono nascosti.\n\nQuesta impostazione si applica anche agli Short dal vivo. + I messaggi della chat dal vivo sono visibili.\n\nQuesta impostazione si applica anche agli Short dal vivo. Nascondi i pannelli medici I pannelli medici sono nascosti I pannelli medici sono visibili @@ -525,73 +528,73 @@ Nota: disattivando la sovrapposizione della velocità verrà ripristinato lo \"S Il messaggio di annullamento è nascosto Il messaggio di annullamento è visibile Nascondi le azioni consigliate - Le azioni consigliate sono nascoste - Le azioni consigliate sono visibili + Le azioni consigliate sono nascoste. + Le azioni consigliate sono visibili. Nascondi le reazioni temporizzate Le reazioni temporizzate sono nascoste Le reazioni temporizzate sono visibili Nascondi il video suggerito della schermata finale - "Il video suggerito della schermata finale è nascosta quando la riproduzione automatica è disattivata. + "Il video suggerito della schermata finale è nascosto quando la riproduzione automatica è disattivata. -La riproduzione automatica può essere modificato nelle impostazioni di YouTube: -'Impostazioni → riproduzione automatica→ riproduzione automatica del video successivo'" - Il video suggerito della schermata finale è mostrato. - Nascondi sovrapposizione zoom - La sovrapposizione zoom è nascosta. - La sovrapposizione zoom è mostrata. +La riproduzione automatica può essere modificata nelle impostazioni di YouTube: +Impostazioni → Riproduzione automatica → Riproduzione automatica del video successivo" + Il video suggerito della schermata finale è visibile. + Nascondi sovrimpressione dello zoom + La sovrimpressione dello zoom è nascosta. + La sovrimpressione dello zoom è visibile. Salta il conto alla rovescia della riproduzione automatica Se la riproduzione automatica è abilitata, il video successivo verrà riprodotto immediatamente. Se la riproduzione automatica è abilitata, il video successivo verrà riprodotto al termine del conto alla rovescia. Pulsanti azione Nascondi o mostra i pulsanti di azione sotto i video. - Disabilita il bagliore dei pulsanti Mi piace e Non mi piace - I pulsanti Mi piace e non mi piace non brilleranno quando menzionati. - I pulsanti Mi piace e non mi piace brilleranno quando menzionati. + Disabilita l\'effetto bagliore dei pulsanti Mi piace e Non mi piace + I pulsanti Mi piace e Non mi piace non brilleranno quando menzionati. + I pulsanti Mi piace e Non mi piace brilleranno quando menzionati. Nascondi il pulsante Clip - Il pulsante clip è nascosto. - Il pulsante clip è mostrato. + Il pulsante Clip è nascosto. + Il pulsante Clip è visibile. Nascondi il pulsante Scarica Il pulsante Scarica è nascosto. - Il pulsante Scarica è mostrato. + Il pulsante Scarica è visibile. Nascondi i pulsanti Mi Piace e Non Mi Piace I pulsanti Mi Piace e Non Mi Piace sono nascosti. - I pulsanti Mi Piace e Non Mi Piace sono mostrati. + I pulsanti Mi Piace e Non Mi Piace sono visibili. Nascondi il pulsante Remix Il pulsante Remix è nascosto. - Il pulsante Remix è mostrato. + Il pulsante Remix è visibile. Nascondi il pulsante Segnala Il pulsante Segnala è nascosto. - Il pulsante Segnala è mostrato. - Nascondi pulsante ricompense + Il pulsante Segnala è visibile. + Nascondi pulsante Ricompense Il pulsante Ricompense è nascosto. - Il pulsante Ricompense è mostrato. - Nascondi il pulsante Salva in una Playlist - Il pulsante Salva in una Playlist è nascosto. - Il pulsante Salva in una Playlist è mostrato. + Il pulsante Ricompense è visibile. + Nascondi il pulsante Salva + Il pulsante Salva è nascosto. + Il pulsante Salva è visibile. Nascondi il pulsante Condividi Il pulsante Condividi è nascosto. - Il pulsante Condividi è mostrato. + Il pulsante Condividi è visibile. Nascondi il pulsante Negozio Il pulsante Negozio è nascosto. - Il pulsante negozio è mostrato. - Nascondi pulsante grazie + Il pulsante Negozio è visibile. + Nascondi pulsante Grazie Il pulsante Grazie è nascosto. - Il pulsante Grazie è mostrato. + Il pulsante Grazie è visibile. - Modalità ambiente - Disabilita la modalità Ambiente o Bypassa le restrizioni della modalità Ambiente. + Modalità Ambient + Disabilita la modalità Ambient o bypassa le restrizioni della modalità Ambient. Bypassa le restrizioni della modalità Ambient La modalità Ambient in modalità risparmio energetico è attivata La modalità Ambient in modalità risparmio energetico è disattivata Disattiva la modalità Ambient La modalità Ambient è disabilitata. La modalità Ambient è abilitata. - Disattiva la modalità Ambient a schermo intero - La modalità Ambient è disabilitata a schermo intero. - La modalità Ambient è abilitata a schermo intero. + Disattiva la modalità Ambient nella visione a schermo intero + La modalità Ambient è disabilitata nella visione a schermo intero. + La modalità Ambient è abilitata nella visione a schermo intero. - Barra canale + Barra del canale Nascondi o mostra i componenti della barra dei canali sotto i video. Nascondi il pulsante Abbonati Il pulsante Abbonati è nascosto @@ -605,86 +608,86 @@ La riproduzione automatica può essere modificato nelle impostazioni di YouTube: Nascondi le linee guida del canale Le linee guida del canale sono nascoste Le linee guida del canale sono visibili - Nascondi il banner dei commenti dei membri - Il banner dei commenti dei membri è nascosto - Il banner dei commenti dei membri è visibile + Nascondi il banner dei Commenti dei membri + Il banner dei Commenti dei membri è nascosto. + Il banner dei Commenti dei membri è visibile. Nascondi la sezione Commenti La sezione Commenti è nascosta La sezione Commenti è visibile - Nascondi la sezione commenti nel feed home - La sezione Commenti è nascosta nella home feed. - La sezione dei commenti è mostrata nel feed home. + Nascondi la sezione Commenti nella home + La sezione Commenti è nascosta nella home. + La sezione dei Commenti è mostrata nella home. Nascondi il commento di anteprima Il commento di anteprima è nascosto Il commento di anteprima è visibile Nascondi il tipo di commento di anteprima - Questo non cambia la dimensione della sezione Commenti, quindi è possibile aprire \"Riproduzione Chat dal Vivo\" - Questo cambia la dimensione della sezione Commenti, quindi è impossibile aprire \"Riproduzione Chat dal Vivo\" + Questo non cambia la dimensione della sezione Commenti, quindi è possibile aprire \"Riproduci Chat dal Vivo\". + Questo cambia la dimensione della sezione Commenti, quindi è impossibile aprire \"Riproduci Chat dal Vivo\". Nascondi il pulsante Crea Short Il pulsante Crea Shorts è nascosto. - Il pulsante Crea shorts è mostrato. - Nascondi il pulsante grazie + Il pulsante Crea shorts è visibile. + Nascondi il pulsante Grazie Il pulsante Grazie è nascosto. - Il pulsante Grazie è mostrato. + Il pulsante Grazie è visibile. Nascondi i pulsanti timestamp ed emoji - I pulsanti Timestamp ed emoji sono nascosti. - I pulsanti Timestamp ed emoji sono mostrati. + I pulsanti timestamp ed emoji sono nascosti. + I pulsanti timestamp ed emoji sono visibili. Menu a comparsa Nascondi o cambia i componenti del menu a comparsa nel riproduttore video. Cambia il tipo d\'interruttore - Vengono utilizzati i commutatori di testo. + Vengono utilizzati gli interruttori con testo. Vengono utilizzati gli interruttori a levetta. - Nascondi il menu traccia audio - Il menu Traccia Audio è nascosto. - Il menu traccia audio è mostrato. + Nascondi il menu Traccia audio + Il menu Traccia audio è nascosto. + Il menu Traccia audio è visibile. Nascondi il menu Sottotitoli Il menu Sottotitoli è nascosto. Il menu Sottotitoli è visibile. Nascondi la parte inferiore del menu Sottotitoli La parte inferiore del menu Sottotitoli è nascosta. - La parte inferiore del menu Sottotitoli è mostrato. + La parte inferiore del menu Sottotitoli è visibile. Nascondi il menu Blocca Schermo Il menu Blocca Schermo è nascosto. - Il menu della schermata di blocco è mostrato. - Nascondi menu più informazioni - Menu più informazioni è nascosto. - Menu più informazioni è mostrato. + Il menù Blocca Schermo è visibile. + Nascondi menu Più informazioni + Il menu Più informazioni è nascosto. + Il menu Più informazioni è visibile. Nascondi il menu della Velocità di Riproduzione Il menu della Velocità di Riproduzione è nascosto. - Il menu della velocità di riproduzione è mostrato. - Nascondi intestazione menu qualità - L\'intestazione del menu di qualità è nascosta. - L\'intestazione del menu di qualità è mostrata. - Nascondi la parte inferiore del menu Qualità - La parte inferiore del menu Qualità è nascosta. - La parte inferiore del menu Qualità è mostrato. + Il menu della velocità di riproduzione è visibile. + Nascondi l\'intestazione del menu qualità + L\'intestazione del menu qualità è nascosta. + L\'intestazione del menu qualità è visibile. + Nascondi la parte inferiore del menu qualità + La parte inferiore del menu qualità è nascosta. + La parte inferiore del menu qualità è visibile. Nascondi il menu Segnala Il menu Segnala è nascosto. - Il menu Segnala è mostrato. + Il menu Segnala è visibile. Impostazioni aggiuntive - Nascondi il menu Modalità Ambiente - Il menu Modalità Ambiente è nascosto. - Il menu Modalità Ambiente è mostrato. - Nascondi menu aiuto & feedback - Aiuto & menu di feedback è nascosto. - Aiuto & menu di feedback è mostrato. + Nascondi il menu Modalità Ambient + Il menu Modalità Ambient è nascosto. + Il menu Modalità Ambient è visibile. + Nascondi menu Guida & feedback + Il menu Guida & feedback è nascosto. + Il menu Guida & feedback è visibile. Nascondi il menu Ascolta con YouTube Music Il menu Ascolta con YouTube Music è nascosto. - Il menu Ascolta con YouTube Music è mostrato. - Nascondi il menu Loop del Video - Il menu Loop del Video è nascosto. - Il menu Loop del Video è mostrato. - Nascondi il menu picture-in-picture - Il menu picture-in-picture è nascosto. - Il menu picture-in-picture è mostrato. - Nascondi menu controlli premium + Il menu Ascolta con YouTube Music è visibile. + Nascondi il menu Loop del video + Il menu Loop del video è nascosto. + Il menu Loop del video è visibile. + Nascondi il menu Picture-in-picture + Il menu Picture-in-picture è nascosto. + Il menu Picture-in-picture è visibile. + Nascondi menu Controlli premium Il menu Controlli premium è nascosto. - Il menu Controlli premium è mostrato. - Nascondi il menu Volume Stabile - Il menu Volume Stabile è mostrato. - Il menu Volume Stabile è nascosto. + Il menu Controlli premium è visibile. + Nascondi il menu Volume stabile + Il menu Volume stabile è visibile. + Il menu Volume stabile è nascosto. Nascondi il menu Statistiche per Nerd Il menu Statistiche per Nerd è nascosto. Il menu Statistiche per Nerd è mostrato. @@ -781,7 +784,7 @@ Problema noto: potrebbe rompere la funzione Picture-in-Picture Il feedback tattile è disabilitato. Il feedback tattile è abilitato. - Pulsanti del Riproduttore + Pulsanti del riproduttore Nascondi o mostra i pulsanti nel riproduttore video. Nascondi il pulsante Riproduzione Automatica Il pulsante Riproduzione Automatica è nascosto. @@ -1415,6 +1418,9 @@ Tocca il pulsante continua e disabilita le ottimizzazioni della batteria."Rimuove i parametri della query di tracciamento dagli URL durante la condivisione dei link Disattiva il protocollo QUIC "Disattiva il protocollo QUIC di CronetEngine" + Cambia schermata di condivisione + Schermata di condivisione di sistema in utilizzo. + Schermata di condivisione nativa in utilizzo. Abilita codec OPUS Abilita il codec OPUS se la risposta del riproduttore include il codec OPUS. Simula i parametri del riproduttore diff --git a/src/main/resources/youtube/translations/ja-rJP/strings.xml b/src/main/resources/youtube/translations/ja-rJP/strings.xml index fbc5e19766..07bfe57b8e 100644 --- a/src/main/resources/youtube/translations/ja-rJP/strings.xml +++ b/src/main/resources/youtube/translations/ja-rJP/strings.xml @@ -524,13 +524,13 @@ DeArrowの詳細については、ここをタップしてください。"シーク取り消しメッセージを非表示 シーク取り消しのメッセージを非表示にします。 シーク取り消しのメッセージを非表示にします。 - 提案されたアクションを非表示 + 提案されるアクションを非表示 プレーヤー上の「Premium のコントロール」などの提案を非表示にします。 プレーヤー上の「Premium のコントロール」などの提案を非表示にします。 リアクションを非表示 Timed Reactions を非表示にします。 Timed Reactions を非表示にします。 - おすすめされた動画の終了画面を非表示 + おすすめされる動画の終了画面を非表示 "自動再生がオフの場合、おすすめの動画は動画の終了画面で表示されません。\n\n自動再生は YouTube の設定で変更できます: 「設定 → 自動再生 → 次の動画を自動再生」" 自動再生がオフの場合、おすすめの動画は動画の終了画面で表示されません。\n\n自動再生は YouTube の設定で変更できます: 「設定 → 自動再生 → 次の動画を自動再生」 ズームオーバーレイを非表示 @@ -979,8 +979,8 @@ DeArrowの詳細については、ここをタップしてください。"「Super Thanks」ボタンを非表示にします。 「Super Thanks」ボタンを非表示にします。 タグ付き商品を非表示 - タグ付けされた商品を非表示にします。 - タグ付けされた商品を非表示にします。 + タグ付けされている商品を非表示にします。 + タグ付けされている商品を非表示にします。 位置情報のラベルを非表示 プレーヤー下部に表示される、位置情報のラベルを非表示にします。 プレーヤー下部に表示される、位置情報のラベルを非表示にします。 @@ -1412,8 +1412,8 @@ DeArrowの詳細については、ここをタップしてください。"QUIC プロトコルを無効化 "CronetEngine の QUIC プロトコルを無効化します。これにより動画の読み込み速度が多少改善されます。" 共有メニューを変更 - 「共有」ボタンをタップした際に表示される共有メニューを、システムのデフォルトの共有メニューに置き換えます。 - 「共有」ボタンをタップした際に表示される共有メニューを、システムのデフォルトの共有メニューに置き換えます。 + 「共有」ボタンをタップした際に表示される共有メニューを、システムの共有メニューに置き換えます。 + 「共有」ボタンをタップした際に表示される共有メニューを、システムの共有メニューに置き換えます。 OPUS コーデックを有効化 プレーヤーの応答に OPUS コーデックが含まれている場合、OPUS コーデックを有効化します。 プレーヤーのパラメーターを偽装 @@ -1544,7 +1544,7 @@ DeArrowの詳細については、ここをタップしてください。"パッチ情報 パッチ情報 - 適用されたパッチに関する情報 + 適用されたパッチに関する情報です。 使用されたツール diff --git a/src/main/resources/youtube/translations/ko-rKR/strings.xml b/src/main/resources/youtube/translations/ko-rKR/strings.xml index a97ffc5b18..000fa64629 100644 --- a/src/main/resources/youtube/translations/ko-rKR/strings.xml +++ b/src/main/resources/youtube/translations/ko-rKR/strings.xml @@ -1143,9 +1143,15 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 동영상 재생 속도 저장 활성화하기 동영상 재생 속도 값을 변경할 때마다 저장합니다. 동영상 재생 속도 값을 변경할 때마다 저장하지 않습니다. + 팝업 메시지 표시하기 + 기본 동영상 재생 속도 값으로 변경되었을 때, 팝업 메시지를 표시합니다. + 기본 동영상 재생 속도 값으로 변경되었을 때, 팝업 메시지를 표시하지 않습니다. 동영상 화질 저장 활성화하기 동영상 화질 값을 변경할 때마다 저장합니다. 동영상 화질 값을 변경할 때마다 저장하지 않습니다. + 팝업 메시지 표시하기 + 기본 동영상 화질 값으로 변경되었을 때, 팝업 메시지를 표시합니다. + 기본 동영상 화질 값으로 변경되었을 때, 팝업 메시지를 표시하지 않습니다. 이전 동영상 화질 설정 메뉴 활성화하기 이전 동영상 화질 설정 메뉴를 활성화합니다. 이전 동영상 화질 설정을 비활성화합니다. @@ -1315,6 +1321,7 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 건너뛴 횟수 기록을 비활성화합니다. 건너뛸 최소 구간 길이 설정한 값(초)보다 작은 구간은 건너뛰지 않으며, 재생바에도 표시되지 않습니다. + 잘못된 지속 시간입니다. 비공개 사용자 아이디 비공개 사용자 아이디는 SponsorBlock 서버에서 구간을 제출하거나 건너뛴 구간 정보를 기록하는데 사용되는 고유 아이디입니다. 절대 다른 이에게 공개하지 마세요. 비공개 사용자 아이디는 30자 이상이어야 합니다. @@ -1474,6 +1481,13 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 클라이언트를 변경합니다. "클라이언트를 변경하지 않습니다. \n동영상 재생 문제가 발생할 수 있습니다." 이 설정을 비활성화하면 동영상 재생 문제가 발생할 수 있습니다. + 클라이언트 타입 변경하기 + iOS AVC (H.264) 강제로 활성화하기 + iOS 동영상 코덱을 AVC (H.264)로 활성화합니다. + iOS 동영상 코덱을 AVC (H.264), VP9 또는 AV1으로 활성화합니다. + "이 설정을 활성화하면 배터리 수명이 향상되고 재생 끊김 현상이 해결될 수 있습니다. + +AVC (H.264)의 최대 해상도는 1080p이며 동영상을 재생하면 VP9 또는 AV1보다 더 많은 인터넷 데이터가 사용됩니다." 전문 통계에서 표시하기 전문 통계에서 변경된 클라이언트를 표시합니다. 전문 통계에서 변경된 클라이언트를 표시하지 않습니다. diff --git a/src/main/resources/youtube/translations/pl-rPL/strings.xml b/src/main/resources/youtube/translations/pl-rPL/strings.xml index f69a683abb..5833da55f9 100644 --- a/src/main/resources/youtube/translations/pl-rPL/strings.xml +++ b/src/main/resources/youtube/translations/pl-rPL/strings.xml @@ -11,7 +11,7 @@ Uruchom ponownie, aby wczytać poprawnie układ aplikacji Odśwież i uruchom ponownie Normalna - Nazwa pakietu aplikacji od pobierania + Nazwa pakietu aplikacji od pobierania (filmy) Nazwa pakietu zainstalowanej zewnętrznej aplikacji od pobierania, takiej jak NewPipe lub YTDLnis. Zewnętrzna aplikacja od pobierania Ostrzeżenie @@ -315,7 +315,7 @@ Nie pomija to ograniczeń wiekowych, lecz akceptuje je automatycznie." Metoda pobierania playlist Zewnętrzna aplikacja Natywne pobieranie - Nazwa pakietu aplikacji od pobierania + Nazwa pakietu aplikacji od pobierania (playlisty) Nazwa pakietu zainstalowanej zewnętrznej aplikacji od pobierania, takiej jak YTDLnis. Oszukiwanie wersji aplikacji Włączone diff --git a/src/main/resources/youtube/translations/ru-rRU/strings.xml b/src/main/resources/youtube/translations/ru-rRU/strings.xml index 4412f0418a..1165c52109 100644 --- a/src/main/resources/youtube/translations/ru-rRU/strings.xml +++ b/src/main/resources/youtube/translations/ru-rRU/strings.xml @@ -912,9 +912,9 @@ Shorts Секция \"Атрибуты\" Секция \"Атрибуты\" (Особенные места, Игры, Музыка) скрыта. Секция \"Атрибуты\" (Особенные места, Игры, Музыка) отображена. - Секции глав - Секции глав скрыты. - Секции глав отображены. + Секция \"Главы\" + Секция \"Главы\" скрыта. + Секция \"Главы\" отображена. Секция содержимого Секция содержимого скрыта. Секция содержимого отображена. @@ -930,9 +930,9 @@ Shorts Ссылки покупок Ссылки на покупки скрыты. Ссылки на покупки отображены. - Секции транскрипций - Секции транскрипций скрыты. - Секции транскрипций отображены. + Секция \"Расшифровка видео\" + Секция \"Расшифровка видео\" скрыта. + Секция \"Расшифровка видео\" отображена. Взаимодействие с описанием видео "Отключает следующее взаимодействие при расширении описания видео: diff --git a/src/main/resources/youtube/translations/vi-rVN/strings.xml b/src/main/resources/youtube/translations/vi-rVN/strings.xml index 9fa42e75a6..75678f90be 100644 --- a/src/main/resources/youtube/translations/vi-rVN/strings.xml +++ b/src/main/resources/youtube/translations/vi-rVN/strings.xml @@ -8,7 +8,7 @@ Tìm kiếm %s Tính năng thử nghiệm Bạn có muốn tiếp tục không? - Khởi động lại ứng dụng để các tính năng hoạt động bình thường + Vui lòng khởi động lại ứng dụng trong lần đầu khởi chạy để các tính năng hoạt động bình thường Làm mới và khởi động lại Bình thường Tên gói ứng dụng trình tải xuống video @@ -89,7 +89,7 @@ Nhấn vào đây để tìm hiểu thêm về DeArrow." DeArrow tạm thời không khả dụng. Hạn chế về hình ảnh do khu vực - Vượt qua hạn chế khu vực cho hình ảnh + Vượt qua hạn chế về hình ảnh do khu vực Sử dụng máy chủ hình ảnh yt4.ggpht.com. Sử dụng máy chủ lưu trữ hình ảnh gốc.\n\nBật tính năng này có thể khắc phục tình trạng hình ảnh bị chặn ở một số khu vực. @@ -105,9 +105,9 @@ Nhấn vào đây để tìm hiểu thêm về DeArrow." • Mua sắm • Xem lại" Ẩn các kệ được cá nhân hoá - Ẩn kệ danh mục đề xuất - Kệ danh mục đề xuất đã ẩn. - Kệ danh mục đề xuất được hiển thị. + Ẩn kệ danh mục được đề xuất + Kệ danh mục được đề xuất đã ẩn. + Kệ danh mục được đề xuất được hiển thị. Ẩn bảng giới thiệu mở rộng Bảng giới thiệu mở rộng đã ẩn bên dưới video. Bảng giới thiệu mở rộng được hiển thị bên dưới video. @@ -231,10 +231,10 @@ Bộ lọc có phân biệt chữ hoa chữ thường, vì vậy bạn cần nh Hạn chế: • Một số video ngắn có thể không bị ẩn. • Một số thành phần giao diện người dùng có thể không bị ẩn. -• Tìm kiếm từ khoá có thể không hiển kết quả nào." +• Tìm kiếm từ khoá có thể không cho kết quả nào." Từ khoá không hợp lệ. Không thể sử dụng: \"%s\" làm điều kiện lọc. Từ khoá không hợp lệ. \'%1$s\' phải ít hơn %2$d ký tự. - Từ khóa \'%1$s\' quá rộng và sẽ ẩn tất cả video + Từ khóa \'%1$s\' sẽ ẩn toàn bộ video. Video được đề xuất Ẩn video đề xuất @@ -247,15 +247,15 @@ Bộ lọc có phân biệt chữ hoa chữ thường, vì vậy bạn cần nh Bộ lọc thời lượng Ẩn video theo thời lượng - Ẩn các video có thời lượng ngắn hơn hoặc dài hơn thời lượng bạn đã đặt.\n\nSự cố đã biết: Tính năng này sẽ không ẩn video có liên quan trong trình phát mà chỉ ẩn dấu thời gian. + Ẩn các video có thời lượng ngắn hơn hoặc dài hơn thời lượng bạn đã đặt.\n\nSự cố đã biết: Tính năng này sẽ không ẩn video có liên quan trong trình phát mà chỉ ẩn mốc thời gian. Dài hơn Nhập thời lượng. Video có thời lượng dài hơn mức này sẽ bị ẩn. Ngắn hơn Nhập thời lượng. Video có thời lượng ngắn hơn mức này sẽ bị ẩn. Bộ lọc số lượt xem - Ẩn video đề xuất theo số lượt xem - Ẩn các video đề xuất có số lượt xem ít hơn số lượt xem bạn đã đặt. + Ẩn video được đề xuất theo số lượt xem + Ẩn các video đề xuất có số lượt xem ít hơn số lượt xem bạn đã đặt.\n\nSự cố đã biết: Các video chưa có lượt xem nào sẽ không bị lọc. Cao hơn Nhập số lượt xem. Video có số lượt xem cao hơn mức này sẽ bị ẩn. Thấp hơn @@ -292,9 +292,9 @@ Bộ lọc có phân biệt chữ hoa chữ thường, vì vậy bạn cần nh Tắt ảnh động khởi chạy Ảnh động khởi chạy đã tắt. Ảnh động khởi chạy đã bật. - Sử dụng hiệu ứng chuyển sắc cho màn hình chờ tải - Hiệu ứng chuyển sắc cho màn hình chờ tải đã được kích hoạt. - Hiệu ứng chuyển sắc cho màn hình chờ tải đã được vô hiệu hoá. + Màn hình tải màu gradient + Màn hình tải màu gradient đã bật. + Màn hình tải màu gradient đã tắt. Ẩn nút Tìm kiếm bằng giọng nói nổi Nút Tìm kiếm bằng giọng nói nổi đã ẩn khi tìm kiếm. Nút Tìm kiếm bằng giọng nói nổi được hiển thị khi tìm kiếm. @@ -320,13 +320,13 @@ Tuỳ chọn này chỉ tự động chấp nhận hộp thoại cảnh báo, kh Tên gói ứng dụng trình tải xuống danh sách phát Nhập tên gói ứng dụng trình tải xuống đã cài đặt trên thiết bị của bạn, chẳng hạn như YTDLnis. Giả mạo phiên bản ứng dụng - Đã giả mạo phiên bản - Phiên bản chưa được giả mạo + Phiên bản đã được giả mạo + Phiên bản không được giả mạo "Phiên bản ứng dụng sẽ được giả mạo thành một phiên bản cũ hơn của Youtube. -Điều này sẽ thay đổi diện mạo và tính năng của ứng dụng, nhưng các tác dụng phụ có thể xảy ra. +Điều này sẽ làm thay đổi giao diện và tính năng của ứng dụng, nhưng đồng thời cũng có thể xẩy ra một số lỗi không xác định. -Nếu bạn tắt tính năng này sau này, hãy xóa dữ liệu ứng dụng để ngăn chặn một số lỗi giao diện." +Nếu muốn tắt tính năng này sau đó, bạn nên xóa dữ liệu ứng dụng để tránh phát sinh lỗi giao diện." Chỉnh sửa phiên bản giả mạo Nhập phiên bản YouTube mà bạn muốn giả mạo. Phiên bản giả mạo @@ -368,7 +368,7 @@ Một số thành phần có thể không bị ẩn." Hiện đại 1 Hiện đại 2 Hiện đại 3 - Hành động nhấn đúp + Thao tác nhấn đúp "Thao tác nhấn đúp đã được bật. • Nhấn đúp để phóng to video đang thu nhỏ. @@ -378,7 +378,7 @@ Một số thành phần có thể không bị ẩn." Đã kích hoạt kéo và thả. Đã vô hiệu kéo và thả. Ẩn các nút Mở rộng và Đóng - Các nút Mở rộng và Đóng đã ẩn.\nVuốt trình phát thu nhỏ để mở rộng hoặc đóng. + Các nút được ẩn.\n(vuốt trình phát thu nhỏ để mở rộng hoặc đóng) Các nút Mở rộng và Đóng được hiển thị. Ẩn văn bản Văn bản đã ẩn. @@ -424,7 +424,7 @@ Một số thành phần có thể không bị ẩn." • Tắt tuỳ chọn này có thể hiển thị quảng cáo dạng video." Kích hoạt thanh điều hướng trong suốt Thanh điều hướng đã được làm trong suốt. - Thanh điều hướng đã được làm mờ. + Thanh điều hướng đã được hiển thị. Trình đơn Cài đặt Ẩn các thành phần của trình đơn Cài đặt YouTube. @@ -439,8 +439,8 @@ Phụ đề" Thanh công cụ Ẩn hoặc thay đổi các thành phần trên thanh công cụ, chẳng hạn như thanh tìm kiếm, các nút trên thanh công cụ và tiêu đề YouTube. Thay đổi tiêu đề YouTube - • Bật: Tiêu đề YouTube Premium.\n• Tắt: Tiêu đề YouTube mặc định. - • Bật: Tiêu đề YouTube Premium.\n• Tắt: Tiêu đề YouTube mặc định. + Tiêu đề Premium được kích hoạt. + Tiêu đề Youtube được kích hoạt. Thanh tìm kiếm rộng Thanh tìm kiếm rộng đã bật. Thanh tìm kiếm rộng đã tắt. @@ -451,7 +451,7 @@ Phụ đề" "Bật thanh tìm kiếm rộng trên thẻ Bạn. Tuỳ chọn này sẽ ẩn nút Cài đặt trên thẻ Bạn. Để truy cập phần Cài đặt, vui lòng làm theo các bước sau: -Thẻ Bạn → Xem kênh → Trình đơn → Cài đặt." +Thẻ Bạn → Xem kênh → Trình đơn → Cài đặt" Ẩn nút Truyền Nút Truyền đã ẩn. Nút Truyền được hiển thị. @@ -514,7 +514,7 @@ Nhấn và giữ để mở cài đặt RVX." Ẩn bảng thông tin Bảng thông tin đã ẩn. Bảng thông tin được hiển thị. - Ẩn tin nhắn trò chuyện trực tiếp + Ẩn tin nhắn Trò chuyện trực tiếp Tin nhắn trò chuyện trực tiếp đã ẩn.\n\nTuỳ chọn này cũng áp dụng cho video trực tiếp trên Shorts. Tin nhắn trò chuyện trực tiếp được hiển thị.\n\nTuỳ chọn này cũng áp dụng cho video trực tiếp trên Shorts. Ẩn bảng thông tin y tế @@ -541,11 +541,11 @@ Cài đặt → Tự động phát → Tự động phát video tiếp theo."Ẩn lớp phủ zoom Lớp phủ zoom đã bị ẩn. Lớp phủ zoom đã được hiển thị. - Bỏ qua đếm ngược tự động phát + Bỏ qua tự động đếm ngược trước khi phát Bỏ qua đếm ngược tự động phát đã bật.\nNếu tính năng Tự động phát được bật, video tiếp theo sẽ phát ngay lập tức mà không cần đếm ngược. Bỏ qua đếm ngược tự động phát đã tắt.\nNếu tính năng Tự động phát được bật, video tiếp theo sẽ phát sau khi hết thời gian đếm ngược. - Nút hành động + Nút Hành động Ẩn hoặc hiển thị các nút hành động bên dưới video. Tắt hoạt ảnh các nút Thích và Không thích Các nút Thích và Không thích sẽ không sáng lên khi được nhắc đến. @@ -559,9 +559,9 @@ Cài đặt → Tự động phát → Tự động phát video tiếp theo."Ẩn các nút Thích và Không thích Các nút Thích và Không thích đã ẩn. Các nút Thích và Không thích được hiển thị. - Ẩn nút Phối lại - Nút Phối lại đã ẩn. - Nút Phối lại được hiển thị. + Ẩn nút Remix + Nút Remix đã ẩn. + Nút Remix được hiển thị. Ẩn nút Báo vi phạm Nút Báo vi phạm đã ẩn. Nút Báo vi phạm được hiển thị. @@ -574,22 +574,22 @@ Cài đặt → Tự động phát → Tự động phát video tiếp theo."Ẩn nút Chia sẻ Nút Chia sẻ đã ẩn. Nút Chia sẻ được hiển thị. - Ẩn nút Cửa hàng - Nút Cửa hàng đã ẩn. - Nút Cửa hàng được hiển thị. + Ẩn nút Mua sắm + Nút Mua sắm đã ẩn. + Nút Mua sắm được hiển thị. Ẩn nút Cảm ơn Nút Cảm ơn đã ẩn. Nút Cảm ơn được hiển thị. Chế độ môi trường xung quanh - Tắt hoặc bỏ qua các hạn chế của chế độ môi trường xung quanh. - Không giới hạn khi tiết kiệm pin - Không giới hạn khi tiết kiệm pin đã bật.\nChế độ môi trường xung quanh sẽ không tự động tắt khi thiết bị ở chế độ tiết kiệm pin. - Không giới hạn khi tiết kiệm pin đã tắt.\nChế độ môi trường xung quanh sẽ tắt khi thiết bị ở chế độ tiết kiệm pin. + Tắt hoặc bỏ qua các hạn chế của Chế độ môi trường xung quanh. + Không giới hạn Chế độ môi trường xung quanh + Chế độ môi trường xung quanh đã được kích hoạt trong chế độ tiết kiệm pin. + Chế độ môi trường xung quanh đang vô hiệu hoá trong chế độ tiết kiệm pin. Tắt chế độ môi trường xung quanh Chế độ môi trường xung quanh đã được vô hiệu hoá. Chế độ môi trường xung quanh đã được kích hoạt. - Tắt ở chế độ toàn màn hình + Tắt chế độ môi trường khi toàn màn hình Chế độ môi trường xung quanh đã được vô hiệu hoá ở chế độ toàn màn hình. Chế độ môi trường xung quanh đã được kích hoạt ở chế độ toàn màn hình. @@ -620,99 +620,100 @@ Cài đặt → Tự động phát → Tự động phát video tiếp theo."Phần Xem trước bình luận đã ẩn. Phần Xem trước bình luận được hiển thị. Ẩn nội dung bình luận - Ẩn nội dung bình luận đã bật.\nBật tuỳ chọn này sẽ chỉ ẩn nội dung xem trước bình luận mà không làm thay đổi kích thước của phần Bình luận nên bạn có thể vuốt sang trái để mở phần Phát lại cuộc trò chuyện trực tiếp. - Ẩn nội dung bình luận đã tắt.\nTắt tuỳ chọn này sẽ làm thay đổi kích thước của phần Bình luận, do đó bạn không thể mở phần Phát lại cuộc trò chuyện trực tiếp. + Tuỳ chọn này không thay đổi kích thước của phần bình luận, vì vậy có thể mở Phát lại trò chuyện trực tiếp trong phần bình luận. + Tuỳ chọn này thay đổi kích thước của phần bình luận, khiến bạn không thể mở Phát lại trò chuyện trực tiếp trong phần bình luận. Ẩn nút Tạo video Short Nút Tạo video Short đã ẩn. Nút Tạo tạo Short được hiển thị. Ẩn nút Cảm ơn Nút Cảm ơn đã ẩn. Nút Cảm ơn được hiển thị. - Ẩn nút dấu thời gian, biểu tượng cảm xúc - Các nút dấu thời gian và biểu tượng cảm xúc đã ẩn. - Nút dấu thời gian và biểu tượng cảm xúc được hiển thị. + Ẩn mốc thời gian và các nút biểu tượng cảm xúc + Mốc thời gian và các nút biểu tượng cảm xúc đã ẩn. + Mốc thời gian và các nút Biểu tượng cảm xúc được hiển thị. - Menu hiện ra - Ẩn hoặc thay đổi menu hiện ra trong trình phát video. - Thay đổi kiểu chuyển đổi - Chuyển đổi văn bản được sử dụng. - Công tắc chuyển đổi được sử dụng. - Ẩn menu Âm lượng ổn định - Menu Âm lượng ổn định đã ẩn. - Menu Âm lượng ổn định được hiển thị. - Ẩn menu Phụ đề - Menu phụ đề đã ẩn. - Menu phụ đề được hiển thị. - Ẩn chân trang menu phụ đề - Chân trang menu phụ đề đã ẩn. - Chân trang menu phụ đề được hiển thị. - Ẩn menu Khóa màn hình - Menu Khóa màn hình đã ẩn. - Menu Khóa màn hình được hiển thị. - Ẩn Thông tin thêm - Menu thông tin thêm đã ẩn. - Menu thông tin thêm được hiển thị. - Ẩn menu Tốc độ phát - Menu tốc độ phát đã ẩn. - Menu tốc độ phát được hiển thị. + Trình đơn tuỳ chọn + Ẩn hoặc thay đổi thành phần của trình đơn tuỳ chọn trong trình phát video. + Đổi kiểu bật/tắt tuỳ chọn + Đang sử dụng kiểu bật/tắt tuỳ chọn dạng văn bản. + Đang sử dụng kiểu bật/tắt tuỳ chọn dạng công tắc. + Ẩn mục Bản âm thanh + Mục Bản âm thanh đã ẩn. + Mục Bản âm thanh được hiển thị. + Ẩn mục Phụ đề + Mục Phụ đề đã ẩn. + Mục Phụ đề được hiển thị. + Ẩn ghi chú cuối mục Phụ đề + Ghi chú cuối mục Phụ đề đã ẩn. + Ghi chú cuối mục Phụ đề được hiển thị. + Ẩn mục Khoá màn hình + Mục Khoá màn hình đã ẩn. + Mục Khoá màn hình được hiển thị. + Ẩn mục Nội dung khác từ kênh + Mục Nội dung khác từ kênh đã ẩn. + Mục Nội dung khác từ kênh được hiển thị. + Ẩn mục Tốc độ phát + Mục Tốc độ phát đã ẩn. + Mục Tốc độ phát được hiển thị. Ẩn tiêu đề trình đơn Chất lượng Tiêu đề trình đơn Chất lượng đã ẩn. Tiêu đề trình đơn Chất lượng được hiển thị. - Ẩn chân trang menu chất lượng - Chân menu chất lượng đã ẩn. - Chân menu chất lượng được hiển thị. - Ẩn menu Báo cáo - Menu báo cáo đã ẩn. - Menu báo cáo được hiển thị. + Ẩn ghi chú cuối mục Chất lượng + Ghi chú cuối mục Chất lượng video hiện tại đã ẩn. + Ghi chú cuối mục Chất lượng video hiện tại được hiển thị. + Ẩn mục Báo cáo + Mục Báo vi phạm đã ẩn. + Mục Báo vi phạm được hiển thị. - Cài đặt thêm - Ẩn menu chế độ môi trường xung quanh - Menu chế độ môi trường xung quanh đã ẩn. - Menu chế độ môi trường xung quanh được hiển thị. + Cài đặt bổ sung + Ẩn mục Chế độ môi trường xung quanh + Mục Chế độ môi trường xung quanh đã ẩn. + Mục Chế độ môi trường xung quanh được hiển thị. Ẩn Trợ giúp & Phản hồi Trợ giúp & Phản hồi đã ẩn. - Menu Trợ giúp và Phản hồi được hiển thị. + Trợ giúp & Phản hồi được hiển thị. Ẩn mục Nghe nhạc cùng YouTube Music Mục Nghe nhạc cùng YouTube Music đã bị ẩn. Mục Nghe nhạc cùng YouTube Music được hiển thị. - Ẩn menu Lặp lại video - Menu lặp lại video đã ẩn. - Menu lặp lại video được hiển thị. - Ẩn menu Hình trong hình - Menu hình trong hình đã ẩn. - Menu hình trong hình được hiển thị. - Ẩn menu Premium - Menu Premium đã ẩn. - Menu Premium được hiển thị. - Ẩn menu Âm lượng ổn định - Menu âm lượng ổn định được hiển thị. - Menu âm lượng ổn định đã ẩn. - Ẩn menu Thống kê - Số liệu thống kê đã ẩn. - Số liệu thống kê được hiển thị. - Ẩn menu xem trong VR - Xem trong VR đã ẩn. - Xem trong VR được hiển thị. + Ẩn mục Lặp lại video + Mục lặp lại video đã ẩn. + Mục lặp lại video được hiển thị. + Ẩn mục Hình trong hình + Mục hình trong hình đã ẩn. + Mục hình trong hình được hiển thị. + Ẩn mục Nút điều khiển cho gói Premium + Mục Nút điều khiển cho gói Premium đã ẩn. + Mục Nút điều khiển cho gói Premium được hiển thị. + Ẩn mục Âm lượng ổn định + Mục Âm lượng ổn định được hiển thị. + Mục Âm lượng ổn định đã ẩn. + Ẩn mục Thống kê chi tiết + Mục Thống kê chi tiết đã ẩn. + Mục Thống kê chi tiết được hiển thị. + Ẩn mục Xem ở chế độ thực tế ảo + Mục Xem ở chế độ thực tế ảo đã ẩn. + Mục Xem ở chế độ thực tế ảo được hiển thị. Toàn màn hình Ẩn hoặc thay đổi các thành phần liên quan đến toàn màn hình. Vô hiệu hóa bảng tương tác Bảng tương tác đã vô hiệu hóa. Bảng điều khiển tương tác đã được bật. - Hiển thị tiêu đề video - "Hiển thị tiêu đề video ở chế độ toàn màn hình. - Hạn chế: Tiêu đề video sẽ biến mất khi nhấp vào." + Hiển thị phần tiêu đề video + "Hiển thị phần tiêu đề video ở chế độ toàn màn hình. + +Hạn chế: Tiêu đề video sẽ biến mất khi nhấn vào." Ẩn bảng video tiếp theo Bảng video tiếp theo đã ẩn khỏi màn hình kết thúc. Bảng video tiếp theo được hiển thị ở màn hình kết thúc. Ẩn nút Trò chuyện trực tiếp - Nút trò chuyện trực tiếp bị ẩn. Nút này xuất hiện ở chế độ toàn màn hình khi đóng cuộc trò chuyện trực tiếp. - Nút trò chuyện trực tiếp được hiển thị. Nút này xuất hiện ở chế độ toàn màn hình khi đóng cuộc trò chuyện trực tiếp. + Nút phát lại trò chuyện trực tiếp đã bị ẩn.\n\nNó sẽ xuất hiện ở chế độ toàn màn hình khi bạn đóng trò chuyện trực tiếp. + Nút phát lại trò chuyện trực tiếp đã được hiển thị.\n\nNó sẽ xuất hiện ở chế độ toàn màn hình khi bạn đóng trò chuyện trực tiếp. Ẩn lớp phủ video liên quan - Lớp phủ video liên quan đã ẩn. - Lớp phủ video liên quan được hiển thị. + Phần video thêm trong bảng nút thao tác nhanh và lớp phủ video liên quan đã bị ẩn. + Phần video thêm trong bảng nút thao tác nhanh và lớp phủ video liên quan đã được hiển thị. - Hành động nhanh + Thao tác nhanh Ẩn bảng nút thao tác nhanh Bảng nút thao tác nhanh đã ẩn. Bảng nút thao tác nhanh được hiển thị. @@ -720,17 +721,17 @@ Cài đặt → Tự động phát → Tự động phát video tiếp theo."Nút bình luận đã ẩn. Nút bình luận được hiển thị. Ẩn nút Không thích - Nút không thích đã ẩn. - Nút không thích được hiển thị. + Nút Không thích đã bị ẩn. + Nút Không thích đã được hiển thị. Ẩn nút Thích - Nút thích đã ẩn. - Nút thích được hiển thị. + Nút Thích đã ẩn. + Nút Thích đã hiển thị. Ẩn nút Trò chuyện trực tiếp Nút trò chuyện trực tiếp đã ẩn. Nút trò chuyện trực tiếp được hiển thị. Ẩn nút Thêm - Nút Thêm đã ẩn. - Nút Thêm được hiển thị. + Các nút chức năng khác (Remix, Tạo đoạn video,...) đã ẩn. + Các nút chức năng khác (Remix, Tạo đoạn video,...) được hiển thị. Ẩn nút Danh sách phát kết hợp Nút Danh sách phát kết hợp đã ẩn. Nút Danh sách phát kết hợp được hiển thị. @@ -743,8 +744,8 @@ Cài đặt → Tự động phát → Tự động phát video tiếp theo."Ẩn nút Chia sẻ Nút Chia sẻ đã ẩn. Nút Chia sẻ được hiển thị. - Lề trên hành động nhanh - Định cấu hình khoảng cách từ thanh tìm kiếm đến vùng chứa hành động nhanh, trong khoảng 0-32. + Lề trên bảng nút thao tác nhanh + Giá trị khoảng cách từ thanh tiến trình đến bảng nút thao tác nhanh trong khoảng từ 0 đến 32. Lề trên bảng nút thao tác nhanh phải nằm trong khoảng 0 - 32. Đã đặt lại về mặc định. Xem ở chế độ toàn màn hình dọc @@ -757,7 +758,7 @@ Cài đặt → Tự động phát → Tự động phát video tiếp theo.""Video sẽ chuyển sang chế độ toàn màn hình trong các trường hợp sau: • Khi video bắt đầu. -• Khi nhấn vào dấu thời gian trong bình luận." +• Khi nhấn vào mốc thời gian trong phần bình luận." Giữ chế độ toàn màn hình Giữ chế độ toàn màn hình hoạt động trong lúc bạn tắt và đánh thức thiết bị khi đang xem chế độ toàn màn hình. Thời gian giữ chế độ toàn màn hình (mili giây) @@ -768,16 +769,16 @@ Cài đặt → Tự động phát → Tự động phát video tiếp theo."Tắt phản hồi xúc giác trong các chương Phản hồi xúc giác đã tắt. Phản hồi xúc giác được kích hoạt. - Tắt khi đăng ký kênh + Tắt phản hồi xúc giác khi đăng ký kênh Phản hồi xúc giác đã tắt. Phản hồi xúc giác được kích hoạt. - Tắt khi trượt để tua + Tắt phản hồi xúc giác khi trượt để tua Phản hồi xúc giác đã tắt. Phản hồi xúc giác được kích hoạt. - Tắt khi hủy tua + Tắt phản hồi xúc giác khi huỷ tua Phản hồi xúc giác đã tắt. Phản hồi xúc giác được kích hoạt. - Tắt khi chụm để thu phóng + Tắt phản hồi xúc giác khi chụm để thu phóng Phản hồi xúc giác đã tắt. Phản hồi xúc giác được kích hoạt. @@ -798,25 +799,25 @@ Cài đặt → Tự động phát → Tự động phát video tiếp theo."Ẩn nút Toàn màn hình Nút Toàn màn hình đã ẩn. Nút Toàn màn hình được hiển thị. - Ẩn nút Trước & Tiếp theo + Ẩn các nút Chuyển đến video trước đó/tiếp theo Các Nút được ẩn. Các Nút được hiển thị. Ẩn nút YouTube Music Nút YouTube Music đã ẩn. Nút YouTube Music được hiển thị. - Lớp phủ nút + Nút trên lớp phủ trình phát Nút Phát lặp lại một video "Nhấn để luôn phát lặp lại video. Nhấn và giữ để tạm dừng sau khi hết thời lượng video đó." Nút Sao chép URL video "Nhấn để sao chép URL video. -Nhấn và giữ để sao chép URL video kèm theo dấu thời gian." - Nút Sao chép URL video với dấu thời gian - "Nhấn để sao chép URL video trong thời gian hiện tại. -Nhấn và giữ để sao chép dấu thời gian hiện tại." - Hiển thị nút tắt tiếng - Nhấn để tắt tiếng video hiện tại. Nhấn lần nữa để bật tiếng. +Nhấn và giữ để sao chép URL video kèm theo mốc thời gian hiện tại." + Hiển thị nút sao chép URL cùng mốc thời gian + "Nhấn để sao chép URL video với mốc thời gian. +Nhấn và giữ để sao chép mốc thời gian hiện tại." + Hiển thị nút tắt âm lượng + Nhấn để tắt âm lượng video hiện tại. Nhấn lần nữa để bật lại. Nút Tải xuống bên ngoài Nhấn để khởi chạy trình tải xuống bên ngoài. Nút Tốc độ phát @@ -841,22 +842,22 @@ Nhấn và giữ để hoàn tác." Tốc độ phát SponsorBlock Không tải được thông tin kênh. - Đặt lại Tốc độ phát: %sx. - Nhấn giữ để thay đổi trạng thái. - Đã sao chép dấu thời gian sang bảng nhớ tạm. (%s) + Đã đặt lại Tốc độ phát: %sx. + Nhấn giữ để thay đổi trạng thái nút. + Đã sao chép mốc thời gian vào bảng nhớ tạm. (%s) Đã sao chép URL sang bảng nhớ tạm. - Đã sao chép liên kết với dấu thời gian sang bảng nhớ tạm. + Đã sao chép URL cùng mốc thời gian vào bảng nhớ tạm. Thanh tiến trình Tùy chỉnh thanh tiến trình - Thêm thông tin vào dấu thời gian - Thông tin được thêm vào dấu thời gian. - Thông tin không còn được thêm vào dấu thời gian. + Thêm thông tin vào mốc thời gian + Thông tin được thêm vào mốc thời gian. + Thông tin không còn được thêm vào mốc thời gian. Loại thông tin cần thêm Thêm Chất lượng video. Thêm Tốc độ phát. - Thay đổi hành động dấu thời gian - Nhấn để mở menu tốc độ phát hoặc chất lượng video. + Thay thế hành động của mốc thời gian + Nhấn để mở mục Tốc độ phát hoặc Chất lượng video. Nhấn để hiển thị thời gian còn lại. Màu thanh tiến trình tùy chỉnh Đang sử dụng màu thanh tiến trình video tùy chỉnh. @@ -875,10 +876,10 @@ Nhấn và giữ để hoàn tác." Ẩn các Chương trong thanh tiến trình Các chương đã ẩn trong thanh tiến trình. Các chương được hiển thị trong thanh tiến trình. - Ẩn dấu Thời gian - Dấu thời gian đã ẩn. - Dấu thời gian được hiển thị. - Hình thu nhỏ khi tua kiểu cũ + Ẩn Mốc thời gian + Mốc thời gian đã ẩn. + Mốc thời gian được hiển thị. + Khôi phục thanh tiến trình hình thu nhỏ kiểu cũ Hình thu nhỏ khi tua sẽ xuất hiện phía trên thanh tiến trình. Hình ảnh khi tua sẽ hiển thị toàn màn hình. Sử dụng thanh điều hướng kiểu Cairo @@ -890,14 +891,14 @@ Hạn chế: Chủ đề Cairo cũng được áp dụng cho dấu chấm thông Mô tả video Ẩn hoặc hiển thị các thành phần mô tả video. Tắt hoạt ảnh số cuộn - Số cuộn không hoạt ảnh. - Số cuộn là hoạt ảnh. + Đã tắt Hoạt ảnh số cuộn. + Đã bật Hoạt ảnh số cuộn. Ẩn phần Thuộc tính - Các phần Địa điểm, Trò chơi và Âm nhạc nổi bật bị ẩn. - Các phần Địa điểm, Trò chơi và Âm nhạc nổi bật được hiển thị. - Ẩn phần chương - Phần chương được ẩn. - Phần chương được hiển thị. + Phần \'Địa điểm nổi bật\', Trò chơi và Âm nhạc được ẩn. + Phần \'Địa điểm nổi bật\', Trò chơi và Âm nhạc được hiện. + Ẩn phần Chương + Phần Chương được ẩn. + Phần Chương được hiển thị. Ẩn phần Nội dung Phần \"Cách tạo Nội dung này\" đã bị ẩn. Phần \"Cách tạo Nội dung này\" đã được hiển thị. @@ -905,8 +906,8 @@ Hạn chế: Chủ đề Cairo cũng được áp dụng cho dấu chấm thông Phần thẻ thông tin đã ẩn. Phần thẻ thông tin được hiển thị. Ẩn phần Khái niệm chính - Phần khái niệm chính bị ẩn. - Phần khái niệm chính được hiển thị. + Phần Khái niệm chính bị ẩn. + Phần Khái niệm chính được hiển thị. Ẩn phần Khám phá Podcast Phần Khám phá Podcast đã ẩn. Phần Khám phá Podcast được hiển thị. @@ -927,8 +928,7 @@ Hạn chế: Chủ đề Cairo cũng được áp dụng cho dấu chấm thông Mô tả video được mở rộng thủ công. Tiêu đề trong bảng mô tả video "Nhập tiêu đề vào bảng mô tả video. - Những ký tự này khác nhau tùy thuộc vào ngôn ngữ của bạn. - 'Mở rộng mô tả video' có thể không hoạt động nếu bạn lưu chuỗi không chính xác." +Mở rộng mô tả video có thể không hoạt động nếu bạn lưu chuỗi không chính xác." Mô tả Shorts @@ -1024,9 +1024,9 @@ Hạn chế: Tiêu đề chính thức trong kết quả tìm kiếm sẽ đư Ẩn nút Bình luận Nút Bình luận đã ẩn. Nút Bình luận được hiển thị. - Ẩn nút Phối lại - Nút Phối lại đã ẩn. - Nút Phối lại được hiển thị. + Ẩn nút Remix + Nút Remix đã ẩn. + Nút Remix được hiển thị. Ẩn nút Chia sẻ Nút Chia sẻ đã ẩn . Nút Chia sẻ được hiển thị. @@ -1046,13 +1046,15 @@ Hạn chế: Tiêu đề chính thức trong kết quả tìm kiếm sẽ đư Trái tim (Đỏ) Ẩn - Bật dấu thời gian - "Dấu thời gian được bật. + Bật Mốc thời gian + "Mốc thời gian được bật. - Sự cố đã biết: Vì đây là tính năng đang trong giai đoạn phát triển của Google nên bố cục có thể bị hỏng." - Dấu thời gian đã vô hiệu hóa. - Hành động nhấn giữ dấu thời gian - Nhấn và giữ vào dấu thời gian để thay đổi trạng thái phát lặp lại trên Shorts. +Hạn chế: +• Cài đặt này không chỉ bật Mốc thời gian mà còn cho phép ẩn giao diện người dùng bằng cách nhấn vào nền trình phát. +• Vì đây là tính năng đang trong giai đoạn phát triển của Google nên bố cục có thể bị hỏng." + Mốc thời gian đã vô hiệu hóa. + Nhấn giữ Mốc thời gian + Nhấn và giữ vào Mốc thời gian để thay đổi trạng thái phát lặp lại trên Shorts. Lề dưới của bảng Meta Cấu hình khoảng cách từ thanh tìm kiếm đến bảng meta, trong khoảng 0-64. Lề dưới cùng của bảng meta phải nằm trong khoảng từ 0-64. Đặt lại về giá trị mặc định. @@ -1095,7 +1097,7 @@ Hạn chế: Tiêu đề chính thức trong kết quả tìm kiếm sẽ đư Kích thước văn bản trên lớp phủ vuốt Độ to nhỏ của văn bản được hiển thị trên lớp phủ vuốt. Kích thước văn bản trên lớp phủ vuốt - Phần trăm diện tích màn hình có thể vuốt.\n\nLưu ý: Thao tác này cũng sẽ thay đổi kích thước vùng màn hình đối với cử chỉ nhấn đúp để tua. + Tỉ lệ phần trăm diện tích màn hình có thể vuốt.\n\nLưu ý: Thao tác này cũng sẽ thay đổi kích thước vùng màn hình đối với cử chỉ nhấn đúp để tua. Kích thước khu vực vuốt không được lớn hơn 50. Đã đặt lại về mặc định. Thời gian hiển thị lớp phủ vuốt (mili giây) Số mili giây mà lớp phủ vuốt được hiển thị. @@ -1103,60 +1105,69 @@ Hạn chế: Tiêu đề chính thức trong kết quả tìm kiếm sẽ đư Độ sáng HDR tự động đã tắt. Độ sáng HDR tự động đã bật. Cử chỉ bên dưới trình phát - Vào chế độ toàn màn hình hướng dọc thiết bị, khi vuốt xuống bên dưới trình phát (hướng dọc) video được bật. - Vào chế độ toàn màn hình hướng dọc thiết bị, khi vuốt xuống bên dưới trình phát (hướng dọc) video đã tắt. - Vuốt để chuyển ở chế độ toàn màn hình - Vuốt để chuyển video ở chế độ toàn màn hình đã bật. - -Vuốt lên/xuống để chuyển đến video tiếp theo/trước đó. - Vuốt để chuyển video ở chế độ toàn màn hình đã tắt. + Cử chỉ vuốt xuống từ khu vực bên dưới trình phát để xem ở chế độ toàn màn hình dọc đã bật. + Cử chỉ vuốt xuống từ khu vực bên dưới trình phát để xem ở chế độ toàn màn hình dọc đã tắt. + Kích hoạt vuốt để chuyển video + Vuốt lên/xuống sẽ phát video tiếp theo/trước đó. + Vuốt lên/xuống sẽ không phát video tiếp theo/trước đó. Tự động Video Tốc độ phát mặc định - Chất lượng video chỉ định với mạng di động - Chất lượng video chỉ định với mạng WiFi + Chất lượng video mặc định trên mạng di động + Chất lượng video mặc định trên mạng Wi-Fi Tắt video HDR Video HDR đã tắt. Video HDR đã bật. - Tốc độ phát khi xem trực tiếp - Tốc độ phát mặc định bị vô hiệu hóa khi xem live streams. - Tốc độ phát mặc định được bật khi xem live streams. + Tắt tùy chọn tốc độ phát khi xem trực tiếp + Tốc độ phát mặc định bị tắt khi xem sự kiện trực tiếp và buổi công chiếu. + Tốc độ phát mặc định được bật khi xem sự kiện trực tiếp và buổi công chiếu. Tốc độ phát tùy chỉnh Đang áp dụng các giá trị tốc độ phát video tùy chỉnh. Đang áp dụng các giá trị tốc độ phát video mặc định. - Kiểu menu tốc độ phát tùy chỉnh + Kiểu mục tốc độ phát tùy chỉnh Hộp thoại tùy chỉnh được sử dụng. - Menu hiện ra kiểu cũ được sử dụng. + Mục tốc độ phát kiểu cũ được sử dụng. Chỉnh sửa tốc độ phát Thêm hoặc thay đổi tốc độ phát lại có sẵn. Lưu thay đổi tốc độ phát Thay đổi tốc độ phát áp dụng cho tất cả video. Thay đổi tốc độ phát chỉ áp dụng cho video hiện tại. + Hiện một thông báo ngắn + Thông báo ngắn sẽ được hiển thị khi thay đổi tốc độ phát mặc định. + Thông báo ngắn sẽ không hiển thị khi thay đổi tốc độ phát mặc định. Lưu thay đổi chất lượng video Thay đổi chất lượng áp dụng cho tất cả video. Thay đổi chất lượng chỉ áp dụng cho video hiện tại. - Khôi phục chất lượng video kiểu cũ - Chất lượng video kiểu cũ được hiển thị. - Chất lượng video kiểu cũ không được hiển thị. + Hiện một thông báo ngắn + Thông báo ngắn sẽ được hiển thị khi thay đổi chất lượng mặc định của video. + Thông báo ngắn sẽ không hiển thị khi thay đổi chất lượng mặc định của video. + Khôi phục mục chất lượng video kiểu cũ + Mục chất lượng video kiểu cũ được hiển thị. + Mục chất lượng video kiểu cũ không được hiển thị. Tốc độ phát mặc định cho video ngắn Đang áp dụng tốc độ phát mặc định (bạn đã đặt) khi xem Shorts. Tốc độ phát mặc định không áp dụng cho Shorts. Đã bỏ qua bộ đệm tải trước. Bỏ qua bộ đệm tải trước - "Bỏ qua bộ đệm tải trước để tránh thời gian chờ áp dụng chất lượng video mặc định. Khi nhấn nút Phát, sẽ có một độ trễ khoảng 0.7 giây trước khi video bắt đầu phát, tuy nhiên chất lượng video chỉ định vẫn được áp dụng ngay lập tức. Tùy chọn này không áp dụng cho video HDR, video có thời lượng dưới 10 giây, sự kiện trực tiếp và buổi công chiếu." + "Bỏ qua bộ đệm tải trước khi bắt đầu video để ngay lập tức áp dụng chất lượng video mặc định. + +Chi tiết: +• Khi video bắt đầu, sẽ có độ trễ khoảng 0,3 giây. +• Không áp dụng cho video HDR, video phát trực tiếp, hoặc video ngắn hơn 15 giây." Việc bật cài đặt này có thể gây ra sự cố phát video. - Thông báo ngắn khi bỏ qua + Hiện thông báo ngắn khi bỏ qua Thông báo ngắn được hiển thị. Thông báo ngắn đã ẩn. Giả mạo kích thước thiết bị - "Giả mạo kích thước thiết bị, để mở khóa chất lượng video cao hơn cho những thiết bị không đủ điều kiện." + "Giả lập kích thước thiết bị đến giá trị tối đa. +Chất lượng cao có thể được mở khóa trên một số video yêu cầu kích thước thiết bị lớn, nhưng không phải tất cả các video." Thay thế codec AV1 Thay thế codec AV1 bằng codec VP9. Từ chối phản hồi codec AV1 - "Từ chối mạnh mẽ phản hồi codec AV1. - Sau khoảng 20 giây đệm, chuyển sang codec khác." - Qúa trình dự phòng gây ra khoảng 20 giây đệm. + "Buộc từ chối phản hồi codec AV1. +Một codec khác sẽ được áp dụng sau khoảng 20 giây tải bộ đệm." + Quá trình dự phòng gây ra khoảng 20 giây tải bộ đệm. Đã lưu tốc độ phát mặc định thành %s. Thay đổi chất lượng trên dữ liệu di động mặc định thành %s. Không thể đặt chất lượng video. @@ -1168,10 +1179,11 @@ Vuốt lên/xuống để chuyển đến video tiếp theo/trước đó.Hiện số lượt không thích Số lượt không thích được hiển thị. Số lượt Không thích đã bị ẩn. - Hiện số lượt ko thích trong Shorts - Số lượt không thích được hiển thị trong trình phát Shorts. %s - "Số lượt không thích hiển thị trên Shorts. - Hạn chế: Nội dung không thích có thể không xuất hiện ở chế độ ẩn danh." + Hiện số lượt Không thích trong Shorts + Số lượt không thích được hiển thị trong trình phát Shorts. + "Số lượt không thích được hiển thị trên Shorts. + +Hạn chế: Lượt không thích có thể không hiển thị nếu người dùng không đăng nhập hoặc ở chế độ ẩn danh." Số lượt không thích đã ẩn khỏi trình phát Shorts. Hiện số lượt không thích theo % Số lượt không thích được hiển thị dưới dạng phần trăm. @@ -1179,7 +1191,7 @@ Vuốt lên/xuống để chuyển đến video tiếp theo/trước đó.Nút Thích thu gọn Nút Thích được thiết kế để tối ưu kích thước hiển thị. Nút Thích được thiết kế để đồng bộ khả năng hiển thị với nút Không thích. - Thông báo nếu API không khả dụng + Thông báo ngắn nếu API không khả dụng Hiển thị thông báo ngắn nếu API Return YouTube Dislike không khả dụng. Thông báo ngắn nếu API Return YouTube Dislike không khả dụng đã tắt. @@ -1190,79 +1202,79 @@ Vuốt lên/xuống để chuyển đến video tiếp theo/trước đó.Số lượt không thích không khả dụng (trạng thái %d). Số lượt không thích không khả dụng (đã đạt đến giới hạn API máy khách). Số lượt không thích không khả dụng (%s). - Tải lại video để bình chọn bằng cách sử dụng Return YouTube Dislike + Tải lại video để bình chọn sử dụng Return YouTube Dislike Ẩn SponsorBlock - Bật Chặn nhà tài trợ - Chặn nhà tài trợ là một hệ thống có nguồn gốc từ cộng đồng để bỏ qua các phần khó chịu trong video YouTube. + Bật SponsorBlock + SponsorBlock là một tiện ích được đóng góp bởi cộng đồng giúp bỏ qua các phần gây khó chịu trong video trên YouTube. Giao diện - Hiển thị nút bỏ phiếu - Nút bỏ phiếu phân đoạn được hiển thị. - Nút bỏ phiếu phân đoạn không được hiển thị. - Sử dụng nút Bỏ qua nhỏ gọn - Nút Bỏ qua được tạo kiểu cho chiều rộng tối thiểu. - Nút Bỏ qua được tạo kiểu để có giao diện đẹp nhất. + Nút Bình chọn phân đoạn + Nút Bình chọn phân đoạn được hiển thị. + Nút Bình chọn phân đoạn đã ẩn. + Dùng nút Bỏ qua phân đoạn thu gọn + Nút Bỏ qua phân đoạn được thiết kế để tối ưu kích thước hiển thị. + Nút Bỏ qua phân đoạn được thiết kế với giao diện tốt nhất. Tự động ẩn nút Bỏ qua Nút Bỏ qua sẽ ẩn sau vài giây. Nút Bỏ qua được hiển thị cho toàn bộ phân đoạn. - Hiển thị thông báo khi tự động bỏ qua - Thông báo được hiển thị khi một phân đoạn được tự động bỏ qua. Nhấn vào đây để xem ví dụ. + Hiện thông báo ngắn khi tự động bỏ qua + Hiện thông báo ngắn mỗi khi tự động bỏ qua phân đoạn. Nhấn vào đây để xem ví dụ. Thông báo không được hiển thị. Nhấn vào đây để xem ví dụ. Hiển thị thời lượng video không có phân đoạn Thời lượng video trừ đi tất cả các phân đoạn, được hiển thị trong dấu ngoặc đơn bên cạnh thời lượng video đầy đủ. Độ dài video đầy đủ được hiển thị. - Thay đổi hành vi của phân đoạn - Nhà tài trợ - Quảng cáo trả phí, giới thiệu trả phí và quảng cáo trực tiếp. Không nhằm mục đích tự quảng cáo hoặc quảng cáo miễn phí cho mục đích/người sáng tạo/trang web/sản phẩm mà họ thích. - Không trả tiền / Tự quảng cáo - Tương tự như \'Nhà tài trợ\' ngoại trừ việc không trả tiền hoặc tự quảng cáo. Bao gồm các phần về hàng hóa, quyên góp hoặc thông tin về người mà họ đã cộng tác. + Cài đặt phân đoạn + Nhà Tài Trợ + Quảng cáo, giới thiệu được trả tiền và quảng cáo trực tiếp. Không phải tự quảng cáo hoặc lời cảm ơn miễn phí đến các tác nhân/nhà sáng tạo/trang web/sản phẩm mà họ yêu thích. + Không trả tiền/Tự quảng cáo + Tương tự như Nhà tài trợ, ngoại trừ không trả tiền hoặc tự quảng cáo. Bao gồm các phần về hàng hóa, quyên góp hoặc thông tin về người họ cộng tác. Nhắc nhở tương tác (Đăng ký) - Một lời nhắc ngắn để thích, đăng ký hoặc theo dõi họ ở giữa nội dung. Nếu nó dài hoặc về một cái gì đó cụ thể, thay vào đó nó nên được tự quảng cáo. - Khoảnh khắc nổi bật + Một lời nhắc ngắn rằng bạn hãy ấn thích, đăng ký hoặc theo dõi họ ở giữa nội dung. Nếu nó dài hoặc về một cái gì đó cụ thể, thay vào đó nó nên được tự quảng cáo. + Khúc nổi bật Phần video được nhiều người tìm kiếm nhất. - Hoạt ảnh tạm dừng/Giới thiệu + Đoạn tạm ngưng/Giới thiệu Một khoảng thời gian không có nội dung thực tế. Có thể là tạm dừng, khung tĩnh hoặc hoạt ảnh lặp lại. Không bao gồm các chuyển tiếp chứa thông tin. - Đoạn kết thúc / Tín dụng - Tín dụng hoặc khi đoạn cuối video YouTube xuất hiện. Không phải để kết luận với thông tin. - Xem trước / Tóm tắt - Bộ sưu tập các clip hiển thị những gì sắp xảy ra hoặc những gì đã xảy ra trong video hoặc trong các video khác của loạt phim, trong đó tất cả thông tin được lặp lại ở nơi khác. - Cảnh phụ / Hài hước - Những cảnh chỉ được thêm vào để bổ sung hoặc mang tính chất hài hước, không bắt buộc phải hiểu nội dung chính của video. Không bao gồm các phân đoạn cung cấp chi tiết bối cảnh. + Đoạn kết thúc/Danh đề + Danh đề hoặc đoạn kết thúc của Youtube xuất hiện. Không dành cho phần kết chứa thông tin. + Đoạn xem trước/Tóm tắt/Gây chú ý + Tập hợp các đoạn cắt thể hiện những gì sẽ xảy ra trong video hoặc trong loạt video khác, nơi mà tất cả thông tin được lặp lại ở nơi khác. + Lạc đề/Hài hước + Phân cảnh được thêm vào chỉ để câu giờ hoặc gây cười nhưng không cần thiết cho nội dung chính của video. Không bao gồm phân đoạn cung cấp bối cảnh hoặc chi tiết nền. Âm nhạc: Phần không phải âm nhạc - Chỉ sử dụng trong video âm nhạc. Các phần của video nhạc không có nhạc chưa thuộc danh mục nào. + Chỉ sử dụng trong video âm nhạc. Các phần của video nhạc mà không có nhạc cũng không thuộc danh mục nào. Bỏ qua - Khoảnh khắc Nổi bật - Bỏ qua nhà tài trợ + Khúc Nổi bật + Bỏ qua Nhà tài trợ Bỏ qua khuyến mãi - Bỏ qua tương tác - Bỏ qua khoảnh khắc nổi bật - Bỏ qua phần giới thiệu - Bỏ qua thời gian tạm dừng - Bỏ qua thời gian tạm dừng - Bỏ qua giới thiệu kết thúc - Bỏ qua xem trước - Bỏ qua xem trước - Bỏ qua phần tóm tắt - Phân đoạn trống - Bỏ qua phần không phải âm nhạc - Bỏ qua phân đoạn - Nhà tài trợ đã bỏ qua. - Đã bỏ qua tự quảng cáo. - Đã bỏ qua lời nhắc khó chịu - Bỏ qua khoảnh khắc nổi bật - Bỏ qua phần giới thiệu - Đã bỏ qua thời gian tạm dừng. - Đã bỏ qua thời gian tạm dừng. - Đã bỏ qua giới thiệu kết thúc - Đã bỏ qua phần xem trước. - Đã bỏ qua phần xem trước. - Đã bỏ qua phần tóm tắt. - Bỏ qua đoạn trống - Đã bỏ qua phần không phải âm nhạc. - Đã bỏ qua phân đoạn chưa được gửi. + Bỏ qua Nhắc Tương Tác + Bỏ qua Khúc Nổi bật + Bỏ qua Phần Giới Thiệu + Bỏ qua Đoạn Tạm Ngưng + Bỏ qua Đoạn Tạm Ngưng + Bỏ qua Phần Kết + Bỏ qua Phần Xem Trước + Bỏ qua Phần Xem Trước + Bỏ qua Phần Tóm Tắt + Bỏ qua Đoạn Trống + Bỏ qua Phần Không Nhạc + Bỏ qua Phân Đoạn + Đã bỏ qua Nhà Tài Trợ. + Đã bỏ qua Tự Quảng Cáo. + Đã bỏ qua Nhắc Tương Tác. + Đã bỏ qua Khúc Nổi bật. + Đã bỏ qua Phần Giới Thiệu. + Đã bỏ qua Đoạn Tạm Ngưng. + Đã bỏ qua Đoạn Tạm Ngưng. + Đã bỏ qua Phần Kết. + Đã bỏ qua Phần Xem Trước. + Đã bỏ qua Phần Xem Trước. + Đã bỏ qua Phần Tóm Tắt. + Đã bỏ qua Đoạn Trống. + Đã bỏ qua Phần Không Nhạc. + Đã bỏ qua phân đoạn chưa gửi. Đã bỏ qua nhiều phân đoạn. Tự động bỏ qua Tự động bỏ qua một lần @@ -1283,86 +1295,87 @@ Vuốt lên/xuống để chuyển đến video tiếp theo/trước đó.Nút tạo phân đoạn mới không được hiển thị. Điều chỉnh phân đoạn mới Số mili giây mà các nút điều chỉnh thời gian di chuyển khi tạo phân đoạn mới. - Giá trị phải là số dương. + Giá trị nhập vào phải là một số dương. Xem hướng dẫn - Nguyên tắc chứa các quy tắc và mẹo để tạo phân đoạn mới. + Hướng dẫn bao gồm các quy tắc và mẹo về cách tạo phân đoạn mới. Thực hiện theo các hướng dẫn - Đọc nguyên tắc của Chặn nhà tài trợ trước khi tạo phân đoạn mới. + Hãy đọc hướng dẫn của SponsorBlock trước khi tạo phân đoạn mới. Đã đọc - Hiển thị cho tôi + Xem ngay Chung Thông báo nếu API không khả dụng - Hiển thị thông báo ngắn nếu SponsorBlock không khả dụng + Hiển thị thông báo ngắn nếu SponsorBlock không khả dụng. Không hiện thông báo nếu SponsorBlock không khả dụng. Bật theo dõi số lần bỏ qua - Cho bảng xếp hạng của Chặn nhà tài trợ biết lượng thời gian đã tiết kiệm được. Một thông báo sẽ được gửi tới bảng xếp hạng mỗi khi một phân đoạn đã bỏ qua. + Cho bảng xếp hạng của SponsorBlock biết lượng thời gian đã tiết kiệm được. Một thông báo sẽ được gửi tới bảng xếp hạng mỗi khi một phân đoạn đã bỏ qua. Theo dõi số lần bỏ qua không được bật. Thời lượng phân đoạn tối thiểu Các đoạn ngắn hơn giá trị này (tính bằng giây) sẽ không được hiển thị hoặc bị bỏ qua. - ID người dùng riêng của bạn - Mã ID nên được giữ kín. Nó giống như mật khẩu và không nên chia sẻ với bất kỳ ai. Nếu ai đó có nó, họ có thể mạo danh bạn. - ID người dùng riêng phải dài ít nhất 30 ký tự. + Thời lượng không hợp lệ. + Id người dùng riêng tư của bạn + Bạn nên giữ bí mật mã này. Nó như mật khẩu vậy, do đó không nên chia sẻ với người khác. Nếu ai đó có mã này, họ có thể giả mạo bạn. + ID người dùng riêng tư phải dài ít nhất 30 ký tự. Thay đổi URL API - Địa chỉ Chặn nhà tài trợ sử dụng để thực hiện liên lạc đến máy chủ. + Địa chỉ SponsorBlock sử dụng để liên lạc đến máy chủ. Đặt lại URL API. URL API không hợp lệ. Đã thay đổi API URL. Sao chép Nhập/Xuất cài đặt - Cấu hình Chặn nhà tài trợ JSON có thể được xuất/nhập tới Cài đặt nâng cao và các nền tảng Chặn nhà tài trợ khác. - Cấu hình Chặn nhà tài trợ JSON có thể được xuất/nhập tới Cài đặt nâng cao và các nền tảng Chặn nhà tài trợ khác. Điều này bao gồm ID người dùng riêng của bạn. Hãy chắc chắn chia sẻ điều này một cách khôn ngoan. - Cài đặt đã được nhập thành công. - Không nhập được: %s. - Không xuất được: %s. - Cài đặt của bạn chứa ID người dùng Chặn nhà tài trợ riêng tư. ID người dùng của bạn giống như một mật khẩu và đừng bao giờ chia sẻ + Cấu hình tệp JSON SponsorBlock của bạn có thể được nhập/xuất tới ReVanced Extended và các nền tảng SponsorBlock khác. + Cấu hình tệp JSON SponsorBlock của bạn có thể được nhập/xuất tới ReVanced Extended và các nền tảng SponsorBlock khác. Điều này bao gồm cả ID riêng tư của bạn. Vì vậy hãy thật cẩn thận khi chia sẻ nó. + Nhập cài đặt thành công. + Nhập cài đặt thất bại: %s. + Xuất cài đặt thất bại: %s. + Cài đặt của bạn chứa Id SponsorBlock riêng tư.\n\nID của bạn giống như mật khẩu vậy, nên đừng bao giờ chia sẻ nó.\n Không hiển thị lại - Chặn nhà tài trợ tạm thời không khả dụng - Chặn nhà tài trợ tạm thời không khả dụng (trạng thái %d). - Chặn nhà tài trợ tạm thời không khả dụng (hết thời gian chờ API). + SponsorBlock tạm thời không khả dụng. + SponsorBlock tạm thời không khả dụng (trạng thái %d). + SponsorBlock tạm thời không khả dụng (hết thời gian chờ API). Không thể gửi phân đoạn: %s. - Chặn nhà tài trợ tạm thời ngừng hoạt động. + SponsorBlock tạm thời ngưng hoạt động. Không thể gửi phân đoạn (trạng thái: %1$d %2$s). - Không thể gửi phân đoạn. Tỷ lệ đã giới hạn (qúa nhiều từ cùng một người dùng hoặc IP). + Không thể gửi phân đoạn.\nGiới hạn truy cập (quá nhiều phân đoạn được gửi từ cùng một người dùng hoặc IP). Không thể gửi phân đoạn: %s. - Không thể gửi phân đoạn. Đã tồn tại. + Không thể gửi phân đoạn.\nĐã tồn tại. Đã gửi phân đoạn thành công. Không thể bỏ phiếu cho phân đoạn (API đã hết thời gian chờ). Không thể bỏ phiếu cho phân đoạn (trạng thái: %1$d %2$s). Không thể bỏ phiếu cho phân đoạn: %s. - Tăng giá trị - Giảm giá trị - Thay đổi danh mục - Không có phân đoạn nào để bỏ phiếu. + Ủng hộ + Phản đối + Đổi danh mục + Không có phân đoạn nào để bình chọn. Chọn danh mục phân đoạn Danh mục đã tắt trong cài đặt. Cho phép danh mục để gửi. - Đoạn Chặn nhà tài trợ mới + Đoạn SponsorBlock mới Đặt %s là bắt đầu hoặc là kết thúc của một phân đoạn mới? - Bắt đầu - Kết thúc - Ngay bây giờ - Thời gian đoạn bắt đầu - Thời gian đoạn kết thúc - Thời gian có chính xác không? - Phân đoạn này bắt đầu từ %1$s đến %2$s (%3$s) Đã sẵn sàng gửi chưa? - Bắt đầu phải trước khi kết thúc. - Đánh dấu hai vị trí trên thanh thời gian trước. - Xem trước phân đoạn và đảm bảo phân đoạn đó trôi qua suôn sẻ. - Chỉnh sửa thời gian của phân đoạn thủ công - Bạn có muốn chỉnh sửa thời gian bắt đầu hoặc kết thúc phân đoạn không? - Thời gian không hợp lệ. + bắt đầu + kết thúc + ngay lúc này + Phân đoạn bắt đầu lúc + Phân đoạn kết thúc lúc + Thời lượng phân đoạn đã chính xác chưa? + Phân đoạn bắt đầu từ\n\n%1$s\nđến\n%2$s\n\n%3$s\n\nSẵn sàng gửi? + Thời gian bắt đầu phải trước thời gian kết thúc. + Đánh dấu hai điểm bắt đầu và kết thúc phân đoạn trên thanh tiến trình trước. + Hãy xem trước phân đoạn để đảm bảo rằng nó bỏ qua suôn sẻ. + Chỉnh sửa thời gian của phân đoạn theo cách thủ công + Bạn muốn thay đổi thời gian bắt đầu hay kết thúc của phân đoạn? + Thời gian đã đặt không hợp lệ. Thống kê - Số liệu thống kê tạm thời không khả dụng (API không hoạt động). + Số liệu thống kê tạm thời không khả dụng (API ngừng hoạt động). Đang tải... - Chặn nhà tài trợ đã vô hiệu hóa. + SponsorBlock đã vô hiệu hóa Tên người dùng của bạn: <b>%s</b> Nhấn vào đây để thay đổi tên người dùng của bạn Không thể thay đổi tên người dùng: Trạng thái: %1$d %2$s. Tên người dùng đã được thay đổi thành công. Xếp hạng của bạn là <b>%.2f</b> Bạn đã tạo <b>%s</b> phân đoạn - Bảng xếp hạng Chặn nhà tài trợ + Bảng xếp hạng SponsorBlock Bạn đã hỗ trợ mọi người <b>%s</b> phân đoạn Nhấn vào đây để xem số liệu thống kê toàn cầu và những người đóng góp hàng đầu. Đó là <b>%s</b> của mọi người.<br>Nhấn vào để xem bảng xếp hạng @@ -1375,7 +1388,7 @@ Vuốt lên/xuống để chuyển đến video tiếp theo/trước đó. Giới thiệu sponsor.ajay.app - Dữ liệu được cung cấp bởi Chặn nhà tài trợ API. Nhấn vào đây để tìm hiểu thêm và xem các bản tải xuống cho các nền tảng khác. + Dữ liệu này được cung cấp bởi API SponsorBlock. Nhấn vào đây để tìm hiểu thêm và xem các bản tải xuống cho các nền tảng khác. Cài đặt khác Nhật ký gỡ lỗi @@ -1391,10 +1404,10 @@ Vuốt lên/xuống để chuyển đến video tiếp theo/trước đó.Đang bỏ qua chuyển hướng URL khi mở các liên kết xuất hiện trên YouTube. Đang chuyển hướng URL khi mở các liên kết xuất hiện trên YouTube. Mở theo mặc định - Để mở URL bên ngoài trong Cài đặt nâng cao, hãy bật tính năng Mở các liên kết được hỗ trợ và thêm các liên kết được hỗ trợ. + Để mở liên kết YouTube trong RVX, hãy kích hoạt \'Mở liên kết được hỗ trợ\' và bật các địa chỉ web được hỗ trợ. Mở GmsCore - Bật tính năng tin nhắn trên đám mây để nhận thông báo. - GmsCore chưa được cài đặt. Cài đặt nó. + Kích hoạt thông báo đám mây để nhận thông báo. + GmsCore chưa được cài đặt. Hãy cài đặt nó đi nào. Hành động cần thiết "Hiện GmsCore không có quyền chạy nền. @@ -1410,9 +1423,9 @@ Nhấn vào Tiếp tục và tắt tối ưu hóa pin." Loại bỏ các tham số truy vấn theo dõi khỏi URL khi chia sẻ liên kết. Tắt giao thức QUIC "Tắt giao thức QUIC của CronetEngine để giảm độ trễ khi phát video." - Thay đổi hộp thoại chia sẻ - Sử dụng hộp thoại chia sẻ của hệ thống. - Sử dụng hộp thoại chia sẻ trong ứng dụng. + Thay đổi giao diện chia sẻ + Sử dụng giao diện chia sẻ của hệ thống. + Sử dụng giao diện chia sẻ của ứng dụng. Bật Codec OPUS Bật codec OPUS nếu phản hồi của trình phát bao gồm codec OPUS. Giả mạo thông số trình phát @@ -1424,10 +1437,10 @@ Hạn chế: • Tải xuống ngoại tuyến có thể không hoạt động. • Video có thể không bắt đầu từ thời điểm đã xem gần nhất." Giả mạo thông số trình phát trên bảng tin - "Giả mạo thông số trình phát trên các trang video đã bật. + "Giả mạo thông số trình phát cho các video ở bảng tin đã bật. Hạn chế: Video được phát tự động sẽ hiển thị trong lịch sử xem của bạn." - "Giả mạo thông số trình phát trên các trang video đã tắt. + "Giả mạo thông số trình phát cho các video ở bảng tin đã tắt. Hạn chế: Video được phát tự động sẽ phát dưới 1 phút trước khi bị giật hình." @@ -1436,9 +1449,9 @@ Hạn chế: Video được phát tự động sẽ phát dưới 1 phút trư Nhập/Xuất dưới dạng tập tin Xuất cài đặt - Xuất toàn bộ Cài đặt nâng cao của bạn dưới dạng tệp. + Xuất toàn bộ cài đặt của bạn dưới dạng tệp. Nhập cài đặt - Nhập Cài đặt nâng cao từ tệp đã lưu. + Nhập toàn bộ cài đặt của bạn từ tệp đã lưu trước đó. Nhập/Xuất dưới dạng văn bản Nhập/Xuất dưới dạng văn bản @@ -1459,6 +1472,13 @@ Hạn chế: Video được phát tự động sẽ phát dưới 1 phút trư Máy khách đã được giả mạo. "Máy khách hiện không được giả mạo. Phát video có thể không hoạt động." Việc tắt cài đặt này có thể gây ra sự cố phát video. + Kiểu giả mạo máy khách + Buộc iOS sử dụng AVC (H.264) + Codec video trên iOS là AVC (H.264). + Codec video trên iOS là AVC (H.264), VP9, or AV1. + "Bật chức năng này có thể tăng cường thời lượng pin và khắc phục tình trạng giật lag khi phát video. + +AVC (H.264) có độ phân giải tối đa 1080p, và phát video sẽ dùng nhiều dữ liệu di động hơn với VP9 hoặc AV1." Hiển thị trong Thống kê chi tiết Giả mạo máy khách được hiển thị trong Thống kê chi tiết. Giả mạo máy khách bị ẩn trong Thống kê chi tiết. @@ -1466,11 +1486,11 @@ Hạn chế: Video được phát tự động sẽ phát dưới 1 phút trư Tùy chọn giả mạo máy khách Chung Phát trực tiếp - Video ngắn, Đoạn phim - Dự phòng + Shorts, Clips + Video không thể phát iOS Android - Android Trình phát nhúng + Trình phát Android Embedded Thử nghiệm Android Android TV Android VR @@ -1508,7 +1528,7 @@ Hạn chế: • Phụ đề có thể không khả dụng. • Thiếu nút tải xuống. • Ảnh trên thanh tiến trình có chất lượng thấp. - • Một số live streams không được hỗ trợ phát." + • Một số phát trực tiếp không được hỗ trợ phát lại." Android VR "Giả mạo máy khách thành Android VR. @@ -1543,18 +1563,18 @@ Hạn chế: Thông tin bản vá Thông tin bản vá - Thông tin về các bản vá được áp dụng. + Thông tin về các bản vá đã được áp dụng. Công cụ được sử dụng Nhiều hơn Tùy chỉnh Nguyên gốc - Afn Xanh - Afn Đỏ + AFN Xanh + AFN Đỏ MMT - Đổi mới màu xanh - Đổi mới màu đỏ + Revancify Xanh + Revancify Đỏ YouTube Nguyên gốc Không bao gồm diff --git a/src/main/resources/youtube/translations/zh-rCN/strings.xml b/src/main/resources/youtube/translations/zh-rCN/strings.xml index 3ac48c7827..69131a0c99 100644 --- a/src/main/resources/youtube/translations/zh-rCN/strings.xml +++ b/src/main/resources/youtube/translations/zh-rCN/strings.xml @@ -1131,9 +1131,15 @@ 记住播放速度更改 播放速度更改适用于所有视频 播放速度更改仅适用于当前视频 + 显示 Toast + 更改默认播放速度时,显示 Toast + 更改默认播放速度时,不显示 Toast 记住视频画质更改 画质更改适用于所有视频 画质更改仅适用于当前视频 + 显示 Toast + 更改默认视频画质时,显示 Toast + 更改默认视频画质时,不显示 Toast 恢复旧的视频画质菜单 显示旧的视频画质菜单 不显示旧的视频画质菜单 @@ -1411,6 +1417,9 @@ 共享链接时,删除 URL 中的跟踪查询参数 禁用 QUIC 协议 "禁用 Cronet 引擎的 QUIC 协议" + 更改分享菜单 + 系统分享菜单已启用 + 应用内分享菜单已启用 启用 OPUS 编解码器 如果播放器支持 OPUS 编解码器,则启用 OPUS 编解码器 伪装播放器参数 From e828bdf6d0b90dbf722d1d71f3b4a2825f7be050 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Wed, 28 Aug 2024 20:09:22 +0900 Subject: [PATCH 10/53] bump 4.13.1-dev.1 --- README.md | 74 +++++++++++++++++++++++------------------------ gradle.properties | 2 +- patches.json | 2 +- 3 files changed, 39 insertions(+), 39 deletions(-) diff --git a/README.md b/README.md index 54c7beeb2e..be6a359485 100644 --- a/README.md +++ b/README.md @@ -75,41 +75,41 @@ ReVanced Extended Patches. | 💊 Patch | 📜 Description | 🏹 Target Version | |:--------:|:--------------:|:-----------------:| -| `Amoled` | Applies a pure black theme to some components. | 6.29.58 ~ 7.13.52 | -| `Bitrate default value` | Sets the audio quality to 'Always High' when you first install the app. | 6.29.58 ~ 7.13.52 | -| `Bypass image region restrictions` | Adds an option to use a different host for static images, so that images blocked in some countries can be received. | 6.29.58 ~ 7.13.52 | -| `Certificate spoof` | Enables YouTube Music to work with Android Auto by spoofing the YouTube Music certificate. | 6.29.58 ~ 7.13.52 | -| `Change share sheet` | Add option to change from in-app share sheet to system share sheet. | 6.29.58 ~ 7.13.52 | -| `Change start page` | Adds an option to set which page the app opens in instead of the homepage. | 6.29.58 ~ 7.13.52 | -| `Custom branding icon for YouTube Music` | Changes the YouTube Music app icon to the icon specified in options.json. | 6.29.58 ~ 7.13.52 | -| `Custom branding name for YouTube Music` | Renames the YouTube Music app to the name specified in options.json. | 6.29.58 ~ 7.13.52 | -| `Custom header for YouTube Music` | Applies a custom header in the top left corner within the app. | 6.29.58 ~ 7.13.52 | -| `Disable auto captions` | Adds an option to disable captions from being automatically enabled. | 6.29.58 ~ 7.13.52 | -| `Disable dislike redirection` | Adds an option to disable redirection to the next track when clicking the Dislike button. | 6.29.58 ~ 7.13.52 | -| `Enable Cairo splash animation` | Adds an option to enable Cairo splash animation. | 7.08.54 ~ 7.13.52 | -| `Enable OPUS codec` | Adds an options to enable the OPUS audio codec if the player response includes. | 6.29.58 ~ 7.13.52 | -| `Enable debug logging` | Adds an option to enable debug logging. | 6.29.58 ~ 7.13.52 | -| `Enable landscape mode` | Adds an option to enable landscape mode when rotating the screen on phones. | 6.29.58 ~ 7.13.52 | -| `Flyout menu components` | Adds options to hide or change flyout menu components. | 6.29.58 ~ 7.13.52 | -| `GmsCore support` | Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services. | 6.29.58 ~ 7.13.52 | -| `Hide account components` | Adds options to hide components related to the account menu. | 6.29.58 ~ 7.13.52 | -| `Hide action bar components` | Adds options to hide action bar components and replace the offline download button with an external download button. | 6.29.58 ~ 7.13.52 | -| `Hide ads` | Adds options to hide ads. | 6.29.58 ~ 7.13.52 | -| `Hide layout components` | Adds options to hide general layout components. | 6.29.58 ~ 7.13.52 | -| `Hide overlay filter` | Removes, at compile time, the dark overlay that appears when player flyout menus are open. | 6.29.58 ~ 7.13.52 | -| `Hide player overlay filter` | Removes, at compile time, the dark overlay that appears when single-tapping in the player. | 6.29.58 ~ 7.13.52 | -| `Navigation bar components` | Adds options to hide or change components related to the navigation bar. | 6.29.58 ~ 7.13.52 | -| `Player components` | Adds options to hide or change components related to the player. | 6.29.58 ~ 7.13.52 | -| `Remove background playback restrictions` | Removes restrictions on background playback, including for kids videos. | 6.29.58 ~ 7.13.52 | -| `Remove viewer discretion dialog` | Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction. | 6.29.58 ~ 7.13.52 | -| `Restore old style library shelf` | Adds an option to return the Library tab to the old style. | 6.29.58 ~ 7.13.52 | -| `Return YouTube Dislike` | Adds an option to show the dislike count of songs using the Return YouTube Dislike API. | 6.29.58 ~ 7.13.52 | -| `Sanitize sharing links` | Adds an option to remove tracking query parameters from URLs when sharing links. | 6.29.58 ~ 7.13.52 | -| `Settings for YouTube Music` | Applies mandatory patches to implement ReVanced Extended settings into the application. | 6.29.58 ~ 7.13.52 | -| `SponsorBlock` | Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as non-music sections. | 6.29.58 ~ 7.13.52 | -| `Spoof app version` | Adds options to spoof the YouTube Music client version. This can remove the radio mode restriction in Canadian regions or disable real-time lyrics. | 6.29.58 ~ 7.13.52 | -| `Translations for YouTube Music` | Add translations or remove string resources. | 6.29.58 ~ 7.13.52 | -| `Video playback` | Adds options to customize settings related to video playback, such as default video quality and playback speed. | 6.29.58 ~ 7.13.52 | +| `Amoled` | Applies a pure black theme to some components. | 6.29.58 ~ 7.16.52 | +| `Bitrate default value` | Sets the audio quality to 'Always High' when you first install the app. | 6.29.58 ~ 7.16.52 | +| `Bypass image region restrictions` | Adds an option to use a different host for static images, so that images blocked in some countries can be received. | 6.29.58 ~ 7.16.52 | +| `Certificate spoof` | Enables YouTube Music to work with Android Auto by spoofing the YouTube Music certificate. | 6.29.58 ~ 7.16.52 | +| `Change share sheet` | Add option to change from in-app share sheet to system share sheet. | 6.29.58 ~ 7.16.52 | +| `Change start page` | Adds an option to set which page the app opens in instead of the homepage. | 6.29.58 ~ 7.16.52 | +| `Custom branding icon for YouTube Music` | Changes the YouTube Music app icon to the icon specified in options.json. | 6.29.58 ~ 7.16.52 | +| `Custom branding name for YouTube Music` | Renames the YouTube Music app to the name specified in options.json. | 6.29.58 ~ 7.16.52 | +| `Custom header for YouTube Music` | Applies a custom header in the top left corner within the app. | 6.29.58 ~ 7.16.52 | +| `Disable auto captions` | Adds an option to disable captions from being automatically enabled. | 6.29.58 ~ 7.16.52 | +| `Disable dislike redirection` | Adds an option to disable redirection to the next track when clicking the Dislike button. | 6.29.58 ~ 7.16.52 | +| `Enable Cairo splash animation` | Adds an option to enable Cairo splash animation. | 7.08.54 ~ 7.16.52 | +| `Enable OPUS codec` | Adds an options to enable the OPUS audio codec if the player response includes. | 6.29.58 ~ 7.16.52 | +| `Enable debug logging` | Adds an option to enable debug logging. | 6.29.58 ~ 7.16.52 | +| `Enable landscape mode` | Adds an option to enable landscape mode when rotating the screen on phones. | 6.29.58 ~ 7.16.52 | +| `Flyout menu components` | Adds options to hide or change flyout menu components. | 6.29.58 ~ 7.16.52 | +| `GmsCore support` | Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services. | 6.29.58 ~ 7.16.52 | +| `Hide account components` | Adds options to hide components related to the account menu. | 6.29.58 ~ 7.16.52 | +| `Hide action bar components` | Adds options to hide action bar components and replace the offline download button with an external download button. | 6.29.58 ~ 7.16.52 | +| `Hide ads` | Adds options to hide ads. | 6.29.58 ~ 7.16.52 | +| `Hide layout components` | Adds options to hide general layout components. | 6.29.58 ~ 7.16.52 | +| `Hide overlay filter` | Removes, at compile time, the dark overlay that appears when player flyout menus are open. | 6.29.58 ~ 7.16.52 | +| `Hide player overlay filter` | Removes, at compile time, the dark overlay that appears when single-tapping in the player. | 6.29.58 ~ 7.16.52 | +| `Navigation bar components` | Adds options to hide or change components related to the navigation bar. | 6.29.58 ~ 7.16.52 | +| `Player components` | Adds options to hide or change components related to the player. | 6.29.58 ~ 7.16.52 | +| `Remove background playback restrictions` | Removes restrictions on background playback, including for kids videos. | 6.29.58 ~ 7.16.52 | +| `Remove viewer discretion dialog` | Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction. | 6.29.58 ~ 7.16.52 | +| `Restore old style library shelf` | Adds an option to return the Library tab to the old style. | 6.29.58 ~ 7.16.52 | +| `Return YouTube Dislike` | Adds an option to show the dislike count of songs using the Return YouTube Dislike API. | 6.29.58 ~ 7.16.52 | +| `Sanitize sharing links` | Adds an option to remove tracking query parameters from URLs when sharing links. | 6.29.58 ~ 7.16.52 | +| `Settings for YouTube Music` | Applies mandatory patches to implement ReVanced Extended settings into the application. | 6.29.58 ~ 7.16.52 | +| `SponsorBlock` | Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as non-music sections. | 6.29.58 ~ 7.16.52 | +| `Spoof app version` | Adds options to spoof the YouTube Music client version. This can remove the radio mode restriction in Canadian regions or disable real-time lyrics. | 6.29.58 ~ 7.16.52 | +| `Translations for YouTube Music` | Add translations or remove string resources. | 6.29.58 ~ 7.16.52 | +| `Video playback` | Adds options to customize settings related to video playback, such as default video quality and playback speed. | 6.29.58 ~ 7.16.52 | ### [📦 `com.reddit.frontpage`](https://play.google.com/store/apps/details?id=com.reddit.frontpage) @@ -173,8 +173,8 @@ Example: "6.33.52", "6.42.55", "6.51.53", - "7.12.52", - "7.13.52" + "7.15.52", + "7.16.52" ] } ], diff --git a/gradle.properties b/gradle.properties index a6e6174e1a..9d99bef82d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.12.3 +version = 4.13.1-dev.1 diff --git a/patches.json b/patches.json index 1ba6c95afa..133334b422 100644 --- a/patches.json +++ b/patches.json @@ -1 +1 @@ -[{"name":"Alternative thumbnails","description":"Adds options to replace video thumbnails using the DeArrow API or image captures from the video.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Ambient mode control","description":"Adds options to disable Ambient mode and to bypass Ambient mode restrictions.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Amoled","description":"Applies a pure black theme to some components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bitrate default value","description":"Sets the audio quality to \u0027Always High\u0027 when you first install the app.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bypass image region restrictions","description":"Adds an option to use a different host for static images, so that images blocked in some countries can be received.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bypass image region restrictions","description":"Adds an option to use a different host for static images, so that images blocked in some countries can be received.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Certificate spoof","description":"Enables YouTube Music to work with Android Auto by spoofing the YouTube Music certificate.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change package name","description":"Changes the package name for Reddit to the name specified in options.json.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"PackageNameReddit","default":"com.reddit.frontpage","values":{"Clone":"com.reddit.frontpage.revanced","Default":"com.reddit.frontpage.rvx","Original":"com.reddit.frontpage"},"title":"Package name of Reddit","description":"The name of the package to rename the app to.","required":true}]},{"name":"Change player flyout menu toggles","description":"Adds an option to use text toggles instead of switch toggles within the additional settings menu.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change share sheet","description":"Add option to change from in-app share sheet to system share sheet.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change share sheet","description":"Add option to change from in-app share sheet to system share sheet.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change start page","description":"Adds an option to set which page the app opens in instead of the homepage.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change start page","description":"Adds an option to set which page the app opens in instead of the homepage.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change version code","description":"Changes the version code of the app to the value specified in options.json. Except when mounting, this can prevent app stores from updating the app and allow the app to be installed over an existing installation that has a higher version code. By default, the highest version code is set.","compatiblePackages":null,"use":false,"requiresIntegrations":false,"options":[{"key":"ChangeVersionCode","default":false,"values":null,"title":"Change version code","description":"Changes the version code of the app.","required":true},{"key":"VersionCode","default":"2147483647","values":null,"title":"Version code","description":"The version code to use. (1 ~ 2147483647)","required":true}]},{"name":"Custom Shorts action buttons","description":"Changes, at compile time, the icon of the action buttons of the Shorts player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"IconType","default":"youtubeoutline","values":{"Outline":"outline","OutlineCircle":"outlinecircle","Round":"round","YoutubeOutline":"youtubeoutline","YouTube":"youtube"},"title":"Shorts icon style ","description":"The style of the icons for the action buttons in the Shorts player.","required":true}]},{"name":"Custom branding icon for YouTube","description":"Changes the YouTube app icon to the icon specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppIcon","default":"revancify_blue","values":{"AFN Blue":"afn_blue","AFN Red":"afn_red","MMT":"mmt","Revancify Blue":"revancify_blue","Revancify Red":"revancify_red","YouTube":"youtube"},"title":"App icon","description":"The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_background_color_108.png\n- adaptiveproduct_youtube_foreground_color_108.png\n- ic_launcher.png\n- ic_launcher_round.png","required":true},{"key":"ChangeSplashIcon","default":true,"values":null,"title":"Change splash icons","description":"Apply the custom branding icon to the splash screen.","required":true},{"key":"RestoreOldSplashAnimation","default":true,"values":null,"title":"Restore old splash animation","description":"Restore the old style splash animation.","required":true}]},{"name":"Custom branding icon for YouTube Music","description":"Changes the YouTube Music app icon to the icon specified in options.json.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppIcon","default":"revancify_blue","values":{"AFN Blue":"afn_blue","AFN Red":"afn_red","MMT":"mmt","Revancify Blue":"revancify_blue","Revancify Red":"revancify_red","YouTube Music":"youtube_music"},"title":"App icon","description":"The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_music_background_color_108.png\n- adaptiveproduct_youtube_music_foreground_color_108.png\n- ic_launcher_release.png","required":true},{"key":"ChangeSplashIcon","default":true,"values":null,"title":"Change splash icons","description":"Apply the custom branding icon to the splash screen.","required":true}]},{"name":"Custom branding name for Reddit","description":"Renames the Reddit app to the name specified in options.json.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"AppName","default":"Reddit","values":{"Default":"RVX Reddit","Original":"Reddit"},"title":"App name","description":"The name of the app.","required":true}]},{"name":"Custom branding name for YouTube","description":"Renames the YouTube app to the name specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppName","default":"RVX","values":{"ReVanced Extended":"ReVanced Extended","RVX":"RVX","YouTube RVX":"YouTube RVX","YouTube":"YouTube"},"title":"App name","description":"The name of the app.","required":true}]},{"name":"Custom branding name for YouTube Music","description":"Renames the YouTube Music app to the name specified in options.json.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppNameNotification","default":"RVX Music","values":{"ReVanced Extended Music":"ReVanced Extended Music","RVX Music":"RVX Music","YouTube Music":"YouTube Music","YT Music":"YT Music"},"title":"App name in notification panel","description":"The name of the app as it appears in the notification panel.","required":true},{"key":"AppNameLauncher","default":"RVX Music","values":{"ReVanced Extended Music":"ReVanced Extended Music","RVX Music":"RVX Music","YouTube Music":"YouTube Music","YT Music":"YT Music"},"title":"App name in launcher","description":"The name of the app as it appears in the launcher.","required":true}]},{"name":"Custom double tap length","description":"Adds Double-tap to seek values that are specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"DoubleTapLengthArrays","default":"3, 5, 10, 15, 20, 30, 60, 120, 180","values":null,"title":"Double-tap to seek values","description":"A list of custom Double-tap to seek lengths to be added, separated by commas.","required":true}]},{"name":"Custom header for YouTube","description":"Applies a custom header in the top left corner within the app.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"CustomHeader","default":"custom_branding_icon","values":{"Custom branding icon":"custom_branding_icon"},"title":"Custom header","description":"The header to apply to the app.\n\nPatch option \u0027Custom branding icon\u0027 applies only when:\n\n1. Patch \u0027Custom branding icon for YouTube\u0027 is included.\n2. Patch option for \u0027Custom branding icon for YouTube\u0027 is selected from the preset.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n[Generic header]\n\n- yt_wordmark_header_light.png\n- yt_wordmark_header_dark.png\n\nThe image dimensions must be as follows:\n\n- drawable-xxxhdpi: 488px x 192px\n- drawable-xxhdpi: 366px x 144px\n- drawable-xhdpi: 244px x 96px\n- drawable-hdpi: 184px x 72px\n- drawable-mdpi: 122px x 48px\n\n[Premium header]\n\n- yt_premium_wordmark_header_light.png\n- yt_premium_wordmark_header_dark.png\n\nThe image dimensions must be as follows:\n- drawable-xxxhdpi: 516px x 192px\n- drawable-xxhdpi: 387px x 144px\n- drawable-xhdpi: 258px x 96px\n- drawable-hdpi: 194px x 72px\n- drawable-mdpi: 129px x 48px","required":true}]},{"name":"Custom header for YouTube Music","description":"Applies a custom header in the top left corner within the app.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"CustomHeader","default":"custom_branding_icon","values":{"Custom branding icon":"custom_branding_icon"},"title":"Custom header","description":"The header to apply to the app.\n\nPatch option \u0027Custom branding icon\u0027 applies only when:\n\n1. Patch \u0027Custom branding icon for YouTube Music\u0027 is included.\n2. Patch option for \u0027Custom branding icon for YouTube Music\u0027 is selected from the preset.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n- action_bar_logo.png\n- logo_music.png\n- ytm_logo.png\n\nThe image \u0027action_bar_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 320px x 96px\n- drawable-xxhdpi: 240px x 72px\n- drawable-xhdpi: 160px x 48px\n- drawable-hdpi: 121px x 36px\n- drawable-mdpi: 80px x 24px\n\nThe image \u0027logo_music.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 576px x 200px\n- drawable-xxhdpi: 432px x 150px\n- drawable-xhdpi: 288px x 100px\n- drawable-hdpi: 217px x 76px\n- drawable-mdpi: 144px x 50px\n\nThe image \u0027ytm_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 412px x 144px\n- drawable-xxhdpi: 309px x 108px\n- drawable-xhdpi: 206px x 72px\n- drawable-hdpi: 155px x 54px\n- drawable-mdpi: 103px x 36px","required":true}]},{"name":"Description components","description":"Adds options to hide and disable description components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable QUIC protocol","description":"Adds an option to disable CronetEngine\u0027s QUIC protocol.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto audio tracks","description":"Adds an option to disable audio tracks from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto captions","description":"Adds an option to disable captions from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto captions","description":"Adds an option to disable captions from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable dislike redirection","description":"Adds an option to disable redirection to the next track when clicking the Dislike button.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable haptic feedback","description":"Adds options to disable haptic feedback when swiping in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable resuming Shorts on startup","description":"Adds an option to disable the Shorts player from resuming on app startup when Shorts were last being watched.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable screenshot popup","description":"Adds an option to disable the popup that appears when taking a screenshot.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable splash animation","description":"Adds an option to disable the splash animation on app startup.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable Cairo splash animation","description":"Adds an option to enable Cairo splash animation.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["7.08.54","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable OPUS codec","description":"Adds an options to enable the OPUS audio codec if the player response includes.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable OPUS codec","description":"Adds an options to enable the OPUS audio codec if the player response includes.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable debug logging","description":"Adds an option to enable debug logging.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable debug logging","description":"Adds an option to enable debug logging.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable external browser","description":"Adds an option to always open links in your browser instead of in the in-app-browser.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable gradient loading screen","description":"Adds an option to enable the gradient loading screen.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable landscape mode","description":"Adds an option to enable landscape mode when rotating the screen on phones.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable open links directly","description":"Adds an option to skip over redirection URLs in external links.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Flyout menu components","description":"Adds options to hide or change flyout menu components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Force hide player buttons background","description":"Removes, at compile time, the dark background surrounding the video player controls.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Fullscreen components","description":"Adds options to hide or change components related to fullscreen.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"GmsCore support","description":"Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"GmsCoreVendorGroupId","default":"app.revanced","values":{"ReVanced":"app.revanced"},"title":"GmsCore vendor group ID","description":"The vendor\u0027s group ID for GmsCore.","required":true},{"key":"CheckGmsCore","default":true,"values":null,"title":"Check GmsCore","description":"Check if GmsCore is installed on the device when the app starts.\n\nIf GmsCore is not installed on the device, the app won\u0027t work, so don\u0027t disable it if possible.","required":true},{"key":"PackageNameYouTube","default":"app.rvx.android.youtube","values":{"Clone":"com.rvx.android.youtube","Default":"app.rvx.android.youtube"},"title":"Package name of YouTube","description":"The name of the package to use in GmsCore support.","required":true},{"key":"PackageNameYouTubeMusic","default":"app.rvx.android.apps.youtube.music","values":{"Clone":"com.rvx.android.apps.youtube.music","Default":"app.rvx.android.apps.youtube.music"},"title":"Package name of YouTube Music","description":"The name of the package to use in GmsCore support.","required":true}]},{"name":"GmsCore support","description":"Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"GmsCoreVendorGroupId","default":"app.revanced","values":{"ReVanced":"app.revanced"},"title":"GmsCore vendor group ID","description":"The vendor\u0027s group ID for GmsCore.","required":true},{"key":"CheckGmsCore","default":true,"values":null,"title":"Check GmsCore","description":"Check if GmsCore is installed on the device when the app starts.\n\nIf GmsCore is not installed on the device, the app won\u0027t work, so don\u0027t disable it if possible.","required":true},{"key":"PackageNameYouTube","default":"app.rvx.android.youtube","values":{"Clone":"com.rvx.android.youtube","Default":"app.rvx.android.youtube"},"title":"Package name of YouTube","description":"The name of the package to use in GmsCore support.","required":true},{"key":"PackageNameYouTubeMusic","default":"app.rvx.android.apps.youtube.music","values":{"Clone":"com.rvx.android.apps.youtube.music","Default":"app.rvx.android.apps.youtube.music"},"title":"Package name of YouTube Music","description":"The name of the package to use in GmsCore support.","required":true}]},{"name":"Hide Recently Visited shelf","description":"Adds an option to hide the Recently Visited shelf in the sidebar.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide Shorts dimming","description":"Removes, at compile time, the dimming effect at the top and bottom of Shorts videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide account components","description":"Adds options to hide components related to the account menu.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide action bar components","description":"Adds options to hide action bar components and replace the offline download button with an external download button.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide action buttons","description":"Adds options to hide action buttons under videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":true,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide comments components","description":"Adds options to hide components related to comments.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide feed components","description":"Adds options to hide components related to feeds.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide feed flyout menu","description":"Adds the ability to hide feed flyout menu components using a custom filter.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide layout components","description":"Adds options to hide general layout components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide layout components","description":"Adds options to hide general layout components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide navigation buttons","description":"Adds options to hide buttons in the navigation bar.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide overlay filter","description":"Removes, at compile time, the dark overlay that appears when player flyout menus are open.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide player buttons","description":"Adds options to hide buttons in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide player flyout menu","description":"Adds options to hide player flyout menu components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide player overlay filter","description":"Removes, at compile time, the dark overlay that appears when single-tapping in the player.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide recommended communities shelf","description":"Adds an option to hide the recommended communities shelves in subreddits.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hook download actions","description":"Adds support to download videos with an external downloader app using the in-app download button.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Layout switch","description":"Adds an option to spoof the dpi in order to use a tablet or phone layout.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"MaterialYou","description":"Applies the MaterialYou theme for Android 12+ devices.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Miniplayer","description":"Adds options to change the in app minimized player, and if patching target 19.16+ adds options to use modern miniplayers.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Navigation bar components","description":"Adds options to hide or change components related to the navigation bar.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Navigation bar components","description":"Adds options to hide or change components related to the navigation bar.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Open links directly","description":"Adds an option to skip over redirection URLs in external links.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Open links externally","description":"Adds an option to always open links in your browser instead of in the in-app-browser.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Overlay buttons","description":"Adds options to display overlay buttons in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"IconType","default":"bold","values":{"Bold":"bold","Rounded":"rounded","Thin":"thin"},"title":"Icon type","description":"The icon type.","required":true},{"key":"BottomMargin","default":"0.0dip","values":{"Wider":"6.0dip","Default":"0.0dip"},"title":"Bottom margin","description":"The bottom margin for the overlay buttons and timestamp.","required":true},{"key":"ChangeTopButtons","default":false,"values":null,"title":"Change top buttons","description":"Change the icons at the top of the player.","required":true}]},{"name":"Player components","description":"Adds options to hide or change components related to the player.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Player components","description":"Adds options to hide or change components related to the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Premium icon","description":"Unlocks premium app icons.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove background playback restrictions","description":"Removes restrictions on background playback, including for kids videos.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove background playback restrictions","description":"Removes restrictions on background playback, including for music and kids videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove subreddit dialog","description":"Adds options to remove the NSFW community warning and notifications suggestion dialogs by dismissing them automatically.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove viewer discretion dialog","description":"Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove viewer discretion dialog","description":"Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Restore old style library shelf","description":"Adds an option to return the Library tab to the old style.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Return YouTube Dislike","description":"Adds an option to show the dislike count of songs using the Return YouTube Dislike API.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Return YouTube Dislike","description":"Adds an option to show the dislike count of videos using the Return YouTube Dislike API.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Seekbar components","description":"Adds options to hide or change components related to the seekbar.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Settings for Reddit","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Settings for YouTube","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"InsertPosition","default":"@string/about_key","values":{"Parent settings":"@string/parent_tools_key","General":"@string/general_key","Account":"@string/account_switcher_key","Data saving":"@string/data_saving_settings_key","Autoplay":"@string/auto_play_key","Video quality preferences":"@string/video_quality_settings_key","Background":"@string/offline_key","Watch on TV":"@string/pair_with_tv_key","Manage all history":"@string/history_key","Your data in YouTube":"@string/your_data_key","Privacy":"@string/privacy_key","History \u0026 privacy":"@string/privacy_key","Try experimental new features":"@string/premium_early_access_browse_page_key","Purchases and memberships":"@string/subscription_product_setting_key","Billing \u0026 payments":"@string/billing_and_payment_key","Billing and payments":"@string/billing_and_payment_key","Notifications":"@string/notification_key","Connected apps":"@string/connected_accounts_browse_page_key","Live chat":"@string/live_chat_key","Captions":"@string/captions_key","Accessibility":"@string/accessibility_settings_key","About":"@string/about_key"},"title":"Insert position","description":"The settings menu name that the RVX settings menu should be above.","required":true},{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Settings for YouTube Music","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Shorts components","description":"Adds options to hide or change components related to YouTube Shorts.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"SponsorBlock","description":"Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as non-music sections.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"SponsorBlock","description":"Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as sponsored content.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"OutlineIcon","default":false,"values":null,"title":"Outline icons","description":"Apply the outline icon.","required":true}]},{"name":"Spoof app version","description":"Adds options to spoof the YouTube Music client version. This can remove the radio mode restriction in Canadian regions or disable real-time lyrics.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Spoof app version","description":"Adds options to spoof the YouTube client version. This can be used to restore old UI elements and features.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Spoof client","description":"Adds options to spoof the client to allow video playback.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Swipe controls","description":"Adds options for controlling volume and brightness with swiping, and whether to enter fullscreen when swiping down below the player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Theme","description":"Changes the app\u0027s theme to the values specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"DarkThemeBackgroundColor","default":"@android:color/black","values":{"Amoled Black":"@android:color/black","Catppuccin (Mocha)":"#FF181825","Dark Pink":"#FF290025","Dark Blue":"#FF001029","Dark Green":"#FF002905","Dark Yellow":"#FF282900","Dark Orange":"#FF291800","Dark Red":"#FF290000"},"title":"Dark theme background color","description":"Can be a hex color (#AARRGGBB) or a color resource reference.","required":true},{"key":"LightThemeBackgroundColor","default":"@android:color/white","values":{"White":"@android:color/white","Catppuccin (Latte)":"#FFE6E9EF","Light Pink":"#FFFCCFF3","Light Blue":"#FFD1E0FF","Light Green":"#FFCCFFCC","Light Yellow":"#FFFDFFCC","Light Orange":"#FFFFE6CC","Light Red":"#FFFFD6D6"},"title":"Light theme background color","description":"Can be a hex color (#AARRGGBB) or a color resource reference.","required":true}]},{"name":"Toolbar components","description":"Adds options to hide or change components located on the toolbar, such as toolbar buttons, search bar, and header.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Translations for YouTube","description":"Add translations or remove string resources.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"CustomTranslations","default":"","values":null,"title":"Custom translations","description":"The path to the \u0027strings.xml\u0027 file.\nPlease note that applying the \u0027strings.xml\u0027 file will overwrite all existing translations.","required":true},{"key":"SelectedTranslations","default":"ar, el-rGR, es-rES, de-rDE, fr-rFR, hu-rHU, it-rIT, ja-rJP, ko-rKR, pl-rPL, pt-rBR, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW","values":null,"title":"Translations to add","description":"A list of translations to be added for the RVX settings, separated by commas.","required":true},{"key":"SelectedStringResources","default":"af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu","values":null,"title":"String resources to keep","description":"A list of string resources to be kept, separated by commas.\nString resources not in the list will be removed from the app.\n\nDefault string resource, English, is not removed.","required":true}]},{"name":"Translations for YouTube Music","description":"Add translations or remove string resources.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"CustomTranslations","default":"","values":null,"title":"Custom translations","description":"The path to the \u0027strings.xml\u0027 file.\nPlease note that applying the \u0027strings.xml\u0027 file will overwrite all existing language translations.","required":true},{"key":"SelectedTranslations","default":"bg-rBG, bn, cs-rCZ, el-rGR, es-rES, fr-rFR, hu-rHU, id-rID, in, it-rIT, ja-rJP, ko-rKR, nl-rNL, pl-rPL, pt-rBR, ro-rRO, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW","values":null,"title":"Translations to add","description":"A list of translations to be added for the RVX settings, separated by commas.","required":true},{"key":"SelectedStringResources","default":"af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu","values":null,"title":"String resources to keep","description":"A list of string resources to be kept, separated by commas.\nString resources not in the list will be removed from the app.\n\nDefault string resource, English, is not removed.","required":true}]},{"name":"Video playback","description":"Adds options to customize settings related to video playback, such as default video quality and playback speed.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.12.52","7.13.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Video playback","description":"Adds options to customize settings related to video playback, such as default video quality and playback speed.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Visual preferences icons","description":"Adds icons to specific preferences in the settings.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"RVXSettingsMenuIcon","default":"extension","values":{"Custom branding icon":"custom_branding_icon","Extension":"extension","Gear":"gear","ReVanced":"revanced","ReVanced Colored":"revanced_colored"},"title":"RVX settings menu icon","description":"The icon for the RVX settings menu.","required":true}]},{"name":"Watch history","description":"Adds an option to change the domain of the watch history or check its status.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]}] \ No newline at end of file +[{"name":"Alternative thumbnails","description":"Adds options to replace video thumbnails using the DeArrow API or image captures from the video.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Ambient mode control","description":"Adds options to disable Ambient mode and to bypass Ambient mode restrictions.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Amoled","description":"Applies a pure black theme to some components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bitrate default value","description":"Sets the audio quality to \u0027Always High\u0027 when you first install the app.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bypass image region restrictions","description":"Adds an option to use a different host for static images, so that images blocked in some countries can be received.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bypass image region restrictions","description":"Adds an option to use a different host for static images, so that images blocked in some countries can be received.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Certificate spoof","description":"Enables YouTube Music to work with Android Auto by spoofing the YouTube Music certificate.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change package name","description":"Changes the package name for Reddit to the name specified in options.json.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"PackageNameReddit","default":"com.reddit.frontpage","values":{"Clone":"com.reddit.frontpage.revanced","Default":"com.reddit.frontpage.rvx","Original":"com.reddit.frontpage"},"title":"Package name of Reddit","description":"The name of the package to rename the app to.","required":true}]},{"name":"Change player flyout menu toggles","description":"Adds an option to use text toggles instead of switch toggles within the additional settings menu.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change share sheet","description":"Add option to change from in-app share sheet to system share sheet.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change share sheet","description":"Add option to change from in-app share sheet to system share sheet.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change start page","description":"Adds an option to set which page the app opens in instead of the homepage.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change start page","description":"Adds an option to set which page the app opens in instead of the homepage.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change version code","description":"Changes the version code of the app to the value specified in options.json. Except when mounting, this can prevent app stores from updating the app and allow the app to be installed over an existing installation that has a higher version code. By default, the highest version code is set.","compatiblePackages":null,"use":false,"requiresIntegrations":false,"options":[{"key":"ChangeVersionCode","default":false,"values":null,"title":"Change version code","description":"Changes the version code of the app.","required":true},{"key":"VersionCode","default":"2147483647","values":null,"title":"Version code","description":"The version code to use. (1 ~ 2147483647)","required":true}]},{"name":"Custom Shorts action buttons","description":"Changes, at compile time, the icon of the action buttons of the Shorts player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"IconType","default":"youtubeoutline","values":{"Outline":"outline","OutlineCircle":"outlinecircle","Round":"round","YoutubeOutline":"youtubeoutline","YouTube":"youtube"},"title":"Shorts icon style ","description":"The style of the icons for the action buttons in the Shorts player.","required":true}]},{"name":"Custom branding icon for YouTube","description":"Changes the YouTube app icon to the icon specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppIcon","default":"revancify_blue","values":{"AFN Blue":"afn_blue","AFN Red":"afn_red","MMT":"mmt","Revancify Blue":"revancify_blue","Revancify Red":"revancify_red","YouTube":"youtube"},"title":"App icon","description":"The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_background_color_108.png\n- adaptiveproduct_youtube_foreground_color_108.png\n- ic_launcher.png\n- ic_launcher_round.png","required":true},{"key":"ChangeSplashIcon","default":true,"values":null,"title":"Change splash icons","description":"Apply the custom branding icon to the splash screen.","required":true},{"key":"RestoreOldSplashAnimation","default":true,"values":null,"title":"Restore old splash animation","description":"Restore the old style splash animation.","required":true}]},{"name":"Custom branding icon for YouTube Music","description":"Changes the YouTube Music app icon to the icon specified in options.json.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppIcon","default":"revancify_blue","values":{"AFN Blue":"afn_blue","AFN Red":"afn_red","MMT":"mmt","Revancify Blue":"revancify_blue","Revancify Red":"revancify_red","YouTube Music":"youtube_music"},"title":"App icon","description":"The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_music_background_color_108.png\n- adaptiveproduct_youtube_music_foreground_color_108.png\n- ic_launcher_release.png","required":true},{"key":"ChangeSplashIcon","default":true,"values":null,"title":"Change splash icons","description":"Apply the custom branding icon to the splash screen.","required":true}]},{"name":"Custom branding name for Reddit","description":"Renames the Reddit app to the name specified in options.json.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"AppName","default":"Reddit","values":{"Default":"RVX Reddit","Original":"Reddit"},"title":"App name","description":"The name of the app.","required":true}]},{"name":"Custom branding name for YouTube","description":"Renames the YouTube app to the name specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppName","default":"RVX","values":{"ReVanced Extended":"ReVanced Extended","RVX":"RVX","YouTube RVX":"YouTube RVX","YouTube":"YouTube"},"title":"App name","description":"The name of the app.","required":true}]},{"name":"Custom branding name for YouTube Music","description":"Renames the YouTube Music app to the name specified in options.json.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppNameNotification","default":"RVX Music","values":{"ReVanced Extended Music":"ReVanced Extended Music","RVX Music":"RVX Music","YouTube Music":"YouTube Music","YT Music":"YT Music"},"title":"App name in notification panel","description":"The name of the app as it appears in the notification panel.","required":true},{"key":"AppNameLauncher","default":"RVX Music","values":{"ReVanced Extended Music":"ReVanced Extended Music","RVX Music":"RVX Music","YouTube Music":"YouTube Music","YT Music":"YT Music"},"title":"App name in launcher","description":"The name of the app as it appears in the launcher.","required":true}]},{"name":"Custom double tap length","description":"Adds Double-tap to seek values that are specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"DoubleTapLengthArrays","default":"3, 5, 10, 15, 20, 30, 60, 120, 180","values":null,"title":"Double-tap to seek values","description":"A list of custom Double-tap to seek lengths to be added, separated by commas.","required":true}]},{"name":"Custom header for YouTube","description":"Applies a custom header in the top left corner within the app.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"CustomHeader","default":"custom_branding_icon","values":{"Custom branding icon":"custom_branding_icon"},"title":"Custom header","description":"The header to apply to the app.\n\nPatch option \u0027Custom branding icon\u0027 applies only when:\n\n1. Patch \u0027Custom branding icon for YouTube\u0027 is included.\n2. Patch option for \u0027Custom branding icon for YouTube\u0027 is selected from the preset.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n[Generic header]\n\n- yt_wordmark_header_light.png\n- yt_wordmark_header_dark.png\n\nThe image dimensions must be as follows:\n\n- drawable-xxxhdpi: 488px x 192px\n- drawable-xxhdpi: 366px x 144px\n- drawable-xhdpi: 244px x 96px\n- drawable-hdpi: 184px x 72px\n- drawable-mdpi: 122px x 48px\n\n[Premium header]\n\n- yt_premium_wordmark_header_light.png\n- yt_premium_wordmark_header_dark.png\n\nThe image dimensions must be as follows:\n- drawable-xxxhdpi: 516px x 192px\n- drawable-xxhdpi: 387px x 144px\n- drawable-xhdpi: 258px x 96px\n- drawable-hdpi: 194px x 72px\n- drawable-mdpi: 129px x 48px","required":true}]},{"name":"Custom header for YouTube Music","description":"Applies a custom header in the top left corner within the app.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"CustomHeader","default":"custom_branding_icon","values":{"Custom branding icon":"custom_branding_icon"},"title":"Custom header","description":"The header to apply to the app.\n\nPatch option \u0027Custom branding icon\u0027 applies only when:\n\n1. Patch \u0027Custom branding icon for YouTube Music\u0027 is included.\n2. Patch option for \u0027Custom branding icon for YouTube Music\u0027 is selected from the preset.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n- action_bar_logo.png\n- logo_music.png\n- ytm_logo.png\n\nThe image \u0027action_bar_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 320px x 96px\n- drawable-xxhdpi: 240px x 72px\n- drawable-xhdpi: 160px x 48px\n- drawable-hdpi: 121px x 36px\n- drawable-mdpi: 80px x 24px\n\nThe image \u0027logo_music.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 576px x 200px\n- drawable-xxhdpi: 432px x 150px\n- drawable-xhdpi: 288px x 100px\n- drawable-hdpi: 217px x 76px\n- drawable-mdpi: 144px x 50px\n\nThe image \u0027ytm_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 412px x 144px\n- drawable-xxhdpi: 309px x 108px\n- drawable-xhdpi: 206px x 72px\n- drawable-hdpi: 155px x 54px\n- drawable-mdpi: 103px x 36px","required":true}]},{"name":"Description components","description":"Adds options to hide and disable description components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable QUIC protocol","description":"Adds an option to disable CronetEngine\u0027s QUIC protocol.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto audio tracks","description":"Adds an option to disable audio tracks from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto captions","description":"Adds an option to disable captions from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto captions","description":"Adds an option to disable captions from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable dislike redirection","description":"Adds an option to disable redirection to the next track when clicking the Dislike button.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable haptic feedback","description":"Adds options to disable haptic feedback when swiping in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable resuming Shorts on startup","description":"Adds an option to disable the Shorts player from resuming on app startup when Shorts were last being watched.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable screenshot popup","description":"Adds an option to disable the popup that appears when taking a screenshot.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable splash animation","description":"Adds an option to disable the splash animation on app startup.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable Cairo splash animation","description":"Adds an option to enable Cairo splash animation.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["7.08.54","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable OPUS codec","description":"Adds an options to enable the OPUS audio codec if the player response includes.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable OPUS codec","description":"Adds an options to enable the OPUS audio codec if the player response includes.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable debug logging","description":"Adds an option to enable debug logging.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable debug logging","description":"Adds an option to enable debug logging.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable external browser","description":"Adds an option to always open links in your browser instead of in the in-app-browser.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable gradient loading screen","description":"Adds an option to enable the gradient loading screen.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable landscape mode","description":"Adds an option to enable landscape mode when rotating the screen on phones.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable open links directly","description":"Adds an option to skip over redirection URLs in external links.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Flyout menu components","description":"Adds options to hide or change flyout menu components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Force hide player buttons background","description":"Removes, at compile time, the dark background surrounding the video player controls.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Fullscreen components","description":"Adds options to hide or change components related to fullscreen.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"GmsCore support","description":"Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"GmsCoreVendorGroupId","default":"app.revanced","values":{"ReVanced":"app.revanced"},"title":"GmsCore vendor group ID","description":"The vendor\u0027s group ID for GmsCore.","required":true},{"key":"CheckGmsCore","default":true,"values":null,"title":"Check GmsCore","description":"Check if GmsCore is installed on the device when the app starts.\n\nIf GmsCore is not installed on the device, the app won\u0027t work, so don\u0027t disable it if possible.","required":true},{"key":"PackageNameYouTube","default":"app.rvx.android.youtube","values":{"Clone":"com.rvx.android.youtube","Default":"app.rvx.android.youtube"},"title":"Package name of YouTube","description":"The name of the package to use in GmsCore support.","required":true},{"key":"PackageNameYouTubeMusic","default":"app.rvx.android.apps.youtube.music","values":{"Clone":"com.rvx.android.apps.youtube.music","Default":"app.rvx.android.apps.youtube.music"},"title":"Package name of YouTube Music","description":"The name of the package to use in GmsCore support.","required":true}]},{"name":"GmsCore support","description":"Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"GmsCoreVendorGroupId","default":"app.revanced","values":{"ReVanced":"app.revanced"},"title":"GmsCore vendor group ID","description":"The vendor\u0027s group ID for GmsCore.","required":true},{"key":"CheckGmsCore","default":true,"values":null,"title":"Check GmsCore","description":"Check if GmsCore is installed on the device when the app starts.\n\nIf GmsCore is not installed on the device, the app won\u0027t work, so don\u0027t disable it if possible.","required":true},{"key":"PackageNameYouTube","default":"app.rvx.android.youtube","values":{"Clone":"com.rvx.android.youtube","Default":"app.rvx.android.youtube"},"title":"Package name of YouTube","description":"The name of the package to use in GmsCore support.","required":true},{"key":"PackageNameYouTubeMusic","default":"app.rvx.android.apps.youtube.music","values":{"Clone":"com.rvx.android.apps.youtube.music","Default":"app.rvx.android.apps.youtube.music"},"title":"Package name of YouTube Music","description":"The name of the package to use in GmsCore support.","required":true}]},{"name":"Hide Recently Visited shelf","description":"Adds an option to hide the Recently Visited shelf in the sidebar.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide Shorts dimming","description":"Removes, at compile time, the dimming effect at the top and bottom of Shorts videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide account components","description":"Adds options to hide components related to the account menu.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide action bar components","description":"Adds options to hide action bar components and replace the offline download button with an external download button.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide action buttons","description":"Adds options to hide action buttons under videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":true,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide comments components","description":"Adds options to hide components related to comments.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide feed components","description":"Adds options to hide components related to feeds.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide feed flyout menu","description":"Adds the ability to hide feed flyout menu components using a custom filter.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide layout components","description":"Adds options to hide general layout components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide layout components","description":"Adds options to hide general layout components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide navigation buttons","description":"Adds options to hide buttons in the navigation bar.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide overlay filter","description":"Removes, at compile time, the dark overlay that appears when player flyout menus are open.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide player buttons","description":"Adds options to hide buttons in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide player flyout menu","description":"Adds options to hide player flyout menu components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide player overlay filter","description":"Removes, at compile time, the dark overlay that appears when single-tapping in the player.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide recommended communities shelf","description":"Adds an option to hide the recommended communities shelves in subreddits.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hook download actions","description":"Adds support to download videos with an external downloader app using the in-app download button.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Layout switch","description":"Adds an option to spoof the dpi in order to use a tablet or phone layout.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"MaterialYou","description":"Applies the MaterialYou theme for Android 12+ devices.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Miniplayer","description":"Adds options to change the in app minimized player, and if patching target 19.16+ adds options to use modern miniplayers.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Navigation bar components","description":"Adds options to hide or change components related to the navigation bar.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Navigation bar components","description":"Adds options to hide or change components related to the navigation bar.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Open links directly","description":"Adds an option to skip over redirection URLs in external links.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Open links externally","description":"Adds an option to always open links in your browser instead of in the in-app-browser.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Overlay buttons","description":"Adds options to display overlay buttons in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"IconType","default":"bold","values":{"Bold":"bold","Rounded":"rounded","Thin":"thin"},"title":"Icon type","description":"The icon type.","required":true},{"key":"BottomMargin","default":"0.0dip","values":{"Wider":"6.0dip","Default":"0.0dip"},"title":"Bottom margin","description":"The bottom margin for the overlay buttons and timestamp.","required":true},{"key":"ChangeTopButtons","default":false,"values":null,"title":"Change top buttons","description":"Change the icons at the top of the player.","required":true}]},{"name":"Player components","description":"Adds options to hide or change components related to the player.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Player components","description":"Adds options to hide or change components related to the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Premium icon","description":"Unlocks premium app icons.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove background playback restrictions","description":"Removes restrictions on background playback, including for kids videos.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove background playback restrictions","description":"Removes restrictions on background playback, including for music and kids videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove subreddit dialog","description":"Adds options to remove the NSFW community warning and notifications suggestion dialogs by dismissing them automatically.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove viewer discretion dialog","description":"Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove viewer discretion dialog","description":"Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Restore old style library shelf","description":"Adds an option to return the Library tab to the old style.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Return YouTube Dislike","description":"Adds an option to show the dislike count of songs using the Return YouTube Dislike API.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Return YouTube Dislike","description":"Adds an option to show the dislike count of videos using the Return YouTube Dislike API.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Seekbar components","description":"Adds options to hide or change components related to the seekbar.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Settings for Reddit","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Settings for YouTube","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"InsertPosition","default":"@string/about_key","values":{"Parent settings":"@string/parent_tools_key","General":"@string/general_key","Account":"@string/account_switcher_key","Data saving":"@string/data_saving_settings_key","Autoplay":"@string/auto_play_key","Video quality preferences":"@string/video_quality_settings_key","Background":"@string/offline_key","Watch on TV":"@string/pair_with_tv_key","Manage all history":"@string/history_key","Your data in YouTube":"@string/your_data_key","Privacy":"@string/privacy_key","History \u0026 privacy":"@string/privacy_key","Try experimental new features":"@string/premium_early_access_browse_page_key","Purchases and memberships":"@string/subscription_product_setting_key","Billing \u0026 payments":"@string/billing_and_payment_key","Billing and payments":"@string/billing_and_payment_key","Notifications":"@string/notification_key","Connected apps":"@string/connected_accounts_browse_page_key","Live chat":"@string/live_chat_key","Captions":"@string/captions_key","Accessibility":"@string/accessibility_settings_key","About":"@string/about_key"},"title":"Insert position","description":"The settings menu name that the RVX settings menu should be above.","required":true},{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Settings for YouTube Music","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Shorts components","description":"Adds options to hide or change components related to YouTube Shorts.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"SponsorBlock","description":"Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as non-music sections.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"SponsorBlock","description":"Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as sponsored content.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"OutlineIcon","default":false,"values":null,"title":"Outline icons","description":"Apply the outline icon.","required":true}]},{"name":"Spoof app version","description":"Adds options to spoof the YouTube Music client version. This can remove the radio mode restriction in Canadian regions or disable real-time lyrics.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Spoof app version","description":"Adds options to spoof the YouTube client version. This can be used to restore old UI elements and features.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Spoof client","description":"Adds options to spoof the client to allow video playback.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Swipe controls","description":"Adds options for controlling volume and brightness with swiping, and whether to enter fullscreen when swiping down below the player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Theme","description":"Changes the app\u0027s theme to the values specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"DarkThemeBackgroundColor","default":"@android:color/black","values":{"Amoled Black":"@android:color/black","Catppuccin (Mocha)":"#FF181825","Dark Pink":"#FF290025","Dark Blue":"#FF001029","Dark Green":"#FF002905","Dark Yellow":"#FF282900","Dark Orange":"#FF291800","Dark Red":"#FF290000"},"title":"Dark theme background color","description":"Can be a hex color (#AARRGGBB) or a color resource reference.","required":true},{"key":"LightThemeBackgroundColor","default":"@android:color/white","values":{"White":"@android:color/white","Catppuccin (Latte)":"#FFE6E9EF","Light Pink":"#FFFCCFF3","Light Blue":"#FFD1E0FF","Light Green":"#FFCCFFCC","Light Yellow":"#FFFDFFCC","Light Orange":"#FFFFE6CC","Light Red":"#FFFFD6D6"},"title":"Light theme background color","description":"Can be a hex color (#AARRGGBB) or a color resource reference.","required":true}]},{"name":"Toolbar components","description":"Adds options to hide or change components located on the toolbar, such as toolbar buttons, search bar, and header.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Translations for YouTube","description":"Add translations or remove string resources.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"CustomTranslations","default":"","values":null,"title":"Custom translations","description":"The path to the \u0027strings.xml\u0027 file.\nPlease note that applying the \u0027strings.xml\u0027 file will overwrite all existing translations.","required":true},{"key":"SelectedTranslations","default":"ar, bg-rBG, de-rDE, el-rGR, es-rES, fr-rFR, hu-rHU, it-rIT, ja-rJP, ko-rKR, pl-rPL, pt-rBR, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW","values":null,"title":"Translations to add","description":"A list of translations to be added for the RVX settings, separated by commas.","required":true},{"key":"SelectedStringResources","default":"af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu","values":null,"title":"String resources to keep","description":"A list of string resources to be kept, separated by commas.\nString resources not in the list will be removed from the app.\n\nDefault string resource, English, is not removed.","required":true}]},{"name":"Translations for YouTube Music","description":"Add translations or remove string resources.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"CustomTranslations","default":"","values":null,"title":"Custom translations","description":"The path to the \u0027strings.xml\u0027 file.\nPlease note that applying the \u0027strings.xml\u0027 file will overwrite all existing language translations.","required":true},{"key":"SelectedTranslations","default":"bg-rBG, bn, cs-rCZ, el-rGR, es-rES, fr-rFR, hu-rHU, id-rID, in, it-rIT, ja-rJP, ko-rKR, nl-rNL, pl-rPL, pt-rBR, ro-rRO, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW","values":null,"title":"Translations to add","description":"A list of translations to be added for the RVX settings, separated by commas.","required":true},{"key":"SelectedStringResources","default":"af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu","values":null,"title":"String resources to keep","description":"A list of string resources to be kept, separated by commas.\nString resources not in the list will be removed from the app.\n\nDefault string resource, English, is not removed.","required":true}]},{"name":"Video playback","description":"Adds options to customize settings related to video playback, such as default video quality and playback speed.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Video playback","description":"Adds options to customize settings related to video playback, such as default video quality and playback speed.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Visual preferences icons","description":"Adds icons to specific preferences in the settings.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"RVXSettingsMenuIcon","default":"extension","values":{"Custom branding icon":"custom_branding_icon","Extension":"extension","Gear":"gear","ReVanced":"revanced","ReVanced Colored":"revanced_colored"},"title":"RVX settings menu icon","description":"The icon for the RVX settings menu.","required":true}]},{"name":"Watch history","description":"Adds an option to change the domain of the watch history or check its status.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]}] \ No newline at end of file From 2eb2b31ddfa6d735977dfd99bb1237e8152bb4a0 Mon Sep 17 00:00:00 2001 From: KobeW50 <84587632+KobeW50@users.noreply.github.com> Date: Sat, 31 Aug 2024 12:56:41 -0400 Subject: [PATCH 11/53] chore(GmsCore support): Clarify effects of the `Check GmsCore` patch option (#79) * chore(GmsCore support): Clarify affects of the `Check GmsCore` option * chore(GmsCore support): Clarify effects of the `Check GmsCore` option --- .../patches/shared/gms/BaseGmsCoreSupportResourcePatch.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/app/revanced/patches/shared/gms/BaseGmsCoreSupportResourcePatch.kt b/src/main/kotlin/app/revanced/patches/shared/gms/BaseGmsCoreSupportResourcePatch.kt index 5d3089c985..3ebd6a7b10 100644 --- a/src/main/kotlin/app/revanced/patches/shared/gms/BaseGmsCoreSupportResourcePatch.kt +++ b/src/main/kotlin/app/revanced/patches/shared/gms/BaseGmsCoreSupportResourcePatch.kt @@ -45,9 +45,9 @@ abstract class BaseGmsCoreSupportResourcePatch( default = true, title = "Check GmsCore", description = """ - Check if GmsCore is installed on the device when the app starts. + Check if GmsCore is installed on the device and has battery optimizations disabled when the app starts. - If GmsCore is not installed on the device, the app won't work, so don't disable it if possible. + If GmsCore is not installed the app will not work, so disabling this is not recommended. """.trimIndentMultiline(), required = true, ) From 12059581c918ee965aef0d03fa2a37e20a465626 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sun, 1 Sep 2024 02:01:34 +0900 Subject: [PATCH 12/53] fix(YouTube Music/GmsCore support): YT Music crashes when using the `Open GmsCore` setting https://github.com/inotia00/ReVanced_Extended/issues/2352 --- .../patches/music/utils/gms/GmsCoreSupportResourcePatch.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/app/revanced/patches/music/utils/gms/GmsCoreSupportResourcePatch.kt b/src/main/kotlin/app/revanced/patches/music/utils/gms/GmsCoreSupportResourcePatch.kt index b474654574..25a56e2600 100644 --- a/src/main/kotlin/app/revanced/patches/music/utils/gms/GmsCoreSupportResourcePatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/utils/gms/GmsCoreSupportResourcePatch.kt @@ -23,7 +23,7 @@ object GmsCoreSupportResourcePatch : BaseGmsCoreSupportResourcePatch( context.addMicroGPreference( CategoryType.MISC.value, "gms_core_settings", - GmsCoreVendorGroupId.valueOrThrow(), + GmsCoreVendorGroupId.valueOrThrow() + ".android.gms", GMS_CORE_SETTINGS_ACTIVITY ) } From 0d29ed623a71d04f64d9967a81510142577f3191 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sun, 1 Sep 2024 02:08:06 +0900 Subject: [PATCH 13/53] feat(YouTube): remove `Spoof client` patch --- .../visual/VisualPreferencesIconsPatch.kt | 1 - .../utils/fix/client/SpoofClientPatch.kt | 496 ------------------ .../utils/fix/client/SpoofUserAgentPatch.kt | 5 - .../BuildInitPlaybackRequestFingerprint.kt | 16 - ...BuildPlaybackStatsRequestURIFingerprint.kt | 17 - .../BuildPlayerRequestURIFingerprint.kt | 20 - .../CreatePlaybackSpeedMenuItemFingerprint.kt | 34 -- .../CreatePlayerRequestBodyFingerprint.kt | 15 - ...equestBodyWithVersionReleaseFingerprint.kt | 30 -- ...NerdsStatsVideoFormatBuilderFingerprint.kt | 12 - .../OrganicPlaybackContextModelFingerprint.kt | 24 - ...PlayerGestureConfigSyntheticFingerprint.kt | 55 -- ...ModelBackgroundAudioPlaybackFingerprint.kt | 43 -- .../SetPlayerRequestClientTypeFingerprint.kt | 12 - .../UserAgentHeaderBuilderFingerprint.kt | 19 - .../parameter/SpoofPlayerParameterPatch.kt | 53 -- .../youtube/utils/gms/GmsCoreSupportPatch.kt | 4 - .../utils/storyboard/StoryboardHookPatch.kt | 154 ------ ...delGeneralStoryboardRendererFingerprint.kt | 24 - ...LiveStreamStoryboardRendererFingerprint.kt | 24 - ...elStoryboardRecommendedLevelFingerprint.kt | 24 - ...dererDecoderRecommendedLevelFingerprint.kt | 23 - ...toryboardRendererDecoderSpecFingerprint.kt | 23 - .../StoryboardRendererSpecFingerprint.kt | 12 - .../StoryboardThumbnailFingerprint.kt | 23 - .../StoryboardThumbnailParentFingerprint.kt | 17 - .../youtube/settings/host/values/arrays.xml | 40 -- .../youtube/settings/host/values/strings.xml | 104 +--- .../youtube/settings/xml/revanced_prefs.xml | 31 -- ...ed_preference_screen_spoof_client_icon.xml | 18 - 30 files changed, 2 insertions(+), 1371 deletions(-) delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/SpoofClientPatch.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/SpoofUserAgentPatch.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/BuildInitPlaybackRequestFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/BuildPlaybackStatsRequestURIFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/BuildPlayerRequestURIFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/CreatePlaybackSpeedMenuItemFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/CreatePlayerRequestBodyFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/CreatePlayerRequestBodyWithVersionReleaseFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/NerdsStatsVideoFormatBuilderFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/OrganicPlaybackContextModelFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/PlayerGestureConfigSyntheticFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/PlayerResponseModelBackgroundAudioPlaybackFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/SetPlayerRequestClientTypeFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/UserAgentHeaderBuilderFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/parameter/SpoofPlayerParameterPatch.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/StoryboardHookPatch.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/PlayerResponseModelGeneralStoryboardRendererFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/PlayerResponseModelLiveStreamStoryboardRendererFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/PlayerResponseModelStoryboardRecommendedLevelFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/StoryboardRendererDecoderRecommendedLevelFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/StoryboardRendererDecoderSpecFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/StoryboardRendererSpecFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/StoryboardThumbnailFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/StoryboardThumbnailParentFingerprint.kt delete mode 100644 src/main/resources/youtube/visual/shared/drawable/revanced_preference_screen_spoof_client_icon.xml diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/visual/VisualPreferencesIconsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/visual/VisualPreferencesIconsPatch.kt index f8c918721b..a026e50a89 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/visual/VisualPreferencesIconsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/visual/VisualPreferencesIconsPatch.kt @@ -276,7 +276,6 @@ object VisualPreferencesIconsPatch : BaseResourcePatch( "revanced_preference_screen_seekbar", "revanced_preference_screen_settings_menu", "revanced_preference_screen_shorts_player", - "revanced_preference_screen_spoof_client", "revanced_preference_screen_toolbar", "revanced_preference_screen_video_description", "revanced_preference_screen_video_filter", diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/SpoofClientPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/SpoofClientPatch.kt deleted file mode 100644 index 53f1723569..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/SpoofClientPatch.kt +++ /dev/null @@ -1,496 +0,0 @@ -package app.revanced.patches.youtube.utils.fix.client - -import app.revanced.patcher.data.BytecodeContext -import app.revanced.patcher.extensions.InstructionExtensions.addInstruction -import app.revanced.patcher.extensions.InstructionExtensions.addInstructions -import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels -import app.revanced.patcher.extensions.InstructionExtensions.getInstruction -import app.revanced.patcher.extensions.InstructionExtensions.getInstructions -import app.revanced.patcher.extensions.or -import app.revanced.patcher.patch.PatchException -import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable -import app.revanced.patcher.util.smali.ExternalLabel -import app.revanced.patches.shared.fingerprints.CreatePlayerRequestBodyWithModelFingerprint -import app.revanced.patches.shared.fingerprints.CreatePlayerRequestBodyWithModelFingerprint.indexOfModelInstruction -import app.revanced.patches.youtube.misc.backgroundplayback.BackgroundPlaybackPatch -import app.revanced.patches.youtube.utils.compatibility.Constants -import app.revanced.patches.youtube.utils.fingerprints.PlaybackRateBottomSheetBuilderFingerprint -import app.revanced.patches.youtube.utils.fix.client.fingerprints.BuildInitPlaybackRequestFingerprint -import app.revanced.patches.youtube.utils.fix.client.fingerprints.BuildPlaybackStatsRequestURIFingerprint -import app.revanced.patches.youtube.utils.fix.client.fingerprints.BuildPlayerRequestURIFingerprint -import app.revanced.patches.youtube.utils.fix.client.fingerprints.CreatePlaybackSpeedMenuItemFingerprint -import app.revanced.patches.youtube.utils.fix.client.fingerprints.CreatePlayerRequestBodyFingerprint -import app.revanced.patches.youtube.utils.fix.client.fingerprints.CreatePlayerRequestBodyWithVersionReleaseFingerprint -import app.revanced.patches.youtube.utils.fix.client.fingerprints.CreatePlayerRequestBodyWithVersionReleaseFingerprint.indexOfBuildInstruction -import app.revanced.patches.youtube.utils.fix.client.fingerprints.NerdsStatsVideoFormatBuilderFingerprint -import app.revanced.patches.youtube.utils.fix.client.fingerprints.OrganicPlaybackContextModelFingerprint -import app.revanced.patches.youtube.utils.fix.client.fingerprints.PlayerGestureConfigSyntheticFingerprint -import app.revanced.patches.youtube.utils.fix.client.fingerprints.PlayerResponseModelBackgroundAudioPlaybackFingerprint -import app.revanced.patches.youtube.utils.fix.client.fingerprints.SetPlayerRequestClientTypeFingerprint -import app.revanced.patches.youtube.utils.fix.client.fingerprints.UserAgentHeaderBuilderFingerprint -import app.revanced.patches.youtube.utils.integrations.Constants.MISC_PATH -import app.revanced.patches.youtube.utils.integrations.Constants.PATCH_STATUS_CLASS_DESCRIPTOR -import app.revanced.patches.youtube.utils.playertype.PlayerTypeHookPatch -import app.revanced.patches.youtube.utils.settings.SettingsPatch -import app.revanced.patches.youtube.utils.storyboard.StoryboardHookPatch -import app.revanced.patches.youtube.utils.trackingurlhook.TrackingUrlHookPatch -import app.revanced.patches.youtube.video.information.VideoInformationPatch -import app.revanced.patches.youtube.video.playerresponse.PlayerResponseMethodHookPatch -import app.revanced.util.getReference -import app.revanced.util.getStringInstructionIndex -import app.revanced.util.getWalkerMethod -import app.revanced.util.indexOfFirstInstructionOrThrow -import app.revanced.util.patch.BaseBytecodePatch -import app.revanced.util.resultOrThrow -import app.revanced.util.updatePatchStatus -import com.android.tools.smali.dexlib2.AccessFlags -import com.android.tools.smali.dexlib2.Opcode -import com.android.tools.smali.dexlib2.builder.MutableMethodImplementation -import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction -import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction -import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction -import com.android.tools.smali.dexlib2.iface.reference.FieldReference -import com.android.tools.smali.dexlib2.iface.reference.TypeReference -import com.android.tools.smali.dexlib2.immutable.ImmutableMethod -import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter - -object SpoofClientPatch : BaseBytecodePatch( - name = "Spoof client", - description = "Adds options to spoof the client to allow video playback.", - dependencies = setOf( - // Required since iOS livestream fix partially enables background playback. - BackgroundPlaybackPatch::class, - PlayerTypeHookPatch::class, - - TrackingUrlHookPatch::class, - PlayerResponseMethodHookPatch::class, - SettingsPatch::class, - VideoInformationPatch::class, - SpoofUserAgentPatch::class, - StoryboardHookPatch::class, - ), - compatiblePackages = Constants.COMPATIBLE_PACKAGE, - fingerprints = setOf( - // Client type spoof. - BuildInitPlaybackRequestFingerprint, - BuildPlayerRequestURIFingerprint, - SetPlayerRequestClientTypeFingerprint, - CreatePlayerRequestBodyFingerprint, - CreatePlayerRequestBodyWithModelFingerprint, - CreatePlayerRequestBodyWithVersionReleaseFingerprint, - UserAgentHeaderBuilderFingerprint, - - // Player gesture config. - PlayerGestureConfigSyntheticFingerprint, - - // Player speed menu item. - CreatePlaybackSpeedMenuItemFingerprint, - PlaybackRateBottomSheetBuilderFingerprint, - - // Livestream audio only background playback. - PlayerResponseModelBackgroundAudioPlaybackFingerprint, - - // Watch history. - BuildPlaybackStatsRequestURIFingerprint, - OrganicPlaybackContextModelFingerprint, - - // Nerds stats video format. - NerdsStatsVideoFormatBuilderFingerprint, - ) -) { - private const val INTEGRATIONS_CLASS_DESCRIPTOR = - "$MISC_PATH/SpoofClientPatch;" - private const val CLIENT_INFO_CLASS_DESCRIPTOR = - "Lcom/google/protos/youtube/api/innertube/InnertubeContext\$ClientInfo;" - - override fun execute(context: BytecodeContext) { - - var settingArray = arrayOf( - "SETTINGS: SPOOF_CLIENT" - ) - - // region Block /initplayback requests to fall back to /get_watch requests. - - BuildInitPlaybackRequestFingerprint.resultOrThrow().let { - it.mutableMethod.apply { - val moveUriStringIndex = it.scanResult.patternScanResult!!.startIndex - val targetRegister = - getInstruction(moveUriStringIndex).registerA - - addInstructions( - moveUriStringIndex + 1, - """ - invoke-static { v$targetRegister }, $INTEGRATIONS_CLASS_DESCRIPTOR->blockInitPlaybackRequest(Ljava/lang/String;)Ljava/lang/String; - move-result-object v$targetRegister - """, - ) - } - } - - // endregion - - // region Block /get_watch requests to fall back to /player requests. - - BuildPlayerRequestURIFingerprint.resultOrThrow().let { - it.mutableMethod.apply { - val invokeToStringIndex = it.scanResult.patternScanResult!!.startIndex - val uriRegister = - getInstruction(invokeToStringIndex).registerC - - addInstructions( - invokeToStringIndex, - """ - invoke-static { v$uriRegister }, $INTEGRATIONS_CLASS_DESCRIPTOR->blockGetWatchRequest(Landroid/net/Uri;)Landroid/net/Uri; - move-result-object v$uriRegister - """, - ) - } - } - - // endregion - - // region Get field references to be used below. - - val (clientInfoField, clientInfoClientTypeField, clientInfoClientVersionField) = - SetPlayerRequestClientTypeFingerprint.resultOrThrow().let { result -> - with(result.mutableMethod) { - // Field in the player request object that holds the client info object. - val clientInfoField = getInstructions().find { instruction -> - // requestMessage.clientInfo = clientInfoBuilder.build(); - instruction.opcode == Opcode.IPUT_OBJECT && - instruction.getReference()?.type == CLIENT_INFO_CLASS_DESCRIPTOR - }?.getReference() - ?: throw PatchException("Could not find clientInfoField") - - // Client info object's client type field. - val clientInfoClientTypeField = - getInstruction(result.scanResult.patternScanResult!!.endIndex) - .getReference() - ?: throw PatchException("Could not find clientInfoClientTypeField") - - val clientInfoVersionIndex = getStringInstructionIndex("10.29") - val clientInfoVersionRegister = - getInstruction(clientInfoVersionIndex).registerA - val clientInfoClientVersionFieldIndex = implementation!!.instructions.let { - clientInfoVersionIndex + it.subList(clientInfoVersionIndex, it.size - 1) - .indexOfFirst { instruction -> - instruction.opcode == Opcode.IPUT_OBJECT - && (instruction as TwoRegisterInstruction).registerA == clientInfoVersionRegister - } - } - - // Client info object's client version field. - val clientInfoClientVersionField = - getInstruction(clientInfoClientVersionFieldIndex) - .getReference() - ?: throw PatchException("Could not find clientInfoClientVersionField") - - Triple(clientInfoField, clientInfoClientTypeField, clientInfoClientVersionField) - } - } - - val clientInfoClientModelField = - CreatePlayerRequestBodyWithModelFingerprint.resultOrThrow().mutableMethod.let { - val instructions = it.getInstructions() - val getClientModelIndex = indexOfModelInstruction(it) - - // The next IPUT_OBJECT instruction after getting the client model is setting the client model field. - instructions.subList( - getClientModelIndex, - instructions.size, - ).find { instruction -> - val reference = instruction.getReference() - instruction.opcode == Opcode.IPUT_OBJECT - && reference?.definingClass == CLIENT_INFO_CLASS_DESCRIPTOR - && reference.type == "Ljava/lang/String;" - }?.getReference() - ?: throw PatchException("Could not find clientInfoClientModelField") - } - - val clientInfoOsVersionField = - CreatePlayerRequestBodyWithVersionReleaseFingerprint.resultOrThrow().mutableMethod.let { - val buildIndex = indexOfBuildInstruction(it) - val instructions = it.getInstructions() - - instructions.subList( - buildIndex - 5, - buildIndex, - ).find { instruction -> - val reference = instruction.getReference() - instruction.opcode == Opcode.IPUT_OBJECT - && reference?.definingClass == CLIENT_INFO_CLASS_DESCRIPTOR - && reference.type == "Ljava/lang/String;" - }?.getReference() - ?: throw PatchException("Could not find clientInfoOsVersionField") - } - - // endregion - - // region Spoof client type for /player requests. - - CreatePlayerRequestBodyFingerprint.resultOrThrow().let { - it.mutableMethod.apply { - val setClientInfoMethodName = "setClientInfo" - val checkCastIndex = it.scanResult.patternScanResult!!.startIndex - - val checkCastInstruction = getInstruction(checkCastIndex) - val requestMessageInstanceRegister = checkCastInstruction.registerA - val clientInfoContainerClassName = - checkCastInstruction.getReference()!!.type - - addInstruction( - checkCastIndex + 1, - "invoke-static { v$requestMessageInstanceRegister }," + - " $definingClass->$setClientInfoMethodName($clientInfoContainerClassName)V", - ) - - // Change client info to use the spoofed values. - // Do this in a helper method, to remove the need of picking out multiple free registers from the hooked code. - it.mutableClass.methods.add( - ImmutableMethod( - definingClass, - setClientInfoMethodName, - listOf( - ImmutableMethodParameter( - clientInfoContainerClassName, - annotations, - "clientInfoContainer" - ) - ), - "V", - AccessFlags.PRIVATE or AccessFlags.STATIC, - annotations, - null, - MutableMethodImplementation(3), - ).toMutable().apply { - addInstructions( - """ - invoke-static { }, $INTEGRATIONS_CLASS_DESCRIPTOR->isClientSpoofingEnabled()Z - move-result v0 - if-eqz v0, :disabled - - iget-object v0, p0, $clientInfoField - - # Set client type to the spoofed value. - iget v1, v0, $clientInfoClientTypeField - invoke-static { v1 }, $INTEGRATIONS_CLASS_DESCRIPTOR->getClientTypeId(I)I - move-result v1 - iput v1, v0, $clientInfoClientTypeField - - # Set client model to the spoofed value. - iget-object v1, v0, $clientInfoClientModelField - invoke-static { v1 }, $INTEGRATIONS_CLASS_DESCRIPTOR->getClientModel(Ljava/lang/String;)Ljava/lang/String; - move-result-object v1 - iput-object v1, v0, $clientInfoClientModelField - - # Set client version to the spoofed value. - iget-object v1, v0, $clientInfoClientVersionField - invoke-static { v1 }, $INTEGRATIONS_CLASS_DESCRIPTOR->getClientVersion(Ljava/lang/String;)Ljava/lang/String; - move-result-object v1 - iput-object v1, v0, $clientInfoClientVersionField - - # Set client os version to the spoofed value. - iget-object v1, v0, $clientInfoOsVersionField - invoke-static { v1 }, $INTEGRATIONS_CLASS_DESCRIPTOR->getOsVersion(Ljava/lang/String;)Ljava/lang/String; - move-result-object v1 - iput-object v1, v0, $clientInfoOsVersionField - - :disabled - return-void - """, - ) - }, - ) - } - } - - // endregion - - // region Spoof user-agent - - UserAgentHeaderBuilderFingerprint.resultOrThrow().mutableMethod.apply { - val insertIndex = implementation!!.instructions.lastIndex - val insertRegister = getInstruction(insertIndex).registerA - - addInstructions( - insertIndex, """ - invoke-static { v$insertRegister }, $INTEGRATIONS_CLASS_DESCRIPTOR->getUserAgent(Ljava/lang/String;)Ljava/lang/String; - move-result-object v$insertRegister - """ - ) - } - - // endregion - - // region check whether video is Shorts or Clips. - - PlayerResponseMethodHookPatch += PlayerResponseMethodHookPatch.Hook.PlayerParameter( - "$INTEGRATIONS_CLASS_DESCRIPTOR->setPlayerResponseVideoId(" + - "Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;", - ) - - // endregion - - // region fix player gesture. - - PlayerGestureConfigSyntheticFingerprint.resultOrThrow().let { - val endIndex = it.scanResult.patternScanResult!!.endIndex - val downAndOutLandscapeAllowedIndex = endIndex - 3 - val downAndOutPortraitAllowedIndex = endIndex - 9 - - arrayOf( - downAndOutLandscapeAllowedIndex, - downAndOutPortraitAllowedIndex, - ).forEach { index -> - val gestureAllowedMethod = it.getWalkerMethod(context, index) - - gestureAllowedMethod.apply { - val isAllowedIndex = getInstructions().lastIndex - val isAllowed = getInstruction(isAllowedIndex).registerA - - addInstructions( - isAllowedIndex, - """ - invoke-static { v$isAllowed }, $INTEGRATIONS_CLASS_DESCRIPTOR->enablePlayerGesture(Z)Z - move-result v$isAllowed - """, - ) - } - } - } - - // endregion - - // region fix playback speed menu item. - - // fix for iOS, Android Testsuite - CreatePlaybackSpeedMenuItemFingerprint.resultOrThrow().let { - val scanResult = it.scanResult.patternScanResult!! - if (scanResult.startIndex != 0) throw PatchException("Unexpected start index: ${scanResult.startIndex}") - - it.mutableMethod.apply { - // Find the conditional check if the playback speed menu item is not created. - val shouldCreateMenuIndex = - indexOfFirstInstructionOrThrow(scanResult.endIndex) { opcode == Opcode.IF_EQZ } - val shouldCreateMenuRegister = - getInstruction(shouldCreateMenuIndex).registerA - - addInstructions( - shouldCreateMenuIndex, - """ - invoke-static { v$shouldCreateMenuRegister }, $INTEGRATIONS_CLASS_DESCRIPTOR->forceCreatePlaybackSpeedMenu(Z)Z - move-result v$shouldCreateMenuRegister - """, - ) - } - } - - // fix for Android TV - PlaybackRateBottomSheetBuilderFingerprint.resultOrThrow().let { - it.mutableMethod.apply { - val targetIndex = it.scanResult.patternScanResult!!.endIndex - val targetRegister = getInstruction(targetIndex).registerA - - addInstructions( - targetIndex, - """ - invoke-static { v$targetRegister }, $INTEGRATIONS_CLASS_DESCRIPTOR->forceCreatePlaybackSpeedMenuReversed(Z)Z - move-result v$targetRegister - """, - ) - } - } - - // endregion - - // region fix background playback in live stream, if spoofing to iOS - // This force enables audio background playback. - PlayerResponseModelBackgroundAudioPlaybackFingerprint.resultOrThrow().mutableMethod.apply { - addInstructionsWithLabels( - 0, """ - invoke-static { }, $INTEGRATIONS_CLASS_DESCRIPTOR->overrideBackgroundAudioPlayback()Z - move-result v0 - if-eqz v0, :disabled - return v0 - """, ExternalLabel("disabled", getInstruction(0)) - ) - } - - // endregion - - // region watch history if spoofing to iOS - - if (!SettingsPatch.upward1839) { - BuildPlaybackStatsRequestURIFingerprint.resultOrThrow().let { - val walkerMethod = - it.getWalkerMethod(context, it.scanResult.patternScanResult!!.startIndex) - - walkerMethod.addInstructions( - 0, """ - invoke-static {p0}, $INTEGRATIONS_CLASS_DESCRIPTOR->overrideTrackingUrl(Landroid/net/Uri;)Landroid/net/Uri; - move-result-object p0 - """ - ) - } - - OrganicPlaybackContextModelFingerprint.resultOrThrow().let { - it.mutableMethod.apply { - val insertIndex = it.scanResult.patternScanResult!!.endIndex - val insertRegister = - getInstruction(insertIndex).registerA - - addInstruction( - insertIndex, - "invoke-static { v$insertRegister }, $INTEGRATIONS_CLASS_DESCRIPTOR->setCpn(Ljava/lang/String;)V" - ) - } - } - - TrackingUrlHookPatch.hookTrackingUrl("$INTEGRATIONS_CLASS_DESCRIPTOR->setTrackingUriParameter(Landroid/net/Uri;)V") - } - - // endregion - - // region append spoof info. - - NerdsStatsVideoFormatBuilderFingerprint.resultOrThrow().mutableMethod.apply { - for (index in implementation!!.instructions.size - 1 downTo 0) { - val instruction = getInstruction(index) - if (instruction.opcode != Opcode.RETURN_OBJECT) - continue - - val register = (instruction as OneRegisterInstruction).registerA - - addInstructions( - index, """ - invoke-static {v$register}, $INTEGRATIONS_CLASS_DESCRIPTOR->appendSpoofedClient(Ljava/lang/String;)Ljava/lang/String; - move-result-object v$register - """ - ) - } - } - - // endregion - - // region hook storyboard. - - StoryboardHookPatch.hook(INTEGRATIONS_CLASS_DESCRIPTOR) - - // endregion - - if (!SettingsPatch.upward1839) { - settingArray += "SETTINGS: IOS_CLIENT_SIDE_EFFECT_1838" - } else { - settingArray += "SETTINGS: IOS_CLIENT_SIDE_EFFECT_1839" - - context.updatePatchStatus(PATCH_STATUS_CLASS_DESCRIPTOR, "SpoofClient") - } - - /** - * Add settings - */ - SettingsPatch.addPreference(settingArray) - - SettingsPatch.updatePatchStatus(this) - } -} diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/SpoofUserAgentPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/SpoofUserAgentPatch.kt deleted file mode 100644 index 06a2a0ca8f..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/SpoofUserAgentPatch.kt +++ /dev/null @@ -1,5 +0,0 @@ -package app.revanced.patches.youtube.utils.fix.client - -import app.revanced.patches.shared.spoofuseragent.BaseSpoofUserAgentPatch - -object SpoofUserAgentPatch : BaseSpoofUserAgentPatch("com.google.android.youtube") \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/BuildInitPlaybackRequestFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/BuildInitPlaybackRequestFingerprint.kt deleted file mode 100644 index 9437ab1a07..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/BuildInitPlaybackRequestFingerprint.kt +++ /dev/null @@ -1,16 +0,0 @@ -package app.revanced.patches.youtube.utils.fix.client.fingerprints - -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.Opcode - -internal object BuildInitPlaybackRequestFingerprint : MethodFingerprint( - returnType = "Lorg/chromium/net/UrlRequest\$Builder;", - opcodes = listOf( - Opcode.MOVE_RESULT_OBJECT, - Opcode.IGET_OBJECT, // Moves the request URI string to a register to build the request with. - ), - strings = listOf( - "Content-Type", - "Range", - ), -) diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/BuildPlaybackStatsRequestURIFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/BuildPlaybackStatsRequestURIFingerprint.kt deleted file mode 100644 index 7a212b6b79..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/BuildPlaybackStatsRequestURIFingerprint.kt +++ /dev/null @@ -1,17 +0,0 @@ -package app.revanced.patches.youtube.utils.fix.client.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.AccessFlags -import com.android.tools.smali.dexlib2.Opcode - -internal object BuildPlaybackStatsRequestURIFingerprint : MethodFingerprint( - accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC, - returnType = "L", - opcodes = listOf( - Opcode.INVOKE_STATIC, - Opcode.MOVE_RESULT_OBJECT, - Opcode.CONST_STRING, - ), - strings = listOf("event", "streamingstats"), -) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/BuildPlayerRequestURIFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/BuildPlayerRequestURIFingerprint.kt deleted file mode 100644 index 563fbdaeaa..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/BuildPlayerRequestURIFingerprint.kt +++ /dev/null @@ -1,20 +0,0 @@ -package app.revanced.patches.youtube.utils.fix.client.fingerprints - -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.Opcode - -internal object BuildPlayerRequestURIFingerprint : MethodFingerprint( - returnType = "Ljava/lang/String;", - opcodes = listOf( - Opcode.INVOKE_VIRTUAL, // Register holds player request URI. - Opcode.MOVE_RESULT_OBJECT, - Opcode.IPUT_OBJECT, - Opcode.IGET_OBJECT, - Opcode.MONITOR_EXIT, - Opcode.RETURN_OBJECT, - ), - strings = listOf( - "key", - "asig", - ), -) diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/CreatePlaybackSpeedMenuItemFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/CreatePlaybackSpeedMenuItemFingerprint.kt deleted file mode 100644 index 0e79e54403..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/CreatePlaybackSpeedMenuItemFingerprint.kt +++ /dev/null @@ -1,34 +0,0 @@ -package app.revanced.patches.youtube.utils.fix.client.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.AccessFlags -import com.android.tools.smali.dexlib2.Opcode - -internal object CreatePlaybackSpeedMenuItemFingerprint : MethodFingerprint( - accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - returnType = "V", - opcodes = listOf( - Opcode.IGET_OBJECT, // First instruction of the method - Opcode.IGET_OBJECT, - Opcode.IGET_OBJECT, - Opcode.CONST_4, - Opcode.IF_EQZ, - Opcode.INVOKE_INTERFACE, - null // MOVE_RESULT or MOVE_RESULT_OBJECT, Return value controls the creation of the playback speed menu item. - ), - // 19.01 and earlier is missing the second parameter. - // Since this fingerprint is somewhat weak, work around by checking for both method parameter signatures. - customFingerprint = custom@{ methodDef, _ -> - // 19.01 and earlier parameters are: "[L" - // 19.02+ parameters are "[L", "F" - val parameterTypes = methodDef.parameterTypes - val firstParameter = parameterTypes.firstOrNull() - - if (firstParameter == null || !firstParameter.startsWith("[L")) { - return@custom false - } - - parameterTypes.size == 1 || (parameterTypes.size == 2 && parameterTypes[1] == "F") - }, -) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/CreatePlayerRequestBodyFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/CreatePlayerRequestBodyFingerprint.kt deleted file mode 100644 index a631f4140d..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/CreatePlayerRequestBodyFingerprint.kt +++ /dev/null @@ -1,15 +0,0 @@ -package app.revanced.patches.youtube.utils.fix.client.fingerprints - -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.Opcode - -internal object CreatePlayerRequestBodyFingerprint : MethodFingerprint( - returnType = "V", - parameters = listOf("L"), - opcodes = listOf( - Opcode.CHECK_CAST, - Opcode.IGET, - Opcode.AND_INT_LIT16, - ), - strings = listOf("ms"), -) diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/CreatePlayerRequestBodyWithVersionReleaseFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/CreatePlayerRequestBodyWithVersionReleaseFingerprint.kt deleted file mode 100644 index a4157fdc41..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/CreatePlayerRequestBodyWithVersionReleaseFingerprint.kt +++ /dev/null @@ -1,30 +0,0 @@ -package app.revanced.patches.youtube.utils.fix.client.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import app.revanced.patches.youtube.utils.fix.client.fingerprints.CreatePlayerRequestBodyWithVersionReleaseFingerprint.indexOfBuildInstruction -import app.revanced.util.getReference -import app.revanced.util.indexOfFirstInstruction -import com.android.tools.smali.dexlib2.AccessFlags -import com.android.tools.smali.dexlib2.Opcode -import com.android.tools.smali.dexlib2.iface.Method -import com.android.tools.smali.dexlib2.iface.reference.MethodReference - -internal object CreatePlayerRequestBodyWithVersionReleaseFingerprint : MethodFingerprint( - returnType = "V", - accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = listOf("L"), - strings = listOf("Google Inc."), - customFingerprint = { methodDef, _ -> - indexOfBuildInstruction(methodDef) >= 0 - }, -) { - fun indexOfBuildInstruction(methodDef: Method) = - methodDef.indexOfFirstInstruction { - val reference = getReference() - opcode == Opcode.INVOKE_VIRTUAL && - reference?.name == "build" && - reference.parameterTypes.isEmpty() && - reference.returnType.startsWith("L") - } -} diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/NerdsStatsVideoFormatBuilderFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/NerdsStatsVideoFormatBuilderFingerprint.kt deleted file mode 100644 index 7521265d35..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/NerdsStatsVideoFormatBuilderFingerprint.kt +++ /dev/null @@ -1,12 +0,0 @@ -package app.revanced.patches.youtube.utils.fix.client.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.AccessFlags - -internal object NerdsStatsVideoFormatBuilderFingerprint : MethodFingerprint( - returnType = "Ljava/lang/String;", - accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC, - parameters = listOf("Lcom/google/android/libraries/youtube/innertube/model/media/FormatStreamModel;"), - strings = listOf("codecs=\""), -) diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/OrganicPlaybackContextModelFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/OrganicPlaybackContextModelFingerprint.kt deleted file mode 100644 index fe1c98f179..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/OrganicPlaybackContextModelFingerprint.kt +++ /dev/null @@ -1,24 +0,0 @@ -package app.revanced.patches.youtube.utils.fix.client.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.AccessFlags -import com.android.tools.smali.dexlib2.Opcode - -internal object OrganicPlaybackContextModelFingerprint : MethodFingerprint( - returnType = "V", - accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR, - parameters = listOf( - "Ljava/lang/String;", // cpn - "Z", - "Z", - "Z", - "Z" - ), - opcodes = listOf( - Opcode.INVOKE_DIRECT, - Opcode.IF_EQZ, - Opcode.IPUT_OBJECT, - ), - strings = listOf("Null contentCpn") -) diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/PlayerGestureConfigSyntheticFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/PlayerGestureConfigSyntheticFingerprint.kt deleted file mode 100644 index 0ae82b307f..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/PlayerGestureConfigSyntheticFingerprint.kt +++ /dev/null @@ -1,55 +0,0 @@ -package app.revanced.patches.youtube.utils.fix.client.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import app.revanced.patcher.fingerprint.annotation.FuzzyPatternScanMethod -import app.revanced.util.getReference -import app.revanced.util.indexOfFirstInstruction -import com.android.tools.smali.dexlib2.AccessFlags -import com.android.tools.smali.dexlib2.Opcode -import com.android.tools.smali.dexlib2.iface.Method -import com.android.tools.smali.dexlib2.iface.reference.MethodReference - -/** - * [FuzzyPatternScanMethod] was added to maintain compatibility for YouTube v18.29.38 to v18.32.39. - * TODO: Remove this annotation if support for YouTube v18.29.38 to v18.32.39 is dropped. - */ -@FuzzyPatternScanMethod(5) -internal object PlayerGestureConfigSyntheticFingerprint : MethodFingerprint( - returnType = "V", - accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = listOf("Ljava/lang/Object;"), - opcodes = listOf( - Opcode.SGET_OBJECT, - Opcode.INVOKE_VIRTUAL, - Opcode.MOVE_RESULT, - Opcode.IF_EQZ, - Opcode.IF_EQZ, - Opcode.IGET_OBJECT, - Opcode.INVOKE_INTERFACE, - Opcode.MOVE_RESULT_OBJECT, - Opcode.INVOKE_VIRTUAL, // playerGestureConfig.downAndOutLandscapeAllowed. - Opcode.MOVE_RESULT, - Opcode.CHECK_CAST, - Opcode.IPUT_BOOLEAN, - Opcode.INVOKE_INTERFACE, - Opcode.MOVE_RESULT_OBJECT, - Opcode.INVOKE_VIRTUAL, // playerGestureConfig.downAndOutPortraitAllowed. - Opcode.MOVE_RESULT, - Opcode.IPUT_BOOLEAN, - Opcode.RETURN_VOID, - ), - customFingerprint = { methodDef, classDef -> - fun indexOfDownAndOutAllowedInstruction(methodDef: Method) = - methodDef.indexOfFirstInstruction { - val reference = getReference() - reference?.definingClass == "Lcom/google/android/libraries/youtube/innertube/model/media/PlayerConfigModel;" && - reference.parameterTypes.isEmpty() && - reference.returnType == "Z" - } - - // This method is always called "a" because this kind of class always has a single method. - methodDef.name == "a" && classDef.methods.count() == 2 && - indexOfDownAndOutAllowedInstruction(methodDef) >= 0 - }, -) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/PlayerResponseModelBackgroundAudioPlaybackFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/PlayerResponseModelBackgroundAudioPlaybackFingerprint.kt deleted file mode 100644 index 30ec622e1f..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/PlayerResponseModelBackgroundAudioPlaybackFingerprint.kt +++ /dev/null @@ -1,43 +0,0 @@ -package app.revanced.patches.youtube.utils.fix.client.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.AccessFlags -import com.android.tools.smali.dexlib2.Opcode - -/** - * On iOS clients, this method always returns false in live streams. - * - * This fingerprint seems to break easily because there are many [Opcode] patterns, but it is not. - * This fingerprint has been tested on all versions from YouTube 17.34.36 to YouTube 19.29.42. - */ -internal object PlayerResponseModelBackgroundAudioPlaybackFingerprint : MethodFingerprint( - returnType = "Z", - accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC, - parameters = listOf("Lcom/google/android/libraries/youtube/innertube/model/player/PlayerResponseModel;"), - opcodes = listOf( - Opcode.CONST_4, - Opcode.IF_EQZ, - Opcode.INVOKE_INTERFACE, - Opcode.MOVE_RESULT_OBJECT, - Opcode.IF_EQZ, - Opcode.INVOKE_INTERFACE, - Opcode.MOVE_RESULT_OBJECT, - Opcode.INVOKE_STATIC, - Opcode.MOVE_RESULT, - Opcode.IF_EQZ, - Opcode.INVOKE_INTERFACE, - Opcode.MOVE_RESULT, - Opcode.CONST_4, - Opcode.IF_EQZ, - Opcode.INVOKE_INTERFACE, - Opcode.MOVE_RESULT_OBJECT, - Opcode.INVOKE_VIRTUAL, - Opcode.MOVE_RESULT, - Opcode.IF_NEZ, - Opcode.GOTO, - Opcode.RETURN, - null, // Opcode.CONST_4 or Opcode.MOVE - Opcode.RETURN, - ), -) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/SetPlayerRequestClientTypeFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/SetPlayerRequestClientTypeFingerprint.kt deleted file mode 100644 index 4620492391..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/SetPlayerRequestClientTypeFingerprint.kt +++ /dev/null @@ -1,12 +0,0 @@ -package app.revanced.patches.youtube.utils.fix.client.fingerprints - -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.Opcode - -internal object SetPlayerRequestClientTypeFingerprint : MethodFingerprint( - strings = listOf("10.29"), - opcodes = listOf( - Opcode.IGET, - Opcode.IPUT, // Sets ClientInfo.clientId. - ), -) diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/UserAgentHeaderBuilderFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/UserAgentHeaderBuilderFingerprint.kt deleted file mode 100644 index c724a6718e..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/client/fingerprints/UserAgentHeaderBuilderFingerprint.kt +++ /dev/null @@ -1,19 +0,0 @@ -package app.revanced.patches.youtube.utils.fix.client.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.AccessFlags -import com.android.tools.smali.dexlib2.Opcode - -/** - * This is the fingerprint used in the 'client-spoof' patch around 2022. - * (Integrated into 'UserAgentClientSpoofPatch' now.) - * - * This method is modified by 'UserAgentClientSpoofPatch', so the fingerprint does not check the [Opcode]. - */ -internal object UserAgentHeaderBuilderFingerprint : MethodFingerprint( - accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC, - returnType = "Ljava/lang/String;", - parameters = listOf("Landroid/content/Context;", "Ljava/lang/String;", "Ljava/lang/String;"), - strings = listOf("(Linux; U; Android "), -) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/parameter/SpoofPlayerParameterPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/parameter/SpoofPlayerParameterPatch.kt deleted file mode 100644 index b6c57c7047..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/parameter/SpoofPlayerParameterPatch.kt +++ /dev/null @@ -1,53 +0,0 @@ -package app.revanced.patches.youtube.utils.fix.parameter - -import app.revanced.patcher.data.BytecodeContext -import app.revanced.patches.youtube.utils.compatibility.Constants.COMPATIBLE_PACKAGE -import app.revanced.patches.youtube.utils.integrations.Constants.MISC_PATH -import app.revanced.patches.youtube.utils.playertype.PlayerTypeHookPatch -import app.revanced.patches.youtube.utils.settings.SettingsPatch -import app.revanced.patches.youtube.utils.storyboard.StoryboardHookPatch -import app.revanced.patches.youtube.video.information.VideoInformationPatch -import app.revanced.patches.youtube.video.playerresponse.PlayerResponseMethodHookPatch -import app.revanced.util.patch.BaseBytecodePatch - -@Suppress("unused") -@Deprecated("This patch will be removed in the future.") -object SpoofPlayerParameterPatch : BaseBytecodePatch( - // name = "Spoof player parameters", - description = "Adds options to spoof player parameters to prevent playback issues.", - dependencies = setOf( - PlayerTypeHookPatch::class, - PlayerResponseMethodHookPatch::class, - SettingsPatch::class, - VideoInformationPatch::class, - StoryboardHookPatch::class, - ), - compatiblePackages = COMPATIBLE_PACKAGE, - use = false -) { - private const val INTEGRATIONS_CLASS_DESCRIPTOR = - "$MISC_PATH/SpoofPlayerParameterPatch;" - - override fun execute(context: BytecodeContext) { - - // Hook the player parameters. - PlayerResponseMethodHookPatch += PlayerResponseMethodHookPatch.Hook.PlayerParameter( - "$INTEGRATIONS_CLASS_DESCRIPTOR->spoofParameter(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;" - ) - - // Hook storyboard. - StoryboardHookPatch.hook(INTEGRATIONS_CLASS_DESCRIPTOR) - - /** - * Add settings - */ - SettingsPatch.addPreference( - arrayOf( - "PREFERENCE_CATEGORY: MISC_EXPERIMENTAL_FLAGS", - "SETTINGS: SPOOF_PLAYER_PARAMETER" - ) - ) - - SettingsPatch.updatePatchStatus(this) - } -} diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/gms/GmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/gms/GmsCoreSupportPatch.kt index 169e5d4308..a9345b9f31 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/gms/GmsCoreSupportPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/gms/GmsCoreSupportPatch.kt @@ -3,8 +3,6 @@ package app.revanced.patches.youtube.utils.gms import app.revanced.patches.shared.gms.BaseGmsCoreSupportPatch import app.revanced.patches.shared.gms.BaseGmsCoreSupportResourcePatch.Companion.ORIGINAL_PACKAGE_NAME_YOUTUBE import app.revanced.patches.youtube.utils.compatibility.Constants.COMPATIBLE_PACKAGE -import app.revanced.patches.youtube.utils.fix.client.SpoofClientPatch -import app.revanced.patches.youtube.utils.fix.client.SpoofUserAgentPatch import app.revanced.patches.youtube.utils.integrations.IntegrationsPatch import app.revanced.patches.youtube.utils.mainactivity.fingerprints.MainActivityFingerprint import app.revanced.patches.youtube.utils.settings.SettingsPatch @@ -15,8 +13,6 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch( mainActivityOnCreateFingerprint = MainActivityFingerprint, integrationsPatchDependency = IntegrationsPatch::class, dependencies = setOf( - SpoofClientPatch::class, - SpoofUserAgentPatch::class, SettingsPatch::class ), gmsCoreSupportResourcePatch = GmsCoreSupportResourcePatch, diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/StoryboardHookPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/StoryboardHookPatch.kt deleted file mode 100644 index d0b9d10f44..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/StoryboardHookPatch.kt +++ /dev/null @@ -1,154 +0,0 @@ -package app.revanced.patches.youtube.utils.storyboard - -import app.revanced.patcher.data.BytecodeContext -import app.revanced.patcher.extensions.InstructionExtensions.addInstructions -import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels -import app.revanced.patcher.extensions.InstructionExtensions.getInstruction -import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction -import app.revanced.patcher.patch.BytecodePatch -import app.revanced.patcher.patch.annotation.Patch -import app.revanced.patcher.util.smali.ExternalLabel -import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch -import app.revanced.patches.youtube.utils.storyboard.fingerprints.PlayerResponseModelGeneralStoryboardRendererFingerprint -import app.revanced.patches.youtube.utils.storyboard.fingerprints.PlayerResponseModelLiveStreamStoryboardRendererFingerprint -import app.revanced.patches.youtube.utils.storyboard.fingerprints.PlayerResponseModelStoryboardRecommendedLevelFingerprint -import app.revanced.patches.youtube.utils.storyboard.fingerprints.StoryboardRendererDecoderRecommendedLevelFingerprint -import app.revanced.patches.youtube.utils.storyboard.fingerprints.StoryboardRendererDecoderSpecFingerprint -import app.revanced.patches.youtube.utils.storyboard.fingerprints.StoryboardRendererSpecFingerprint -import app.revanced.patches.youtube.utils.storyboard.fingerprints.StoryboardThumbnailFingerprint -import app.revanced.patches.youtube.utils.storyboard.fingerprints.StoryboardThumbnailParentFingerprint -import app.revanced.util.resultOrThrow -import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction - -@Patch( - description = "Force inject the Storyboard by fetching YouTube API.", - dependencies = [SharedResourceIdPatch::class], -) -object StoryboardHookPatch : BytecodePatch( - setOf( - PlayerResponseModelGeneralStoryboardRendererFingerprint, - PlayerResponseModelLiveStreamStoryboardRendererFingerprint, - PlayerResponseModelStoryboardRecommendedLevelFingerprint, - StoryboardRendererDecoderRecommendedLevelFingerprint, - StoryboardRendererDecoderSpecFingerprint, - StoryboardRendererSpecFingerprint, - StoryboardThumbnailParentFingerprint, - ) -) { - private lateinit var context: BytecodeContext - - override fun execute(context: BytecodeContext) { - this.context = context - } - - internal fun hook(classDescriptor: String) { - - // Force the seekbar time and chapters to always show up. - // This is used if the storyboard spec fetch fails, for viewing paid videos, - // or if storyboard spoofing is turned off. - StoryboardThumbnailFingerprint.resolve( - context, - StoryboardThumbnailParentFingerprint.resultOrThrow().classDef - ) - StoryboardThumbnailFingerprint.resultOrThrow().let { - it.mutableMethod.apply { - val targetIndex = it.scanResult.patternScanResult!!.endIndex - val targetRegister = - getInstruction(targetIndex).registerA - - // Since this is end of the method must replace one line then add the rest. - addInstructions( - targetIndex + 1, - """ - invoke-static {}, $classDescriptor->getSeekbarThumbnailOverrideValue()Z - move-result v$targetRegister - return v$targetRegister - """ - ) - removeInstruction(targetIndex) - } - } - - // Hook storyboard renderer url. - arrayOf( - PlayerResponseModelGeneralStoryboardRendererFingerprint, - PlayerResponseModelLiveStreamStoryboardRendererFingerprint - ).forEach { fingerprint -> - fingerprint.resultOrThrow().let { - it.mutableMethod.apply { - val getStoryboardIndex = it.scanResult.patternScanResult!!.endIndex - val getStoryboardRegister = - getInstruction(getStoryboardIndex).registerA - - addInstructions( - getStoryboardIndex, - """ - invoke-static { v$getStoryboardRegister }, $classDescriptor->getStoryboardRendererSpec(Ljava/lang/String;)Ljava/lang/String; - move-result-object v$getStoryboardRegister - """ - ) - } - } - } - - // Hook recommended seekbar thumbnails quality level. - StoryboardRendererDecoderRecommendedLevelFingerprint.resultOrThrow().let { - it.mutableMethod.apply { - val moveOriginalRecommendedValueIndex = it.scanResult.patternScanResult!!.endIndex - val originalValueRegister = - getInstruction(moveOriginalRecommendedValueIndex).registerA - - addInstructions( - moveOriginalRecommendedValueIndex + 1, """ - invoke-static { v$originalValueRegister }, $classDescriptor->getStoryboardRecommendedLevel(I)I - move-result v$originalValueRegister - """ - ) - } - } - - // Hook the recommended precise seeking thumbnails quality level. - PlayerResponseModelStoryboardRecommendedLevelFingerprint.resultOrThrow().let { - it.mutableMethod.apply { - val moveOriginalRecommendedValueIndex = it.scanResult.patternScanResult!!.endIndex - val originalValueRegister = - getInstruction(moveOriginalRecommendedValueIndex).registerA - - addInstructions( - moveOriginalRecommendedValueIndex, """ - invoke-static { v$originalValueRegister }, $classDescriptor->getStoryboardRecommendedLevel(I)I - move-result v$originalValueRegister - """ - ) - } - } - - StoryboardRendererSpecFingerprint.resultOrThrow().let { - it.mutableMethod.apply { - val storyBoardUrlParams = 0 - - addInstructionsWithLabels( - 0, """ - if-nez p$storyBoardUrlParams, :ignore - invoke-static { p$storyBoardUrlParams }, $classDescriptor->getStoryboardRendererSpec(Ljava/lang/String;)Ljava/lang/String; - move-result-object p$storyBoardUrlParams - """, ExternalLabel("ignore", getInstruction(0)) - ) - } - } - - // Hook the seekbar thumbnail decoder and use a NULL spec for live streams. - StoryboardRendererDecoderSpecFingerprint.resultOrThrow().let { - val storyBoardUrlIndex = it.scanResult.patternScanResult!!.startIndex + 1 - val storyboardUrlRegister = - it.mutableMethod.getInstruction(storyBoardUrlIndex).registerA - - it.mutableMethod.addInstructions( - storyBoardUrlIndex + 1, """ - invoke-static { v$storyboardUrlRegister }, $classDescriptor->getStoryboardDecoderRendererSpec(Ljava/lang/String;)Ljava/lang/String; - move-result-object v$storyboardUrlRegister - """ - ) - } - } -} diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/PlayerResponseModelGeneralStoryboardRendererFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/PlayerResponseModelGeneralStoryboardRendererFingerprint.kt deleted file mode 100644 index 0bcb7867dd..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/PlayerResponseModelGeneralStoryboardRendererFingerprint.kt +++ /dev/null @@ -1,24 +0,0 @@ -package app.revanced.patches.youtube.utils.storyboard.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import app.revanced.util.containsWideLiteralInstructionIndex -import com.android.tools.smali.dexlib2.AccessFlags -import com.android.tools.smali.dexlib2.Opcode - -internal object PlayerResponseModelGeneralStoryboardRendererFingerprint : MethodFingerprint( - returnType = "Ljava/lang/String;", - accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = emptyList(), - opcodes = listOf( - Opcode.RETURN_OBJECT, - Opcode.CONST_4, - Opcode.RETURN_OBJECT - ), - customFingerprint = handler@{ methodDef, _ -> - if (!methodDef.definingClass.endsWith("/PlayerResponseModelImpl;")) - return@handler false - - methodDef.containsWideLiteralInstructionIndex(55735497) - } -) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/PlayerResponseModelLiveStreamStoryboardRendererFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/PlayerResponseModelLiveStreamStoryboardRendererFingerprint.kt deleted file mode 100644 index 6fe94ccec3..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/PlayerResponseModelLiveStreamStoryboardRendererFingerprint.kt +++ /dev/null @@ -1,24 +0,0 @@ -package app.revanced.patches.youtube.utils.storyboard.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import app.revanced.util.containsWideLiteralInstructionIndex -import com.android.tools.smali.dexlib2.AccessFlags -import com.android.tools.smali.dexlib2.Opcode - -internal object PlayerResponseModelLiveStreamStoryboardRendererFingerprint : MethodFingerprint( - returnType = "Ljava/lang/String;", - accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = emptyList(), - opcodes = listOf( - Opcode.RETURN_OBJECT, - Opcode.CONST_4, - Opcode.RETURN_OBJECT - ), - customFingerprint = handler@{ methodDef, _ -> - if (!methodDef.definingClass.endsWith("/PlayerResponseModelImpl;")) - return@handler false - - methodDef.containsWideLiteralInstructionIndex(70276274) - } -) diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/PlayerResponseModelStoryboardRecommendedLevelFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/PlayerResponseModelStoryboardRecommendedLevelFingerprint.kt deleted file mode 100644 index c7709b79e3..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/PlayerResponseModelStoryboardRecommendedLevelFingerprint.kt +++ /dev/null @@ -1,24 +0,0 @@ -package app.revanced.patches.youtube.utils.storyboard.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import app.revanced.util.containsWideLiteralInstructionIndex -import com.android.tools.smali.dexlib2.AccessFlags -import com.android.tools.smali.dexlib2.Opcode - -internal object PlayerResponseModelStoryboardRecommendedLevelFingerprint : MethodFingerprint( - returnType = "I", - accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = emptyList(), - opcodes = listOf( - Opcode.SGET_OBJECT, - Opcode.IGET, - Opcode.RETURN - ), - customFingerprint = handler@{ methodDef, _ -> - if (!methodDef.definingClass.endsWith("/PlayerResponseModelImpl;")) - return@handler false - - methodDef.containsWideLiteralInstructionIndex(55735497) - } -) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/StoryboardRendererDecoderRecommendedLevelFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/StoryboardRendererDecoderRecommendedLevelFingerprint.kt deleted file mode 100644 index b8e9daa36a..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/StoryboardRendererDecoderRecommendedLevelFingerprint.kt +++ /dev/null @@ -1,23 +0,0 @@ -package app.revanced.patches.youtube.utils.storyboard.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.AccessFlags -import com.android.tools.smali.dexlib2.Opcode - -/** - * Resolves to the same method as [StoryboardRendererDecoderSpecFingerprint]. - */ -internal object StoryboardRendererDecoderRecommendedLevelFingerprint : MethodFingerprint( - returnType = "V", - accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = listOf("Lcom/google/android/libraries/youtube/innertube/model/player/PlayerResponseModel;"), - opcodes = listOf( - Opcode.INVOKE_INTERFACE, - Opcode.MOVE_RESULT_OBJECT, - Opcode.IPUT_OBJECT, - Opcode.INVOKE_INTERFACE, - Opcode.MOVE_RESULT - ), - strings = listOf("#-1#") -) diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/StoryboardRendererDecoderSpecFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/StoryboardRendererDecoderSpecFingerprint.kt deleted file mode 100644 index e5271661ce..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/StoryboardRendererDecoderSpecFingerprint.kt +++ /dev/null @@ -1,23 +0,0 @@ -package app.revanced.patches.youtube.utils.storyboard.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.AccessFlags -import com.android.tools.smali.dexlib2.Opcode - -/** - * Resolves to the same method as [StoryboardRendererDecoderRecommendedLevelFingerprint]. - */ -internal object StoryboardRendererDecoderSpecFingerprint : MethodFingerprint( - returnType = "V", - accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = listOf("Lcom/google/android/libraries/youtube/innertube/model/player/PlayerResponseModel;"), - opcodes = listOf( - Opcode.INVOKE_INTERFACE, // First instruction of the method. - Opcode.MOVE_RESULT_OBJECT, - Opcode.CONST_4, - Opcode.CONST_4, - Opcode.IF_NEZ, - ), - strings = listOf("#-1#") -) diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/StoryboardRendererSpecFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/StoryboardRendererSpecFingerprint.kt deleted file mode 100644 index 191bd7a17d..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/StoryboardRendererSpecFingerprint.kt +++ /dev/null @@ -1,12 +0,0 @@ -package app.revanced.patches.youtube.utils.storyboard.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.AccessFlags - -internal object StoryboardRendererSpecFingerprint : MethodFingerprint( - accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC, - returnType = "L", - parameters = listOf("Ljava/lang/String;", "J"), - strings = listOf("\\|"), -) diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/StoryboardThumbnailFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/StoryboardThumbnailFingerprint.kt deleted file mode 100644 index 1211b12dab..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/StoryboardThumbnailFingerprint.kt +++ /dev/null @@ -1,23 +0,0 @@ -package app.revanced.patches.youtube.utils.storyboard.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.AccessFlags -import com.android.tools.smali.dexlib2.Opcode - -/** - * Resolves using the class found in [StoryboardThumbnailParentFingerprint]. - */ -internal object StoryboardThumbnailFingerprint : MethodFingerprint( - accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - returnType = "Z", - parameters = listOf(), - opcodes = listOf( - Opcode.MOVE_RESULT, - Opcode.IF_GTZ, - Opcode.GOTO, - Opcode.CONST_4, - Opcode.RETURN, - Opcode.RETURN, // Last instruction of method. - ), -) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/StoryboardThumbnailParentFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/StoryboardThumbnailParentFingerprint.kt deleted file mode 100644 index 9e5ec469c7..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/storyboard/fingerprints/StoryboardThumbnailParentFingerprint.kt +++ /dev/null @@ -1,17 +0,0 @@ -package app.revanced.patches.youtube.utils.storyboard.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.AccessFlags - -/** - * Here lies code that creates the seekbar thumbnails. - * - * An additional change here might force the thumbnails to be created, - * or possibly a change somewhere else (maybe involving YouTube 18.23.35 class `hte`) - */ -internal object StoryboardThumbnailParentFingerprint : MethodFingerprint( - accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - returnType = "Landroid/graphics/Bitmap;", - strings = listOf("Storyboard regionDecoder.decodeRegion exception - "), -) \ No newline at end of file diff --git a/src/main/resources/youtube/settings/host/values/arrays.xml b/src/main/resources/youtube/settings/host/values/arrays.xml index e58e3ff003..5351620964 100644 --- a/src/main/resources/youtube/settings/host/values/arrays.xml +++ b/src/main/resources/youtube/settings/host/values/arrays.xml @@ -163,46 +163,6 @@ HEART_TINT HIDDEN - - @string/revanced_spoof_client_options_entry_ios - @string/revanced_spoof_client_options_entry_android_testsuite - @string/revanced_spoof_client_options_entry_android_unplugged - @string/revanced_spoof_client_options_entry_android_vr - - - IOS - ANDROID_TESTSUITE - ANDROID_UNPLUGGED - ANDROID_VR - - - @string/revanced_spoof_client_options_entry_ios - @string/revanced_spoof_client_options_entry_android_unplugged - @string/revanced_spoof_client_options_entry_android_vr - - - IOS - ANDROID_UNPLUGGED - ANDROID_VR - - - @string/revanced_spoof_client_options_entry_ios - @string/revanced_spoof_client_options_entry_android_vr - - - IOS - ANDROID_VR - - - @string/revanced_spoof_client_options_entry_ios - @string/revanced_spoof_client_options_entry_android_testsuite - @string/revanced_spoof_client_options_entry_android_vr - - - IOS - ANDROID_TESTSUITE - ANDROID_VR - @string/revanced_spoof_app_version_target_entry_18_17_43 @string/revanced_spoof_app_version_target_entry_18_05_40 diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml index 4bb7628215..fffed21921 100644 --- a/src/main/resources/youtube/settings/host/values/strings.xml +++ b/src/main/resources/youtube/settings/host/values/strings.xml @@ -1551,22 +1551,6 @@ Tap on the continue button and disable battery optimizations." Enable OPUS codec Enable the OPUS codec if the player response includes the OPUS codec. - Spoof player parameter - "Spoofs player parameters to prevent playback issues. - -Limitations: -• Enhanced bitrate is not available. -• No seekbar thumbnails for paid videos. -• Offline downloads may not work. -• Video may not start from the last watched time." - Spoof player parameter in feed - "Player parameter spoofed for feed videos. - -Limitation: Automatically played feed videos will show up in your watch history." - "Player parameter not spoofed for feed videos. - -Limitation: Feed videos will play for less than 1 minute before encountering playback issues." - Import / Export settings Import or export settings. @@ -1593,83 +1577,6 @@ Limitation: Feed videos will play for less than 1 minute before encountering pla Reset Settings copied to clipboard. - - Spoof client - Spoof the client to prevent playback issues. - Spoof client - Client is spoofed. - "Client is not spoofed. Video playback may not work." - Turning off this setting may cause video playback issues. - Spoof client type - Force iOS AVC (H.264) - iOS video codec is AVC (H.264). - iOS video codec is AVC (H.264), VP9, or AV1. - "Enabling this might improve battery life and fix playback stuttering. - -AVC (H.264) has a maximum resolution of 1080p, and video playback will use more internet data than VP9 or AV1." - Show in Stats for nerds - Spoofed client is shown in Stats for nerds. - Spoofed client is hidden in Stats for nerds. - - - Spoof client options - General - Live streams - Shorts, Clips - Unplayable video - iOS - Android - Android Embedded Player - Android Testsuite - Android TV - Android VR - TV HTML5 - Web - - - About - - iOS - "Spoof client to iOS. - -Side effects include: -• HDR is supported only with AV1 codec. -• Watch time is not saved in watch history on brand account." - "Spoof client to iOS. - -Side effects include: -• HDR is supported only with AV1 codec. -• Watch history does not work with a brand account." - Android Testsuite - "Spoof client to Android Testsuite. - -Side effects include: -• No HDR video. -• Audio track menu is missing. -• Captions may not be available. -• Download button is missing. -• End screen cards are missing. -• Low quality seekbar thumbnail." - Android TV - "Spoof client to Android TV (YouTube TV). - -Side effects include: -• No HDR video. -• Audio track menu is missing. -• Captions may not be available. -• Download button is missing. -• Low quality seekbar thumbnail. -• Some live streams are not supported for playback." - Android VR - "Spoof client to Android VR. - -Side effects include: -• No HDR video. -• Download button of video action bar is missing. -• Paused videos can randomly resume. -• Low quality Shorts seekbar thumbnails. -• Kids videos do not play." - Watch history Change settings related with watch history. @@ -1682,15 +1589,8 @@ Side effects include: Block watch history Status of watch history • Watch history is blocked. - "• Follows the watch history settings of Google account. -• Watch history may not work with a brand account. -(Spoof client setting is enabled and iOS client is selected)" - "• Follows the watch history settings of Google account. -• Watch history may not work due to DNS or VPN. -• Watch history may not work with a brand account. -(Spoof client setting is enabled and iOS client is selected)" - • Follows the watch history settings of Google account. - "• Follows the watch history settings of Google account. + • Follows the watch history settings of Google account. + "• Follows the watch history settings of Google account. • Watch history may not work due to DNS or VPN." diff --git a/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/src/main/resources/youtube/settings/xml/revanced_prefs.xml index 592a75c59d..4d9dc746c9 100644 --- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml +++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml @@ -610,32 +610,6 @@ - - - - - - - - - - @@ -756,7 +726,6 @@ - diff --git a/src/main/resources/youtube/visual/shared/drawable/revanced_preference_screen_spoof_client_icon.xml b/src/main/resources/youtube/visual/shared/drawable/revanced_preference_screen_spoof_client_icon.xml deleted file mode 100644 index 8d08d6d160..0000000000 --- a/src/main/resources/youtube/visual/shared/drawable/revanced_preference_screen_spoof_client_icon.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - From 15a9d7c2e1f5239ca419996d5747ac7aaae3df76 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sun, 1 Sep 2024 02:11:16 +0900 Subject: [PATCH 14/53] feat(YouTube): add `Spoof streaming data` patch --- .../visual/VisualPreferencesIconsPatch.kt | 1 + .../streamingdata/SpoofStreamingDataPatch.kt | 261 ++++++++++++++++++ .../fix/streamingdata/SpoofUserAgentPatch.kt | 5 + .../BuildInitPlaybackRequestFingerprint.kt | 16 ++ .../BuildMediaDataSourceFingerprint.kt | 22 ++ .../BuildPlayerRequestURIFingerprint.kt | 26 ++ .../fingerprints/BuildRequestFingerprint.kt | 50 ++++ .../CreateStreamingDataFingerprint.kt | 28 ++ ...NerdsStatsVideoFormatBuilderFingerprint.kt | 12 + ...ProtobufClassParseByteBufferFingerprint.kt | 19 ++ .../youtube/utils/gms/GmsCoreSupportPatch.kt | 4 + .../youtube/settings/host/values/arrays.xml | 10 + .../youtube/settings/host/values/strings.xml | 31 +++ .../youtube/settings/xml/revanced_prefs.xml | 10 + ...rence_screen_spoof_streaming_data_icon.xml | 18 ++ 15 files changed, 513 insertions(+) create mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/SpoofStreamingDataPatch.kt create mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/SpoofUserAgentPatch.kt create mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildInitPlaybackRequestFingerprint.kt create mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildMediaDataSourceFingerprint.kt create mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildPlayerRequestURIFingerprint.kt create mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildRequestFingerprint.kt create mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/CreateStreamingDataFingerprint.kt create mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/NerdsStatsVideoFormatBuilderFingerprint.kt create mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/ProtobufClassParseByteBufferFingerprint.kt create mode 100644 src/main/resources/youtube/visual/shared/drawable/revanced_preference_screen_spoof_streaming_data_icon.xml diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/visual/VisualPreferencesIconsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/visual/VisualPreferencesIconsPatch.kt index a026e50a89..78c677b0c4 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/visual/VisualPreferencesIconsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/visual/VisualPreferencesIconsPatch.kt @@ -276,6 +276,7 @@ object VisualPreferencesIconsPatch : BaseResourcePatch( "revanced_preference_screen_seekbar", "revanced_preference_screen_settings_menu", "revanced_preference_screen_shorts_player", + "revanced_preference_screen_spoof_streaming_data", "revanced_preference_screen_toolbar", "revanced_preference_screen_video_description", "revanced_preference_screen_video_filter", diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/SpoofStreamingDataPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/SpoofStreamingDataPatch.kt new file mode 100644 index 0000000000..eec41d67e7 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/SpoofStreamingDataPatch.kt @@ -0,0 +1,261 @@ +package app.revanced.patches.youtube.utils.fix.streamingdata + +import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels +import app.revanced.patcher.extensions.InstructionExtensions.getInstruction +import app.revanced.patcher.extensions.InstructionExtensions.getInstructions +import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction +import app.revanced.patcher.patch.PatchException +import app.revanced.patcher.util.smali.ExternalLabel +import app.revanced.patches.youtube.utils.compatibility.Constants +import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.BuildInitPlaybackRequestFingerprint +import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.BuildMediaDataSourceFingerprint +import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.BuildPlayerRequestURIFingerprint +import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.BuildRequestFingerprint +import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.CreateStreamingDataFingerprint +import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.NerdsStatsVideoFormatBuilderFingerprint +import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.ProtobufClassParseByteBufferFingerprint +import app.revanced.patches.youtube.utils.integrations.Constants.MISC_PATH +import app.revanced.patches.youtube.utils.settings.SettingsPatch +import app.revanced.util.getReference +import app.revanced.util.patch.BaseBytecodePatch +import app.revanced.util.resultOrThrow +import com.android.tools.smali.dexlib2.Opcode +import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction +import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction +import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction +import com.android.tools.smali.dexlib2.iface.reference.FieldReference + +object SpoofStreamingDataPatch : BaseBytecodePatch( + name = "Spoof streaming data", + description = "Adds options to spoof the streaming data to allow video playback.", + dependencies = setOf( + SettingsPatch::class, + SpoofUserAgentPatch::class, + ), + compatiblePackages = Constants.COMPATIBLE_PACKAGE, + fingerprints = setOf( + BuildInitPlaybackRequestFingerprint, + BuildMediaDataSourceFingerprint, + BuildPlayerRequestURIFingerprint, + BuildRequestFingerprint, + CreateStreamingDataFingerprint, + ProtobufClassParseByteBufferFingerprint, + + // Nerds stats video format. + NerdsStatsVideoFormatBuilderFingerprint, + ) +) { + private const val INTEGRATIONS_CLASS_DESCRIPTOR = + "$MISC_PATH/SpoofStreamingDataPatch;" + private const val REQUEST_CLASS_DESCRIPTOR = + "Lorg/chromium/net/UrlRequest;" + private const val REQUEST_BUILDER_CLASS_DESCRIPTOR = + "Lorg/chromium/net/UrlRequest\$Builder;" + + override fun execute(context: BytecodeContext) { + + // region Block /initplayback requests to fall back to /get_watch requests. + + BuildInitPlaybackRequestFingerprint.resultOrThrow().let { + it.mutableMethod.apply { + val moveUriStringIndex = it.scanResult.patternScanResult!!.startIndex + val targetRegister = getInstruction(moveUriStringIndex).registerA + + addInstructions( + moveUriStringIndex + 1, + """ + invoke-static { v$targetRegister }, $INTEGRATIONS_CLASS_DESCRIPTOR->blockInitPlaybackRequest(Ljava/lang/String;)Ljava/lang/String; + move-result-object v$targetRegister + """, + ) + } + } + + // endregion + + // region Block /get_watch requests to fall back to /player requests. + + BuildPlayerRequestURIFingerprint.resultOrThrow().let { + it.mutableMethod.apply { + val invokeToStringIndex = BuildPlayerRequestURIFingerprint.indexOfToStringInstruction(this) + val uriRegister = getInstruction(invokeToStringIndex).registerC + + addInstructions( + invokeToStringIndex, + """ + invoke-static { v$uriRegister }, $INTEGRATIONS_CLASS_DESCRIPTOR->blockGetWatchRequest(Landroid/net/Uri;)Landroid/net/Uri; + move-result-object v$uriRegister + """, + ) + } + } + + // endregion + + // region Fetch replacement streams. + + BuildRequestFingerprint.resultOrThrow().let { result -> + result.mutableMethod.apply { + val buildRequestIndex = + BuildRequestFingerprint.indexOfBuildUrlRequestInstruction(this) + val requestBuilderRegister = getInstruction(buildRequestIndex).registerC + + val newRequestBuilderIndex = + BuildRequestFingerprint.indexOfNewUrlRequestBuilderInstruction(this) + val urlRegister = getInstruction(newRequestBuilderIndex).registerD + + // Replace "requestBuilder.build()" with integrations call. + replaceInstruction( + buildRequestIndex, + "invoke-static { v$requestBuilderRegister }, " + + "$INTEGRATIONS_CLASS_DESCRIPTOR->" + + "buildRequest($REQUEST_BUILDER_CLASS_DESCRIPTOR)" + + REQUEST_CLASS_DESCRIPTOR + ) + + val entrySetIndex = BuildRequestFingerprint.indexOfEntrySetInstruction(this) + val mapRegister = if (entrySetIndex < 0) + urlRegister + 1 + else + getInstruction(entrySetIndex).registerC + + var smaliInstructions = + "invoke-static { v$urlRegister, v$mapRegister }, " + + "$INTEGRATIONS_CLASS_DESCRIPTOR->" + + "setHeader(Ljava/lang/String;Ljava/util/Map;)V" + + if (entrySetIndex < 0) smaliInstructions = """ + move-object/from16 v$mapRegister, p1 + + """ + smaliInstructions + + // Copy request headers for streaming data fetch. + addInstructions(newRequestBuilderIndex + 2, smaliInstructions) + } + } + + // endregion + + // region Replace the streaming data. + + CreateStreamingDataFingerprint.resultOrThrow().let { result -> + result.mutableMethod.apply { + val setStreamingDataIndex = result.scanResult.patternScanResult!!.startIndex + val setStreamingDataField = getInstruction(setStreamingDataIndex).getReference().toString() + + val playerProtoClass = getInstruction(setStreamingDataIndex + 1).getReference()!!.definingClass + val protobufClass = ProtobufClassParseByteBufferFingerprint.resultOrThrow().mutableMethod.definingClass + + val getStreamingDataField = getInstructions().find { instruction -> + instruction.opcode == Opcode.IGET_OBJECT && + instruction.getReference()?.definingClass == playerProtoClass + }?.getReference() + ?: throw PatchException("Could not find getStreamingDataField") + + val videoDetailsIndex = result.scanResult.patternScanResult!!.endIndex + val videoDetailsClass = getInstruction(videoDetailsIndex).getReference()!!.type + + val insertIndex = videoDetailsIndex + 1 + val videoDetailsRegister = getInstruction(videoDetailsIndex).registerA + + val overrideRegister = getInstruction(insertIndex).registerA + val freeRegister = implementation!!.registerCount - parameters.size - 2 + + addInstructionsWithLabels( + insertIndex, + """ + invoke-static { }, $INTEGRATIONS_CLASS_DESCRIPTOR->isSpoofingEnabled()Z + move-result v$freeRegister + if-eqz v$freeRegister, :disabled + + # Get video id. + # From YouTube 17.34.36 to YouTube 19.16.39, the field names and field types are the same. + iget-object v$freeRegister, v$videoDetailsRegister, $videoDetailsClass->c:Ljava/lang/String; + if-eqz v$freeRegister, :disabled + + # Get streaming data. + invoke-static { v$freeRegister }, $INTEGRATIONS_CLASS_DESCRIPTOR->getStreamingData(Ljava/lang/String;)Ljava/nio/ByteBuffer; + move-result-object v$freeRegister + if-eqz v$freeRegister, :disabled + + # Parse streaming data. + sget-object v$overrideRegister, $playerProtoClass->a:$playerProtoClass + invoke-static { v$overrideRegister, v$freeRegister }, $protobufClass->parseFrom(${protobufClass}Ljava/nio/ByteBuffer;)$protobufClass + move-result-object v$freeRegister + check-cast v$freeRegister, $playerProtoClass + + # Set streaming data. + iget-object v$freeRegister, v$freeRegister, $getStreamingDataField + if-eqz v0, :disabled + iput-object v$freeRegister, p0, $setStreamingDataField + """, + ExternalLabel("disabled", getInstruction(insertIndex)) + ) + } + } + + // endregion + + // region Remove /videoplayback request body to fix playback. + // This is needed when using iOS client as streaming data source. + + BuildMediaDataSourceFingerprint.resultOrThrow().let { + it.mutableMethod.apply { + val targetIndex = getInstructions().lastIndex + + addInstructions( + targetIndex, + """ + # Field a: Stream uri. + # Field c: Http method. + # Field d: Post data. + # From YouTube 17.34.36 to YouTube 19.16.39, the field names and field types are the same. + move-object/from16 v0, p0 + iget-object v1, v0, $definingClass->a:Landroid/net/Uri; + iget v2, v0, $definingClass->c:I + iget-object v3, v0, $definingClass->d:[B + invoke-static { v1, v2, v3 }, $INTEGRATIONS_CLASS_DESCRIPTOR->removeVideoPlaybackPostBody(Landroid/net/Uri;I[B)[B + move-result-object v1 + iput-object v1, v0, $definingClass->d:[B + """, + ) + } + } + + // endregion + + // region Append spoof info. + + NerdsStatsVideoFormatBuilderFingerprint.resultOrThrow().mutableMethod.apply { + for (index in implementation!!.instructions.size - 1 downTo 0) { + val instruction = getInstruction(index) + if (instruction.opcode != Opcode.RETURN_OBJECT) + continue + + val register = (instruction as OneRegisterInstruction).registerA + + addInstructions( + index, """ + invoke-static {v$register}, $INTEGRATIONS_CLASS_DESCRIPTOR->appendSpoofedClient(Ljava/lang/String;)Ljava/lang/String; + move-result-object v$register + """ + ) + } + } + + // endregion + + /** + * Add settings + */ + SettingsPatch.addPreference( + arrayOf( + "SETTINGS: SPOOF_STREAMING_DATA" + ) + ) + + SettingsPatch.updatePatchStatus(this) + } +} diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/SpoofUserAgentPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/SpoofUserAgentPatch.kt new file mode 100644 index 0000000000..dd8a7b75c8 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/SpoofUserAgentPatch.kt @@ -0,0 +1,5 @@ +package app.revanced.patches.youtube.utils.fix.streamingdata + +import app.revanced.patches.shared.spoofuseragent.BaseSpoofUserAgentPatch + +object SpoofUserAgentPatch : BaseSpoofUserAgentPatch("com.google.android.youtube") \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildInitPlaybackRequestFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildInitPlaybackRequestFingerprint.kt new file mode 100644 index 0000000000..494cba19b5 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildInitPlaybackRequestFingerprint.kt @@ -0,0 +1,16 @@ +package app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints + +import app.revanced.patcher.fingerprint.MethodFingerprint +import com.android.tools.smali.dexlib2.Opcode + +internal object BuildInitPlaybackRequestFingerprint : MethodFingerprint( + returnType = "Lorg/chromium/net/UrlRequest\$Builder;", + opcodes = listOf( + Opcode.MOVE_RESULT_OBJECT, + Opcode.IGET_OBJECT, // Moves the request URI string to a register to build the request with. + ), + strings = listOf( + "Content-Type", + "Range", + ), +) diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildMediaDataSourceFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildMediaDataSourceFingerprint.kt new file mode 100644 index 0000000000..5683921b1d --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildMediaDataSourceFingerprint.kt @@ -0,0 +1,22 @@ +package app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.patcher.fingerprint.MethodFingerprint +import com.android.tools.smali.dexlib2.AccessFlags + +internal object BuildMediaDataSourceFingerprint : MethodFingerprint( + accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR, + returnType = "V", + parameters = listOf( + "Landroid/net/Uri;", + "J", + "I", + "[B", + "Ljava/util/Map;", + "J", + "J", + "Ljava/lang/String;", + "I", + "Ljava/lang/Object;" + ) +) diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildPlayerRequestURIFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildPlayerRequestURIFingerprint.kt new file mode 100644 index 0000000000..4ed9f4c7b5 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildPlayerRequestURIFingerprint.kt @@ -0,0 +1,26 @@ +package app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints + +import app.revanced.patcher.fingerprint.MethodFingerprint +import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.BuildPlayerRequestURIFingerprint.indexOfToStringInstruction +import app.revanced.util.getReference +import app.revanced.util.indexOfFirstInstruction +import com.android.tools.smali.dexlib2.Opcode +import com.android.tools.smali.dexlib2.iface.Method +import com.android.tools.smali.dexlib2.iface.reference.MethodReference + +internal object BuildPlayerRequestURIFingerprint : MethodFingerprint( + returnType = "Ljava/lang/String;", + strings = listOf( + "key", + "asig", + ), + customFingerprint = { methodDef, _ -> + indexOfToStringInstruction(methodDef) >= 0 + }, +) { + fun indexOfToStringInstruction(methodDef: Method) = + methodDef.indexOfFirstInstruction { + opcode == Opcode.INVOKE_VIRTUAL && + getReference().toString() == "Landroid/net/Uri;->toString()Ljava/lang/String;" + } +} diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildRequestFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildRequestFingerprint.kt new file mode 100644 index 0000000000..d9f43bfe5d --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildRequestFingerprint.kt @@ -0,0 +1,50 @@ +package app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints + +import app.revanced.patcher.fingerprint.MethodFingerprint +import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.BuildRequestFingerprint.indexOfBuildUrlRequestInstruction +import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.BuildRequestFingerprint.indexOfEntrySetInstruction +import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.BuildRequestFingerprint.indexOfNewUrlRequestBuilderInstruction +import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.BuildRequestFingerprint.indexOfRequestFinishedListenerInstruction +import app.revanced.util.getReference +import app.revanced.util.indexOfFirstInstruction +import com.android.tools.smali.dexlib2.Opcode +import com.android.tools.smali.dexlib2.iface.Method +import com.android.tools.smali.dexlib2.iface.reference.MethodReference + +internal object BuildRequestFingerprint : MethodFingerprint( + customFingerprint = { methodDef, _ -> + methodDef.implementation != null && + indexOfRequestFinishedListenerInstruction(methodDef) >= 0 && + !methodDef.definingClass.startsWith("Lorg/") && + indexOfNewUrlRequestBuilderInstruction(methodDef) >= 0 && + indexOfBuildUrlRequestInstruction(methodDef) >= 0 && + // YouTube 17.34.36 ~ YouTube 18.35.36 + (indexOfEntrySetInstruction(methodDef) >= 0 || + // YouTube 18.36.39 ~ + methodDef.parameters[1].type == "Ljava/util/Map;") + } +) { + fun indexOfRequestFinishedListenerInstruction(methodDef: Method) = + methodDef.indexOfFirstInstruction { + opcode == Opcode.INVOKE_VIRTUAL && + getReference().toString() == "Lorg/chromium/net/ExperimentalUrlRequest${'$'}Builder;->setRequestFinishedListener(Lorg/chromium/net/RequestFinishedInfo${'$'}Listener;)Lorg/chromium/net/ExperimentalUrlRequest${'$'}Builder;" + } + + fun indexOfNewUrlRequestBuilderInstruction(methodDef: Method) = + methodDef.indexOfFirstInstruction { + opcode == Opcode.INVOKE_VIRTUAL && + getReference().toString() == "Lorg/chromium/net/CronetEngine;->newUrlRequestBuilder(Ljava/lang/String;Lorg/chromium/net/UrlRequest${'$'}Callback;Ljava/util/concurrent/Executor;)Lorg/chromium/net/UrlRequest${'$'}Builder;" + } + + fun indexOfBuildUrlRequestInstruction(methodDef: Method) = + methodDef.indexOfFirstInstruction { + opcode == Opcode.INVOKE_VIRTUAL && + getReference().toString() == "Lorg/chromium/net/ExperimentalUrlRequest${'$'}Builder;->build()Lorg/chromium/net/ExperimentalUrlRequest;" + } + + fun indexOfEntrySetInstruction(methodDef: Method) = + methodDef.indexOfFirstInstruction { + opcode == Opcode.INVOKE_INTERFACE && + getReference().toString() == "Ljava/util/Map;->entrySet()Ljava/util/Set;" + } +} diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/CreateStreamingDataFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/CreateStreamingDataFingerprint.kt new file mode 100644 index 0000000000..d9dbc39248 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/CreateStreamingDataFingerprint.kt @@ -0,0 +1,28 @@ +package app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.patcher.fingerprint.MethodFingerprint +import app.revanced.util.getReference +import app.revanced.util.indexOfFirstInstruction +import com.android.tools.smali.dexlib2.AccessFlags +import com.android.tools.smali.dexlib2.Opcode +import com.android.tools.smali.dexlib2.iface.reference.FieldReference + +internal object CreateStreamingDataFingerprint : MethodFingerprint( + accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR, + returnType = "V", + parameters = listOf("L"), + opcodes = listOf( + Opcode.IPUT_OBJECT, + Opcode.IGET_OBJECT, + Opcode.IF_NEZ, + Opcode.SGET_OBJECT, + Opcode.IPUT_OBJECT + ), + customFingerprint = { methodDef, _ -> + methodDef.indexOfFirstInstruction { + opcode == Opcode.SGET_OBJECT && + getReference()?.name == "playerThreedRenderer" + } >= 0 + }, +) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/NerdsStatsVideoFormatBuilderFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/NerdsStatsVideoFormatBuilderFingerprint.kt new file mode 100644 index 0000000000..d53b6fd945 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/NerdsStatsVideoFormatBuilderFingerprint.kt @@ -0,0 +1,12 @@ +package app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.patcher.fingerprint.MethodFingerprint +import com.android.tools.smali.dexlib2.AccessFlags + +internal object NerdsStatsVideoFormatBuilderFingerprint : MethodFingerprint( + returnType = "Ljava/lang/String;", + accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC, + parameters = listOf("Lcom/google/android/libraries/youtube/innertube/model/media/FormatStreamModel;"), + strings = listOf("codecs=\""), +) diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/ProtobufClassParseByteBufferFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/ProtobufClassParseByteBufferFingerprint.kt new file mode 100644 index 0000000000..facdd232a4 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/ProtobufClassParseByteBufferFingerprint.kt @@ -0,0 +1,19 @@ +package app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.patcher.fingerprint.MethodFingerprint +import com.android.tools.smali.dexlib2.AccessFlags +import com.android.tools.smali.dexlib2.Opcode + +internal object ProtobufClassParseByteBufferFingerprint : MethodFingerprint( + accessFlags = AccessFlags.PROTECTED or AccessFlags.STATIC, + parameters = listOf("L", "Ljava/nio/ByteBuffer;"), + returnType = "L", + opcodes = listOf( + Opcode.SGET_OBJECT, + Opcode.INVOKE_STATIC, + Opcode.MOVE_RESULT_OBJECT, + Opcode.RETURN_OBJECT, + ), + customFingerprint = { methodDef, _ -> methodDef.name == "parseFrom" }, +) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/gms/GmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/gms/GmsCoreSupportPatch.kt index a9345b9f31..80e989c09f 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/gms/GmsCoreSupportPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/gms/GmsCoreSupportPatch.kt @@ -3,6 +3,8 @@ package app.revanced.patches.youtube.utils.gms import app.revanced.patches.shared.gms.BaseGmsCoreSupportPatch import app.revanced.patches.shared.gms.BaseGmsCoreSupportResourcePatch.Companion.ORIGINAL_PACKAGE_NAME_YOUTUBE import app.revanced.patches.youtube.utils.compatibility.Constants.COMPATIBLE_PACKAGE +import app.revanced.patches.youtube.utils.fix.streamingdata.SpoofStreamingDataPatch +import app.revanced.patches.youtube.utils.fix.streamingdata.SpoofUserAgentPatch import app.revanced.patches.youtube.utils.integrations.IntegrationsPatch import app.revanced.patches.youtube.utils.mainactivity.fingerprints.MainActivityFingerprint import app.revanced.patches.youtube.utils.settings.SettingsPatch @@ -13,6 +15,8 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch( mainActivityOnCreateFingerprint = MainActivityFingerprint, integrationsPatchDependency = IntegrationsPatch::class, dependencies = setOf( + SpoofStreamingDataPatch::class, + SpoofUserAgentPatch::class, SettingsPatch::class ), gmsCoreSupportResourcePatch = GmsCoreSupportResourcePatch, diff --git a/src/main/resources/youtube/settings/host/values/arrays.xml b/src/main/resources/youtube/settings/host/values/arrays.xml index 5351620964..a329bc5554 100644 --- a/src/main/resources/youtube/settings/host/values/arrays.xml +++ b/src/main/resources/youtube/settings/host/values/arrays.xml @@ -163,6 +163,16 @@ HEART_TINT HIDDEN + + @string/revanced_spoof_streaming_data_type_entry_ios + @string/revanced_spoof_streaming_data_type_entry_android_unplugged + @string/revanced_spoof_streaming_data_type_entry_android_vr + + + IOS + ANDROID_UNPLUGGED + ANDROID_VR + @string/revanced_spoof_app_version_target_entry_18_17_43 @string/revanced_spoof_app_version_target_entry_18_05_40 diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml index fffed21921..230acf023c 100644 --- a/src/main/resources/youtube/settings/host/values/strings.xml +++ b/src/main/resources/youtube/settings/host/values/strings.xml @@ -1577,6 +1577,37 @@ Tap on the continue button and disable battery optimizations." Reset Settings copied to clipboard. + + Spoof streaming data + Spoof the streaming data to prevent playback issues. + Spoof streaming data + Streaming data is spoofed. + "Streaming data is not spoofed. Video playback may not work." + Turning off this setting may cause video playback issues. + Default client + iOS + Android + Android Embedded Player + Android Testsuite + Android TV + Android VR + TV HTML5 + Web + Spoofing side effects + • Movies or paid videos may not play. + • Audio track menu is missing. + • Audio track menu is missing. + • Video may not play. + Force iOS AVC (H.264) + iOS video codec is AVC (H.264). + iOS video codec is AVC (H.264), VP9, or AV1. + "Enabling this might improve battery life and fix playback stuttering. + +AVC (H.264) has a maximum resolution of 1080p, and video playback will use more internet data than VP9 or AV1." + Show in Stats for nerds + Client used to fetch streaming data is shown in Stats for nerds. + Client used to fetch streaming data is hidden in Stats for nerds. + Watch history Change settings related with watch history. diff --git a/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/src/main/resources/youtube/settings/xml/revanced_prefs.xml index 4d9dc746c9..487da577bf 100644 --- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml +++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml @@ -610,6 +610,15 @@ + + Recommended video diff --git a/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/src/main/resources/youtube/settings/xml/revanced_prefs.xml index 487da577bf..923ae3f998 100644 --- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml +++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml @@ -79,6 +79,7 @@ + From 277133e34501aa2da594ec0c41ad2dfe9745a9cf Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sun, 1 Sep 2024 02:18:37 +0900 Subject: [PATCH 16/53] fix(YouTube/Disable force auto captions): add information to summary that it doesn't work in Shorts https://github.com/inotia00/ReVanced_Extended/issues/2346 --- src/main/resources/youtube/settings/host/values/strings.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml index 0c31555c2f..617351b42f 100644 --- a/src/main/resources/youtube/settings/host/values/strings.xml +++ b/src/main/resources/youtube/settings/host/values/strings.xml @@ -319,7 +319,9 @@ Limitations: Watch later Invalid start page, resetting to default. Disable forced auto audio tracks - Forced auto audio tracks are disabled. + "Forced auto audio tracks are disabled. + +Limitation: This setting does not apply to Shorts." Forced auto audio tracks are enabled. Disable forced auto captions Forced auto captions are disabled. From 8250deadfa371b04e15a6b364efbb1ff49330d4d Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sun, 1 Sep 2024 02:21:12 +0900 Subject: [PATCH 17/53] feat(YouTube/Hide player flyout menu): remove `Hide Ambient mode menu` setting --- src/main/resources/youtube/settings/host/values/strings.xml | 3 --- src/main/resources/youtube/settings/xml/revanced_prefs.xml | 1 - 2 files changed, 4 deletions(-) diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml index 617351b42f..dbe8b37def 100644 --- a/src/main/resources/youtube/settings/host/values/strings.xml +++ b/src/main/resources/youtube/settings/host/values/strings.xml @@ -735,9 +735,6 @@ Settings → Autoplay → Autoplay next video" Additional settings - Hide Ambient mode menu - Ambient mode menu is hidden. - Ambient mode menu is shown. Hide Help & feedback menu Help & feedback menu is hidden. Help & feedback menu is shown. diff --git a/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/src/main/resources/youtube/settings/xml/revanced_prefs.xml index 923ae3f998..123ef8c66f 100644 --- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml +++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml @@ -309,7 +309,6 @@ From c959612eb9da71ed50ecd0a002145615e9505620 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sun, 1 Sep 2024 02:23:19 +0900 Subject: [PATCH 18/53] feat(YouTube/Hide player flyout menu): add `Hide Sleep timer` setting --- src/main/resources/youtube/settings/host/values/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml index dbe8b37def..0530db95f7 100644 --- a/src/main/resources/youtube/settings/host/values/strings.xml +++ b/src/main/resources/youtube/settings/host/values/strings.xml @@ -750,6 +750,9 @@ Settings → Autoplay → Autoplay next video" Hide Premium controls menu Premium controls menu is hidden. Premium controls menu is shown. + Hide Sleep timer menu + Sleep timer menu is hidden. + Sleep timer menu is shown. Hide Stable volume menu Stable volume menu is shown. Stable volume menu is hidden. From 4fff1ca4cb914d47bde556d2d7f6fda8f64255a4 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sun, 1 Sep 2024 02:25:00 +0900 Subject: [PATCH 19/53] feat(YouTube/Shorts components): add `Hide Use this sound button` setting --- src/main/resources/youtube/settings/host/values/strings.xml | 3 +++ src/main/resources/youtube/settings/xml/revanced_prefs.xml | 1 + 2 files changed, 4 insertions(+) diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml index 0530db95f7..9b20a30670 100644 --- a/src/main/resources/youtube/settings/host/values/strings.xml +++ b/src/main/resources/youtube/settings/host/values/strings.xml @@ -1089,6 +1089,9 @@ Side effect: Official headers in search results will be hidden." Hide search suggestions Search suggestions are hidden. Search suggestions are shown. + Hide Use this sound button + Use this sound button is hidden. + Use this sound button is shown. Hide info panels Info panels are hidden. Info panels are shown. diff --git a/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/src/main/resources/youtube/settings/xml/revanced_prefs.xml index 123ef8c66f..0b3ae4fd6b 100644 --- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml +++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml @@ -482,6 +482,7 @@ + From db3d1c5740beefab590f201a5c7550950a78b157 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sun, 1 Sep 2024 03:10:53 +0900 Subject: [PATCH 20/53] chore: lint code --- .../general/downloads/DownloadActionsPatch.kt | 9 ++++-- .../streamingdata/SpoofStreamingDataPatch.kt | 30 ++++++++++++------- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/downloads/DownloadActionsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/general/downloads/DownloadActionsPatch.kt index 7cd5f3dbe2..f1fe0d3f1c 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/general/downloads/DownloadActionsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/general/downloads/DownloadActionsPatch.kt @@ -125,7 +125,8 @@ object DownloadActionsPatch : BaseBytecodePatch( reference?.definingClass == OFFLINE_PLAYLIST_ENDPOINT_OUTER_CLASS_DESCRIPTOR && reference.type == "Ljava/lang/String;" } - val playlistIdReference = getInstruction(playlistIdIndex).reference + val playlistIdReference = + getInstruction(playlistIdIndex).reference val targetIndex = indexOfFirstInstructionOrThrow { opcode == Opcode.CHECK_CAST && @@ -134,13 +135,15 @@ object DownloadActionsPatch : BaseBytecodePatch( val targetRegister = getInstruction(targetIndex).registerA addInstructionsWithLabels( - targetIndex + 1, """ + targetIndex + 1, + """ iget-object v$freeRegister, v$targetRegister, $playlistIdReference invoke-static {v$freeRegister}, $INTEGRATIONS_CLASS_DESCRIPTOR->inAppPlaylistDownloadMenuOnClick(Ljava/lang/String;)Z move-result v$freeRegister if-eqz v$freeRegister, :show_native_downloader return-void - """, ExternalLabel("show_native_downloader", getInstruction(targetIndex + 1)) + """, + ExternalLabel("show_native_downloader", getInstruction(targetIndex + 1)) ) } } diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/SpoofStreamingDataPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/SpoofStreamingDataPatch.kt index eec41d67e7..c16b3d7a13 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/SpoofStreamingDataPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/SpoofStreamingDataPatch.kt @@ -61,7 +61,8 @@ object SpoofStreamingDataPatch : BaseBytecodePatch( BuildInitPlaybackRequestFingerprint.resultOrThrow().let { it.mutableMethod.apply { val moveUriStringIndex = it.scanResult.patternScanResult!!.startIndex - val targetRegister = getInstruction(moveUriStringIndex).registerA + val targetRegister = + getInstruction(moveUriStringIndex).registerA addInstructions( moveUriStringIndex + 1, @@ -79,8 +80,10 @@ object SpoofStreamingDataPatch : BaseBytecodePatch( BuildPlayerRequestURIFingerprint.resultOrThrow().let { it.mutableMethod.apply { - val invokeToStringIndex = BuildPlayerRequestURIFingerprint.indexOfToStringInstruction(this) - val uriRegister = getInstruction(invokeToStringIndex).registerC + val invokeToStringIndex = + BuildPlayerRequestURIFingerprint.indexOfToStringInstruction(this) + val uriRegister = + getInstruction(invokeToStringIndex).registerC addInstructions( invokeToStringIndex, @@ -100,11 +103,13 @@ object SpoofStreamingDataPatch : BaseBytecodePatch( result.mutableMethod.apply { val buildRequestIndex = BuildRequestFingerprint.indexOfBuildUrlRequestInstruction(this) - val requestBuilderRegister = getInstruction(buildRequestIndex).registerC + val requestBuilderRegister = + getInstruction(buildRequestIndex).registerC val newRequestBuilderIndex = BuildRequestFingerprint.indexOfNewUrlRequestBuilderInstruction(this) - val urlRegister = getInstruction(newRequestBuilderIndex).registerD + val urlRegister = + getInstruction(newRequestBuilderIndex).registerD // Replace "requestBuilder.build()" with integrations call. replaceInstruction( @@ -143,10 +148,13 @@ object SpoofStreamingDataPatch : BaseBytecodePatch( CreateStreamingDataFingerprint.resultOrThrow().let { result -> result.mutableMethod.apply { val setStreamingDataIndex = result.scanResult.patternScanResult!!.startIndex - val setStreamingDataField = getInstruction(setStreamingDataIndex).getReference().toString() + val setStreamingDataField = + getInstruction(setStreamingDataIndex).getReference().toString() - val playerProtoClass = getInstruction(setStreamingDataIndex + 1).getReference()!!.definingClass - val protobufClass = ProtobufClassParseByteBufferFingerprint.resultOrThrow().mutableMethod.definingClass + val playerProtoClass = + getInstruction(setStreamingDataIndex + 1).getReference()!!.definingClass + val protobufClass = + ProtobufClassParseByteBufferFingerprint.resultOrThrow().mutableMethod.definingClass val getStreamingDataField = getInstructions().find { instruction -> instruction.opcode == Opcode.IGET_OBJECT && @@ -155,10 +163,12 @@ object SpoofStreamingDataPatch : BaseBytecodePatch( ?: throw PatchException("Could not find getStreamingDataField") val videoDetailsIndex = result.scanResult.patternScanResult!!.endIndex - val videoDetailsClass = getInstruction(videoDetailsIndex).getReference()!!.type + val videoDetailsClass = + getInstruction(videoDetailsIndex).getReference()!!.type val insertIndex = videoDetailsIndex + 1 - val videoDetailsRegister = getInstruction(videoDetailsIndex).registerA + val videoDetailsRegister = + getInstruction(videoDetailsIndex).registerA val overrideRegister = getInstruction(insertIndex).registerA val freeRegister = implementation!!.registerCount - parameters.size - 2 From 3720b4ac076a117251fa1a920b617f088de02a4b Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sun, 1 Sep 2024 03:13:34 +0900 Subject: [PATCH 21/53] fix(YouTube Music/GmsCore support): `Open GmsCore` setting is not added if user only includes `GmsCore support` patch https://github.com/inotia00/ReVanced_Extended/issues/2351 --- .../revanced/patches/music/utils/gms/GmsCoreSupportPatch.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/app/revanced/patches/music/utils/gms/GmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/music/utils/gms/GmsCoreSupportPatch.kt index 19c87aa2a4..39c0a5f22e 100644 --- a/src/main/kotlin/app/revanced/patches/music/utils/gms/GmsCoreSupportPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/utils/gms/GmsCoreSupportPatch.kt @@ -5,6 +5,7 @@ import app.revanced.patches.music.utils.fix.client.SpoofUserAgentPatch import app.revanced.patches.music.utils.fix.fileprovider.FileProviderPatch import app.revanced.patches.music.utils.integrations.IntegrationsPatch import app.revanced.patches.music.utils.mainactivity.fingerprints.MainActivityFingerprint +import app.revanced.patches.music.utils.settings.SettingsPatch import app.revanced.patches.shared.gms.BaseGmsCoreSupportPatch import app.revanced.patches.shared.gms.BaseGmsCoreSupportResourcePatch.Companion.ORIGINAL_PACKAGE_NAME_YOUTUBE_MUSIC @@ -15,7 +16,8 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch( integrationsPatchDependency = IntegrationsPatch::class, dependencies = setOf( SpoofUserAgentPatch::class, - FileProviderPatch::class + FileProviderPatch::class, + SettingsPatch::class ), gmsCoreSupportResourcePatch = GmsCoreSupportResourcePatch, compatiblePackages = COMPATIBLE_PACKAGE From 12c3056cbd3b695b8fd9a31febd490fdeee9f44a Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sun, 1 Sep 2024 03:20:48 +0900 Subject: [PATCH 22/53] feat(Translations): update translation --- .../music/translations/el-rGR/strings.xml | 4 + .../music/translations/es-rES/strings.xml | 4 + .../music/translations/fr-rFR/strings.xml | 4 + .../music/translations/id-rID/strings.xml | 130 ++++++------- .../music/translations/in/strings.xml | 130 ++++++------- .../music/translations/ja-rJP/strings.xml | 4 + .../music/translations/pl-rPL/strings.xml | 10 +- .../music/translations/pt-rBR/strings.xml | 4 + .../music/translations/ru-rRU/strings.xml | 4 + .../music/translations/uk-rUA/strings.xml | 10 +- .../youtube/translations/ar/strings.xml | 119 ++---------- .../youtube/translations/bg-rBG/strings.xml | 107 +---------- .../youtube/translations/de-rDE/strings.xml | 79 +------- .../youtube/translations/el-rGR/strings.xml | 111 +++-------- .../youtube/translations/es-rES/strings.xml | 142 +++++--------- .../youtube/translations/fr-rFR/strings.xml | 105 +---------- .../youtube/translations/hu-rHU/strings.xml | 107 ++--------- .../youtube/translations/it-rIT/strings.xml | 103 +--------- .../youtube/translations/ja-rJP/strings.xml | 131 +++---------- .../youtube/translations/ko-rKR/strings.xml | 177 ++++++------------ .../youtube/translations/pl-rPL/strings.xml | 113 ++--------- .../youtube/translations/pt-rBR/strings.xml | 103 +--------- .../youtube/translations/ru-rRU/strings.xml | 111 ++--------- .../youtube/translations/tr-rTR/strings.xml | 94 +--------- .../youtube/translations/uk-rUA/strings.xml | 111 ++--------- .../youtube/translations/vi-rVN/strings.xml | 132 +++---------- .../youtube/translations/zh-rCN/strings.xml | 100 +--------- .../youtube/translations/zh-rTW/strings.xml | 103 +--------- 28 files changed, 489 insertions(+), 1863 deletions(-) diff --git a/src/main/resources/music/translations/el-rGR/strings.xml b/src/main/resources/music/translations/el-rGR/strings.xml index ca6e2b56b8..7a484f1970 100644 --- a/src/main/resources/music/translations/el-rGR/strings.xml +++ b/src/main/resources/music/translations/el-rGR/strings.xml @@ -247,8 +247,12 @@ Ρύθμιση των διαθέσιμων ταχυτήτων αναπαραγωγής. Απομνημόνευση αλλαγών ταχύτητας αναπαραγωγής Απομνημόνευση της τελευταίας ταχύτητας αναπαραγωγής που επιλέχθηκε. + Εμφάνιση μηνύματος + Εμφάνιση μηνύματος στο κάτω μέρος της οθόνης κατά την αλλαγή προεπιλεγμένης ταχύτητας αναπαραγωγής. Απομνημόνευση αλλαγών ποιότητας βίντεο Απομνημόνευση της τελευταίας ποιότητας βίντεο που επιλέχθηκε. + Εμφάνιση μηνύματος + Εμφάνιση μηνύματος στο κάτω μέρος της οθόνης κατά την αλλαγή προεπιλεγμένης ποιότητας βίντεο. Οι ταχύτητες πρέπει να είναι μικρότερες από %sx, επαναφέρθηκαν. Μη έγκυρες ταχύτητες αναπαραγωγής, επαναφέρθηκαν. Η προεπιλεγμένη ταχύτητα άλλαξε σε %s. diff --git a/src/main/resources/music/translations/es-rES/strings.xml b/src/main/resources/music/translations/es-rES/strings.xml index f5d41c41fc..7c1c369672 100644 --- a/src/main/resources/music/translations/es-rES/strings.xml +++ b/src/main/resources/music/translations/es-rES/strings.xml @@ -247,8 +247,12 @@ Algunas características pueden no funcionar correctamente en la disposición de Agregar o cambiar las velocidades de reproducción disponibles Recordar cambios de velocidad de reproducción Recuerda la última velocidad de reproducción seleccionada. + Mostrar un mensaje + Mostrar un mensaje al cambiar la velocidad de reproducción predeterminada. Recordar cambios de calidad de vídeo Recuerda la última calidad de vídeo seleccionada. + Mostrar un mensaje + Mostrar un mensaje al cambiar la calidad de vídeo por defecto. Las velocidades de reproducción personalizadas no son válidas. Restablezca a los valores predeterminados. Velocidades de reproducción personalizadas no válidas. Utilizando valores predeterminados. Cambiando la velocidad predeterminada a %s. diff --git a/src/main/resources/music/translations/fr-rFR/strings.xml b/src/main/resources/music/translations/fr-rFR/strings.xml index 0f1b76dc72..6bfaa98cc4 100644 --- a/src/main/resources/music/translations/fr-rFR/strings.xml +++ b/src/main/resources/music/translations/fr-rFR/strings.xml @@ -247,8 +247,12 @@ Certaines fonctions peuvent ne pas fonctionner sur l'ancienne mise en page."Ajoute ou modifie les vitesses de lecture disponibles. Enregistrer la modification de la vitesse de lecture Enregistre la dernière vitesse de lecture sélectionnée. + Afficher un message + Afficher un message lorsque vous modifiez la vitesse de lecture par défaut. Enregistrer la modification de la résolution Enregistre la dernière qualité vidéo sélectionnée. + Afficher un message + Afficher un message lorsque vous modifiez la qualité vidéo par défaut. Les vitesses personnalisées doivent être inférieures à %sx. Valeur réinitialisée par défaut. Vitesses de lecture invalides. Valeur réinitialisée par défaut. Vitesse de lecture modifiée par %s. diff --git a/src/main/resources/music/translations/id-rID/strings.xml b/src/main/resources/music/translations/id-rID/strings.xml index 8869550e41..6e36257f4c 100644 --- a/src/main/resources/music/translations/id-rID/strings.xml +++ b/src/main/resources/music/translations/id-rID/strings.xml @@ -8,61 +8,61 @@ Akun Sembunyikan menu akun - Menyembunyikan elemen menu akun menggunakan filter kustom. + Menyembunyikan elemen menu akun menggunakan filter custom. Filter menu Akun Daftar dari nama-nama menu akun ke filter, terpisah oleh garis baru. Sembunyikan komponen kosong Menyembunyikan komponen kosong di menu akun. Sembunyikan handle - Menyembunyikan handle di kelola akun. - Sembunyikan container ketentuan - Menyembunyikan container ketentuan layanan. + Menyembunyikan handle di menu akun. + Sembunyikan kontainer ketentuan + Menyembunyikan kontainer ketentuan layanan. Bilah Tindakan Sembunyikan tombol Like dan Dislike - Menyembunyikan tombol Like dan Dislike. Itu tidak akan work di layout player lawas. + Menyembunyikan tombol Like dan Dislike. Itu tidak akan bekerja di layout player lama. Sembunyikan tombol Komentar Menyembunyikan tombol Komentar. Sembunyikan tombol Save - Menyembunyikan tombol Save. - Sembunyikan tombol Download - Menyembunyikan tombol Download. - Sembunyikan tombol Share - Menyembunyikan tombol Share. + Menyembunyikan tombol Simpan. + Sembunyikan tombol Unduh + Menyembunyikan tombol Unduh. + Sembunyikan tombol Bagikan + Menyembunyikan tombol Bagikan. Sembunyikan tombol Radio Menyembunyikan tombol Radio. Sembunyikan tombol bilah tindakan Menyembunyikan bilah dari tombol tindakan. - Ganti tombol tindakan Download - "Tombol Download membuka Downloader eksternal mu. + Ganti tombol tindakan Unduh + "Tombol Unduh membuka Downloader eksternal kamu. -• Hanya menggantikan tombol Download di player. -• Tidak bisa menggantikan tombol download di menu flyout atau tab Library." +• Hanya menggantikan tombol Unduh di player. +• Tidak bisa menggantikan tombol Unduh di menu flyout atau tab Library." Nama paket downloader eksternal Nama paket aplikasi downloader eksternal yang terinstal, seperti NewPipe atau YTDLnis. Downloader eksternal Peringatan "%1$s belum terinstall. -Segera download %2$s dari website." +Download %2$s dari website." %s tidak diinstal. Silakan instal. Iklan Sembunyikan iklan fullscreen Menyembunyikan iklan fullscreen. Tutup iklan fullscreen - "Jika Diaktifkan, iklan fullscreen akan ditutup lewat tombol Close. -Jika dimatikan, ikan fullscreen akan di block. (kemungkinan akan ada side effect)" + "Jika diaktifkan, iklan fullscreen akan ditutup lewat tombol Close. +Jika dimatikan, iklan fullscreen akan di block. (kemungkinan akan ada side effect)" Iklan fullscreen telah diblok. (Blokir: %s) Iklan fullscreen telah ditutup. Sembunyikan Iklan Umum - Sembunyikan Iklan Umum. + Menyembunyikan Iklan Umum. Sembunyikan iklan musik Menyembunyikan iklan sebelum memutar musik. - Hide paid promotion label - Hides the paid promotion label. - Sembunykan popup promosi premium + Sembunyikan label promosi berbayar + Menyembunyikan label promosi berbayar. + Sembunyikan popup promosi premium Menyembunyikan popup promosi premium. - Sembunykan banner pembaruan premium + Sembunyikan banner pembaruan premium Menyembunyikan banner pembaruan premium. Menu flyout @@ -73,49 +73,49 @@ Masalah yang diketahui: • Gambar album di Tab library juga menjadi lebih kecil. • Tata letak pengatur waktu tidur mungkin terlihat tidak biasa." Tambah switch Trim silence - "Adds a Trim silence switch to the playback speed flyout menu. + "Menambahkan tombol Trim silence ke menu flyout playback speed. Info: -• This feature is for podcasts. -• This feature is still in development, so it may be unstable." - Hide Like and Dislike buttons - Hide 3-column component - Hide Add to queue menu - Hide Captions menu - Hide Delete playlist menu - Hide Dismiss queue menu - Hide Download menu - Hide Edit playlist menu - Hide Go to album menu - Hide Go to artist menu - Hide Go to episode menu - Hide Go to podcast menu - Hide Help & feedback menu - Hide Play next menu - Hide Quality menu - Hide Remove from library menu - Hide Remove from playlist menu - Hide Report menu - Hide Save episode for later menu - Hide Save to library menu - Hide Save to playlist menu - Hide Share menu - Hide Shuffle play menu - Hide Sleep timer menu - Hide Start radio menu - Hide Stats for nerds menu - Hide Subscribe / Unsubscribe menu - Hide View song credits menu - Continue watching - Continues the video from the current time when switching to YouTube. - Watch on YouTube - Invalid video url. - Replace Dismiss queue menu - Replaces the Dismiss queue menu with the Watch on YouTube menu. - Replace Report menu - Replaces the Report menu with the Playback speed menu. - Keep Report in comments - Keeps the Report menu in the comments section intact. +• Fitur ini hanya untuk podcast. +• Fitur ini masih dalam pengembangan, jadi ini tidak akan stabil." + Sembunyikan tombol Like dan Dislike + Sembunyikan komponen 3-kolom + Sembunyikan menu tambahkan ke antrean + Sembunyikan menu teks + Sembunyikan menu hapus playlist + Sembunyikan menu abaikan antrean + Sembunyikan menu Unduh + Sembunyikan menu edit playlist + Sembunyikan menu Pergi ke album + Sembunyikan menu Pergi ke artis + Sembunyikan menu Pergi ke episode + Sembunyikan menu Pergi ke podcast + Sembunyikan menu bantuan & saran + Sembunyikan menu putar berikutnya + Hide menu Kualitas + Sembunyikan menu hapus dari koleksi + Sembunyikan hapus dari menu playlist + Sembunyikan menu laporkan + Sembunyikan menu simpan episode untuk ditonton nanti + Sembunyikan menu simpan ke koleksi + Sembunyikan menu simpan ke playlist + Sembunyikan menu bagikan + Sembunyikan menu putar acak + Sembunyikan menu waktu tidur + Sembunyikan menu mulai radio + Sembunyikan menu statistik untuk nerds + Sembunyikan menu Subscribe / Unsubscribe + Sembunyikan menu kredit lagu + Lanjutkan menonton + Melanjutkan video dari waktu saat ini ketika berlaih ke YouTube. + Tonton di YouTube + Url video tidak valid. + Ganti menu hapus antrean + Menggantikan menu hapus antrean menjadi tonton di YouTube. + Ganti menu laporkan + Menggantikan menu laporkan dengan menu Kecepatan pemutaran. + Simpan laporkan di komentar + Mempertahankan menu laporkan di bagian komentar. Umum Ganti Halaman Awal @@ -247,8 +247,12 @@ Some features may not work properly in the old player layout." Menambah atau mengubah kecepatan pemutaran yang tersedia. Remember playback speed changes Remembers the last playback speed selected. + Tampilkan toast + Menunjukkan toast ketika mengubah playback speed semula. Remember video quality changes Remembers the last video quality selected. + Tampilkan toast + Menunjukkan toast ketika mengubah playback speed semula. Kecepatan pemutaran kustom tidak valid. Atur ulang ke nilai default. Invalid custom playback speeds. Using default values. Changing default speed to %s. diff --git a/src/main/resources/music/translations/in/strings.xml b/src/main/resources/music/translations/in/strings.xml index 8869550e41..6e36257f4c 100644 --- a/src/main/resources/music/translations/in/strings.xml +++ b/src/main/resources/music/translations/in/strings.xml @@ -8,61 +8,61 @@ Akun Sembunyikan menu akun - Menyembunyikan elemen menu akun menggunakan filter kustom. + Menyembunyikan elemen menu akun menggunakan filter custom. Filter menu Akun Daftar dari nama-nama menu akun ke filter, terpisah oleh garis baru. Sembunyikan komponen kosong Menyembunyikan komponen kosong di menu akun. Sembunyikan handle - Menyembunyikan handle di kelola akun. - Sembunyikan container ketentuan - Menyembunyikan container ketentuan layanan. + Menyembunyikan handle di menu akun. + Sembunyikan kontainer ketentuan + Menyembunyikan kontainer ketentuan layanan. Bilah Tindakan Sembunyikan tombol Like dan Dislike - Menyembunyikan tombol Like dan Dislike. Itu tidak akan work di layout player lawas. + Menyembunyikan tombol Like dan Dislike. Itu tidak akan bekerja di layout player lama. Sembunyikan tombol Komentar Menyembunyikan tombol Komentar. Sembunyikan tombol Save - Menyembunyikan tombol Save. - Sembunyikan tombol Download - Menyembunyikan tombol Download. - Sembunyikan tombol Share - Menyembunyikan tombol Share. + Menyembunyikan tombol Simpan. + Sembunyikan tombol Unduh + Menyembunyikan tombol Unduh. + Sembunyikan tombol Bagikan + Menyembunyikan tombol Bagikan. Sembunyikan tombol Radio Menyembunyikan tombol Radio. Sembunyikan tombol bilah tindakan Menyembunyikan bilah dari tombol tindakan. - Ganti tombol tindakan Download - "Tombol Download membuka Downloader eksternal mu. + Ganti tombol tindakan Unduh + "Tombol Unduh membuka Downloader eksternal kamu. -• Hanya menggantikan tombol Download di player. -• Tidak bisa menggantikan tombol download di menu flyout atau tab Library." +• Hanya menggantikan tombol Unduh di player. +• Tidak bisa menggantikan tombol Unduh di menu flyout atau tab Library." Nama paket downloader eksternal Nama paket aplikasi downloader eksternal yang terinstal, seperti NewPipe atau YTDLnis. Downloader eksternal Peringatan "%1$s belum terinstall. -Segera download %2$s dari website." +Download %2$s dari website." %s tidak diinstal. Silakan instal. Iklan Sembunyikan iklan fullscreen Menyembunyikan iklan fullscreen. Tutup iklan fullscreen - "Jika Diaktifkan, iklan fullscreen akan ditutup lewat tombol Close. -Jika dimatikan, ikan fullscreen akan di block. (kemungkinan akan ada side effect)" + "Jika diaktifkan, iklan fullscreen akan ditutup lewat tombol Close. +Jika dimatikan, iklan fullscreen akan di block. (kemungkinan akan ada side effect)" Iklan fullscreen telah diblok. (Blokir: %s) Iklan fullscreen telah ditutup. Sembunyikan Iklan Umum - Sembunyikan Iklan Umum. + Menyembunyikan Iklan Umum. Sembunyikan iklan musik Menyembunyikan iklan sebelum memutar musik. - Hide paid promotion label - Hides the paid promotion label. - Sembunykan popup promosi premium + Sembunyikan label promosi berbayar + Menyembunyikan label promosi berbayar. + Sembunyikan popup promosi premium Menyembunyikan popup promosi premium. - Sembunykan banner pembaruan premium + Sembunyikan banner pembaruan premium Menyembunyikan banner pembaruan premium. Menu flyout @@ -73,49 +73,49 @@ Masalah yang diketahui: • Gambar album di Tab library juga menjadi lebih kecil. • Tata letak pengatur waktu tidur mungkin terlihat tidak biasa." Tambah switch Trim silence - "Adds a Trim silence switch to the playback speed flyout menu. + "Menambahkan tombol Trim silence ke menu flyout playback speed. Info: -• This feature is for podcasts. -• This feature is still in development, so it may be unstable." - Hide Like and Dislike buttons - Hide 3-column component - Hide Add to queue menu - Hide Captions menu - Hide Delete playlist menu - Hide Dismiss queue menu - Hide Download menu - Hide Edit playlist menu - Hide Go to album menu - Hide Go to artist menu - Hide Go to episode menu - Hide Go to podcast menu - Hide Help & feedback menu - Hide Play next menu - Hide Quality menu - Hide Remove from library menu - Hide Remove from playlist menu - Hide Report menu - Hide Save episode for later menu - Hide Save to library menu - Hide Save to playlist menu - Hide Share menu - Hide Shuffle play menu - Hide Sleep timer menu - Hide Start radio menu - Hide Stats for nerds menu - Hide Subscribe / Unsubscribe menu - Hide View song credits menu - Continue watching - Continues the video from the current time when switching to YouTube. - Watch on YouTube - Invalid video url. - Replace Dismiss queue menu - Replaces the Dismiss queue menu with the Watch on YouTube menu. - Replace Report menu - Replaces the Report menu with the Playback speed menu. - Keep Report in comments - Keeps the Report menu in the comments section intact. +• Fitur ini hanya untuk podcast. +• Fitur ini masih dalam pengembangan, jadi ini tidak akan stabil." + Sembunyikan tombol Like dan Dislike + Sembunyikan komponen 3-kolom + Sembunyikan menu tambahkan ke antrean + Sembunyikan menu teks + Sembunyikan menu hapus playlist + Sembunyikan menu abaikan antrean + Sembunyikan menu Unduh + Sembunyikan menu edit playlist + Sembunyikan menu Pergi ke album + Sembunyikan menu Pergi ke artis + Sembunyikan menu Pergi ke episode + Sembunyikan menu Pergi ke podcast + Sembunyikan menu bantuan & saran + Sembunyikan menu putar berikutnya + Hide menu Kualitas + Sembunyikan menu hapus dari koleksi + Sembunyikan hapus dari menu playlist + Sembunyikan menu laporkan + Sembunyikan menu simpan episode untuk ditonton nanti + Sembunyikan menu simpan ke koleksi + Sembunyikan menu simpan ke playlist + Sembunyikan menu bagikan + Sembunyikan menu putar acak + Sembunyikan menu waktu tidur + Sembunyikan menu mulai radio + Sembunyikan menu statistik untuk nerds + Sembunyikan menu Subscribe / Unsubscribe + Sembunyikan menu kredit lagu + Lanjutkan menonton + Melanjutkan video dari waktu saat ini ketika berlaih ke YouTube. + Tonton di YouTube + Url video tidak valid. + Ganti menu hapus antrean + Menggantikan menu hapus antrean menjadi tonton di YouTube. + Ganti menu laporkan + Menggantikan menu laporkan dengan menu Kecepatan pemutaran. + Simpan laporkan di komentar + Mempertahankan menu laporkan di bagian komentar. Umum Ganti Halaman Awal @@ -247,8 +247,12 @@ Some features may not work properly in the old player layout." Menambah atau mengubah kecepatan pemutaran yang tersedia. Remember playback speed changes Remembers the last playback speed selected. + Tampilkan toast + Menunjukkan toast ketika mengubah playback speed semula. Remember video quality changes Remembers the last video quality selected. + Tampilkan toast + Menunjukkan toast ketika mengubah playback speed semula. Kecepatan pemutaran kustom tidak valid. Atur ulang ke nilai default. Invalid custom playback speeds. Using default values. Changing default speed to %s. diff --git a/src/main/resources/music/translations/ja-rJP/strings.xml b/src/main/resources/music/translations/ja-rJP/strings.xml index 702edad26a..6e9cc64e15 100644 --- a/src/main/resources/music/translations/ja-rJP/strings.xml +++ b/src/main/resources/music/translations/ja-rJP/strings.xml @@ -247,8 +247,12 @@ YT Music の設定だけでなく、ReVanced Extended の設定も非表示に 利用可能な再生速度を編集します。 再生速度の変更を保存 再生速度を変更するたびに、再生速度を保存します。 + トーストを表示 + デフォルトの再生速度を変更するときにトーストを表示します。 ビデオ画質の変更を保存 画質を変更するたびに、画質を保存します。 + トーストを表示 + デフォルトの画質を変更するときにトーストを表示します。 無効なカスタム再生速度です。デフォルト値にリセットします。 無効なカスタム再生速度です。デフォルトの値を使用します。 デフォルトの再生速度を %s に変更しました。 diff --git a/src/main/resources/music/translations/pl-rPL/strings.xml b/src/main/resources/music/translations/pl-rPL/strings.xml index df6074e52b..4d6713726d 100644 --- a/src/main/resources/music/translations/pl-rPL/strings.xml +++ b/src/main/resources/music/translations/pl-rPL/strings.xml @@ -242,13 +242,17 @@ Nie pomija to ograniczeń wiekowych, lecz akceptuje je automatycznie." "Przywraca układ odtwarzacza do starego wyglądu. Niektóre ustawienia mogą nie działać poprawnie ze starym układem odtwarzacza." - Filmy + Teledyski Edytuj niestandardowe prędkości odtwarzania Skonfiguruj dostępne prędkości odtwarzania. Zapamiętuj zmiany prędkości odtwarzania Zapisuje ostatnią wybraną prędkość odtwarzania. - Zapamiętuj zmiany jakości filmu - Zapisuje ostatnią wybraną jakość filmu. + Komunikaty o zmianie domyślnej prędkości odtwarzania + Komunikaty będą wyświetlane po zmianie domyślnej prędkości odtwarzania. + Zapamiętuj zmiany jakości teledysku + Zapisuje ostatnią wybraną jakość teledysku. + Komunikaty o zmianie domyślnej jakości filmów + Komunikaty będą wyświetlane po zmianie domyślnej jakości filmów. Nieprawidłowe niestandardowe prędkości odtwarzania. Przywrócono domyślne wartości. Nieprawidłowe niestandardowe prędkości odtwarzania. Przywrócono domyślne wartości. Zmieniono domyślną prędkość odtwarzania na %s. diff --git a/src/main/resources/music/translations/pt-rBR/strings.xml b/src/main/resources/music/translations/pt-rBR/strings.xml index cfe4284633..506164bf1a 100644 --- a/src/main/resources/music/translations/pt-rBR/strings.xml +++ b/src/main/resources/music/translations/pt-rBR/strings.xml @@ -247,8 +247,12 @@ Alguns recursos podem não funcionar corretamente no layout antigo do reprodutor Adicionar ou alterar as velocidades de reprodução disponíveis. Lembrar mudança na velocidade de reprodução Lembra a última velocidade de reprodução selecionada. + Mostrar uma notificação flutuante + Exibir uma notificação flutuante quando alterar a velocidade padrão de reprodução. Lembrar mudança na qualidade do vídeo Lembra a última qualidade de vídeo selecionada. + Mostrar uma notificação flutuante + Exibir uma notificação flutuante quando alterar a qualidade padrão do vídeo. Velocidades personalizadas devem ser menores que %sx. Usando valores padrão. Velocidade personalizada de reprodução inválida. Usando valores padrão. Alterando a velocidade padrão para %s. diff --git a/src/main/resources/music/translations/ru-rRU/strings.xml b/src/main/resources/music/translations/ru-rRU/strings.xml index d7aed0ffc8..3f05705c7b 100644 --- a/src/main/resources/music/translations/ru-rRU/strings.xml +++ b/src/main/resources/music/translations/ru-rRU/strings.xml @@ -247,8 +247,12 @@ Настройте доступные скорости воспроизведения. Запоминать изменения скорости Запоминает последнюю выбранную скорость воспроизведения. + Показывать всплывающее уведомление + Показывать всплывающее уведомление при смене скорости воспроизведения по умолчанию. Запоминать изменения качества видео Запоминает последнее выбранное качество видео. + Показывать всплывающее уведомление + Показывать всплывающее уведомление при смене качества видео по умолчанию. Недопустимые скорости. Значения сброшены к начальным. Недопустимые пользовательские скорости воспроизведения. Используются значения по умолчанию. Скорость по умолчанию изменена на %s. diff --git a/src/main/resources/music/translations/uk-rUA/strings.xml b/src/main/resources/music/translations/uk-rUA/strings.xml index 2cad8c3753..adbde9c1d6 100644 --- a/src/main/resources/music/translations/uk-rUA/strings.xml +++ b/src/main/resources/music/translations/uk-rUA/strings.xml @@ -247,8 +247,12 @@ Налаштувати доступні швидкості відтворення. Запам\'ятовувати зміни швидкості відтворення Запам\'ятовує останню вибрану швидкість відтворення. + Показувати тост + Показує тост під час зміни стандартної швидкості відтворення. Запам\'ятовувати зміни якості відео Запам\'ятовує останню вибрану якість відео. + Показувати тост + Показує тост під час зміни стандартної якості відео. Користувацькі швидкості мають бути меншими за %sx. Швидкості скинуто до стандартних значень. Неправильні користувацькі швидкості відтворення. Використовуються типові значення. Зміна типової швидкості на %s. @@ -264,7 +268,7 @@ Компактна кнопка \"Подобається\" Приховує лінію між кнопкою \"Подобається\" та кількістю лайків. Показувати тост, якщо API не доступний - Показується тост, якщо API ReturnYouTubeDislike не доступний. + Показує тост, якщо API ReturnYouTubeDislike не доступний. Про інтеграцію ReturnYouTubeDislike.com Дані дизлайків надаються за допомогою Return YouTube Dislike API. Натисніть тут, щоб дізнатися більше. @@ -278,9 +282,9 @@ Увімкнути SponsorBlock SponsorBlock - це краудсорсингова система для пропускання дратівливих частин відео на YouTube. Показувати тост, якщо API недоступний - Показується тост, якщо API SponsorBlock не доступний. + Показує тост, якщо API SponsorBlock не доступний. Показати тост, коли сегмент пропущено автоматично - Показується тост, коли сегмент автоматично пропущено. + Показує тост, коли сегмент автоматично пропущено. Змінити URL-адресу API Адреса, яку SponsorBlock використовує для звернень до сервера. Не змінюйте це, якщо не знаєте, що робите. Адресу сервера API скинуто. diff --git a/src/main/resources/youtube/translations/ar/strings.xml b/src/main/resources/youtube/translations/ar/strings.xml index 16d4b0b261..6efbc6bf82 100644 --- a/src/main/resources/youtube/translations/ar/strings.xml +++ b/src/main/resources/youtube/translations/ar/strings.xml @@ -233,7 +233,6 @@ • قد لا تكون بعض مكونات واجهة المستخدم مخفية. • قد لا يؤدي البحث عن كلمة رئيسية إلى ظهور أية نتائج." الكلمة الرئيسية غير صالحة. لا يمكن استخدام: \'%s\' كعامل تصفية - الكلمة الرئيسية غير صالحة. \'%1$s\' أقل من %2$d حرف. الكلمة الرئيسية \'%1$s\' ستؤدي إلى إخفاء جميع مقاطع الفيديو. الفيديو الموصى به @@ -255,7 +254,7 @@ تصفية عدد المشاهدات إخفاء الفيديوهات الموصى بها عن طريق المشاهدات - إخفاء الفيديوهات الموصى بها والتي يقل عدد مشاهداتها عن عدد محدد. + إخفاء الفيديوهات الموصى بها التي حصلت على عدد أقل من عدد معين من المشاهدات.\n\nمشكلة معروفة: لا يتم تصفية الفيديوهات التي حصلت على 0 مشاهدة. الأكبر من المشاهدات سيتم إخفاء الفيديوهات التي تزيد مشاهداتها عن هذا الرقم. الأقل من المشاهدات @@ -284,7 +283,9 @@ المشاهدة لاحقًا صفحة البداية غير صالحة، تتم إعادة التعيين إلى الوضع الافتراضي. تعطيل المقطع الصوتي التلقائي المفروض - تم تعطيل المقطع الصوتي التلقائي المفروض. + "تم تعطيل المقطع الصوتي التلقائي المفروض. + +التقييد: لا ينطبق هذا الإعداد على فيديوهات Shorts." تم تمكين المقطع الصوتي التلقائي المفروض. تعطيل التَّرْجَمَة التلقائية المفروضة تم تعطيل التَّرْجَمَة التلقائية المفروضة. @@ -666,9 +667,6 @@ يتم عرض قائمة الإبلاغ. إعدادات إضافية - إخفاء قائمة الإضاءة السينمائية - تم إخفاء قائمة الإضاءة السينمائية. - يتم عرض قائمة الإضاءة السينمائية. إخفاء قائمة المساعدة & الملاحظات تم إخفاء قائمة المساعدة & الملاحظات. يتم عرض قائمة المساعدة & الملاحظات. @@ -684,6 +682,9 @@ إخفاء قائمة عناصر التحكم في Premium تم إخفاء قائمة عناصر التحكم في Premium. يتم عرض قائمة عناصر التحكم في Premium. + إخفاء قائمة مؤقت النوم + تم إخفاء قائمة مؤقت النوم. + يتم عرض قائمة مؤقت النوم. إخفاء قائمة مستوى الصوت الثابت يتم عرض قائمة مستوى الصوت الثابت. تم إخفاء قائمة مستوى الصوت الثابت. @@ -1141,9 +1142,15 @@ تذكر التغيرات في سرعة التشغيل تنطبق تغييرات سرعة التشغيل على جميع الفيديوهات. تنطبق تغييرات سرعة التشغيل على الفيديو الحالي فقط. + عرض ملاحظة + سيتم عرض ملاحظة عند تغيير سرعة التشغيل الافتراضية. + لن يتم عرض ملاحظة عند تغيير سرعة التشغيل الافتراضية. تذكر تغييرات جودة الفيديو تنطبق تغييرات الجودة على جميع الفيديوهات. تنطبق تغييرات الجودة على الفيديو الحالي فقط. + عرض ملاحظة + سيتم عرض ملاحظة عند تغيير جودة الفيديو الافتراضية. + لن يتم عرض ملاحظة عند تغيير جودة الفيديو الافتراضية. استعادة قائمة جودة الفيديو القديمة يتم عرض قائمة جودة الفيديو القديمة. لا يتم عرض قائمة جودة الفيديو القديمة. @@ -1166,8 +1173,8 @@ استبدال برنامج الترميز AV1 يستبدل برنامج الترميز AV1 ببرنامج الترميز VP9. رفض استجابة برنامج الترميز AV1 - "يرفض بقوة استجابة برنامج الترميز AV1. - بعد حوالي 20 ثانية من التخزين المؤقت، يقوم بالتبديل إلى برنامج ترميز مختلف." + "يرفض قسرًا استجابة برنامج ترميز AV1. +سيتم تطبيق برنامج ترميز مختلف بعد حوالي 20 ثانية من التخزين المؤقت." تؤدي العملية الاحتياطية إلى حوالي 20 ثانية من التخزين المؤقت. تغيير السرعة الافتراضية إلى %s. تغيير جودة بيانات الجوّال الافتراضية إلى %s. @@ -1302,7 +1309,7 @@ توجد إرشادات من المستحسن قراءة الإرشادات لمانع الرعاة قبل تقديم أي مقطع. تمت قراءتها - اعرضها لي + اعرضها عام عرض ملاحظة إذا كان API غير متوفر @@ -1313,6 +1320,7 @@ تم تعطيل تتبع مرات التخطي. الحد الأدنى لمدة المقطع لن يتم عرض أو تخطي المقاطع الأقصر من هذه القيمة (بالثواني). + مدة الوقت غير صالحة. معرف المستخدم User ID الفريد الخاص بك يجب أن يبقى هذا خاصًا. انه مثل كلمة المرور ولا ينبغي مشاركته مع أي شخص. إذا كان شخص ما يملك هذا، فيمكنه انتحال شخصيتك. يجب أن يكون معرف المستخدم الخاص 30 حرفًا على الأقل. @@ -1425,21 +1433,6 @@ "تعطيل بروتوكول QUIC الخاص بـ CronetEngine." تمكين ترميز OPUS تمكين ترميز OPUS إذا كانت استجابة المشغل تتضمن برنامج ترميز OPUS. - Spoof Player Parameter - "لمنع مشاكل التشغيل Spoofs Player Parameters - -القيود: -• معدل البث المحسن غير متوفر. -• لا توجد مُصَّغَرات في شريط التقدم للمقاطع المدفوعة. -• قد لا تعمل التنزيلات دون اتصال بالإنترنت. -• قد لا يبدأ الفيديو من وقت المشاهدة الأخير." - Spoof Player Parameter in Feed - "Player Parameter Spoofed for Feed Videos - -التقييد: ستظهر مقاطع الفيديو التي يتم تشغيلها تلقائيًا في سجل المشاهدة لديك." - "Player Parameter not Spoofed for Feed Videos - -التقييد: سيتم تشغيل مقاطع الفيديو الموجزة لمدة تقل عن دقيقة واحدة قبل مواجهة مشاكل التشغيل." استيراد / تصدير الإعدادات إستيراد أو تصدير الإعدادات. @@ -1462,72 +1455,7 @@ تم استيراد الإعدادات بنجاح. إعادة تعيين تم نسخ الإعدادات إلى الحافظة. - - Spoof Client - محاكاة العميل لمنع مشاكل التشغيل. - Spoof Client - تتم محاكاة العميل. - "لا تتم محاكاة العميل. قد لا يعمل تشغيل الفيديو." - إيقاف تشغيل هذا الإعداد قد يسبب مشاكل في تشغيل الفيديو. - عرض في إحصاءات تقنية - يتم عرض محاكاة العميل في إحصاءات تقنية. - تم إخفاء محاكاة العميل في إحصاءات تقنية. - - خيارات Spoof Client - عام - بث مباشر - مقاطع ,Shorts - الفيديو غير قابل للتشغيل - iOS - Android - مشغل أندرويد المضمن - Android Testsuite - Android TV - Android VR - TV HTML5 - Web - - لمحة - iOS - "تتم محاكاة العميل إلـى iOS. - -تشمل الآثار الجانبية ما يلي: -• فيديو HDR مدعوم فقط على الترميز AV1. -• لا يتم حفظ وقت المشاهدة في سجل المشاهدة على حساب العلامة التجارية." - "تتم محاكاة العميل إلـى iOS. - -تشمل الآثار الجانبية ما يلي: -• فيديو HDR مدعوم فقط على الترميز AV1. -• سجل المشاهدة لا يعمل مع حساب العلامة التجارية." - Android Testsuite - "تتم محاكاة العميل إلـى Android Testsuite. - -تشمل الآثار الجانبية ما يلي: -• لا يوجد فيديو بتقنية HDR. -• قائمة المقطع الصوتي مفقودة. -• قد لا تكون الترجمة متاحة. -• زر التنزيل مفقود. -• بطاقات شاشة النهاية مفقودة. -• مصغرات شريط التقدم ذات جودة منخفضة." - Android TV - "تتم محاكاة العميل إلـى Android TV (YouTube TV). - -تشمل الآثار الجانبية ما يلي: -• لا يوجد فيديو بتقنية HDR. -• قائمة المقطع الصوتي مفقودة. -• قد لا تكون الترجمة متاحة. -• زر التنزيل مفقود. -• بعض البثوث المباشرة غير مدعومة للتشغيل. -• مصغرات شريط التقدم ذات جودة منخفضة." - Android VR - "تتم محاكاة العميل إلـى Android VR. - -تشمل الآثار الجانبية ما يلي: -• لا يوجد فيديو بتقنية HDR. -• زر التنزيل لشريط إجراءات الفيديو مفقود. -• استئناف مقاطع الفيديو المتوقفة مؤقتًا يتم بشكل عشوائي. -• مصغرات شريط تقدم Shorts ذات جودة منخفضة. -• مقاطع فيديو الأطفال لا تعمل." + سجل المشاهدة تغيير الإعدادات المتعلقة بسجل المشاهدة. @@ -1539,15 +1467,8 @@ حظر سجل المشاهدة حالة سجل المشاهدة • سجل المشاهدة محظور. - "• يتبع إعدادات سجل المشاهدة لحساب Google. -• قد لا يعمل سجل المشاهدة مع حساب العلامة التجارية. -(يتم تمكين إعداد Spoof Client وتحديد عميل iOS)" - "• يتبع إعدادات سجل المشاهدة لحساب Google. -• قد لا يعمل سجل المشاهدة بسبب DNS أو VPN. -• قد لا يعمل سجل المشاهدة مع حساب العلامة التجارية. -(يتم تمكين إعداد Spoof Client وتحديد عميل iOS)" - • يتبع إعدادات سجل المشاهدة لحساب Google. - "• يتبع إعدادات سجل المشاهدة لحساب Google. + • يتبع إعدادات سجل المشاهدة لحساب Google. + "• يتبع إعدادات سجل المشاهدة لحساب Google. • قد لا يعمل سجل المشاهدة بسبب DNS أو VPN." معلومات التعديل diff --git a/src/main/resources/youtube/translations/bg-rBG/strings.xml b/src/main/resources/youtube/translations/bg-rBG/strings.xml index c2268a79d4..8f763777df 100644 --- a/src/main/resources/youtube/translations/bg-rBG/strings.xml +++ b/src/main/resources/youtube/translations/bg-rBG/strings.xml @@ -227,7 +227,6 @@ • Някои елементи на потребителския интерфейс може да не са скрити. • Търсенето на дума -ключ може да не покаже никакви резултати." Невалидна ключова дума. Не може да се използва: „%s“ като филтър - Невалидна ключова дума. „%1$s“ е по-малко от %2$d знака. Ключовата дума „%1$s“ ще скрие всички видеоклипове. Препоръчани видеоклипове @@ -279,7 +278,7 @@ За Гледане по-късно Невалидна начална страница, нулиране по подразбиране. Принудителните автоматични аудио пътеки са деактивирани - Задължителните аудио записи са деактивирани. + "Задължителните аудио записи са деактивирани." Задължителните аудио записи са активирани. Изкл. принудителни автоматични субтититри Принудителните автоматични субтититри са изключени. @@ -657,9 +656,6 @@ Менюто за докладване се показва. Допълнителни настройки - Подсветка около видеото - Менюто за подсветка около видеото е скрито. - Менюто за подсветка около видеото се показва. Скриване на менюто & за помощ Менюто & за помощ е скрито. Менюто & за помощ се показва. @@ -1125,9 +1121,15 @@ Запомнете промените в скоростта на възпроизвеждане Промените в скоростта на възпроизвеждане се отнасят за всички видеоклипове. Промените в скоростта на възпроизвеждане се отнасят само за текущия видеоклип. + Покажи съобщение + При промяна на скоростта на възпроизвеждане по подразбиране в долната част на екрана се появява съобщение. + Няма съобщение в долната част на екрана при промяна на скоростта на възпроизвеждане по подразбиране. Запомнете промените в качеството на видеото Промените в качеството се отнасят за всички видеоклипове. Промените в качеството се отнасят само за текущия видеоклип. + Покажи съобщение + Съобщението се появява в долната част на екрана при промяна на качеството на видеото по подразбиране. + Няма съобщение в долната част на екрана при промяна на качеството на видеото по подразбиране. Възстановете старото меню за качество на видеото Показва се старото меню за видео качество. Старото меню за видео качество е скрито. @@ -1410,20 +1412,6 @@ Списък с приложения за спделяне – вграден. Активирайте кодека OPUS Активирайте кодека OPUS, ако съдържанието в плейъра е подходящо за кодека. - Фалшив параметър на плейъра - "Променя параметрите на плейъра, за да предотврати проблеми с възпроизвеждането - -Вече известни проблеми: -• Не е наличен висок битрейт -• Миниатюрите на напредъка не работят във видеоклипове на спонсори -• Изтеглянето на видео може да не работи -• Видеото може да не започне от последното гледане." - Фалшив параметър на плейъра във емисията - "Параметърът на плейъра е подправен за видеоклипове в емисии. -Ограничение: Автоматично възпроизвежданите видеоклипове в емисиите ще се показват в историята ви на гледане." - "Параметърът на плейъра не е подправен за видеоклипове в емисиите. - -Известен проблем: Видеоклиповете в емисията ще могат да се възпроизвеждат нормално за по-малко от минута, преди да започнат проблеми с възпроизвеждането." Импортиране / Експортиране на настройките Импортиране / Експортиране на настройките. @@ -1446,77 +1434,7 @@ Настройките са импортирани успешно. Нулирай Настройките са копирани в клипборда. - - Подмяна на версията (на клиента) - Подмяна на версията, за да предотвратите проблеми с възпроизвеждането на видео. - Подмяна на версията - Версията е подменена. - "Клиентът не е подправен. Възпроизвеждането на видео може да не работи." - Деактивирането на тази настройка ще доведе до проблеми с възпроизвеждането на видео. - Начин за подмяна на версията - Принудително AVC (H.264) за iOS - Видео кодекът на iOS е AVC (H.264). - Видео кодекът на iOS е AVC (H.264), VP9, or AV1. - "Активирането на това може да подобри живота на батерията и да коригира прекъсванията при възпроизвеждане. - -AVC (H.264) има максимална разделителна способност при 1080p и възпроизвеждането на видео ще използва повече интернет данни от VP9 или AV1." - Показване в \"Разширени статистики\" - Фалшивият клиент се показва в Разширена статистика. - Фалшивият клиент не се показва в Разширена статистика. - - Опции за фалшифициране на клиента - Основни - Предаване на живо - Shorts, Клипове - Подмяна за видеоклипове, които не могат да се възпроизвеждат - iOS - Android - Вграден Android плейър - Тестов пакет за Android - Android TV - Android VR - TV HTML5 - Web - - За програмата - iOS - "Подмяна на клиента на iOS Ограничения: -• HDR видео се поддържа само с кодек AV1. -• Времето за гледане не се записва в историята на каналите." - "При замяна на iOS клиент. -Ограничения: -• Няма HDR видео. -• Няма меню за скорост на възпроизвеждане. -• Видео с високо качество може да не е налично. -• Историята на сърфиране не работи с акаунт на марка. -• Излъчванията на живо не могат да се възпроизвеждат във фонов режим -• Излъчванията на живо не са налични на Android 8.0." - Тестов пакет за Android - "При подмяна на клиента за Android Testsuite. - -Страничните ефекти включват: -• Няма HDR видео. -• Липсва менюто за аудио запис. -• Надписите може да не са налични. -• Липсва бутон за изтегляне. -• Липсват карти за краен екран. -• Миниатюра на лентата за търсене с ниско качество." - Android TV - "При подмяна на клиента за Android TV (YouTube TV). Странични ефекти: -• HDR качеството не е налично. -• Менюто за аудио запис не е налично. -• Субтитрите може да не са налични. -• Бутонът за действие за изтегляне не е наличен. -• Миниатюрите на лентата за напредък са с ниско качество. -• Някои предавания на живо не са налични за възпроизвеждане." - Android VR - "При подмяна на клиента за Android VR. - -Ограничения: -• Няма HDR видео. -• Видеопаузата може да не работи правилно. -• Миниатюрите на лентата за възпроизвеждане на Shorts ще бъдат с ниско качество. -• Не могат да се възпроизвеждат детски видеоклипове." + История на гледане Променя настройките, за хронологията на гледане. @@ -1528,15 +1446,6 @@ AVC (H.264) има максимална разделителна способн Блокиране на хронологията на гледане Преглед на състоянието на хронологията • Хронологията на гледане е блокирана. - "• Настройки за хронология на гледане по подразбиране на вашия акаунт в Google. -• Историята на гледане може да не работи с Маркови акаунти, ако имате активирана настройка за подмяна на плеара във версия на iOS" - "• Следва настройките на хронологията на сърфирането в акаунта ви в Google. -• Историята на сърфиране може да не работи поради DNS или VPN. -• Историята на сърфиране може да не работи с акаунт на марка. -(Активирана настройка на клиент за подправяне и избран клиент за iOS)" - • Следва настройките на хронологията на сърфирането в акаунта ви в Google. - "• Следва настройките на хронологията на сърфирането в акаунта ви в Google. -• Историята на сърфиране може да не работи поради DNS или VPN." Информация за корекции diff --git a/src/main/resources/youtube/translations/de-rDE/strings.xml b/src/main/resources/youtube/translations/de-rDE/strings.xml index 327f1036d8..47b941b6f5 100644 --- a/src/main/resources/youtube/translations/de-rDE/strings.xml +++ b/src/main/resources/youtube/translations/de-rDE/strings.xml @@ -228,7 +228,6 @@ Einschränkungen: • Einige UI-Komponenten können nicht ausgeblendet werden. • Die Suche nach einem Schlüsselwort kann keine Ergebnisse zeigen." Ungültiges Schlüsselwort. Kann \'%s\' nicht als Filter verwenden - Ungültiges Schlüsselwort. \'%1$s\' ist weniger als %2$d Zeichen. Schlüsselwort \'%1$s\' wird alle Videos ausblenden. Empfohlene Videos @@ -279,7 +278,7 @@ Einschränkungen: Später ansehen Ungültige Startseite, zurücksetzen auf Standard. Erzwungene automatische Audiospuren sind deaktivieren - Erzwungene automatische Audiospuren sind deaktiviert. + "Erzwungene automatische Audiospuren sind deaktiviert." Erzwungene automatische Audiospuren sind aktiviert. Deaktiviere erzwungene automatische Untertitel Erzwungene automatische Untertitel sind deaktiviert @@ -639,9 +638,6 @@ Einstellungen → Autoplay → Nächstes Video automatisch abspielen" Report menu is shown. Additional settings - Hide ambient mode menu - Ambient mode menu is hidden. - Ambient mode menu is shown. Hide help & feedback menu Help & feedback menu is hidden. Help & feedback menu is shown. @@ -1276,14 +1272,6 @@ Drücke Weiter und deaktiviere Akku-Optimierungen." "CronetEngine's QUIC-Protokoll deaktivieren" OPUS Codec aktivieren Aktiviere den OPUS-Codec, wenn die Antwort des Players den OPUS-Codec enthält. - Spoof player parameter - "Spoofs Player Parameter, um Wiedergabeprobleme zu vermeiden. - -Einschränkungen: -• Erweiterte Bitrate ist nicht verfügbar. -• Keine Suchleisten-Thumbnails für kostenpflichtige Videos. -• Offline-Downloads können nicht funktionieren. -• Video darf nicht von der letzten Uhrzeit gestartet werden." Einstellungen importieren / exportieren Einstellungen importieren / exportieren @@ -1305,70 +1293,7 @@ Einschränkungen: Einstellungen zurücksetzen Einstellungen wurden erfolgreich importiert. Zurücksetzen - - Spoof Client - Spoof des Clients, um Wiedergabeprobleme zu vermeiden. - Spoof Client - Client ist verschleiert. - "Client ist nicht verschleiert. Video-Wiedergabe kann nicht funktionieren." - Das Deaktivieren dieser Einstellung kann zu Videowiedergabeproblemen führen. - Zeigt Statistiken für Nerds - Spoofed Client wird in Statistiken für Nerds angezeigt. - Spoofed Client ist in Statistik für Nerds versteckt. - - Spoof-Clientoptionen - Allgemein - Livestreams - Shorts, Clips - Nicht abspielbares Video - iOS - Android - Android eingebetteter Player - Android Testsuite - Android TV - Android VR - TV HTML5 - Web - - Info - iOS - "Spoof Client zu iOS. - -Nebeneffekte beinhalten: -• Keine HDR Videos. -• Höhere Video Qualitäten sind möglicherweise nicht verfügbar. -• Die Historie funktioniert nicht mit einem Markenkonto. -• Livestreams können nicht nur als Ton abgespielt werden. -• Livestreams sind nicht auf Android 8.0 verfügbar." - Android Testsuite - "Spoof Client für Android Testsuite. - -Nebeneffekte beinhalten: -• Keine HDR Videos. -• Audio Track Menü fehlt. -• Untertitel sind möglicherweise nicht verfügbar. -• Download Button fehlt. -• Endbildschirmkarten fehlen. -• Niedrige Suchleistenvorschau." - Android TV - "Spoof Client für Android TV (YouTube TV). - -Nebeneffekte beinhalten: -• Keine HDR Videos. -• Audiospurmenü fehlt. -• Untertitel sind möglicherweise nicht verfügbar. -• Download Button fehlt. -• Niedrigere Suchleisten Vorschaubilder. -• Einige Livestreams werden für die Wiedergabe nicht unterstützt." - Android VR - "Spoof Client für Android VR. - -Nebeneffekte beinhalten: -• Keine HDR Videos. -• Download Button, der Video Aktionsleiste, fehlt. -• Pausierte Videos können zufällig wiederaufgenommen werden. -• Niedrige Shorts Suchleiste Vorschaubilder. -• Kindervideos werden nicht abgespielt." + Patch-Informationen diff --git a/src/main/resources/youtube/translations/el-rGR/strings.xml b/src/main/resources/youtube/translations/el-rGR/strings.xml index 8d2cfbb930..7360778052 100644 --- a/src/main/resources/youtube/translations/el-rGR/strings.xml +++ b/src/main/resources/youtube/translations/el-rGR/strings.xml @@ -231,7 +231,6 @@ Playlists • Κάποια στοιχεία UI ενδέχεται να μην κρύβονται. • Η αναζήτηση για μια λέξη-κλειδί ενδέχεται να μην εμφανίζει κανένα αποτέλεσμα." Μη έγκυρη λέξη-κλειδί. Αδυναμία χρήσης: \'%s\' ως φίλτρο - Μη έγκυρη λέξη-κλειδί. \'%1$s\' είναι μικρότερο από %2$d χαρακτήρες Η λέξη-κλειδί \'%1$s\' θα κρύβει όλα τα βίντεο. Προτεινόμενα βίντεο @@ -282,7 +281,9 @@ Playlists Παρακολούθηση αργότερα Μη έγκυρη αρχική σελίδα, επαναφέρθηκε. Απενεργοποίηση υποχρεωτικών κομματιών ήχου - Τα υποχρεωτικά κομμάτια ήχου είναι απενεργοποιημένα. + "Τα υποχρεωτικά κομμάτια ήχου είναι απενεργοποιημένα. + +Περιορισμός: Αυτή η λειτουργία δεν ισχύει για τα Shorts." Τα υποχρεωτικά κομμάτια ήχου είναι ενεργοποιημένα. Απενεργοποίηση αυτόματων υπότιτλων Οι υποχρεωτικοί αυτόματοι υπότιτλοι είναι απενεργοποιημένοι. @@ -665,9 +666,6 @@ Playlists Εμφανίζεται. Πρόσθετες ρυθμίσεις - Μενού «Λειτουργία περιβάλλοντος» - Κρυμμένο. - Εμφανίζεται. Μενού «Βοήθεια & σχόλια» Κρυμμένο. Εμφανίζεται. @@ -683,6 +681,9 @@ Playlists Μενού «Έλεγχοι Premium» Κρυμμένο. Εμφανίζεται. + Μενού «Χρονόμετρο ύπνου» + Κρυμμένο. + Εμφανίζεται. Μενού «Σταθερή ένταση» Εμφανίζεται. Κρυμμένο. @@ -1152,9 +1153,15 @@ Playlists Απομνημόνευση αλλαγών ταχύτητας αναπαραγωγής Οι αλλαγές ταχύτητας αναπαραγωγής ισχύουν για όλα τα βίντεο. Οι αλλαγές ταχύτητας αναπαραγωγής ισχύουν μόνο για το τρέχον βίντεο. + Εμφάνιση μηνύματος + Εμφανίζεται μήνυμα στο κάτω μέρος της οθόνης κατά την αλλαγή προεπιλεγμένης ταχύτητας αναπαραγωγής. + Δεν εμφανίζεται μήνυμα στο κάτω μέρος της οθόνης κατά την αλλαγή προεπιλεγμένης ταχύτητας αναπαραγωγής. Απομνημόνευση αλλαγών ποιότητας βίντεο Οι αλλαγές ποιότητας ισχύουν για όλα τα βίντεο. Οι αλλαγές ποιότητας ισχύουν μόνο για το τρέχον βίντεο. + Εμφάνιση μηνύματος + Εμφανίζεται μήνυμα στο κάτω μέρος της οθόνης κατά την αλλαγή προεπιλεγμένης ποιότητας βίντεο. + Δεν εμφανίζεται μήνυμα στο κάτω μέρος της οθόνης κατά την αλλαγή προεπιλεγμένης ποιότητας βίντεο. Μενού ποιότητας βίντεο παλιού στυλ Εμφανίζεται το μενού αλλαγής ποιότητας βίντεο παλιού στυλ. Εμφανίζεται το μενού αλλαγής ποιότητας βίντεο νέου στυλ. @@ -1324,6 +1331,7 @@ Playlists Ο μετρητής παραλείψεων δεν είναι ενεργός. Ελάχιστη διάρκεια τμήματος Τμήματα μικρότερα από την καθορισμένη τιμή (σε δευτερόλεπτα) δε θα παραλείπονται ούτε θα εμφανίζονται. + Μη έγκυρη διάρκεια χρόνου. Το ιδιωτικό σας αναγνωριστικό χρήστη Αυτό πρέπει να μείνει μυστικό. Είναι σαν έναν κωδικό που δεν πρέπει να μοιραστείτε με κανέναν. Εάν κάποιος αποκτήσει αυτόν τον κωδικό, μπορεί να σας υποδυθεί. Το ιδιωτικό αναγνωριστικό χρήστη πρέπει να είναι τουλάχιστον 30 χαρακτήρες. @@ -1441,21 +1449,6 @@ Playlists Χρησιμοποιείται το μενού κοινοποίηση της εφαρμογής. Ενεργοποίηση κωδικοποιητή OPUS Ενεργοποίηση του κωδικοποιητή OPUS αν η ανταπόκριση του προγράμματος αναπαραγωγής τον περιλαμβάνει. - Τροποποίηση παραμέτρου αναπαραγωγέα - "Τροποποίηση παραμέτρων του αναπαραγωγέα για την αποφυγή προβλημάτων αναπαραγωγής. - -Περιορισμοί: -• Δεν είναι διαθέσιμος ο υψηλός ρυθμός bitrate. -• Οι μικρογραφίες της γραμμής προόδου δεν λειτουργούν σε πληρωμένα βίντεο. -• Η λήψη εκτός σύνδεσης ενδέχεται να μη λειτουργεί. -• Τα βίντεο ενδέχεται να μην ξεκινούν από το σημείο που τα αφήσατε." - Τροποποίηση παραμέτρου στη ροή - "Η παράμετρος του αναπαραγωγέα θα τροποποιηθεί για βίντεο στη ροή. - -Περιορισμός: Τα βίντεο που αναπαράγονται αυτόματα στη ροή θα εμφανιστούν στο ιστορικό σας." - "Η παράμετρος του αναπαραγωγέα δε θα τροποποιηθεί για βίντεο στη ροή. - -Περιορισμός: Τα βίντεο στη ροή θα αναπαράγονται για λιγότερο από 1 λεπτό πριν αντιμετωπίσουν προβλήματα αναπαραγωγής." Εισαγωγή / Εξαγωγή ρυθμίσεων Εισαγωγή ή εξαγωγή των ρυθμίσεων σας. @@ -1478,62 +1471,17 @@ Playlists Οι ρυθμίσεις εισήχθησαν με επιτυχία. Επαναφορά Οι ρυθμίσεις αντιγράφηκαν στο πρόχειρο. - - Παραποίηση προγράμματος αναπαραγωγής - Παραποίηση του προγράμματος αναπαραγωγής για την αποφυγή προβλημάτων αναπαραγωγής. - Παραποίηση προγράμματος αναπαραγωγής - Το πρόγραμμα αναπαραγωγής παραποιείται. - "Το πρόγραμμα αναπαραγωγής δεν παραποιείται. Η αναπαραγωγή βίντεο ενδέχεται να μη λειτουργεί." - Η απενεργοποίηση αυτής της ρύθμισης ενδέχεται να προκαλέσει προβλήματα αναπαραγωγής βίντεο. - Εμφάνιση στο «Στατιστικά για σπασίκλες» - Η έκδοση παραποίησης εμφανίζεται στο μενού «Στατιστικά για σπασίκλες». - Η έκδοση παραποίησης δεν εμφανίζεται στο μενού «Στατιστικά για σπασίκλες». - - Ρυθμίσεις παραποίησης - Γενικά βίντεο - Ζωντανές μεταδόσεις - Shorts, Κλιπ - Περίπτωση μη αναπαραγόμενου βίντεο - iOS - Android - Ενσωματωμένος αναπαραγωγέας Android - Android Testsuite - Android TV - Android VR - Τηλεόραση HTML5 - Ιστός (Web) - - Σχετικά με - iOS - "Παραποίηση σε έκδοση iOS. Παρενέργειες: -• Η ποιότητα HDR είναι διαθέσιμη μόνο αν η συσκευή σας υποστηρίζει τον κωδικοποιητή AV1. -• Το ιστορικό παρακολούθησης δεν αποθηκεύεται σε λογαριασμούς επωνυμίας (brand)." - "Παραποίηση σε έκδοση iOS. Παρενέργειες: -• Η ποιότητα HDR είναι διαθέσιμη μόνο αν η συσκευή σας υποστηρίζει τον κωδικοποιητή AV1. -• Το ιστορικό παρακολούθησης δε λειτουργεί σε λογαριασμούς επωνυμίας (brand)." - Android Testsuite - "Παραποίηση σε έκδοση Android Testsuite. Παρενέργειες: -• Η ποιότητα HDR δεν είναι διαθέσιμη. -• Το μενού «Κομμάτι ήχου» δεν είναι διαθέσιμο. -• Οι υπότιτλοι ενδέχεται να μην είναι διαθέσιμοι. -• Το κουμπί ενέργειας «Λήψη» δεν είναι διαθέσιμο. -• Οι κάρτες τελικής οθόνης δεν είναι διαθέσιμες. -• Οι μικρογραφίες γραμμής προόδου είναι χαμηλής ποιότητας." - Android TV - "Παραποίηση σε έκδοση Android TV (YouTube TV). Παρενέργειες: -• Η ποιότητα HDR δεν είναι διαθέσιμη. -• Το μενού «Κομμάτι ήχου» δεν είναι διαθέσιμο. -• Οι υπότιτλοι ενδέχεται να μην είναι διαθέσιμοι. -• Το κουμπί ενέργειας «Λήψη» δεν είναι διαθέσιμο. -• Οι μικρογραφίες γραμμής προόδου είναι χαμηλής ποιότητας. -• Κάποιες ζωντανές μεταδόσεις δεν είναι διαθέσιμες για αναπαραγωγή." - Android VR - "Παραποίηση σε έκδοση Android VR. Παρενέργειες: -• Η ποιότητα HDR δεν είναι διαθέσιμη. -• Το κουμπί ενέργειας «Λήψη» δεν είναι διαθέσιμο. -• Τα βίντεο σε παύση μπορεί να συνεχίσουν να παίζουν τυχαία από μόνα τους. -• Οι μικρογραφίες γραμμής προόδου Shorts είναι χαμηλής ποιότητας. -• Τα βίντεο YouTube Kids (για παιδιά) δεν αναπαράγονται." + + Προεπιλογή + iOS + Android + Ενσωματωμένος αναπαραγωγέας Android + Android Testsuite + Android TV + Android VR + TV HTML5 + Ιστός (Web) + Παρενέργειες παραποίησης Ιστορικό παρακολούθησης Διαχείριση των ρυθμίσεων που σχετίζονται με το ιστορικό παρακολούθησης. @@ -1545,14 +1493,9 @@ Playlists Αποκλεισμός ιστορικού παρακολούθησης Κατάσταση ιστορικού παρακολούθησης Το ιστορικό παρακολούθησης είναι αποκλεισμένο. - "• Προεπιλεγμένες ρυθμίσεις ιστορικού παρακολούθησης του λογαριασμού Google σας. -• Το ιστορικό παρακολούθησης ενδέχεται να μη λειτουργεί χρησιμοποιώντας λογαριασμό επωνυμίας αν έχετε ενεργοποιημένη τη ρύθμιση παραποίησης προγράμματος αναπαραγωγής σε έκδοση iOS." - "• Προεπιλεγμένες ρυθμίσεις ιστορικού παρακολούθησης του λογαριασμού Google σας. -• Το ιστορικό παρακολούθησης μπορεί να μη λειτουργεί λόγω DNS ή χρήσης VPN. -• Το ιστορικό παρακολούθησης ενδέχεται να μη λειτουργεί χρησιμοποιώντας λογαριασμό επωνυμίας αν έχετε ενεργοποιημένη τη ρύθμιση παραποίησης προγράμματος αναπαραγωγής σε έκδοση iOS." - • Προεπιλεγμένες ρυθμίσεις ιστορικού παρακολούθησης του λογαριασμού Google σας. - "• Προεπιλεγμένες ρυθμίσεις ιστορικού παρακολούθησης του λογαριασμού Google σας. -• Το ιστορικό παρακολούθησης μπορεί να μη λειτουργεί λόγω DNS ή χρήσης VPN." + • Ακολουθούνται οι ρυθμίσεις ιστορικού παρακολούθησης του λογαριασμού Google σας. + "• Ακολουθούνται οι ρυθμίσεις ιστορικού παρακολούθησης του λογαριασμού Google σας. +• Το ιστορικό παρακολούθησης μπορεί να μη λειτουργεί λόγω του DNS ή χρήσης VPN." Πληροφορίες τροποποίησης diff --git a/src/main/resources/youtube/translations/es-rES/strings.xml b/src/main/resources/youtube/translations/es-rES/strings.xml index 02a45bfa6c..972b3061cb 100644 --- a/src/main/resources/youtube/translations/es-rES/strings.xml +++ b/src/main/resources/youtube/translations/es-rES/strings.xml @@ -232,8 +232,12 @@ Limitaciones: • Algunos Shorts pueden no estar ocultos. • Algunos componentes de la interfaz pueden no estar ocultos. • La búsqueda de una palabra clave puede no mostrar resultados." + Coincidir palabras completas + Al rodear una palabra o frase clave con comillas dobles se evitarán las coincidencias parciales de títulos de vídeo y nombres de canales.<br><br>Por ejemplo:<br><b>\"ia\"</b> ocultará el vídeo: <b>¿Cómo funciona la IA?</b><br>pero no ocultará: <b>¿Cómo funciona la justicia?</b> Palabra clave no válida. No se puede utilizar: \"%s\" como filtro - Palabra clave no válida. \"%1$s\" tiene menos de %2$d caracteres + Añadir comillas para utilizar la palabra clave: %s. + La palabra clave tiene declaraciones contradictoras: %s. + La palabra clave es demasiado corta y requiere comillas: %s. La palabra clave \"%1$s\" es demasiado amplia y ocultará todos los vídeos Vídeos recomendados @@ -285,7 +289,7 @@ Limitaciones: Ver más tarde Página de inicio no válida, restableciendo a la predeterminada. Desactivar pistas de audio automáticas forzadas - Las pistas de audio automáticas forzadas están desactivadas. + "Las pistas de audio automáticas forzadas están desactivadas." Las pistas de audio automáticas forzadas están activadas. Desactivar subtítulos automáticos forzados Los subtítulos automáticos forzados están desactivados. @@ -668,9 +672,6 @@ La reproducción automática se puede cambiar en la configuración de YouTube: El menú de denunciar está visible. Ajustes adicionales - Ocultar menú de modo ambiente - El menú de modo ambiente está oculto. - El menú de modo ambiente está visible. Ocultar menú de ayuda y comentarios El menú de ayuda y comentarios está oculto. El menú de ayuda y comentarios está visible. @@ -686,6 +687,9 @@ La reproducción automática se puede cambiar en la configuración de YouTube: Ocultar menú de controles premium El menú de controles premium está oculto. El menú de controles premium está visible. + Ocultar menú de temporizador + El menú del temporizador está oculto. + El menú del temporizador está visible. Ocultar menú de regular volumen El menú de regular volumen está visible. El menú de regular volumen está oculto. @@ -998,6 +1002,9 @@ Limitación: las cabeceras oficiales en los resultados de búsqueda estarán ocu Ocultar sugerencias de búsqueda Las sugerencias de búsqueda están ocultas. Las sugerencias de búsqueda están visibles. + Ocultar botón de utilizar este sonido + El botón de utilizar este sonido está oculto. + El botón de utilizar este sonido está visible. Ocultar paneles de información Los paneles de información están ocultos. Los paneles de información están visibles. @@ -1136,9 +1143,15 @@ Desliza hacia arriba / abajo para reproducir el vídeo siguiente / anterior.Recordar cambios de velocidad de reproducción Los cambios de velocidad de reproducción se aplican a todos los vídeos. Los cambios de velocidad de reproducción solo se aplican al vídeo actual. + Mostrar un mensaje + Se mostrará un mensaje al cambiar la velocidad de reproducción predeterminada. + No se mostrará un mensaje al cambiar la velocidad de reproducción predeterminada. Recordar cambios de calidad de vídeo Los cambios de calidad se aplican a todos los vídeos. Los cambios de calidad solo se aplican al vídeo actual. + Mostrar un mensaje + Se mostrará un mensaje al cambiar la calidad de vídeo predeterminada. + No se mostrará un mensaje al cambiar la calidad de vídeo predeterminada. Restaurar antiguo menú de calidad de vídeo El antiguo menú de calidad de vídeo está visible. El antiguo menú de calidad de vídeo está oculto. @@ -1308,6 +1321,7 @@ Pulsa aquí para obtener más información. El seguimiento del conteo de omisiones no está activado. Duración mínima del segmento Los segmentos más cortos que este valor (en segundos) no serán mostrados o omitidos. + Duración de tiempo no válida. Tu ID de usuario privado Esto debe mantenerse en privado. Es como una contraseña y no debe compartirse con nadie. Si alguien lo tiene, puede hacerse pasar por ti. El ID de usuario privado debe tener al menos 30 caracteres. @@ -1423,21 +1437,6 @@ Pulsa el botón de continuar y desactiva las optimizaciones de la batería."Se utiliza la hoja de compartir incorporada. Activar códec OPUS Activa el códec OPUS si la respuesta del reproductor incluye el códec OPUS. - Falsificar parámetro del reproductor - "Falsifica los parámetros del reproductor para evitar problemas de reproducción. - - Limitaciones: - • La tasa de bits mejorada no está disponible. - • No hay miniaturas en la barra de progreso para vídeos de pago. - • Es posible que las descargas sin conexión no funcionen. - • Es posible que el vídeo no comience desde la última vez que lo viste." - Falsificar parámetro del reproductor en feed - "Parámetro del reproductor falsificado para los vídeos del feed. - -Limitación: los vídeos reproducidos automáticamente en el feed aparecerán en el historial de reproducciones." - "Parámetro del reproductor no falsificado para los vídeos del feed. - -Limitación: los vídeos en el feed se reproducen durante menos de 1 minuto antes de que surjan problemas de reproducción." Importar / Exportar ajustes Importar o exportar los ajustes. @@ -1460,70 +1459,36 @@ Limitación: los vídeos en el feed se reproducen durante menos de 1 minuto ante Los ajustes se han importado correctamente. Restablecer Ajustes copiados en el portapapeles. - - Falsificar cliente - Falsifica el cliente para evitar problemas de reproducción. - Falsificar cliente - El cliente está falsificado. - "El cliente no está falsificado. Es posible que la reproducción de vídeo no funcione." - Desactivar este ajuste puede causar problemas de reproducción de vídeo. - Mostrar en estadísticas para nerds - El cliente falsificado está visible en las estadísticas para nerds. - El cliente falsificado está oculto en las estadísticas para nerds. - - Opciones de falsificación de cliente - General - Transmisiones en directo - Shorts, Clips - Fallback - iOS - Android - Reproductor integrado de Android - Android Testsuite - Android TV - Android VR - TV HTML5 - Web - - Información - iOS - "Falsifica el cliente a iOS. - -Los efectos secundarios incluyen: -• El vídeo HDR solo es compatible con el códec AV1. -• El tiempo de visualización no se guarda en el historial de visualizaciones de la cuenta de marca." - "Falsifica el cliente a iOS. - -Los efectos secundarios incluyen: -• No hay vídeo HDR. -• Falta el menú de velocidad de reproducción. -• Pueden faltar calidades de vídeo superiores. -• El historial de reproducciones no funciona con una cuenta de marca. -• Las transmisiones en directo no pueden reproducirse como solo audio. -• Las transmisiones en directo no están disponibles en Android 8.0." - Android Testsuite - "Falsifica el cliente a Android Testsuite. - -Los efectos secundarios incluyen: -• No hay vídeo HDR. -• Faltan el menú de pistas de audio y el menú de velocidad de reproducción. -• Los subtítulos pueden no estar disponibles." - Android TV - "Falsifica el cliente a Android TV (YouTube TV). - -Los efectos secundarios incluyen: -• No hay vídeo HDR. -• Faltan el menú de pistas de audio y el menú de velocidad de reproducción. -• Los subtítulos pueden no estar disponibles. -• Algunas transmisiones en directo no se pueden reproducir." - Android VR - "Falsifica el cliente a Android VR. + + Falsificar datos de transmisión + Falsifica los datos de transmisión para evitar problemas de reproducción. + Falsificar datos de transmisión + Los datos de transmisión están falsificados. + "Los datos de transmisión no están falsificados. Es posible que la reproducción de vídeo no funcione." + Desactivar este ajuste puede causar problemas de reproducción de vídeo. + Cliente predeterminado + iOS + Android + Reproductor integrado de Android + Android Testsuite + Android TV + Android VR + TV HTML5 + Web + Efectos secundarios de falsificación + • Las películas o vídeos de pago no pueden reproducirse. + • Falta el menú de la pista de audio. + • Falta el menú de la pista de audio. + • El vídeo no puede reproducirse. + Forzar iOS AVC (H.264) + El códec de vídeo de iOS es AVC (H.264). + El códec de vídeo de iOS es AVC (H.264), VP9 o AV1. + "Activar esto podría mejorar la duración de la batería y solucionar el problema de reproducción entrecortada. -Los efectos secundarios incluyen: -• No hay vídeo HDR. -• Los vídeos en pausa pueden reanudarse aleatoriamente. -• Las miniaturas de la barra de progreso de Shorts son de baja calidad. -• Los vídeos infantiles no se reproducen." +AVC (H.264) tiene una resolución máxima de 1080p, y la reproducción de vídeo utilizará más datos de Internet que VP9 o AV1." + Mostrar en estadísticas para nerds + El cliente utilizado para obtener datos de transmisión se muestra en estadísticas para nerds. + El cliente utilizado para obtener datos de transmisión no se muestra en estadísticas para nerds. Historial de reproducciones Cambiar ajustes relacionados con el historial de reproducciones. @@ -1535,15 +1500,8 @@ Los efectos secundarios incluyen: Bloquear historial de reproducciones Acerca del historial de reproducciones • El historial de reproducciones no funciona. - "• Sigue la configuración del historial de reproducciones de la cuenta de Google. -• Es posible que el historial de reproducciones no funcione con una cuenta de marca. -(Se activa la configuración del cliente y se selecciona el cliente iOS)" - "• Sigue la configuración del historial de reproducciones de la cuenta de Google. -• Es posible que el historial de reproducciones no funcione debido a DNS o VPN. -• Es posible que el historial de reproducciones no funcione con una cuenta de marca. -(Se activa la configuración del cliente y se selecciona el cliente iOS)" - • Sigue la configuración del historial de reproducciones de la cuenta de Google. - "• Sigue la configuración del historial de reproducciones de la cuenta de Google. + • Sigue la configuración del historial de reproducciones de la cuenta de Google. + "• Sigue la configuración del historial de reproducciones de la cuenta de Google. • Es posible que el historial de reproducciones no funcione debido a DNS o VPN." Información de parches diff --git a/src/main/resources/youtube/translations/fr-rFR/strings.xml b/src/main/resources/youtube/translations/fr-rFR/strings.xml index c3e2c2b23b..8266a3946a 100644 --- a/src/main/resources/youtube/translations/fr-rFR/strings.xml +++ b/src/main/resources/youtube/translations/fr-rFR/strings.xml @@ -233,7 +233,6 @@ Limitations : • Certains éléments de l'interface utilisateur peuvent ne pas être masqués. • La recherche par mot-clé peut n'afficher aucun résultat." Mot-clé invalide. Impossible d\'utiliser : \'%s\' comme filtre. - Mot-clé invalide. \'%1$s\' contient moins de %2$d caractères. Le mot-clé \'%1$s\' masquera toutes les vidéos. Vidéo recommandée @@ -284,7 +283,7 @@ Limitations : Regarder plus tard Page de démarrage invalide, valeur réinitialisée par défaut. Désact. les pistes audio forcés - Les pistes audio automatiques forcées sont désactivé. + "Les pistes audio automatiques forcées sont désactivé." Les pistes audio automatiques forcées sont activés. Désact. les sous-titres forcés Les sous-titres automatiques forcés sont désactivés. @@ -667,9 +666,6 @@ La lecture automatique peut être modifiée dans les paramètres de YouTube : Le menu \"Signaler\" est affiché. Paramètres supplémentaires - Masquer le menu \"Mode ambiant\" - Le menu \"Mode ambiant\" est masqué. - Le menu \"Mode ambiant\" est affiché. Masquer le menu \"Aide et commentaires\" Le menu \"Aide et commentaires\" est masqué. Le menu \"Aide et commentaires\" est affiché. @@ -1134,9 +1130,15 @@ Limitations : Enreg. modif. de la vitesse de lecture La modification de vitesse de lecture est appliqué pour toutes les vidéos. La modification de la vitesse de lecture est appliqué pour la vidéo en cours. + Afficher un message + Un message sera affiché lorsque vous modifiez la vitesse de lecture par défaut. + Un message ne sera pas affiché lorsque vous modifiez la vitesse de lecture par défaut. Enreg. modification de la qualité La modification de la résolution est appliqué pour toutes les vidéos. La modification de la résolution est appliqué pour la vidéo en cours. + Afficher un message + Un message sera affiché lorsque vous modifiez la qualité vidéo par défaut. + Un message ne sera pas affiché lorsque vous modifiez la qualité vidéo par défaut. Restaur. ancien. interface de qualité vidéo Affiche l\'ancienne interface de qualité vidéo. Masque la nouvelle interface de qualité vidéo. @@ -1307,6 +1309,7 @@ Limitation : les \"Je n'aime pas\" ne seront pas affichées si vous n'êtes pas Le compteur de segments passés n\'est pas activé. Durée minimale du segment Les segments plus courts que cette valeur (en secondes) ne pourront être affichés ou passés. + Durée invalide. Votre identifiant privé Cela doit rester privé. Il s\'agit d\'un mot de passe qui ne doit être communiqué à personne. Si quelqu’un l\'a, il peut usurper votre identité ! L\'identifiant d\'utilisateur privé doit comporter au moins 30 caractères. @@ -1422,21 +1425,6 @@ Cliquez sur le bouton Continuer et désactivez les optimisations de la batterie. La feuille de partage de l\'application est utilisée. Activer le Codec OPUS Active le codec OPUS si la réponse du lecteur inclut le codec OPUS. - Falsifier les paramètres du lecteur - "Falsifie les paramètres du lecteur pour empêcher les problèmes de lecture. - -Limitations : -• Les bitrates améliorés ne sont pas disponibles. -• Les miniatures sur la barre de progression ne sont pas disponibles sur les vidéos payantes . -• Les téléchargements hors ligne peux ne pas fonctionner. -• Les vidéos peuvent ne pas démarrer à partir du dernier moment visionné." - Falsifier les param. lecteur dans les flux - "Les paramètres du lecteur sont falsifiés dans les flux vidéos. - -Limitation : Les vidéos lues automatiquement dans les flux peuvent apparaître dans votre historique de visionnage." - "Les paramètres du lecteur ne sont pas falsifiés dans les flux vidéos. - -Limitation : Les vidéos du flux seront lues moins d'une minute avant de rencontrer des problèmes de lecture." Importer / Exporter les paramètres Importer ou exporter les paramètres. @@ -1459,72 +1447,7 @@ Limitation : Les vidéos du flux seront lues moins d'une minute avant de rencont Les paramètres ont été importés avec succès. Réinitialiser Paramètres copiés dans le presse-papier. - - Falsifier le client - Falsifie le client pour empêcher les problèmes de lecture. - Falsifier le client - Le client est falsifié. - "Le client n'est pas falsifié, la lecture des vidéos peut ne pas fonctionner." - Désactiver ce paramètre peut entraîner des problèmes de lecture vidéo. - Afficher dans \"Statistiques avancées\" - Le client falsifié est affiché dans les Statistiques avancées. - Le client falsifié est masqué dans les Statistiques avancées. - - Falsifier les options du client - Général - Diffusions en direct - Shorts, Clips - Lecture impossible - iOS - Android - Lecteur intégré Android - Android Test suite - Android TV - Android VR - TV HTML5 - Web - - À propos - iOS - "Falsifier le client vers iOS. - -Créée des effets secondaires : -• Les vidéos HDR supportent uniquement le codec AV1. -• Le temps de visionnage n'es pas enregistré dans l'historique de visionnage pour les comptes de marques." - "Falsifier le client vers iOS. - -Créée des effets secondaires : -• Les vidéos HDR supportent uniquement le codec AV1. -• L'historique de visionnage ne fonctionne pas pour les comptes de marques." - Android Testsuite - "Falsifier le client vers Android Test suite. - -Créée des effets secondaires : -• Pas de vidéo HDR. -• Le menu \"piste audio\" est absent. -• Les sous-titres peuvent ne pas être disponibles. -• Le bouton \"Télécharger\" n'es pas disponible. -• Les cartes d'écran de fin ne sont pas disponibles. -• Les miniatures de la barre de progression sont en basse qualités." - Android TV - "Falsifier le client vers Android TV (YouTube TV). - -Créée des effets secondaires : -• Pas de vidéo HDR. -• Le menu \"piste audio\" est absent. -• Les sous-titres peuvent ne pas être disponibles. -• Le bouton \"Télécharger\" est absent. -• Les miniatures de la barre de progression sont en basse qualités. -• Certaines diffusions en direct ne sont pas pris en charge pour la lecture." - Android VR - "Falsifier le client vers Android VR. - -Les effets secondaires incluent : -• Pas de vidéo HDR. -• Le bouton \"Télécharger\" de la barre d'action vidéo est absent. -• Les vidéos en pause peuvent reprendre aléatoirement. -• Les miniatures de la barre de progression sur les Shorts sont en basses qualités. -• Les vidéos conçues pour les enfants ne seront pas lues." + Historique de visionnage Modifie les paramètres liés à l\'historique de visionnage. @@ -1536,16 +1459,6 @@ Les effets secondaires incluent : Bloquer l\'historique de visionnage Statut de l\'historique de visionnage • L\'historique de visionnage est bloqué. - "• Suis les paramètres de l'historique de visionnage du compte Google. -• L'historique de visionnage peut ne pas fonctionner sur les comptes de marques. -(Le paramètre 'Falsifier le client' est activé et le client iOS est sélectionné)" - "• Suis les paramètres de l'historique de visionnage du compte Google. -• L'historique de visionnage peut ne pas fonctionner à cause d'un DNS ou d'un VPN. -• L'historique de visionnage peut ne pas fonctionner sur les comptes de marques. -(Le paramètre 'Falsifier le client' est activé et le client iOS est sélectionné)" - • Suis les paramètres de l\'historique de visionnage du compte Google. - "• Suis les paramètres de l'historique de visionnage du compte Google. -• L'historique de visionnage peut ne pas fonctionner à cause d'un DNS ou d'un VPN." Informations sur les patchs diff --git a/src/main/resources/youtube/translations/hu-rHU/strings.xml b/src/main/resources/youtube/translations/hu-rHU/strings.xml index adaf00e6ab..ec02c364ca 100644 --- a/src/main/resources/youtube/translations/hu-rHU/strings.xml +++ b/src/main/resources/youtube/translations/hu-rHU/strings.xml @@ -214,8 +214,8 @@ Lejátszási listák A videók a kezdőlapon kulcsszavak alapján szűrve A videók a kezdőlapon nincsenek szűrve Keresési eredmények elrejtése kulcsszavak alapján - A keresési eredmények kulcsszavak alapján szűrve - A keresési eredmények nincsenek szűrve + A keresési eredmények szűrve vannak. + A keresési eredmények nincsenek szűrve. Videók elrejtése a feliratkozások lapon kulcsszavak alapján A videók a feliratkozások lapon kulcsszavak alapján szűrve A videók a feliratkozások lapon nincsenek szűrve @@ -227,7 +227,6 @@ Lejátszási listák A kulcsszó alapú szűrésről "A Kezdőlap/Feliratkozások/Keresés eredményei a kulcsszóval megegyező tartalom elrejtésére vannak szűrve\n\nKorlátozások\n• Néhány Shorts lehet, hogy nem lesz elrejtve\n• Néhány UI elem lehet, hogy nem lesz elrejtve\n• Előfordulhat, hogy a kulcsszó keresése nem hoz eredményt" Érvénytelen kulcsszó.\'%s\'nem használható szűrőként - Érvénytelen kulcsszó. A(z) %1$s kevesebb, mint %2$d karakter. A(z) %1$s kulcsszó elrejtené az összes videót. Ajánlott videó @@ -279,7 +278,7 @@ Lejátszási listák Megnézem később Érvénytelen kezdőlap, visszaállítás az eredetire. Kényszerített automatikus hangsávok letiltása - A kényszerített automatikus hangsávok le vannak tiltva. + "A kényszerített automatikus hangsávok le vannak tiltva." A kényszerített automatikus hangsávok engedélyezve vannak. Kényszerített automatikus feliratok letiltása A kényszerített automatikus feliratok le vannak tiltva. @@ -662,9 +661,6 @@ Beállítások → Automatikus lejátszás → Következő videó automatikus le A jelentés menü megjelenik. További beállítások - Környezeti mód menü elrejtése - Az ambient mód menü el van rejtve. - Az ambient mód menü megjelenik. Segítség és visszajelzés menü elrejtése A segítség és visszajelzés menü el van rejtve. A segítség és visszajelzés menü megjelenik. @@ -1128,9 +1124,15 @@ Megjegyzés: Ezzel a képernyőterület méretét is megváltoztatja, ahol érz Lejátszási sebesség módosításainak megjegyzése A lejátszási sebesség módosítása minden videóra érvényes A lejátszási sebesség módosítása csak a jelenlegi videóra érvényes + Mutass egy felugró értesítést + Egy felugró értesítés fog látszani, amikor megváltozik az alapértelmezett lejátszási sebesség. + Nem fog felugró értesítés látszani, amikor megváltozik az alapértelmezett lejátszási sebesség. Felbontás változtatások mentése Felbontás változtatások alkalmazása az összes videóra Felbontás változtatások alkalmazása a jelenlegi videóra + Mutass egy felugró értesítést + Egy felugró értesítés fog látszani, amikor megváltozik az alapértelmezett videó minőség. + Nem fog felugró értesítés látszani, amikor megváltozik az alapértelmezett videó minőség. Régi videóminőség menü visszaállítása A régi videóminőség menü jelenik meg A régi videóminőség menü nem jelenik meg @@ -1298,6 +1300,7 @@ Egy másik kodek kerül alkalmazásra kb. 20 másodperc pufferezés után."A kihagyások számának követése nem engedélyezett Minimális szegmens időtartam A beállított értéknél (másodpercben) rövidebb szakaszokat nem hagyja ki vagy nem jeleníti meg + Érvénytelen időtartam. Az Ön privát felhasználói azonosítója Ezt bizalmasan kell kezelni. Olyan mint egy jelszó és senkivel sem ajánlott megosztani. Ha valaki megszerzi, meg tudja személyesíteni önt A privát felhasználói azonosítónak legalább 30 karakter hosszúnak kell lennie @@ -1407,21 +1410,6 @@ Egy másik kodek kerül alkalmazásra kb. 20 másodperc pufferezés után."Az app-on belüli megosztási lap van használatban. OPUS kodek engedélyezése Engedélyezi az OPUS kodeket, ha a lejátszó válasza tartalmazza az OPUS kodeket. - Lejátszó paraméter hamisítása - "Meghamisítja a lejátszó paramétereit a lejátszási problémák megelőzése érdekében. - -Korlátozások: -• A fokozott bitráta nem érhető el. -• Nincsenek előnézeti képek a fizetős videókhoz. -• Az offline letöltések lehet, hogy nem működnek. -• Lehet, hogy a videó nem a legutóbbi lejátszott időponttól indul." - Lejátszási paraméter hamisítása a hírfolyamban - "A lejátszóparaméterek meghamisítva a hírfolyam-videók esetében. - -Korlátozás: Az automatikusan lejátszott hírfolyam-videók megjelennek a megtekintett videók listájában." - "A lejátszóparaméterek nincsenek meghamisítva a hírfolyam-videók esetében. - -Korlátozás: A hírfolyamban található videók kevesebb, mint 1 percig játszódnak le, mielőtt lejátszási problémákat tapasztalnának." Beállítások importálása / exportálása Beállítások importálása vagy exportálása. @@ -1444,70 +1432,7 @@ Korlátozás: A hírfolyamban található videók kevesebb, mint 1 percig játsz A beállítások sikeresen importálva. Visszaállítás A beállítások a vágólapra másolva. - - Kliens verzió meghamisítása - Kliens verzió meghamisítása a lejátszási hibák elkerüléséhez. - Kliens verzió meghamisítása - Kliens verzió meghamisítva. - "Kliens verzió nincs hamisítva. Lehet, hogy a videó lejátszás nem működik." - Ez a beállítás kikapcsolása videólejátszási problémákat okozhat. - Megjelenítés a statisztikákban kockáknak - A meghamisított kliens látszik a statisztikában kockáknak. - A meghamisított kliens el van rejtve a statisztikában kockáknak. - - Kliens verzió hamisítási lehetőségek - Általános - Élő közvetítések - Shortok, klippek - Lejátszhatatlan videó - iOS - Android - Android beágyazott lejátszó - Android tesztcsomag - Android TV - Android VR - TV HTML5 - Web - - Névjegy - iOS - "Kliens hamisítása iOS-re. - -A mellékhatások a következők: -• A HDR videót csak AV1 kodekkel támogatja. -• A nézési idő nem kerül mentésre a márkafiók megtekintési előzményeiben." - "Kliens verzió hamisítása iOS-re. - -A mellékhatások a következők lehetnek: -• Nincs HDR videó. -• Hiányzik a lejátszási sebesség menü. -• Előfordulhat, hogy a jobb videóminőség hiányzik. -• A megtekintési előzmények nem működnek márkafiókkal. -• Az élő közvetítések nem játszhatók le csak hangként. -• Az élő közvetítések nem érhetők el Android 8.0 rendszeren." - Android tesztcsomag - "Kliens verzió hamisítása Android Testsuite-ra. - -A mellékhatások a következők lehetnek: -• Nincs HDR videó. -• Hiányzik a hangsáv- és a lejátszási sebesség menü. -• Előfordulhat, hogy a feliratok nem érhetők el." - Android TV - "Kliens verzió hamisítása Android TV-re (YouTube TV). - -A mellékhatások a következők lehetnek: -• Nincs HDR videó. -• Hiányzik a hangsáv- és a lejátszási sebesség menü. -• Előfordulhat, hogy a feliratok nem érhetők el. -• Egyes élő közvetítések lejátszása nem támogatott." - Android VR - "Kliens verzió hamisítása Android VR-ra. - -A mellékhatások a következők lehetnek: -• Nincs HDR videó. -• A szüneteltetett videók véletlenszerűen folytatódhatnak. -• Gyenge minőségű bélyegképek a Shorts keresősávján. -• A gyerekeknek készült videókat nem lehet lejátszani." + Megtekintési előzmények A megtekintési előzményekhez kapcsolódó beállítások módosítása. @@ -1519,16 +1444,6 @@ A mellékhatások a következők lehetnek: Megtekintési előzmények tiltása Megtekintési előzmények állapota • A megtekintési előzmények le vannak tiltva. - "• Követi a Google-fiók megtekintési előzményeinek beállításait. -• Előfordulhat, hogy a megtekintési előzmények nem működnek márkafiókkal. -(A hamis kliens beállítása engedélyezve van, és az iOS kliens ki van választva)" - "• Követi a Google-fiók megtekintési előzményeinek beállításait. -• Előfordulhat, hogy a megtekintési előzmények nem működnek a DNS vagy a VPN miatt. -• Előfordulhat, hogy a megtekintési előzmények nem működnek márkafiókkal. -(A hamis kliens beállítása engedélyezve van, és az iOS kliens ki van választva)" - • Követi a Google-fiók megtekintési előzményeinek beállításait. - "• Követi a Google-fiók megtekintési előzményeinek beállításait. -• Előfordulhat, hogy a megtekintési előzmények nem működnek a DNS vagy a VPN miatt." Patch információ diff --git a/src/main/resources/youtube/translations/it-rIT/strings.xml b/src/main/resources/youtube/translations/it-rIT/strings.xml index d5e5cf8c31..2791a2e4a1 100644 --- a/src/main/resources/youtube/translations/it-rIT/strings.xml +++ b/src/main/resources/youtube/translations/it-rIT/strings.xml @@ -233,7 +233,6 @@ Limitazioni: - Alcuni componenti della interfaccia utente potrebbero non essere nascosti. - La ricerca di una parola chiave potrebbe non mostrare alcun risultato." Parola chiave non valida. Non è possibile usare: \'%s\' come filtro - Parola chiave non valida. \'%1$s\' è lunga meno di %2$d caratteri. La parola chiave \'%1$s\' nasconderà tutti i video. Video consigliati @@ -284,7 +283,7 @@ Limitazioni: Guarda più tardi Scheda iniziale non valida, ripristinata al valore predefinito. Disabilita le tracce audio automatiche forzate - Le tracce audio automatiche forzate sono disattivate. + "Le tracce audio automatiche forzate sono disattivate." Le tracce audio automatiche forzate sono abilitate. Disattiva i sottotitoli automatici forzati I sottotitoli automatici forzati sono disattivati. @@ -667,9 +666,6 @@ Impostazioni → Riproduzione automatica → Riproduzione automatica del video s Il menu Segnala è visibile. Impostazioni aggiuntive - Nascondi il menu Modalità Ambient - Il menu Modalità Ambient è nascosto. - Il menu Modalità Ambient è visibile. Nascondi menu Guida & feedback Il menu Guida & feedback è nascosto. Il menu Guida & feedback è visibile. @@ -1136,9 +1132,15 @@ Problema noto: Poiché questa è una caratteristica nella fase di sviluppo di Go Ricorda le modifiche della velocità di riproduzione Le modifiche della velocità di riproduzione si applicano a tutti i video. Le modifiche della velocità di riproduzione si applicano solo al video corrente. + Mostra un toast + Un toast verrà mostrato quando si cambia la velocità di riproduzione predefinita. + Un toast non verrà mostrato quando si cambia la velocità di riproduzione predefinita. Ricorda i cambiamenti di qualità video I cambiamenti di qualità si applicano a tutti i video. I cambiamenti di qualità si applicano solo al video corrente. + Mostra un toast + Un toast verrà mostrato quando si cambia la velocità di riproduzione predefinita. + Un toast non verrà mostrato quando si cambia la qualità video predefinita. Ripristina il vecchio menu di qualità video Vecchio menu di qualità video è mostrato. Il vecchio menu di qualità video non è mostrato. @@ -1308,6 +1310,7 @@ Limitazione: Non mi piace possono non apparire se l'utente non è registrato o i Il tracciamento del contatore dei salti non è abilitato. Durata minima del segmento I segmenti più brevi di questo valore (in secondi) non verranno mostrati o saltati. + Durata di tempo non valida. Il tuo Id utente privato Questo dovrebbe essere tenuto privato. È come una password e non dovrebbe essere condiviso con nessuno. Se qualcuno dovesse ottenerlo, potrebbe impersonarti. L\'id utente privato deve essere lungo almeno 30 caratteri. @@ -1423,21 +1426,6 @@ Tocca il pulsante continua e disabilita le ottimizzazioni della batteria."Schermata di condivisione nativa in utilizzo. Abilita codec OPUS Abilita il codec OPUS se la risposta del riproduttore include il codec OPUS. - Simula i parametri del riproduttore - "Simula i parametri del riproduttore per prevenire problemi di riproduzione. - -Problemi noti: -• Il bitrate migliorato non sarà disponibile -• La barra di avanzamento nel thumbnail dei video a pagamento sarà nascosta -• Il download offline potrebbe non funzionare -• Il video potrebbe non iniziare dall'ultimo minutaggio visto" - Simula i parametri del riproduttore nei feed - "I parametri del riproduttore sono simulati per i video nei feed. - -Problema noto: i video nei feed riprodotti automaticamente appariranno nella cronologia" - "I parametri del riproduttore non sono simulati per i video nei feed. - -Problema noto: i video nei feed saranno riprodotti per meno di un minuto prima di avere problemi di riproduzione" Importa / Esporta impostazioni Importa o esporta le impostazioni. @@ -1460,70 +1448,7 @@ Problema noto: i video nei feed saranno riprodotti per meno di un minuto prima d Impostazioni importate con successo Ripristina Impostazioni copiate negli appunti - - Spoof client - Spoof il client per prevenire problemi di riproduzione. - Spoof client - Client è spoofato. - "Client non è spoofato. La riproduzione video potrebbe non funzionare." - Disattivare questa impostazione potrebbe causare problemi di riproduzione video. - Mostra nelle statistiche per nerd - Il client spoofato è mostrato nelle statistiche per nerd. - Il client spoofato è nascosto nelle statistiche per nerd. - - Opzioni client Spoof - Generale - Live streams - Shorts, Clips - Alternativa - iOS - Android - Riproduttore Incorporato Android - Suite di test Android - Android TV - Android VR - TV HTML5 - Web - - Informazioni - iOS - "Spoof client to iOS. - -Gli effetti collaterali includono: -• Il video HDR è supportato solo su codec AV1. -• Il tempo di osservazione non viene salvato nella cronologia sull'account brand." - "Spoof client ad iOS. - -Gli effetti collaterali includono: -• Nessun video HDR. -• Manca il menu velocità di riproduzione. -• Potrebbero mancare qualità video più elevate. -• La cronologia delle visualizzazioni non funziona con un account brand. -• Le live Streams non possono essere riprodotti solo come audio. -• Le live streams non sono disponibili su Android 8.0." - Suite di test Android - "Spoof client ad Suite di test Android. - -Gli effetti collaterali includono: -• Nessun video HDR. -• Manca il menu traccia audio e la velocità di riproduzione. -• I sottotitoli potrebbero non essere disponibili." - Android TV - "Spoof client per Android TV (YouTube TV). - -Effetti collaterali includono: -• Nessun video HDR. -• Manca il menu traccia audio e la velocità di riproduzione. -• I sottotitoli potrebbero non essere disponibili. -• Alcune live streams non sono supportati per la riproduzione." - Android VR - "Spoof client ad Android VR. - -Gli effetti collaterali includono: -• Nessun video HDR. -• I video in pausa possono riprendere in modo casuale. -• Bassa qualità miniature della barra di ricerca. -• I video per bambini non riproducono." + Cronologia Cambia le impostazioni relative alla cronologia. @@ -1535,16 +1460,6 @@ Gli effetti collaterali includono: Blocca cronologia Informazioni sulla cronologia • La cronologia non funziona. - "• Segue le impostazioni di cronologia dell'account Google. -• La cronologia potrebbe non funzionare con un account brand. -(L'impostazione di Spoof del client è attiva e il client iOS è selezionato)" - "• Segue le impostazioni di cronologia dell'account Google. -• La cronologia potrebbe non funzionare a causa di DNS o VPN. -• La cronologia potrebbe non funzionare con un account brand. -(L'impostazione di Spoof del client è attiva e il client iOS è selezionato)" - • Segue le impostazioni di cronologia dell\'account Google. - "• Segue le impostazioni di cronologia dell'account Google. -• La cronologia potrebbe non funzionare a causa di DNS o VPN." Informazioni patch diff --git a/src/main/resources/youtube/translations/ja-rJP/strings.xml b/src/main/resources/youtube/translations/ja-rJP/strings.xml index 07bfe57b8e..4f87d85c4e 100644 --- a/src/main/resources/youtube/translations/ja-rJP/strings.xml +++ b/src/main/resources/youtube/translations/ja-rJP/strings.xml @@ -52,7 +52,7 @@ 検索フィードから Web 検索結果を非表示にします。 検索フィードから Web 検索結果を非表示にします。 YouTube Premium のプロモーションを非表示 - プレーヤーと動画の説明の間に表示される YouTube Premium バナーを非表示にします。 + プレーヤーと動画の説明の間に表示される YouTube Premium のバナーを非表示にします。 プレーヤーと動画の説明の間に表示される YouTube Premium のバナーを非表示にします。 代替サムネイル @@ -230,7 +230,6 @@ DeArrowの詳細については、ここをタップしてください。" 無効なキーワードです。\'%s\' はフィルターとして使用できません - 無効なキーワードです。「%1$s」 は %2$d 文字未満です。 キーワード「%1$s」は範囲が広すぎるため、すべての動画を非表示にします。 おすすめ動画 @@ -282,8 +281,12 @@ DeArrowの詳細については、ここをタップしてください。"後で見る 無効なスタートページです。デフォルトにリセットします。 音声トラックの強制を無効化 - 音声トラックの自動的な強制を無効化します。 - 音声トラックの自動的な強制を無効化します。 + "音声トラックが自動で選択されるのを無効化します。 + +注意: この設定はショートには適用されません。" + 音声トラックが自動で選択されるのを無効化します。 + +注意: この設定はショートには適用されません。 字幕の強制を無効化 字幕の自動的な強制を無効化します。 字幕の自動的な強制を無効化します。 @@ -309,7 +312,7 @@ DeArrowの詳細については、ここをタップしてください。"スマートフォン用レイアウトの一部を使用できるように、dpi を偽装します。 タブレット用のレイアウトを有効化 タブレット用レイアウトの一部を使用できるように、dpi を偽装します。 - ダウンロードボタンを置き換え + 「オフライン」ボタンを置き換え 「オフライン」ボタンで外部ダウンローダーを開きます。 「オフライン」ボタンで外部ダウンローダーを開きます。 プレイリストにダウンロードボタンを追加 @@ -661,9 +664,6 @@ DeArrowの詳細については、ここをタップしてください。"「報告」メニューを非表示にします。 その他の設定 - 「アンビエントモード」を非表示 - 「アンビエントモード」メニューを非表示にします。 - 「アンビエントモード」メニューを非表示にします。 「ヘルプとフィードバック」を非表示 「ヘルプとフィードバック」メニューを非表示にします。 「ヘルプとフィードバック」メニューを非表示にします。 @@ -679,6 +679,9 @@ DeArrowの詳細については、ここをタップしてください。"「Premium のコントロール」を非表示 「Premium のコントロール」メニューを非表示にします。 「Premium のコントロール」メニューを非表示にします。 + スリープタイマーメニューを非表示 + 「スリープタイマー」メニューを非表示にします。 + 「スリープタイマー」メニューを非表示にします。 「一定音量」を非表示 「一定音量」メニューを非表示にします。 「一定音量」メニューを非表示にします。 @@ -878,10 +881,10 @@ DeArrowの詳細については、ここをタップしてください。"現在の設定: シークバーの上にサムネイルを表示します。 現在の設定: 全画面表示時に、シークバーの上にサムネイルを表示します。 Cairo シークバーを有効化 - "Cairo シークバー(シークバーの色が動画に応じて変更される機能)を有効化します。 + "Cairo シークバー (シークバーの色が動画に応じて変更される機能) を有効化します。 注意: 通知ドットにも Cairo テーマが適用されるという副作用があります。" - Cairo シークバー(シークバーの色が動画に応じて変更される機能)を有効化します。\n\n注意: 通知ドットにも Cairo テーマが適用されるという副作用があります。 + Cairo シークバー (シークバーの色が動画に応じて変更される機能) を有効化します。\n\n注意: 通知ドットにも Cairo テーマが適用されるという副作用があります。 概要欄 概要欄のコンポーネントを非表示または表示 @@ -1077,7 +1080,7 @@ DeArrowの詳細については、ここをタップしてください。"明るさの保存と復元を有効化 全画面表示を終了/開始した際に明るさを保存/復元します。 全画面表示を終了/開始した際に明るさを保存/復元します。 - 長押し時のみのスワイプコントロールを有効化 + 「長押ししてスワイプ」ジェスチャーを有効化 全画面表示時に、長押し時のみスワイプジェスチャーを有効化します。 全画面表示時に、長押し時のみスワイプジェスチャーを有効化します。 触覚フィードバックを有効化 @@ -1129,9 +1132,15 @@ DeArrowの詳細については、ここをタップしてください。"再生速度の変更を保存 現在の設定: 再生速度の変更はすべての動画に適用されます。 現在の設定: 再生速度の変更は現在の動画にのみ適用されます。 + トーストを表示 + デフォルトの再生速度を変更した際にトーストが表示されるようにします。 + デフォルトの再生速度を変更した際にトーストが表示されるようにします。 画質の変更を保存 現在の設定: 画質の変更はすべての動画に適用されます。 現在の設定: 画質の変更は現在の動画にのみ適用されます。 + トーストを表示 + デフォルトの画質を変更した際にトーストが表示されるようにします。 + デフォルトの画質を変更した際にトーストが表示されるようにします。 古いスタイルの画質メニューを復元 古いスタイルの画質設定メニューを復活させます。 古いスタイルの画質設定メニューを復活させます。 @@ -1220,7 +1229,7 @@ DeArrowの詳細については、ここをタップしてください。"有料プロモーション、有料紹介、直接広告が含まれます。セルフプロモーションや、個人の好きなクリエイター/ウェブサイト/商品に対する無償の活動は含まれません。 無報酬 / セルフプロモーション 無報酬のプロモーションあるいはセルフプロモーションであるという点を除いては「スポンサー」と同様です。商品、寄付、コラボ情報に関する内容を含みます。 - 行動を促すメッセージ(チャンネル登録等) + 行動を促すメッセージ (チャンネル登録等) 動画の途中に挿入される高評価、チャンネル登録、フォローなどを促す短いリマインダーは、長いものや何か具体的なものは「セルフプロモーション」に分類するべきです。 ハイライト 動画の中で多くの人々が見たい部分 @@ -1301,6 +1310,7 @@ DeArrowの詳細については、ここをタップしてください。"スキップ回数の集計を有効化します。 最小のセグメントの長さ この値 (秒) より短いセグメントは、表示もスキップもされません。 + 無効な時間の値です。 プライベートユーザー ID 「プライベートユーザー ID」は公開しないようにしてください。この ID はパスワードのようなものなので、誰とも共有しないでください。誰かが ID を知っている場合、あなたになりすますことができます。 「プライベート ユーザー ID」は 30 字以上でなければなりません。 @@ -1328,7 +1338,7 @@ DeArrowの詳細については、ここをタップしてください。"セグメントを送信できません: %s セグメントを送信できません。\n既に存在します。 セグメントは正常に送信されました - セグメントを評価できません (API タイムアウト) + セグメントを評価できません (API がタイムアウトしました) セグメントの評価を送信できません (ステータス: %1$d %2$s) セグメントの評価を送信できません: %s 賛成 @@ -1346,7 +1356,7 @@ DeArrowの詳細については、ここをタップしてください。"セグメントの終了時刻 これらの変更は正しいですか? セグメントは\n\n%1$s\nから\n%2$s\n\n(%3$s)です。\n\n送信してもよろしいですか? - 開始は終了より前になければなりません + 開始は終了より前である必要があります タイムバーの2か所をマークしてください セグメントをプレビューして、スムーズにスキップできるようにしてください。 セグメントのタイミングを手動で編集 @@ -1416,21 +1426,6 @@ DeArrowの詳細については、ここをタップしてください。"「共有」ボタンをタップした際に表示される共有メニューを、システムの共有メニューに置き換えます。 OPUS コーデックを有効化 プレーヤーの応答に OPUS コーデックが含まれている場合、OPUS コーデックを有効化します。 - プレーヤーのパラメーターを偽装 - "プレーヤーのパラメーターを偽装して、再生の問題を防ぎます。 - -注意: -• 拡張ビットレートは利用できません。 -• 有料動画のシークバーサムネイルは機能しません。 -• オフラインへの動画の保存が機能しない場合があります。 -• 動画が最後に視聴した時間から開始されない場合があります。" - フィードのパラメーターを偽装 - "現在の設定: フィードの動画のパラメーターを偽装します。 - -既知の問題: 自動再生されたフィードの動画が再生履歴に表示されます。" - "現在の設定: フィードの動画のパラメーターを偽装しません。 - -注意: フィードの動画は、1分未満でバッファリングの問題が発生します。" 設定のインポート/エクスポート 設定をインポートまたはエクスポートします。 @@ -1453,72 +1448,7 @@ DeArrowの詳細については、ここをタップしてください。"設定は正常にインポートされました。 リセット 設定をクリップボードにコピーしました。 - - クライアントを偽装 - バッファリングの問題を防ぐためにクライアントを偽装します。 - クライアントを偽装 - クライアントの偽装をしていない場合、動画の再生ができない可能性があります。 - "クライアントの偽装をしていない場合、動画の再生ができない可能性があります。" - この設定をオフにした場合、バッファリングの問題が発生する可能性があります。 - 統計情報に偽装したクライアントを表示 - 統計情報に偽装したクライアントを表示します。 - 統計情報に偽装したクライアントを表示します。 - - 偽装するクライアントのオプション - 一般 - ライブ配信 - ショート、クリップ - 再生できない動画 - iOS - Android - Android 埋め込みプレーヤー - Android Testsuite - Android TV - Android VR - TV HTML5 - Web - - 偽装するクライアントについて - iOS - "iOS クライアントに偽装します。 - -以下の副作用があります: -• HDR 画質は AV1 コーデック対応端末以外では使用できません。 -• 再生履歴はブランドアカウントでは保存されません。" - "iOS クライアントに偽装します。 - -以下の副作用があります: -• HDR 画質は AV1 コーデック対応端末以外では使用できません。 -• 再生履歴がブランドアカウントでは保存されません。" - Android Testsuite - "Android Testsuite に偽装します。 - -以下の副作用があります: -• HDR 画質は使用できません。 -• オーディオトラックメニューは表示されません。 -• 字幕が利用できない可能性があります。 -• ダウンロードボタンは表示されません。 -• エンドカードは表示されません。 -• シークバーのサムネイルが低画質になります。" - Android TV - "Android TV (YouTube TV) に偽装します。 - -以下の副作用があります: -• HDR 画質は使用できません。 -• オーディオトラックメニューは表示されません。 -• 字幕が利用できない可能性があります。 -• ダウンロードボタンは表示されません。 -• シークバーのサムネイルが低画質になります。 -• 一部のライブ配信は再生できません。" - Android VR - "Android VR に偽装します。 - -以下の副作用があります: -• HDR 画質は使用できません。 -• ダウンロードボタンは表示されません。 -• 一時停止した動画がランダムに再開する場合があります。 -• ショートのシークバーのサムネイルが低画質になります。 -• 子供向けの動画は再生できません。" + 再生履歴 再生履歴に関連する設定を変更します。 @@ -1530,15 +1460,8 @@ DeArrowの詳細については、ここをタップしてください。"再生履歴をブロック 再生履歴のステータス • 再生履歴をブロックします。 - "• Google アカウントの再生履歴の設定に従います。 -• ブランドアカウントでは再生履歴が表示されない可能性があります。 -(クライアント偽装の設定が有効になっており iOS クライアントが選択されている場合)" - "• Google アカウントの再生履歴の設定に従います。 -• DNS や VPN が原因で再生履歴が表示されない可能性があります。 -• ブランドアカウントでは再生履歴が表示されない可能性があります。 -(クライアント偽装の設定が有効になっており iOS クライアントが選択されている場合)" - • Google アカウントの再生履歴の設定に従います。 - "• Google アカウントの再生履歴の設定に従います。 + • Google アカウントの再生履歴の設定に従います。 + "• Google アカウントの再生履歴の設定に従います。 • DNS や VPN が原因で再生履歴が動作しない可能性があります。" パッチ情報 diff --git a/src/main/resources/youtube/translations/ko-rKR/strings.xml b/src/main/resources/youtube/translations/ko-rKR/strings.xml index 000fa64629..410658b636 100644 --- a/src/main/resources/youtube/translations/ko-rKR/strings.xml +++ b/src/main/resources/youtube/translations/ko-rKR/strings.xml @@ -58,7 +58,7 @@ 대체 썸네일 홈 탭 구독 탭 - 나(보관함) 탭 + 내 페이지 탭 플레이어: 재생목록, 관련 동영상 ... 검색 결과 기본 썸네일 @@ -228,17 +228,23 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 키워드 필터 "필터링할 키워드 및 구문을 줄바꿈으로 구분하여 설정합니다. -영어 키워드는 대소문자를 구분하여 입력해야 합니다." +필터링 키워드는 채널 이름 또는 동영상 제목에 표시되는 모든 텍스트가 될 수 있습니다. + +가운데 대문자가 있는 단어는 대소문자를 함께 입력해야 합니다 (예: iPhone, TikTok, LeBlanc)." 키워드 필터링 정보 - "홈 피드 / 구독 피드 / 검색 결과 / 댓글 섹션에서 키워드와 일치하는 콘텐츠가 숨겨집니다. + "홈 / 구독 / 검색 결과가 필터링되어 키워드 구문과 일치하는 콘텐츠가 숨겨집니다. 알려진 문제점: -• 일부 Shorts는 숨겨지지 않을 수 있습니다. -• 일부 화면 구성요소가 숨겨지지 않을 수 있습니다. -• 필터링 키워드를 검색하면 결과가 표시되지 않을 수 있습니다." - 잘못된 키워드입니다. \'%s\'를 필터로 사용할 수 없습니다. - \'%1$s\'는 잘못된 키워드입니다. 필터링 키워드는 %2$d 글자 이상이어야 합니다. - 키워드 \'%1$s\'를 사용하면 모든 동영상이 숨겨집니다. +• 채널 이름으로 Shorts는 숨길 수 없습니다. +• 일부 화면 구성요소는 숨겨지지 않을 수 있습니다. +• 필터링 키워드를 검색하면 검색 결과가 표시되지 않을 수 있습니다." + 전체 단어 일치시키기 + 필터링할 키워드 및 구문을 큰따옴표로 묶으면 동영상 제목과 채널 이름이 부분적으로 일치하지 않도록 방지할 수 있습니다.<br><br>예를 들어,<br><b>\"ai\"</b>라는 키워드로 <b>How does AI work?</b><br>라는 제목의 동영상을 숨길 수 있지만, <b>What does fair use mean?</b>라는 제목의 동영상은 숨길 수 없습니다. + 키워드를 사용할 수 없습니다: %s + 따옴표를 추가하여 키워드를 사용합니다: %s + 키워드에 충돌하는 선언이 있습니다: %s + 키워드가 너무 짧아서 따옴표가 필요합니다: %s + 키워드가 모든 동영상을 숨깁니다: %s 추천 동영상 추천 동영상 숨기기 @@ -274,7 +280,7 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 탐색 게임 기록 - 나 (보관함) + 내 페이지 좋아요 표시한 동영상 실시간 영화 @@ -287,7 +293,9 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 나중에 볼 동영상 잘못된 앱 시작 페이지이므로 기본값으로 초기화합니다. 자동 오디오 트랙 비활성화하기 - 오디오 트랙 사용이 강제된 동영상에서 오디오 트랙을 비활성화합니다. + "오디오 트랙 사용이 강제된 동영상에서 오디오 트랙을 비활성화합니다. + +알려진 문제점: 이 설정은 Shorts에는 적용되지 않습니다." 오디오 트랙 사용이 강제된 동영상에서 오디오 트랙을 활성화합니다. 자동 자막 비활성화하기 자막 사용이 강제된 동영상에서 자막을 비활성화합니다. @@ -339,7 +347,7 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 18.48.39 - \'조회수\' & \'좋아요\'의 실시간 업데이트를 비활성화합니다. 계정 메뉴 - 계정 메뉴와 나(보관함) 탭에서 구성요소를 숨기거나 표시할 수 있습니다. + 계정 메뉴와 내 페이지 탭에서 구성요소를 숨기거나 표시할 수 있습니다. 계정 메뉴 숨기기 "계정 메뉴 및 나 탭에서 구성요소가 숨겨집니다. 일부 구성요소는 숨겨지지 않을 수 있습니다." @@ -401,9 +409,9 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 홈 버튼 숨기기 홈 버튼이 숨겨집니다. 홈 버튼이 표시됩니다. - 나(보관함) 버튼 숨기기 - 나(보관함) 버튼이 숨겨집니다. - 나(보관함) 버튼이 표시됩니다. + 내 페이지 버튼 숨기기 + 내 페이지 버튼이 숨겨집니다. + 내 페이지 버튼이 표시됩니다. 알림 버튼 숨기기 알림 버튼이 숨겨집니다. 알림 버튼이 표시됩니다. @@ -668,9 +676,6 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 신고 메뉴가 표시됩니다. 추가 설정 - 앰비언트 모드 메뉴 숨기기 - 앰비언트 모드 메뉴가 숨겨집니다. - 앰비언트 모드 메뉴가 표시됩니다. 고객센터 메뉴 숨기기 고객센터 메뉴가 숨겨집니다. 고객센터 메뉴가 표시됩니다. @@ -686,6 +691,9 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." Premium 설정 메뉴 숨기기 Premium 설정 메뉴가 숨겨집니다. Premium 설정 메뉴가 표시됩니다. + 취침 타이머 메뉴 숨기기 + 취침 타이머 메뉴가 숨겨집니다. + 취침 타이머 메뉴가 표시됩니다. 안정적인 볼륨 메뉴 숨기기 안정적인 볼륨 메뉴가 표시됩니다. 안정적인 볼륨 메뉴가 숨겨집니다. @@ -1005,6 +1013,9 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 검색 추천 숨기기 검색 추천이 숨겨집니다. 검색 추천이 표시됩니다. + \'이 사운드 사용\' 버튼 숨기기 + \'이 사운드 사용\' 버튼이 숨겨집니다. + \'이 사운드 사용\' 버튼이 표시됩니다. 정보 패널 숨기기 정보 패널이 숨겨집니다. 정보 패널이 표시됩니다. @@ -1437,21 +1448,6 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." YouTube 기본 공유 시트를 사용합니다. OPUS 코덱 활성화하기 플레이어 응답에 OPUS 코덱이 포함된 경우에는 OPUS 코덱을 활성화합니다. - 플레이어 매개변수 변경하기 - "플레이어 매개변수를 변경하여 재생 문제를 방지합니다. - -알려진 문제점: -• 향상된 비트 전송률을 사용할 수 없습니다. -• 유료 동영상에서 재생바 미리보기 썸네일을 표시할 수 없습니다. -• 오프라인 저장이 작동되지 않을 수 있습니다. -• 동영상이 마지막으로 시청한 시간부터 시작되지 않을 수 있습니다." - 피드 동영상 플레이어 매개변수 변경하기 - "피드 동영상에 대한 플레이어 매개변수를 변경합니다. - -알려진 문제점: 자동으로 재생된 피드 동영상이 시청 기록에 저장됩니다." - "피드 동영상에 대한 플레이어 매개변수를 변경하지 않습니다. - -알려진 문제점: 피드 동영상을 1분 정도 재생한 후에 재생 문제가 발생합니다." 설정 가져오기 / 내보내기 설정을 가져오거나 내보낼 수 있습니다. @@ -1474,79 +1470,36 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 설정을 성공적으로 가져왔습니다. 초기화 설정을 클립보드에 복사하였습니다. - - 클라이언트 변경하기 - 클라이언트를 변경하여 재생 문제를 방지할 수 있습니다. - 클라이언트 변경하기 - 클라이언트를 변경합니다. - "클라이언트를 변경하지 않습니다. \n동영상 재생 문제가 발생할 수 있습니다." - 이 설정을 비활성화하면 동영상 재생 문제가 발생할 수 있습니다. - 클라이언트 타입 변경하기 - iOS AVC (H.264) 강제로 활성화하기 - iOS 동영상 코덱을 AVC (H.264)로 활성화합니다. - iOS 동영상 코덱을 AVC (H.264), VP9 또는 AV1으로 활성화합니다. - "이 설정을 활성화하면 배터리 수명이 향상되고 재생 끊김 현상이 해결될 수 있습니다. - -AVC (H.264)의 최대 해상도는 1080p이며 동영상을 재생하면 VP9 또는 AV1보다 더 많은 인터넷 데이터가 사용됩니다." - 전문 통계에서 표시하기 - 전문 통계에서 변경된 클라이언트를 표시합니다. - 전문 통계에서 변경된 클라이언트를 표시하지 않습니다. - - 클라이언트 옵션 변경하기 - 일반 동영상 - 실시간 스트림 - Shorts, 클립 - 재생할 수 없는 동영상 - iOS - Android - Android 내장 플레이어 - Android TestSuite - Android TV - Android VR - TV HTML5 - Web - - 정보 - iOS - "클라이언트를 iOS 클라이언트로 변경합니다. - -알려진 문제점: -• HDR 동영상은 하드웨어 AV1 디코딩을 지원하는 AP가 탑재된 기기에서만 재생할 수 있습니다. -• 브랜드 계정의 시청 기록에서 '마지막으로 시청한 동영상 시간'이 저장되지 않습니다." - "클라이언트를 iOS 클라이언트로 변경합니다. - -알려진 문제점: -• HDR 동영상은 하드웨어 AV1 디코딩을 지원하는 AP가 탑재된 기기에서만 재생할 수 있습니다. -• 브랜드 계정에서는 시청 기록이 작동되지 않을 수 있습니다." - Android TestSuite - "클라이언트를 Android TestSuite 클라이언트로 변경합니다. - -알려진 문제점: -• HDR 동영상이 재생되지 않을 수 있습니다. -• 메뉴 구성요소에서 오디오 트랙 메뉴가 표시되지 않습니다. -• 자막이 표시되지 않을 수 있습니다. -• 플레이어 하단에서 오프라인 저장 버튼이 표시되지 않습니다. -• 최종 화면 카드가 표시되지 않습니다. -• 저화질 재생바 썸네일이 표시됩니다." - Android TV - "클라이언트를 Android TV (YouTube TV) 클라이언트로 변경합니다. - -알려진 문제점: -• HDR 동영상이 재생되지 않을 수 있습니다. -• 메뉴 구성요소에서 오디오 트랙 메뉴가 표시되지 않습니다. -• 자막이 표시되지 않을 수 있습니다. -• 플레이어 하단에서 오프라인 저장 버튼이 표시되지 않습니다. -• 저화질 재생바 썸네일이 표시됩니다. -• 일부 실시간 스트림을 재생할 수 없습니다." - Android VR - "클라이언트를 Android VR 클라이언트로 변경합니다. + + 스트리밍 데이터 변경하기 + 스트리밍 데이터를 변경하여 재생 문제를 방지할 수 있습니다. + 스트리밍 데이터 변경하기 + 스트리밍 데이터를 변경합니다. + "스트리밍 데이터를 변경하지 않습니다.\n동영상이 재생되지 않을 수 있습니다." + 이 설정을 비활성화하면 동영상 재생 문제가 발생할 수 있습니다. + 기본 클라이언트 + iOS + Android + Android Embedded Player + Android TestSuite + Android TV + Android VR + TV HTML5 + Web + 알려진 문제점 변경하기 + • 영화 또는 유료 동영상이 재생되지 않을 수 있습니다. + • 오디오 트랙 메뉴가 표시되지 않습니다. + • 오디오 트랙 메뉴가 표시되지 않습니다. + • 동영상이 재생되지 않을 수 있습니다. + iOS AVC (H.264) 강제로 활성화하기 + iOS 동영상 코덱을 AVC (H.264)로 활성화합니다.\n\n• 일부 동영상을 재생하면 누락되었던 화질 값들이 표시될 수 있습니다.\n• 최대 화질 값이 1080p이므로 초고화질 동영상은 재생할 수 없습니다. + iOS 동영상 코덱을 AVC (H.264), VP9 또는 AV1으로 활성화합니다.\n\n• VP9 코덱 응답만 받는 기기에서 일부 동영상을 재생하면 일부 화질 값들이 누락될 수 있습니다. + "이 설정을 활성화하면 배터리 수명이 향상되고 재생 끊김 현상이 해결될 수 있습니다. -알려진 문제점: -• HDR 동영상이 재생되지 않을 수 있습니다. -• 플레이어 하단에서 오프라인 저장 버튼이 표시되지 않습니다. -• 일시 정지된 동영상이 갑자기 다시 재생될 수 있습니다. -• 저화질 Shorts 재생바 썸네일이 표시됩니다. -• Kids 동영상을 재생할 수 없습니다." +AVC (H.264)의 최대 화질 값은 1080p이며 동영상을 재생하면 VP9 또는 AV1보다 더 많은 인터넷 데이터가 사용됩니다." + 전문 통계에서 표시하기 + \'스트리밍 데이터를 가져오는 데 사용되는 클라이언트\'가 전문 통계에서 표시됩니다. + \'스트리밍 데이터를 가져오는 데 사용되는 클라이언트\'가 전문 통계에서 숨겨집니다. 시청 기록 시청 기록과 관련된 설정을 변경할 수 있습니다. @@ -1558,17 +1511,9 @@ AVC (H.264)의 최대 해상도는 1080p이며 동영상을 재생하면 VP9 또 시청 기록 차단 시청 기록 상태 • 시청 기록이 차단됩니다. - "• Google 계정의 시청 기록 설정을 따릅니다. -• 광고 차단기, 광고 차단 기능이 내장된 DNS 또는 VPN을 우회하기 위해 도메인을 변경합니다. -• 브랜드 계정에서는 시청 기록이 작동되지 않을 수 있습니다. -('클라이언트 변경하기' 설정이 활성화되어 있고, iOS 클라이언트로 변경되어 있는 경우)" - "• Google 계정의 시청 기록 설정을 따릅니다. -• 광고 차단기, 광고 차단 기능이 내장된 DNS 또는 VPN으로 인해 시청 기록이 작동되지 않을 수 있습니다. -• 브랜드 계정에서는 시청 기록이 작동되지 않을 수 있습니다. -('클라이언트 변경하기' 설정이 활성화되어 있고, iOS 클라이언트로 변경되어 있는 경우)" - • Google 계정의 시청 기록 설정을 따릅니다.\n• 광고 차단기, 광고 차단 기능이 내장된 DNS 또는 VPN을 우회하기 위해 도메인을 변경합니다. - "• Google 계정의 시청 기록 설정을 따릅니다. -• 광고 차단기, 광고 차단 기능이 내장된 DNS 또는 VPN으로 인해 시청 기록이 작동되지 않을 수 있습니다." + • Google 계정의 시청 기록 설정을 따릅니다. + "• Google 계정의 시청 기록 설정을 따릅니다. +• '광고 차단기', '광고 & 추적 차단 기능이 내장된 DNS 또는 VPN'으로 인해 시청 기록이 작동되지 않을 수 있습니다." 패치 정보 diff --git a/src/main/resources/youtube/translations/pl-rPL/strings.xml b/src/main/resources/youtube/translations/pl-rPL/strings.xml index 5833da55f9..2209ce5341 100644 --- a/src/main/resources/youtube/translations/pl-rPL/strings.xml +++ b/src/main/resources/youtube/translations/pl-rPL/strings.xml @@ -231,7 +231,6 @@ Ograniczenia: • Niektóre elementy interfejsu użytkownika mogą nie być ukryte. • Wyszukiwanie słowa z filtru może nie pokazywać żadnych wyników." Nieprawidłowe słowo. Nie można użyć: \'%s\' jako filtru - Nieprawidłowe słowo. \'%1$s\' ma mniej niż %2$d znaków. Słowo \'%1$s\' ukryje wszystkie filmy. Rekomendowane filmy @@ -282,7 +281,9 @@ Ograniczenia: Do obejrzenia Nieprawidłowa strona startowa, zresetowano do domyślnej. Wymuszone ścieżki dźwiękowe - Wyłączone + "Wyłączone + +Ograniczenie: ustawienie nie działa na Shortsy." Włączone Wymuszone napisy Wyłączone @@ -665,9 +666,6 @@ Autoodtwarzanie można zmienić w ustawieniach YouTube: Widoczne Dodatkowe ustawienia - Menu od oświetlenia kinowego - Ukryte - Widoczne Menu od pomocy i opinii Ukryte Widoczne @@ -683,6 +681,9 @@ Autoodtwarzanie można zmienić w ustawieniach YouTube: Menu od elementów sterujących Premium Ukryte Widoczne + Menu od wyłącznika czasowego + Ukryte + Widoczne Menu od stabilnej głośności Widoczne Ukryte @@ -1132,9 +1133,15 @@ Ograniczenia: Zapamiętuj zmiany prędkości odtwarzania Zmiany prędkości odtwarzania dotyczą wszystkich filmów Zmiany prędkości odtwarzania dotyczą tylko bieżącego filmu + Komunikaty o zmianie domyślnej prędkości odtwarzania + Włączone + Wyłączone Zapamiętuj zmiany jakości filmu Zmiany jakości dotyczą wszystkich filmów Zmiany jakości dotyczą tylko bieżącego filmu + Komunikaty o zmianie domyślnej jakości filmów + Włączone + Wyłączone Stare menu od jakości filmu Widoczne Niewidoczne @@ -1305,6 +1312,7 @@ Ograniczenie: Liczba łapek w dół może nie być widoczna, gdy użytkownik nie Wyłączone Minimalny czas segmentu Segmenty krótsze niż ta wartość (w sekundach) nie będą pokazywane ani pomijane. + Nieprawidłowy czas trwania. Twój prywatny identyfikator użytkownika Nie powinno się go dzielić, działa jak hasło. Jeżeli ktoś go posiada, może korzystać z SponsorBlock jako ty np. może wysyłać segmenty. Prywatny identyfikator użytkownika musi mieć przynajmniej 30 znaków. @@ -1420,21 +1428,6 @@ Kontynuuj i wyłącz optymalizację baterii." Aplikacji Włącz kodek OPUS Włącza kodek OPUS, jeśli odpowiedź odtwarzacza zawiera ten kodek. - Oszukaj parametry odtwarzacza - "Oszukuje parametry odtwarzacza, aby uniknąć problemów z odtwarzaniem. - -Ograniczenia: -• Zwiększony bitrate nie jest dostępny. -• Brak podglądu podczas przewijania dla płatnych filmów. -• Pobieranie może nie działać. -• Filmy mogą nie być rozpoczynane od momentu ostatniego oglądania." - Oszukaj parametry na stronie głównej - "Parametry są oszukiwane na stronie głównej. - -Ograniczenie: automatycznie odtwarzane filmy będą zapisywane do historii oglądania." - "Parametry nie są oszukiwane na stronie głównej. - -Ograniczenie: filmy na stronie głównej będą odtwarzane przez mniej niż minutę przed napotkaniem problemów z odtwarzaniem." Zaimportuj / Wyeksportuj ustawienia Ustawienia importu oraz eksportu @@ -1457,72 +1450,7 @@ Ograniczenie: filmy na stronie głównej będą odtwarzane przez mniej niż minu Ustawienia zostały pomyślnie zaimportowane. Zresetuj Skopiowano ustawienia do schowka. - - Oszukuj klienta - Oszukuj klienta, by zapobiec problemom z odtwarzaniem. - Oszukiwanie klienta - Włączone - "Wyłączone. Odtwarzanie filmu może nie działać." - Wyłączenie tej opcji może spowodować problemy z odtwarzaniem filmów. - Informacja w statystykach dla nerdów - Widoczna - Ukryta - - Klient do oszukiwania - Ogólne - Transmisje na żywo - Shortsy, Klipy - Zastępczy - iOS - Android - Wbudowany odtwarzacz Androida - Klient Testowy dla Androida - Android TV - Android VR - TV HTML5 - Przeglądarka - - O ustawieniu - iOS - "Oszukuje klienta do iOS. - -Efekty uboczne: -• Filmy z HDR są wspierane jedynie przy kodeku AV1 -• Czas oglądania filmu w historii oglądania nie jest zapisywany na firmowych kontach" - "Oszukuje klienta do iOS. - -Efekty uboczne: -• Filmy z HDR są wspierane jedynie przy kodeku AV1 -• Historia odtwarzania nie działa na firmowych kontach" - Klient Testowy dla Androida - "Oszukuje klienta do Klienta Testowego dla Androida. - -Efekty uboczne: -• Brak filmów z HDR -• Brak menu od ścieżki dźwiękowej -• Napisy mogą być niedostępne -• Brakuje przycisku od pobierania -• Brakuje kart końcowych w filmach -• Niska jakość podglądu podczas przewijania filmu" - Android TV - "Oszukuje klienta do Android TV (YouTube TV). - -Efekty uboczne: -• Brak filmów z HDR -• Brak menu od ścieżki dźwiękowej -• Napisy mogą być niedostępne -• Brakuje przycisku od pobierania -• Niska jakość podglądu podczas przewijania fiilmu -• Niektóre transmisje na żywo mogą nie być odtwarzane" - Android VR - "Oszukuje klienta do Android VR. - -Efekty uboczne: -• Brak filmów z HDR -• Brakuje przycisku od pobierania na pasku akcji -• Zatrzymane filmy mogą zostać losowo wznowione -• Niska jakość podglądu podczas przewijania Shortsów -• Filmy dla dzieci nie mogą zostać odtworzone" + Historia oglądania Zmień ustawienia związane z historią oglądania @@ -1534,16 +1462,9 @@ Efekty uboczne: Wyłączona O historii oglądania • Historia oglądania nie działa - "• Stosuje się do ustawień historii oglądania konta Google -• Historia oglądania może nie działać na firmowym koncie -(Gdy oszukiwanie klienta jest włączone i wybrano klienta iOS)" - "• Stosuje się do ustawień historii oglądania konta Google -• Historia oglądania może nie działać przez DNS lub VPN -• Historia oglądania może nie działać na firmowym koncie -(Gdy oszukiwanie klienta jest włączone i wybrano klienta iOS)" - • Stosuje się do ustawień historii oglądania konta Google - "• Stosuje się do ustawień historii oglądania konta Google -• Historia oglądania może nie działać przez DNS lub VPN" + • Stosuje się do ustawień historii oglądania konta Google + "• Stosuje się do ustawień historii oglądania konta Google +• Historia oglądania może nie działać przy używaniu DNS lub VPN" Lista łatek diff --git a/src/main/resources/youtube/translations/pt-rBR/strings.xml b/src/main/resources/youtube/translations/pt-rBR/strings.xml index 0781108519..3145548d55 100644 --- a/src/main/resources/youtube/translations/pt-rBR/strings.xml +++ b/src/main/resources/youtube/translations/pt-rBR/strings.xml @@ -233,7 +233,6 @@ Limitações: • Alguns componentes da UI podem não ser ocultos. • A pesquisa por uma palavra-chave pode não apresentar resultados." Palavra-chave inválida. Não pode usar: \'%s\' como um filtro - Palavra-chave inválida. \'%1$s\' tem menos de %2$d caracteres Palavra-chave \'%1$s\' irá ocultar todos os vídeos. Vídeo recomendado @@ -285,7 +284,7 @@ Limitações: Assistir mais tarde Página inicial inválida, redefinindo para o padrão. Desativar faixas de áudio automáticas forçadas - As faixas de áudio automáticas forçadas estão desativadas. + "As faixas de áudio automáticas forçadas estão desativadas." As faixas de áudio automáticas forçadas estão ativadas. Desativar legendas automáticas forçadas As legendas automáticas forçadas estão desativadas. @@ -668,9 +667,6 @@ A reprodução automática pode ser alterada nas configurações do YouTube: O menu denunciar será exibido. Configurações adicionais - Ocultar menu modo ambiente - O menu modo ambiente está oculto. - O menu modo ambiente será exibido. Ocultar menu ajuda & feedback O menu ajuda & feedback está oculto. O menu ajuda & feedback será exibido. @@ -1135,9 +1131,15 @@ Problema conhecido: como se trata de um recurso em fase de desenvolvimento pelo Lembrar alterações na velocidade de reprodução As alterações de velocidade de reprodução aplicam-se a todos os vídeos. As alterações de velocidade de reprodução só se aplicam ao vídeo atual. + Mostrar uma notificação flutuante + Uma notificação flutuante será exibida quando mudar a velocidade padrão de reprodução. + Uma notificação flutuante não será exibida quando mudar a velocidade padrão de reprodução. Lembrar alterações na qualidade do vídeo As alterações de qualidade aplicam-se a todos os vídeos. As alterações de qualidade só se aplicam ao vídeo atual. + Mostrar uma notificação flutuante + Uma notificação flutuante será exibida quando mudar a qualidade padrão de vídeo. + Uma notificação flutuante não será exibida quando mudar a qualidade padrão de vídeo. Restaurar menu antigo de qualidade de vídeo O menu antigo de qualidade de vídeo está sendo exibido. O menu antigo de qualidade de vídeo não está sendo exibido. @@ -1307,6 +1309,7 @@ Limitação: Dislikes pode não aparecer no modo incógnito." O rastreamento de contagem de pulos não está ativado. Duração mínima do segmento Segmentos menores que este valor (em segundos) não serão mostrados ou ignorados. + Duração de tempo inválida. Seu id privado de usuário Isso deve ser mantido em segredo. É como se fosse uma senha e não deve ser compartilhado com ninguém. Se alguém tiver isso, poderá se passar por você. Id privado do usuário deve ter pelo menos 30 caracteres. @@ -1422,21 +1425,6 @@ Toque no botão continuar e desative as otimizações da bateria." O menu de compartilhamento do aplicativo é utilizado. Ativar codec OPUS Ative o codec OPUS se a resposta do reprodutor incluir o codec OPUS. - Falsificar parâmetro do reprodutor - "Falsifica os parâmetros do reprodutor para evitar problemas de reprodução. - -Limitações: -• A taxa de bits aprimorada não está disponível. -• Não há miniaturas da barra de progresso para vídeos pagos. -• Os downloads off-line podem não funcionar. -• O vídeo pode não começar a partir do último horário assistido." - Falsificar parâmetro do reprodutor no feed - "Falsificando parâmetro do reprodutor para vídeos do feed. - -Limitação: Os vídeos do feed reproduzidos automaticamente aparecerão no seu histórico de exibição." - "Parâmetro do reprodutor não falsificado para vídeos de feed. - -Limitação: Os vídeos do feed serão reproduzidos por menos de 1 minuto antes de encontrarem problemas de reprodução." Importar / Exportar configurações Importar ou exportar configurações. @@ -1459,70 +1447,7 @@ Limitação: Os vídeos do feed serão reproduzidos por menos de 1 minuto antes As configurações foram importadas com sucesso. Redefinir Configurações copiadas para a área de transferência. - - Falsificar cliente - Falsificar o cliente para evitar problemas de reprodução. - Falsificar cliente - O cliente é falsificado. - "O cliente não é falsificado. A reprodução de vídeo pode não funcionar." - Desativar esta configuração pode causar problemas de reprodução de vídeo. - Exibir em Estatísticas para nerds - O cliente falsificado é exibido em Estatísticas para nerds. - O cliente falsificado é oculto em Estatísticas para nerds. - - Opções de cliente falso - Geral - Transmissões ao vivo - Shorts, Clipes - Vídeo não reproduzível - iOS - Android - Reprodutor Incorporado Android - Suite de teste Android - Android TV - Android VR - TV HTML5 - Web - - Sobre - iOS - "Cliente falso para iOS. - -Os efeitos colaterais incluem: -• Vídeo HDR é suportado somente no codec AV1. -• O tempo de exibição não é salvo no histórico de exibição em conta de marca." - "Cliente falso para iOS. - -Os efeitos colaterais incluem: -• Sem vídeo HDR. -• Qualidades de vídeo maiores podem estar faltando. -• O histórico de exibição não funciona com uma conta de marca. -• As transmissões ao vivo não podem ser reproduzidas apenas como áudio. -• Transmissões ao vivo não disponíveis no Android 8.0." - Suite de teste Android - "Cliente falso para suite de teste Android. - -Os efeitos colaterais incluem: -• Sem vídeo HDR. -• O menu da faixa de áudio está ausente. -• As legendas podem não estar disponíveis." - Android TV - "Cliente falso para Android TV (YouTube TV). - -Os efeitos colaterais incluem: -• Sem vídeo HDR. -• O menu da faixa de áudio está ausente. -• As legendas podem não estar disponíveis. -• Algumas transmissões ao vivo não são suportadas para reprodução." - Android VR - "Cliente falso para Android VR. - -Os efeitos colaterais incluem: -• Sem vídeo HDR. -• O botão de download da barra de ação do vídeo está ausente. -• Os vídeos pausados podem ser retomados aleatoriamente. -• Miniaturas da barra de busca de Shorts de baixa qualidade. -• Os vídeos infantis não são reproduzidos." + Histórico de exibição Altere as configurações relacionadas ao histórico de exibição. @@ -1534,16 +1459,6 @@ Os efeitos colaterais incluem: Bloquear histórico de exibição Sobre o histórico de exibição • O histórico de exibição não funciona. - "• Segue as configurações do histórico de exibição da conta do Google. -• O histórico de exibição pode não funcionar com uma conta de marca. -(A configuração do cliente falso está ativada e o cliente iOS está selecionado)" - "• Segue as configurações do histórico de exibição da conta do Google. -• O histórico de exibição pode não funcionar devido ao DNS ou à VPN. -• O histórico de exibição pode não funcionar com uma conta de marca. -(A configuração do cliente falso está ativada e o cliente iOS está selecionado)" - • Segue as configurações do histórico de exibição da conta do Google. - "• Segue as configurações do histórico de exibição da conta do Google. -• O histórico de exibição pode não funcionar devido ao DNS ou à VPN." Informações do patch diff --git a/src/main/resources/youtube/translations/ru-rRU/strings.xml b/src/main/resources/youtube/translations/ru-rRU/strings.xml index 1165c52109..4e9edf513a 100644 --- a/src/main/resources/youtube/translations/ru-rRU/strings.xml +++ b/src/main/resources/youtube/translations/ru-rRU/strings.xml @@ -237,7 +237,6 @@ Shorts • Некоторые компоненты интерфейса могут быть не скрыты. • Поиск по ключевому слову может не дать результатов." Недопустимо. \'%s\' не подходит в качестве фильтра. - Недопустимое ключевое слово. \'%1$s\' это менее %2$d символов Ключевое слово \'%1$s\' не точное и скроет все видео Рекомендованное видео @@ -298,7 +297,7 @@ Shorts Смотреть позже Недопустимая начальная страница, сброс по умолчанию. Принудительные автоматические звуковые дорожки - Принудительные автоматические звуковые дорожки отключены. + "Принудительные автоматические звуковые дорожки отключены." Принудительные автоматические звуковые дорожки включены. Принудительные автоматические субтитры Принудительные автоматические субтитры отключены. @@ -681,9 +680,6 @@ Shorts Меню \"Пожаловаться\" отображено. Дополнительные настройки - Меню \"Окружающая подсветка\" - Меню \"Окружающая подсветка\" скрыто. - Меню \"Окружающая подсветка\" отображено. Меню \"Справка и Отзывы\" Меню \"Справка и Отзывы\" скрыто. Меню \"Справка и Отзывы\" отображено. @@ -699,6 +695,9 @@ Shorts Меню \"Настройки Premium\" Меню \"Настройки Premium\" скрыто. Меню \"Настройки Premium\" отображено. + Меню таймера сна + Меню таймера сна скрыто. + Меню таймера сна отображено. Меню \"Постоянный уровень громкости\" Меню \"Постоянный уровень громкости\" отображено. Меню \"Постоянный уровень громкости\" скрыто. @@ -1155,9 +1154,15 @@ Shorts Запомнить скорость воспроизведения Изменяется скорость воспроизведения у всех видео. Изменяется скорость воспроизведения у текущего видео. + Уведомление о выбранной скорости + Всплывающее уведомление отображено. + Всплывающее уведомление скрыто. Запомнить изменения качества видео Изменяется качество у всех видео. Изменяется качество у текущего видео. + Уведомление о выбранном качестве + Всплывающее уведомление отображено. + Всплывающее уведомление скрыто. Старое меню качества Старое меню качества отображено. Старое меню качества скрыто. @@ -1329,6 +1334,7 @@ Shorts Отслеживание количества пропусков не включено. Минимальная длительность сегмента Сегменты, продолжительность которых короче, чем установленное значение (в секундах), не будут пропущены или показаны в плеере. + Недопустимая, минимальная, длительность времени. Ваш приватный ID Его нужно держать в секрете. Это как пароль, не стоит им ни с кем делиться. Если он у кого-то есть, он сможет выдать себя за вас. Приватный ID должен иметь длину не менее 30 символов. @@ -1444,23 +1450,6 @@ Shorts Список приложений общего доступа - встроенный. Включить кодек OPUS Включить кодек OPUS, если содержимое в плеере подходит для кодека. - Подмена параметров плеера - "Подменяет параметры плеера для предотвращения проблем с воспроизведением. - -Ограничения: -• Высокий битрейт недоступен. -• Миниатюры шкалы воспроизведения не работают в видео \"Только для спонсоров\". -• Офлайн загрузка видео может не работать. -• Видео может начинаться не с последнего времени просмотра." - Подмена параметров плеера в ленте - "Подмена параметров плеера в ленте включена. - -Ограничения: -Видео, воспроизводимые автоматически в ленте, будут появляться в истории просмотра." - "Подмена параметров плеера в ленте отключена. - -Известная проблема: -Видео в ленте смогут нормально воспроизводиться меньше минуты до начала проблем с воспроизведением." Импорт/экспорт настроек Настройки импорта/экспорта. @@ -1483,70 +1472,7 @@ Shorts Настройки успешно импортированы. Сброс Настройки скопированы в буфер обмена. - - Подмена клиента - Подменить клиент для предотвращения проблем с воспроизведением видео. - Состояние подмены клиента - Клиент подменен. - "Клиент не подменен.\nВоспроизведение видео может не работать." - Отключение этой настройки вызовет проблемы с воспроизведением видео. - Клиент подмены в статистике для сисадминов - Клиент подмены в статистике для сисадминов отображен. - Клиент подмены в статистике для сисадминов скрыт. - - Параметры подмены клиента - Подмена для основных видео - Подмена для трансляций - Подмена для Shorts и Эпизодов - Подмена для невоспроизводимых видео - iOS - Android - Встроенный плеер Android - Тестовый набор Android - Android TV - Android VR - TV HTML5 - Web - - О подмене клиента - Используется iOS - "Подмена клиента на iOS. - -Ограничения: -• HDR видео поддерживается только с кодеком AV1. -• Время просмотра не сохраняется в истории, на каналах бренда." - "При подмене клиента под iOS. - -Ограничения: -• Нет HDR-видео. -• Отсутствует меню скорости воспроизведения. -• Видео высокого качества может отсутствовать. -• История просмотра не работает с учетной записью бренда. -• Прямые трансляции не могут воспроизводиться в фоновом режиме -• Прямые трансляции недоступны на Android 8.0." - Используется тестовый набор Android - "При подмене клиента под тестовый набор Android. - -Ограничения: -• Нет HDR-видео. -• Отсутствует меню аудиодорожки и меню скорости воспроизведения. -• Субтитры могут быть недоступны." - Используется Android TV - "При подмене клиента под Android TV (YouTube TV). - -Ограничения: -• Нет HDR-видео. -• Отсутствует меню аудиодорожки и меню скорости воспроизведения. -• Субтитры могут быть недоступны. -• Некоторые трансляции не поддерживают воспроизведение." - Используется Android VR - "При подмене клиента под Android VR. - -Ограничения: -• Нет HDR-видео. -• Пауза в видео может работать некорректно. -• Миниатюры шкалы воспроизведения Shorts будут низкого качества. -• Детские видео не воспроизводятся." + История просмотра Изменить настройки истории просмотра. @@ -1558,16 +1484,9 @@ Shorts Блокировать историю просмотра Об истории просмотра • История просмотра не работает. - "• Следует настройкам истории просмотров аккаунта Google. -• История просмотра может не работать с аккаунтом бренда. -(Настройка клиента подмены включен и выбран клиент iOS)" - "• Следует настройкам истории просмотров аккаунта Google. -• История просмотра может не работать из-за DNS или VPN. -• История просмотра может не работать с аккаунтом бренда. -(Настройка клиента подмены включен и выбран клиент iOS)" - • Следует настройкам истории просмотров аккаунта Google. - "• Следует настройкам истории просмотров аккаунта Google. -• История просмотра может не работать из-за DNS или VPN." + • Статус истории просмотров изменен. + "• Статус истории просмотров обычный. +• История просмотров может не работать с DNS или VPN." Информация о патчах diff --git a/src/main/resources/youtube/translations/tr-rTR/strings.xml b/src/main/resources/youtube/translations/tr-rTR/strings.xml index a12ee8c593..84806f63db 100644 --- a/src/main/resources/youtube/translations/tr-rTR/strings.xml +++ b/src/main/resources/youtube/translations/tr-rTR/strings.xml @@ -226,7 +226,6 @@ Kısıtlamalar: • Bazı arayüz bileşenleri gizlenemeyebilir • Anahtar kelime aratmak hiçbir sonuç göstermeyebilir" Geçersiz anahtar kelime. \'%s\' kullanılamaz - Geçersiz anahtar kelime. \'%1$s\', %2$d karakterden az. \'%1$s\' anahtar kelimesi tüm videoları gizleyecek. Önerilen video @@ -277,7 +276,7 @@ Kısıtlamalar: Daha sonra izlenecekler Başlangıç sayfası geçersiz, varsayılana dönülüyor. Ses parçalarının kendiliğinden açılmasını kapat - Ses parçalarının kendiliğinden açılması kapalı. + "Ses parçalarının kendiliğinden açılması kapalı." Ses parçalarının kendiliğinden açılması etkin. Altyazıların kendiliğinden açılmasını kapat Altyazıların kendiliğinden açılması kapalı @@ -648,9 +647,6 @@ Otomatik oynatma YouTube ayarlarından değiştirilebilir: \"Bildir\" butonu gösteriliyor. Ek ayarlar - \"Ambiyans modu\" menüsünü gizle - \"Ambiyans modu\" menüsü gizleniyor. - \"Ambiyans modu\" menüsü gösteriliyor. Yardım & geri bildirim menüsünü gizle Yardım & geri bildirim menüsü gizleniyor. Yardım & geri bildirim menüsü gösteriliyor. @@ -1398,21 +1394,6 @@ Devam düğmesine dokunun ve pil optimizasyonlarını devre dışı bırakın."< "CronetEngine'in QUIC protokolünü devre dışı bırak" OPUS kodek bileşenini etkinleştir Oynatıcı yanıtı OPUS codec bileşenini içeriyorsa OPUS codec bileşenini etkinleştirin. - Oynatıcı parametresini taklit et - "Oynatma sorunlarını önlemek için oynatıcı parametrelerini taklit eder - -Bilinen sorunlar: -• Gelişmiş bit hızı mevcut değildir -• Ücretli videolar için arama çubuğu küçük resimleri yoktur -• Çevrimdışı indirmeler çalışmayabilir -• Video son İzlenen kısımdan başlamayabilir" - Ana sayfada da oynatıcı parametresini taklit et - "Akış videoları için oynatıcı parametresi sahtekarlığı - -Bilinen sorun: Otomatik olarak oynatılan yayın videoları izleme geçmişinizde görünecek" - "Akış videoları için oynatıcı parametresi sahteciliği yapılmıyor - -Bilinen sorun: Akış videoları, oynatma sorunlarıyla karşılaşmadan önce 1 dakikadan daha kısa bir süre oynatılacak" Ayarları içe / dışa aktar Ayarları içe veya dışa aktarın. @@ -1435,68 +1416,7 @@ Bilinen sorun: Akış videoları, oynatma sorunlarıyla karşılaşmadan önce 1 %d ayar içe aktarıldı. Sıfırla Ayarlar panoya kopyalandı - - İstemciyi taklit et - Oynatma sorunlarını önlemek için istemciyi taklit et. - İstemciyi taklit et - İstemci taklit ediliyor. - "İstemci taklit edilmiyor. Video oynatma çalışmayabilir." - Bu ayarı devre dışı bırakmak video oynatma sorunlarına yol açabilir. - Meraklılar için istatiklerde göster - Taklit edilen istemci meraklılar için istatiklerde gösteriliyor. - Taklit edilen istemci meraklılar için istatiklerde gösterilmiyor. - - İstemci ayarlarını taklit et - Genel - Canlı yayınlar - Shorts, Klipler - Oynatılamaz video - iOS - Android - Android Gömülü Oynatıcı - Android Test Paketi - Android TV - Android VR - TV HTML5 - Web - - Hakkında - iOS - "İstemci iOS'a taklit ediliyor. - -Yan etkiler şunları içerir: -• HDR video yalnızca AV1 codec bileşeninde desteklenir. -• İzleme geçmişi bir marka hesabıyla çalışmaz. -• Canlı yayınlar yalnızca ses olarak oynatılamaz." - Android Test Paketi - "İstemciyi Android Testsuite'e taklit etme. - -Yan etkiler şunları içerir: -• HDR video yok. -• Ses parçası menüsü eksik. -• Altyazılar mevcut olmayabilir. -• İndirme düğmesi eksik. -• Bitiş ekranı kartları eksik. -• Düşük kaliteli zaman çubuğu küçük resmi." - Android TV - "İstemciyi Android TV'ye (YouTube TV) taklit etme. - -Yan etkiler şunları içerir: -• HDR video yok. -• Ses parçası menüsü eksik. -• Altyazılar mevcut olmayabilir. -• İndirme düğmesi eksik. -• Düşük kaliteli arama çubuğu küçük resmi. -• Bazı canlı yayınlar oynatma için desteklenmez." - Android VR - "İstemciyi Android VR'a taklit etme. - -Yan etkiler şunları içerir: -• HDR video yok. -• Video aksiyon çubuğunda indirme butonu gizlidir. -• Duraklatılan videolar rastgele devam ettirilebilir. -• Düşük kaliteli Shorts arama çubuğu küçük resimleri. -• Çocuk videoları oynatılmıyor." + İzleme geçmişi İzlemek geçmişi ile alakalı ayarları değiştirir. @@ -1508,16 +1428,6 @@ Yan etkiler şunları içerir: İzleme geçmişini durdur İzleme geçmişi hakkında • İzleme geçmişi çalışmaz. - "• Google hesabının izleme geçmişi ayarlarını takip eder. - • İzleme geçmişi bir marka hesabıyla çalışmayabilir. - (Sahte istemci ayarı açık ve iOS istemcisi seçili)" - "• Google hesabının izleme geçmişi ayarlarını takip eder. -• İzleme geçmişi DNS veya VPN nedeniyle çalışmayabilir. -• İzleme geçmişi bir marka hesabıyla çalışmayabilir. -(Sahte istemci ayarı açılınca iOS istemcisi seçilir)" - • Google hesabının izleme geçmişi ayarlarını takip eder. - "• Google hesabının izleme geçmişi ayarlarını takip eder. -• İzleme geçmişi DNS veya VPN nedeniyle çalışmayabilir." Yama Bilgileri diff --git a/src/main/resources/youtube/translations/uk-rUA/strings.xml b/src/main/resources/youtube/translations/uk-rUA/strings.xml index 9eb7f6fe89..d0aa2a9c7e 100644 --- a/src/main/resources/youtube/translations/uk-rUA/strings.xml +++ b/src/main/resources/youtube/translations/uk-rUA/strings.xml @@ -231,7 +231,6 @@ • Деякі компоненти інтерфейсу не можливо приховати. • Шукання за ключовим словом може не давати результатів." Невірне ключове слово. Неможливо використати \'%s\' як фільтр - Невірне ключове слово. \'%1$s\' менше %2$d символів. Ключове слово \'%1$s\' приховає всі відео. Рекомендовані відео @@ -282,7 +281,9 @@ Переглянути пізніше Недійсна початкова сторінка, скидається на стандартну. Вимкнути примусові автоматичні звукові доріжки - Примусові автоматичні звукові доріжки вимкнено. + "Примусові автоматичні звукові доріжки вимкнено. + +Застереження: Це налаштування не застосовується до Shorts." Примусові автоматичні звукові доріжки увімкнено. Вимкнути примусові авто субтитри Примусові авто субтитри вимкнено. @@ -665,9 +666,6 @@ Меню Поскаржитися показується. Додаткові налаштування - Приховати меню кінематографічного освітлення - Меню кінематографічного освітлення приховано. - Меню кінематографічного освітлення показується. Приховати меню допомоги та підтримки Меню допомоги та підтримки приховано. Меню допомоги та підтримки показується. @@ -683,6 +681,9 @@ Приховати меню керування преміумом Меню керування преміумом приховано. Меню керування преміумом показується. + Приховати меню Таймер сну + Меню Таймер сну приховано. + Меню Таймер сну показується. Приховати меню стабілізації гучності Меню стабілізації гучності показується. Меню стабілізації гучності приховано. @@ -1133,9 +1134,15 @@ Запам\'ятовувати зміни швидкості відтворення Зміни швидкості відтворення застосовуються до всіх відео. Зміни швидкості відтворення застосовуються лише до поточного відео. + Показувати тост + Тост показуватиметься при зміні типової швидкості відтворення. + Тост не показуватиметься при зміні типової швидкості відтворення. Запам\'ятовувати зміни якості відео Зміни якості застосовуються до всіх відео. Зміни якості застосовуються лише до поточного відео. + Показувати тост + Тост показуватиметься при зміні типової якості відео. + Тост не показуватиметься при зміні типової якості відео. Відновити старе меню якості відео Старе меню якості відео показується. Старе меню якості відео не показується. @@ -1305,6 +1312,7 @@ Відстеження кількості пропусків не ввімкнено Мінімальна тривалість сегменту Сегменти, коротші за це значення (в секундах), не будуть показані або пропущені + Недопустима тривалість часу. Ваш приватний id користувача Це повинно залишатися конфіденційним. Це як пароль, і його не можна нікому передавати. Якщо хтось має його, він може видавати себе за вас Особистий id користувача повинен бути довжиною не менше 30 символів @@ -1414,21 +1422,6 @@ Використовується діалог Поділитися додатка. Увімкнути кодек OPUS Вмикає кодек OPUS, якщо відповідь плеєра включає кодек OPUS. - Підробити параметр плеєра - "Підробка параметрів плеєра для вирішення проблем відтворення. - -Застереження: -• Покращений бітрейт недоступний. -• Немає мініатюр панелі прогресу для платних відео. -• Офлайн завантаження можуть не працювати. -• Відео може не починатися з останнього часу перегляду." - Підробити параметр плеєра у стрічці - "Параметр плеєра підроблений для відео у стрічці. - -Застереження: Автоматично відтворені відео у стрічці показуватимуться у вашій історії перегляду." - "Параметр плеєра не підроблений для відео у стрічці. - -Застереження: Стрічка відео відтворюватиметься менше однієї хвилини до виникнення проблем відтворення." Імпорт/Експорт налаштувань Імпортувати або експортувати налаштування. @@ -1451,72 +1444,7 @@ Налаштування було вдало імпортовано. Скинути Налаштування скопійовано до буфера обміну. - - Імітація клієнта - Імітація клієнта для вирішення проблем відтворення. - Імітація клієнта - Клієнт імітується. - "Клієнт не імітується. Відтворення відео може не працювати." - Вимикання цього налаштування може призвести до проблем відтворення відео. - Показувати в Статистика для сисадмінів - Імітований клієнт показується в Статистика для сисадмінів. - Імітований клієнт приховано в Статистика для сисадмінів. - - Опції імітації клієнта - Загальні - Прямі трансляції - YouTube Shorts, Кліпи - Відео не відтворюється - iOS - Android - Вбудований плеєр Android - Тестовий Android - Android TV - Android VR - TV HTML5 - Web - - Про це - iOS - "Імітація клієнта для iOS. - -Побічні ефекти включають: -• Відео HDR підтримується тільки на кодеку AV1. -• Час перегляду не зберігається в історії перегляду на акаунті бренду." - "Імітація клієнта для iOS. - -Побічні ефекти включають: -• Відео HDR підтримується тільки на кодеку AV1. -• Історія перегляду не працює з акаунтом бренду." - Тестовий Android - "Імітація тестового клієнта Android. - -Побічні ефекти включають: -• Немає HDR відео. -• Меню звукової доріжки відсутнє. -• Субтитри можуть бути недоступні. -• Кнопка завантаження відсутня. -• Картки кінцевого екрана відсутні. -• Низька якість мініатюр панелі прогресу." - Android TV - "Імітація клієнта для Android TV (YouTube TV). - -Побічні ефекти включають: -• Немає HDR відео. -• Меню звукової доріжки відсутнє. -• Субтитри можуть бути недоступні. -• Кнопка завантаження відсутня. -• Низька якість мініатюр панелі прогресу. -• Деякі прямі трансляції не підтримуються для відтворення." - Android VR - "Імітація клієнта для Android VR. - -Побічні ефекти включають: -• Немає HDR відео. -• Відсутня кнопка завантаження відео на панелі дій. -• Призупинені відео можуть навмання продовжуватися. -• Низька якість мініатюр панелі прогресу Shorts. -• Відео для дітей не відтворюються." + Історія перегляду Змінити налаштування пов\'язані з історією перегляду. @@ -1528,15 +1456,8 @@ Блокувати історію перегляду Стан історії перегляду • Історію перегляду заблоковано. - "• Дотримується налаштувань історії перегляду облікового запису Google. -• Історія перегляду може не працювати з акаунтом бренду. -(Налаштування імітації клієнта увімкнене та вибрано клієнт iOS)" - "• Дотримується налаштувань історії перегляду облікового запису Google. -• Історія перегляду може не працювати через DNS або VPN. -• Історія перегляду може не працювати з акаунтом бренду. -(Налаштування імітації клієнта увімкнене та вибрано клієнт iOS)" - • Дотримується налаштувань історії перегляду облікового запису Google. - "• Дотримується налаштувань історії перегляду облікового запису Google. + • Дотримується налаштувань історії перегляду облікового запису Google. + "• Дотримується налаштувань історії перегляду облікового запису Google. • Історія перегляду може не працювати через DNS або VPN." Інформація про патчі diff --git a/src/main/resources/youtube/translations/vi-rVN/strings.xml b/src/main/resources/youtube/translations/vi-rVN/strings.xml index 75678f90be..46cd7fd28b 100644 --- a/src/main/resources/youtube/translations/vi-rVN/strings.xml +++ b/src/main/resources/youtube/translations/vi-rVN/strings.xml @@ -224,17 +224,21 @@ Cửa hàng" Bình luận không lọc theo từ khoá đã đặt. Bộ lọc từ khoá "Nhập từ hoặc cụm từ cần ẩn được phân cách bằng dòng. + +Từ khóa có thể là tên kênh hoặc bất kỳ văn bản nào hiển thị trong tiêu đề video. + Bộ lọc có phân biệt chữ hoa chữ thường, vì vậy bạn cần nhập chính xác định dạng để lọc (Ví dụ: iPhone, TikTok, LeBlanc)." Giới thiệu về lọc từ khoá "Nội dung khớp với từ khoá bạn đã đặt sẽ bị ẩn trên thẻ Trang chủ/Kênh đăng ký và kết quả tìm kiếm. Hạn chế: -• Một số video ngắn có thể không bị ẩn. +• Video Shorts không bị ẩn theo tên kênh. • Một số thành phần giao diện người dùng có thể không bị ẩn. • Tìm kiếm từ khoá có thể không cho kết quả nào." - Từ khoá không hợp lệ. Không thể sử dụng: \"%s\" làm điều kiện lọc. - Từ khoá không hợp lệ. \'%1$s\' phải ít hơn %2$d ký tự. - Từ khóa \'%1$s\' sẽ ẩn toàn bộ video. + Khớp toàn bộ từ + Việc đặt từ/cụm từ cần lọc trong dấu ngoặc kép sẽ ngăn chặn các kết quả chỉ trùng một phần với tiêu đề video và tên kênh.<br><br>Ví dụ,<br><b>\"ai\"</b> sẽ ẩn video: <b>How does AI work?</b><br>nhưng sẽ không ẩn: <b>What does fair use mean?</b> + Không thể sử dụng từ khoá: %s. + Từ khóa sẽ ẩn tất cả video: %s. Video được đề xuất Ẩn video đề xuất @@ -283,9 +287,11 @@ Bộ lọc có phân biệt chữ hoa chữ thường, vì vậy bạn cần nh Thịnh hành Xem sau Trang khởi động không hợp lệ. Đã đặt lại về mặc định. - Tắt tự động phát bản âm thanh - Tự động phát bản âm thanh khi phát video có bản âm thanh đã tắt. - Tự động phát bản âm thanh khi phát video có bản âm thanh đã bật. + Tắt buộc tự động phát bản âm thanh + "Buộc tự động phát bản âm thanh đã bị tắt. + +Hạn chế: Tính năng này hiện chưa áp dụng cho trình Shorts." + Buộc tự động phát bản âm thanh đã được bật. Tắt tự động hiển thị phụ đề Tự động hiển thị phụ đề khi phát video có phụ đề đã tắt. Tự động hiển thị phụ đề khi phát video có phụ đề đã bật. @@ -440,7 +446,7 @@ Phụ đề" Ẩn hoặc thay đổi các thành phần trên thanh công cụ, chẳng hạn như thanh tìm kiếm, các nút trên thanh công cụ và tiêu đề YouTube. Thay đổi tiêu đề YouTube Tiêu đề Premium được kích hoạt. - Tiêu đề Youtube được kích hoạt. + Tiêu đề Youtube mặc định. Thanh tìm kiếm rộng Thanh tìm kiếm rộng đã bật. Thanh tìm kiếm rộng đã tắt. @@ -666,9 +672,6 @@ Cài đặt → Tự động phát → Tự động phát video tiếp theo."Mục Báo vi phạm được hiển thị. Cài đặt bổ sung - Ẩn mục Chế độ môi trường xung quanh - Mục Chế độ môi trường xung quanh đã ẩn. - Mục Chế độ môi trường xung quanh được hiển thị. Ẩn Trợ giúp & Phản hồi Trợ giúp & Phản hồi đã ẩn. Trợ giúp & Phản hồi được hiển thị. @@ -684,6 +687,9 @@ Cài đặt → Tự động phát → Tự động phát video tiếp theo."Ẩn mục Nút điều khiển cho gói Premium Mục Nút điều khiển cho gói Premium đã ẩn. Mục Nút điều khiển cho gói Premium được hiển thị. + Ẩn mục Hẹn giờ đi ngủ + Mục Hẹn giờ đi ngủ đã ẩn. + Mục Hẹn giờ đi ngủ đã hiển thị. Ẩn mục Âm lượng ổn định Mục Âm lượng ổn định được hiển thị. Mục Âm lượng ổn định đã ẩn. @@ -1428,21 +1434,6 @@ Nhấn vào Tiếp tục và tắt tối ưu hóa pin." Sử dụng giao diện chia sẻ của ứng dụng. Bật Codec OPUS Bật codec OPUS nếu phản hồi của trình phát bao gồm codec OPUS. - Giả mạo thông số trình phát - "Giả mạo thông số trình phát để khắc phục vấn đề giật hình khi phát video. - -Hạn chế: -• Tốc độ bit nâng cao không khả dụng. -• Không có hình xem trước khi tua đối với video dành cho hội viên. -• Tải xuống ngoại tuyến có thể không hoạt động. -• Video có thể không bắt đầu từ thời điểm đã xem gần nhất." - Giả mạo thông số trình phát trên bảng tin - "Giả mạo thông số trình phát cho các video ở bảng tin đã bật. - -Hạn chế: Video được phát tự động sẽ hiển thị trong lịch sử xem của bạn." - "Giả mạo thông số trình phát cho các video ở bảng tin đã tắt. - -Hạn chế: Video được phát tự động sẽ phát dưới 1 phút trước khi bị giật hình." Nhập/Xuất cài đặt Nhập hoặc xuất cài đặt. @@ -1465,79 +1456,7 @@ Hạn chế: Video được phát tự động sẽ phát dưới 1 phút trư Cài đặt đã được nhập thành công. Đặt lại Đã sao chép cài đặt sang bảng nhớ tạm. - - Giả mạo máy khách - Giả mạo máy khách để ngăn chặn sự cố phát. - Giả mạo máy khách - Máy khách đã được giả mạo. - "Máy khách hiện không được giả mạo. Phát video có thể không hoạt động." - Việc tắt cài đặt này có thể gây ra sự cố phát video. - Kiểu giả mạo máy khách - Buộc iOS sử dụng AVC (H.264) - Codec video trên iOS là AVC (H.264). - Codec video trên iOS là AVC (H.264), VP9, or AV1. - "Bật chức năng này có thể tăng cường thời lượng pin và khắc phục tình trạng giật lag khi phát video. - -AVC (H.264) có độ phân giải tối đa 1080p, và phát video sẽ dùng nhiều dữ liệu di động hơn với VP9 hoặc AV1." - Hiển thị trong Thống kê chi tiết - Giả mạo máy khách được hiển thị trong Thống kê chi tiết. - Giả mạo máy khách bị ẩn trong Thống kê chi tiết. - - Tùy chọn giả mạo máy khách - Chung - Phát trực tiếp - Shorts, Clips - Video không thể phát - iOS - Android - Trình phát Android Embedded - Thử nghiệm Android - Android TV - Android VR - TV HTML5 - Web - - Giới thiệu - iOS - "Giả mạo máy khách sang iOS. - -Hạn chế gồm: -• Video HDR chỉ được hỗ trợ trên codec AV1. -• Thời gian xem không được lưu trong Lịch sử xem khi dùng tài khoản doanh nghiệp." - "Giả mạo máy khách sang iOS. - -Hạn chế: -• Video HDR chỉ được hỗ trợ trên codec AV1. -• Lịch sử xem không hoạt động với tài khoản doanh nghiệp." - Thử nghiệm Android - "Giả mạo máy khách thành thử nghiệm Android. - -Hạn chế: -• Không có video HDR. -• Menu theo dõi âm thanh bị thiếu. -• Chú thích có thể không có sẵn. -• Thiếu nút tải xuống. -• Thẻ kết thúc video bị thiếu. -• Ảnh trên thanh tiến trình có chất lượng thấp." - Android TV - "Giả mạo máy khách thành Android TV (YouTube TV). - - Hạn chế gồm: - • Không có video HDR. - • Thiếu menu âm thanh. - • Phụ đề có thể không khả dụng. - • Thiếu nút tải xuống. - • Ảnh trên thanh tiến trình có chất lượng thấp. - • Một số phát trực tiếp không được hỗ trợ phát lại." - Android VR - "Giả mạo máy khách thành Android VR. - -Hạn chế: -• Không có video HDR. -• Nút tải xuống trên thanh thao tác video bị thiếu. -• Tạm dừng video có thể bất ngờ tiếp tục. -• Ảnh trên thanh tiến trình của Shorts có chất lượng thấp. -• Video dành cho trẻ em không khởi chạy được." + Lịch sử xem Thay đổi cài đặt liên quan đến Lịch sử xem. @@ -1547,17 +1466,10 @@ Hạn chế: Gốc Thay thế miền Chặn Lịch sử xem - Giới thiệu về Lịch sử xem - • Lịch sử xem không hoạt động. - "• Thực hiện theo cài đặt Lịch sử xem của tài khoản Google. -• Lịch sử xem có thể không hoạt động với tài khoản doanh nghiệp. -(Cài đặt giả mạo máy khách được bật và máy khách iOS được chọn)" - "• Thực hiện theo cài đặt Lịch sử xem của tài khoản Google. -• Lịch sử xem có thể không hoạt động do DNS hoặc VPN. -• Lịch sử xem có thể không hoạt động với tài khoản doanh nghiệp. -(Cài đặt giả mạo máy khách được bật và máy khách iOS được chọn)" - • Thực hiện theo cài đặt Lịch sử xem của tài khoản Google. - "• Thực hiện theo cài đặt Lịch sử xem của tài khoản Google. + Trạng thái của Lịch sử xem + • Lịch sử xem bị chặn. + • Tuân theo cài đặt Lịch sử xem của tài khoản Google. + "• Tuân theo cài đặt lịch sử xem của tài khoản Google. • Lịch sử xem có thể không hoạt động do DNS hoặc VPN." Thông tin bản vá diff --git a/src/main/resources/youtube/translations/zh-rCN/strings.xml b/src/main/resources/youtube/translations/zh-rCN/strings.xml index 69131a0c99..2f4d007748 100644 --- a/src/main/resources/youtube/translations/zh-rCN/strings.xml +++ b/src/main/resources/youtube/translations/zh-rCN/strings.xml @@ -233,7 +233,6 @@ • 某些UI组件可能不会隐藏 • 搜索关键词可能不会显示任何结果" 关键词无效无法使用:\'%s\' 作为过滤器 - 关键字无效。\'%1$s\' 少于 %2$d 个字符 关键词 \'%1$s\' 太宽,这将隐藏所有视频 推荐视频 @@ -285,7 +284,7 @@ 稍后观看 起始页无效,正在重置为默认值 禁用强制自动音轨 - 强制自动音轨已禁用 + "强制自动音轨已禁用" 强制自动音轨已启用 禁用强制显示字幕 强制显示字幕已禁用 @@ -666,9 +665,6 @@ 举报菜单已显示 其他设置 - 隐藏氛围模式菜单 - 氛围模式菜单已隐藏 - 氛围模式菜单已显示 隐藏帮助 & 反馈菜单 帮助 & 反馈菜单已隐藏 帮助 & 反馈菜单已显示 @@ -1307,6 +1303,7 @@ 未启用跳过计数跟踪 最短片段持续时间 短于此值 (以秒为单位) 的片段将不会被显示或跳过 + 无效的时长 您的私人用户 ID 此 ID 应被保密。这类似于密码,不应与任何人分享。如果有人获取此 ID,他就可以冒充您 私人用户 ID 长度必须至少为30个字符 @@ -1422,21 +1419,6 @@ 应用内分享菜单已启用 启用 OPUS 编解码器 如果播放器支持 OPUS 编解码器,则启用 OPUS 编解码器 - 伪装播放器参数 - "伪装播放器参数以回避播放问题 - -已知问题: -• 高码率不可用 -• 付费视频无进度条缩略图 -• 离线下载可能不可用 -• 视频可能不会从上次播放时开始" - 伪装动态播放器参数 - "播放器参数针对动态内视频进行伪装 - -已知问题: 自动播放的动态视频将出现在你的观看历史" - "播放器参数未针对动态内视频进行伪装 - -已知问题: 动态视频播放时间不满1分钟会出现播放问题" 导入/导出设置 导入或导出设置 @@ -1459,73 +1441,7 @@ 导入配置成功 重置 设置已复制到剪贴板 - - 伪装客户端 - 伪装客户端以防止播放问题 - 伪装客户端 - 客户端已伪装 - "客户端未伪装,视频可能无法正常播放" - 关闭此选项可能会导致视频不能正常播放 - 显示详细统计信息 - 伪装客户端已在统计信息中显示 - 伪装客户端已在统计信息中隐藏 - - 伪装客户端选项 - 常规设置 - 直播 - 短视频,剪辑 - 无法播放的视频 - iOS - Android - Android 嵌入式播放器 - Android 测试套件 - Android TV - Android VR - TV HTML5 - 网址 - - 关于 - iOS - "伪装客户端为 iOS 客户端 - -副作用: -• 仅在 AV1 编解码器上支持 HDR 视频 -• 观看时间不保存在品牌帐户的历史记录中" - "伪装客户端到iOS - -副作用: -• 无 HDR 视频 -• 缺少播放速度菜单 -• 可能失去更高视频画质 -• 历史记录不适用于品牌帐号 -• 直播不能只作为音频播放 -• 直播在 Android 8.0 上不可用" - Android 测试套件 - "伪装客户端到 Android 测试套件 - -副作用: -• 无 HDR 视频 -• 缺少音轨菜单和播放速度菜单 -• 字幕可能不可用" - Android TV - "伪装客户端到 Android TV (YouTube TV) - -副作用: -• 无 HDR 视频 -• 缺少音轨菜单 -• 字幕可能不可用 -• 缺少下载按钮 -• 低质量的搜索栏缩略图 -• 某些直播流不支持播放" - Android VR - "伪装客户端到 Android VR - -副作用: -• 无 HDR 视频 -• 视频操作栏的下载按钮缺失 -• 暂停的视频可以随时恢复 -• 低质量的短视频滚动栏缩略图 -• 儿童视频无法播放" + 观看历史 更改与观看历史记录相关的设置 @@ -1537,16 +1453,6 @@ 屏蔽历史记录 关于历史记录 • 历史记录不可用 - "• 遵循谷歌帐户的观看历史设置 -• 历史记录可能无法适用于品牌帐户 -(已开启伪装客户端并选择 iOS 客户端)" - "• 遵循谷歌帐户的观看历史设置 -• 由于 DNS 或 VPN 的原因,观看历史可能无法工作 -• 历史记录可能无法适用于品牌帐户 -(已开启伪装客户端并选择 iOS 客户端)" - • 遵循谷歌帐户的观看历史设置 - "• 遵循谷歌帐户的观看历史设置 -• 由于 DNS 或 VPN 的原因,观看历史可能无法工作" 补丁信息 diff --git a/src/main/resources/youtube/translations/zh-rTW/strings.xml b/src/main/resources/youtube/translations/zh-rTW/strings.xml index 4f8b119147..f974c7bdc2 100644 --- a/src/main/resources/youtube/translations/zh-rTW/strings.xml +++ b/src/main/resources/youtube/translations/zh-rTW/strings.xml @@ -233,7 +233,6 @@ • 部分介面元件可能不會隱藏 • 搜尋關鍵字可能不會顯示任何結果" 無效的關鍵字。不能使用:「%s」作為篩選器 - 無效的關鍵字。%1$s 少於 %2$d 個字元 關鍵字 \'%1$s\' 將隱藏所有影片。 推薦影片 @@ -284,7 +283,7 @@ 稍後觀看 起始頁無效,正在重設為預設值。 停用強制自動音軌 - 強制自動音軌已停用 + "強制自動音軌已停用" 強制自動音軌已啟用 停用強制顯示字幕 強制顯示字幕已停用 @@ -667,9 +666,6 @@ 舉報選單已顯示 其他設定 - 隱藏微光模式選單 - 微光模式選單已隱藏 - 微光模式選單已顯示 隱藏幫助與反饋選單 幫助與反饋選單已隱藏 幫助與反饋選單已顯示 @@ -1129,9 +1125,15 @@ 記住播放速度更改 播放速度更改適用於所有影片 播放速度更改僅適用於當前影片 + 顯示提示訊息 + 變更預設播放速度時會顯示提示訊息。 + 變更預設播放速度時不會顯示提示訊息。 記住影片畫質更改 畫質更改適用於所有影片 畫質更改僅適用於當前影片 + 顯示提示訊息 + 更改預設影片畫質時將顯示提示訊息。 + 更改預設影片畫質時不會顯示提示訊息。 恢復舊的影片畫質選單 顯示舊的影片畫質選單 不顯示舊的影片畫質選單 @@ -1304,6 +1306,7 @@ 未啟用跳過計數跟蹤 最短片段持續時間 小於此值(以秒為單位)的片段將不會顯示或跳過 + 持續時間無效。 您的私人用戶 ID 此 ID 應保密這類似於密碼,不應與任何人分享如果有人獲取此 ID,他們可以冒充您 私人用戶 ID 長度必須至少為30個字符 @@ -1423,22 +1426,6 @@ 使用應用程式內分享擴展。 啟用 OPUS 編解碼器 如果播放器回應包含 OPUS 編解碼器,則啟用 OPUS 編解碼器。 - 偽裝播放器參數 - "偽裝播放器參數以回避播放問題 - -已知問題: - • 進階位元率無法使用 - • 付費影片無進度條縮圖 - • 離線下載可能無法使用 - • 影片可能無法從上次播放的位置開始" - 偽裝探索播放器參數 - "偽裝播放器參數針對探索內影片 - -已知問題:自動播放的動態影片將出現在你的觀看記錄裡" - "未偽裝播放器參數針對探索內影片 - -已知問題 - • 動態影片播放時間不滿1分鐘會出現播放問題" 導入/導出設定 導入或導出設定 @@ -1461,69 +1448,7 @@ 導入配置成功 重置 設定已複製到剪貼簿。 - - 偽裝客戶端 - 偽裝客戶端以防止播放問題。 - 偽裝客戶端 - 已偽裝客戶端。 - "客戶端未偽裝。 影片可能無法播放。" - 關閉此設定可能會導致影片播放發生問題。 - 在「數據統計」中顯示 - 已偽裝的用戶端顯示在「數據統計」中。 - 已偽裝的用戶端隱藏在「數據統計」中。 - - 偽裝客戶端選項 - 一般設定 - 實況直播 - 短片, 片段 - 回復 - iOS - Android - Android 嵌入播放器 - Android 測試套件 - Android TV - Android VR - TV HTML5 - 網頁 - - 關於 - iOS - "偽裝客戶端到iOS。 - - 副作用包括: - • HDR影片僅在AV1編解碼器上支援。 - • 觀看時間不會保存在品牌帳戶的觀看記錄中。" - "偽裝用戶端到 iOS。 - - 副作用包括: - • 沒有 HDR 影片 - • 更高的影片畫質可能不可用 - • 觀看記錄不適用於品牌帳戶 - • 即時串流不能只作為音訊播放 - • Android 8.0 上不支援直播" - Android 測試套件 - "偽裝用戶端為 Android 測試套件。 - -副作用包括: -・沒有 HDR 影片 -・缺少音訊選單 -・字幕可能不可用" - 安卓電視 - "偽裝用戶端到 Android 電視 (YouTube TV)。 - - 副作用包括: - • 沒有 HDR 影片 - • 缺少音訊選單 - • 字幕可能不可用 - • 部分直播串流不支援回放" - Android VR - "偽裝 Android VR 用戶端。 - - 副作用包括: - • 無 HDR 影片。 - • 暫停的影片可以隨機恢復。 - • 低品質的短片搜尋欄縮圖。 - • 無法播放兒童影片。" + 觀看歷史記錄 變更與觀看歷史記錄相關的設定。 @@ -1535,16 +1460,6 @@ 區塊觀看歷史記錄 關於觀看歷史記錄 • 觀看歷史記錄不起作用。 - "• 遵循Google帳戶的觀看記錄設定。 -• 觀看記錄可能不適用於品牌帳戶。 -(偽裝客戶端設定已開啟,並選擇iOS客戶端)" - "• 遵循Google帳戶的觀看記錄設定。 -• 由於 DNS 或 VPN 的原因,觀看記錄可能無法運作。 -• 觀看記錄可能不適用於品牌帳戶。 -(偽裝客戶端設定已開啟,並選擇iOS客戶端)" - • 遵循Google帳戶的觀看記錄設定。 - "• 遵循Google帳戶的觀看記錄設定。 -• 由於 DNS 或 VPN 的原因,觀看記錄可能無法運作。" 補丁訊息 From c285c6231cd2b7dc5921e325d140439047248b0b Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sun, 1 Sep 2024 03:22:10 +0900 Subject: [PATCH 23/53] bump 4.13.1-dev.2 --- README.md | 2 +- gradle.properties | 2 +- patches.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index be6a359485..e9adeaa2ab 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ ReVanced Extended Patches. | `Shorts components` | Adds options to hide or change components related to YouTube Shorts. | 18.29.38 ~ 19.16.39 | | `SponsorBlock` | Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as sponsored content. | 18.29.38 ~ 19.16.39 | | `Spoof app version` | Adds options to spoof the YouTube client version. This can be used to restore old UI elements and features. | 18.29.38 ~ 19.16.39 | -| `Spoof client` | Adds options to spoof the client to allow video playback. | 18.29.38 ~ 19.16.39 | +| `Spoof streaming data` | Adds options to spoof the streaming data to allow video playback. | 18.29.38 ~ 19.16.39 | | `Swipe controls` | Adds options for controlling volume and brightness with swiping, and whether to enter fullscreen when swiping down below the player. | 18.29.38 ~ 19.16.39 | | `Theme` | Changes the app's theme to the values specified in options.json. | 18.29.38 ~ 19.16.39 | | `Toolbar components` | Adds options to hide or change components located on the toolbar, such as toolbar buttons, search bar, and header. | 18.29.38 ~ 19.16.39 | diff --git a/gradle.properties b/gradle.properties index 9d99bef82d..61b16089d1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.13.1-dev.1 +version = 4.13.1-dev.2 diff --git a/patches.json b/patches.json index 133334b422..aa2da76a3e 100644 --- a/patches.json +++ b/patches.json @@ -1 +1 @@ -[{"name":"Alternative thumbnails","description":"Adds options to replace video thumbnails using the DeArrow API or image captures from the video.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Ambient mode control","description":"Adds options to disable Ambient mode and to bypass Ambient mode restrictions.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Amoled","description":"Applies a pure black theme to some components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bitrate default value","description":"Sets the audio quality to \u0027Always High\u0027 when you first install the app.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bypass image region restrictions","description":"Adds an option to use a different host for static images, so that images blocked in some countries can be received.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bypass image region restrictions","description":"Adds an option to use a different host for static images, so that images blocked in some countries can be received.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Certificate spoof","description":"Enables YouTube Music to work with Android Auto by spoofing the YouTube Music certificate.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change package name","description":"Changes the package name for Reddit to the name specified in options.json.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"PackageNameReddit","default":"com.reddit.frontpage","values":{"Clone":"com.reddit.frontpage.revanced","Default":"com.reddit.frontpage.rvx","Original":"com.reddit.frontpage"},"title":"Package name of Reddit","description":"The name of the package to rename the app to.","required":true}]},{"name":"Change player flyout menu toggles","description":"Adds an option to use text toggles instead of switch toggles within the additional settings menu.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change share sheet","description":"Add option to change from in-app share sheet to system share sheet.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change share sheet","description":"Add option to change from in-app share sheet to system share sheet.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change start page","description":"Adds an option to set which page the app opens in instead of the homepage.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change start page","description":"Adds an option to set which page the app opens in instead of the homepage.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change version code","description":"Changes the version code of the app to the value specified in options.json. Except when mounting, this can prevent app stores from updating the app and allow the app to be installed over an existing installation that has a higher version code. By default, the highest version code is set.","compatiblePackages":null,"use":false,"requiresIntegrations":false,"options":[{"key":"ChangeVersionCode","default":false,"values":null,"title":"Change version code","description":"Changes the version code of the app.","required":true},{"key":"VersionCode","default":"2147483647","values":null,"title":"Version code","description":"The version code to use. (1 ~ 2147483647)","required":true}]},{"name":"Custom Shorts action buttons","description":"Changes, at compile time, the icon of the action buttons of the Shorts player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"IconType","default":"youtubeoutline","values":{"Outline":"outline","OutlineCircle":"outlinecircle","Round":"round","YoutubeOutline":"youtubeoutline","YouTube":"youtube"},"title":"Shorts icon style ","description":"The style of the icons for the action buttons in the Shorts player.","required":true}]},{"name":"Custom branding icon for YouTube","description":"Changes the YouTube app icon to the icon specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppIcon","default":"revancify_blue","values":{"AFN Blue":"afn_blue","AFN Red":"afn_red","MMT":"mmt","Revancify Blue":"revancify_blue","Revancify Red":"revancify_red","YouTube":"youtube"},"title":"App icon","description":"The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_background_color_108.png\n- adaptiveproduct_youtube_foreground_color_108.png\n- ic_launcher.png\n- ic_launcher_round.png","required":true},{"key":"ChangeSplashIcon","default":true,"values":null,"title":"Change splash icons","description":"Apply the custom branding icon to the splash screen.","required":true},{"key":"RestoreOldSplashAnimation","default":true,"values":null,"title":"Restore old splash animation","description":"Restore the old style splash animation.","required":true}]},{"name":"Custom branding icon for YouTube Music","description":"Changes the YouTube Music app icon to the icon specified in options.json.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppIcon","default":"revancify_blue","values":{"AFN Blue":"afn_blue","AFN Red":"afn_red","MMT":"mmt","Revancify Blue":"revancify_blue","Revancify Red":"revancify_red","YouTube Music":"youtube_music"},"title":"App icon","description":"The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_music_background_color_108.png\n- adaptiveproduct_youtube_music_foreground_color_108.png\n- ic_launcher_release.png","required":true},{"key":"ChangeSplashIcon","default":true,"values":null,"title":"Change splash icons","description":"Apply the custom branding icon to the splash screen.","required":true}]},{"name":"Custom branding name for Reddit","description":"Renames the Reddit app to the name specified in options.json.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"AppName","default":"Reddit","values":{"Default":"RVX Reddit","Original":"Reddit"},"title":"App name","description":"The name of the app.","required":true}]},{"name":"Custom branding name for YouTube","description":"Renames the YouTube app to the name specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppName","default":"RVX","values":{"ReVanced Extended":"ReVanced Extended","RVX":"RVX","YouTube RVX":"YouTube RVX","YouTube":"YouTube"},"title":"App name","description":"The name of the app.","required":true}]},{"name":"Custom branding name for YouTube Music","description":"Renames the YouTube Music app to the name specified in options.json.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppNameNotification","default":"RVX Music","values":{"ReVanced Extended Music":"ReVanced Extended Music","RVX Music":"RVX Music","YouTube Music":"YouTube Music","YT Music":"YT Music"},"title":"App name in notification panel","description":"The name of the app as it appears in the notification panel.","required":true},{"key":"AppNameLauncher","default":"RVX Music","values":{"ReVanced Extended Music":"ReVanced Extended Music","RVX Music":"RVX Music","YouTube Music":"YouTube Music","YT Music":"YT Music"},"title":"App name in launcher","description":"The name of the app as it appears in the launcher.","required":true}]},{"name":"Custom double tap length","description":"Adds Double-tap to seek values that are specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"DoubleTapLengthArrays","default":"3, 5, 10, 15, 20, 30, 60, 120, 180","values":null,"title":"Double-tap to seek values","description":"A list of custom Double-tap to seek lengths to be added, separated by commas.","required":true}]},{"name":"Custom header for YouTube","description":"Applies a custom header in the top left corner within the app.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"CustomHeader","default":"custom_branding_icon","values":{"Custom branding icon":"custom_branding_icon"},"title":"Custom header","description":"The header to apply to the app.\n\nPatch option \u0027Custom branding icon\u0027 applies only when:\n\n1. Patch \u0027Custom branding icon for YouTube\u0027 is included.\n2. Patch option for \u0027Custom branding icon for YouTube\u0027 is selected from the preset.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n[Generic header]\n\n- yt_wordmark_header_light.png\n- yt_wordmark_header_dark.png\n\nThe image dimensions must be as follows:\n\n- drawable-xxxhdpi: 488px x 192px\n- drawable-xxhdpi: 366px x 144px\n- drawable-xhdpi: 244px x 96px\n- drawable-hdpi: 184px x 72px\n- drawable-mdpi: 122px x 48px\n\n[Premium header]\n\n- yt_premium_wordmark_header_light.png\n- yt_premium_wordmark_header_dark.png\n\nThe image dimensions must be as follows:\n- drawable-xxxhdpi: 516px x 192px\n- drawable-xxhdpi: 387px x 144px\n- drawable-xhdpi: 258px x 96px\n- drawable-hdpi: 194px x 72px\n- drawable-mdpi: 129px x 48px","required":true}]},{"name":"Custom header for YouTube Music","description":"Applies a custom header in the top left corner within the app.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"CustomHeader","default":"custom_branding_icon","values":{"Custom branding icon":"custom_branding_icon"},"title":"Custom header","description":"The header to apply to the app.\n\nPatch option \u0027Custom branding icon\u0027 applies only when:\n\n1. Patch \u0027Custom branding icon for YouTube Music\u0027 is included.\n2. Patch option for \u0027Custom branding icon for YouTube Music\u0027 is selected from the preset.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n- action_bar_logo.png\n- logo_music.png\n- ytm_logo.png\n\nThe image \u0027action_bar_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 320px x 96px\n- drawable-xxhdpi: 240px x 72px\n- drawable-xhdpi: 160px x 48px\n- drawable-hdpi: 121px x 36px\n- drawable-mdpi: 80px x 24px\n\nThe image \u0027logo_music.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 576px x 200px\n- drawable-xxhdpi: 432px x 150px\n- drawable-xhdpi: 288px x 100px\n- drawable-hdpi: 217px x 76px\n- drawable-mdpi: 144px x 50px\n\nThe image \u0027ytm_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 412px x 144px\n- drawable-xxhdpi: 309px x 108px\n- drawable-xhdpi: 206px x 72px\n- drawable-hdpi: 155px x 54px\n- drawable-mdpi: 103px x 36px","required":true}]},{"name":"Description components","description":"Adds options to hide and disable description components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable QUIC protocol","description":"Adds an option to disable CronetEngine\u0027s QUIC protocol.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto audio tracks","description":"Adds an option to disable audio tracks from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto captions","description":"Adds an option to disable captions from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto captions","description":"Adds an option to disable captions from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable dislike redirection","description":"Adds an option to disable redirection to the next track when clicking the Dislike button.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable haptic feedback","description":"Adds options to disable haptic feedback when swiping in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable resuming Shorts on startup","description":"Adds an option to disable the Shorts player from resuming on app startup when Shorts were last being watched.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable screenshot popup","description":"Adds an option to disable the popup that appears when taking a screenshot.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable splash animation","description":"Adds an option to disable the splash animation on app startup.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable Cairo splash animation","description":"Adds an option to enable Cairo splash animation.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["7.08.54","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable OPUS codec","description":"Adds an options to enable the OPUS audio codec if the player response includes.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable OPUS codec","description":"Adds an options to enable the OPUS audio codec if the player response includes.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable debug logging","description":"Adds an option to enable debug logging.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable debug logging","description":"Adds an option to enable debug logging.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable external browser","description":"Adds an option to always open links in your browser instead of in the in-app-browser.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable gradient loading screen","description":"Adds an option to enable the gradient loading screen.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable landscape mode","description":"Adds an option to enable landscape mode when rotating the screen on phones.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable open links directly","description":"Adds an option to skip over redirection URLs in external links.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Flyout menu components","description":"Adds options to hide or change flyout menu components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Force hide player buttons background","description":"Removes, at compile time, the dark background surrounding the video player controls.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Fullscreen components","description":"Adds options to hide or change components related to fullscreen.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"GmsCore support","description":"Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"GmsCoreVendorGroupId","default":"app.revanced","values":{"ReVanced":"app.revanced"},"title":"GmsCore vendor group ID","description":"The vendor\u0027s group ID for GmsCore.","required":true},{"key":"CheckGmsCore","default":true,"values":null,"title":"Check GmsCore","description":"Check if GmsCore is installed on the device when the app starts.\n\nIf GmsCore is not installed on the device, the app won\u0027t work, so don\u0027t disable it if possible.","required":true},{"key":"PackageNameYouTube","default":"app.rvx.android.youtube","values":{"Clone":"com.rvx.android.youtube","Default":"app.rvx.android.youtube"},"title":"Package name of YouTube","description":"The name of the package to use in GmsCore support.","required":true},{"key":"PackageNameYouTubeMusic","default":"app.rvx.android.apps.youtube.music","values":{"Clone":"com.rvx.android.apps.youtube.music","Default":"app.rvx.android.apps.youtube.music"},"title":"Package name of YouTube Music","description":"The name of the package to use in GmsCore support.","required":true}]},{"name":"GmsCore support","description":"Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"GmsCoreVendorGroupId","default":"app.revanced","values":{"ReVanced":"app.revanced"},"title":"GmsCore vendor group ID","description":"The vendor\u0027s group ID for GmsCore.","required":true},{"key":"CheckGmsCore","default":true,"values":null,"title":"Check GmsCore","description":"Check if GmsCore is installed on the device when the app starts.\n\nIf GmsCore is not installed on the device, the app won\u0027t work, so don\u0027t disable it if possible.","required":true},{"key":"PackageNameYouTube","default":"app.rvx.android.youtube","values":{"Clone":"com.rvx.android.youtube","Default":"app.rvx.android.youtube"},"title":"Package name of YouTube","description":"The name of the package to use in GmsCore support.","required":true},{"key":"PackageNameYouTubeMusic","default":"app.rvx.android.apps.youtube.music","values":{"Clone":"com.rvx.android.apps.youtube.music","Default":"app.rvx.android.apps.youtube.music"},"title":"Package name of YouTube Music","description":"The name of the package to use in GmsCore support.","required":true}]},{"name":"Hide Recently Visited shelf","description":"Adds an option to hide the Recently Visited shelf in the sidebar.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide Shorts dimming","description":"Removes, at compile time, the dimming effect at the top and bottom of Shorts videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide account components","description":"Adds options to hide components related to the account menu.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide action bar components","description":"Adds options to hide action bar components and replace the offline download button with an external download button.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide action buttons","description":"Adds options to hide action buttons under videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":true,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide comments components","description":"Adds options to hide components related to comments.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide feed components","description":"Adds options to hide components related to feeds.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide feed flyout menu","description":"Adds the ability to hide feed flyout menu components using a custom filter.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide layout components","description":"Adds options to hide general layout components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide layout components","description":"Adds options to hide general layout components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide navigation buttons","description":"Adds options to hide buttons in the navigation bar.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide overlay filter","description":"Removes, at compile time, the dark overlay that appears when player flyout menus are open.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide player buttons","description":"Adds options to hide buttons in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide player flyout menu","description":"Adds options to hide player flyout menu components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide player overlay filter","description":"Removes, at compile time, the dark overlay that appears when single-tapping in the player.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide recommended communities shelf","description":"Adds an option to hide the recommended communities shelves in subreddits.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hook download actions","description":"Adds support to download videos with an external downloader app using the in-app download button.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Layout switch","description":"Adds an option to spoof the dpi in order to use a tablet or phone layout.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"MaterialYou","description":"Applies the MaterialYou theme for Android 12+ devices.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Miniplayer","description":"Adds options to change the in app minimized player, and if patching target 19.16+ adds options to use modern miniplayers.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Navigation bar components","description":"Adds options to hide or change components related to the navigation bar.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Navigation bar components","description":"Adds options to hide or change components related to the navigation bar.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Open links directly","description":"Adds an option to skip over redirection URLs in external links.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Open links externally","description":"Adds an option to always open links in your browser instead of in the in-app-browser.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Overlay buttons","description":"Adds options to display overlay buttons in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"IconType","default":"bold","values":{"Bold":"bold","Rounded":"rounded","Thin":"thin"},"title":"Icon type","description":"The icon type.","required":true},{"key":"BottomMargin","default":"0.0dip","values":{"Wider":"6.0dip","Default":"0.0dip"},"title":"Bottom margin","description":"The bottom margin for the overlay buttons and timestamp.","required":true},{"key":"ChangeTopButtons","default":false,"values":null,"title":"Change top buttons","description":"Change the icons at the top of the player.","required":true}]},{"name":"Player components","description":"Adds options to hide or change components related to the player.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Player components","description":"Adds options to hide or change components related to the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Premium icon","description":"Unlocks premium app icons.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove background playback restrictions","description":"Removes restrictions on background playback, including for kids videos.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove background playback restrictions","description":"Removes restrictions on background playback, including for music and kids videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove subreddit dialog","description":"Adds options to remove the NSFW community warning and notifications suggestion dialogs by dismissing them automatically.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove viewer discretion dialog","description":"Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove viewer discretion dialog","description":"Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Restore old style library shelf","description":"Adds an option to return the Library tab to the old style.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Return YouTube Dislike","description":"Adds an option to show the dislike count of songs using the Return YouTube Dislike API.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Return YouTube Dislike","description":"Adds an option to show the dislike count of videos using the Return YouTube Dislike API.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Seekbar components","description":"Adds options to hide or change components related to the seekbar.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Settings for Reddit","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Settings for YouTube","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"InsertPosition","default":"@string/about_key","values":{"Parent settings":"@string/parent_tools_key","General":"@string/general_key","Account":"@string/account_switcher_key","Data saving":"@string/data_saving_settings_key","Autoplay":"@string/auto_play_key","Video quality preferences":"@string/video_quality_settings_key","Background":"@string/offline_key","Watch on TV":"@string/pair_with_tv_key","Manage all history":"@string/history_key","Your data in YouTube":"@string/your_data_key","Privacy":"@string/privacy_key","History \u0026 privacy":"@string/privacy_key","Try experimental new features":"@string/premium_early_access_browse_page_key","Purchases and memberships":"@string/subscription_product_setting_key","Billing \u0026 payments":"@string/billing_and_payment_key","Billing and payments":"@string/billing_and_payment_key","Notifications":"@string/notification_key","Connected apps":"@string/connected_accounts_browse_page_key","Live chat":"@string/live_chat_key","Captions":"@string/captions_key","Accessibility":"@string/accessibility_settings_key","About":"@string/about_key"},"title":"Insert position","description":"The settings menu name that the RVX settings menu should be above.","required":true},{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Settings for YouTube Music","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Shorts components","description":"Adds options to hide or change components related to YouTube Shorts.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"SponsorBlock","description":"Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as non-music sections.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"SponsorBlock","description":"Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as sponsored content.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"OutlineIcon","default":false,"values":null,"title":"Outline icons","description":"Apply the outline icon.","required":true}]},{"name":"Spoof app version","description":"Adds options to spoof the YouTube Music client version. This can remove the radio mode restriction in Canadian regions or disable real-time lyrics.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Spoof app version","description":"Adds options to spoof the YouTube client version. This can be used to restore old UI elements and features.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Spoof client","description":"Adds options to spoof the client to allow video playback.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Swipe controls","description":"Adds options for controlling volume and brightness with swiping, and whether to enter fullscreen when swiping down below the player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Theme","description":"Changes the app\u0027s theme to the values specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"DarkThemeBackgroundColor","default":"@android:color/black","values":{"Amoled Black":"@android:color/black","Catppuccin (Mocha)":"#FF181825","Dark Pink":"#FF290025","Dark Blue":"#FF001029","Dark Green":"#FF002905","Dark Yellow":"#FF282900","Dark Orange":"#FF291800","Dark Red":"#FF290000"},"title":"Dark theme background color","description":"Can be a hex color (#AARRGGBB) or a color resource reference.","required":true},{"key":"LightThemeBackgroundColor","default":"@android:color/white","values":{"White":"@android:color/white","Catppuccin (Latte)":"#FFE6E9EF","Light Pink":"#FFFCCFF3","Light Blue":"#FFD1E0FF","Light Green":"#FFCCFFCC","Light Yellow":"#FFFDFFCC","Light Orange":"#FFFFE6CC","Light Red":"#FFFFD6D6"},"title":"Light theme background color","description":"Can be a hex color (#AARRGGBB) or a color resource reference.","required":true}]},{"name":"Toolbar components","description":"Adds options to hide or change components located on the toolbar, such as toolbar buttons, search bar, and header.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Translations for YouTube","description":"Add translations or remove string resources.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"CustomTranslations","default":"","values":null,"title":"Custom translations","description":"The path to the \u0027strings.xml\u0027 file.\nPlease note that applying the \u0027strings.xml\u0027 file will overwrite all existing translations.","required":true},{"key":"SelectedTranslations","default":"ar, bg-rBG, de-rDE, el-rGR, es-rES, fr-rFR, hu-rHU, it-rIT, ja-rJP, ko-rKR, pl-rPL, pt-rBR, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW","values":null,"title":"Translations to add","description":"A list of translations to be added for the RVX settings, separated by commas.","required":true},{"key":"SelectedStringResources","default":"af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu","values":null,"title":"String resources to keep","description":"A list of string resources to be kept, separated by commas.\nString resources not in the list will be removed from the app.\n\nDefault string resource, English, is not removed.","required":true}]},{"name":"Translations for YouTube Music","description":"Add translations or remove string resources.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"CustomTranslations","default":"","values":null,"title":"Custom translations","description":"The path to the \u0027strings.xml\u0027 file.\nPlease note that applying the \u0027strings.xml\u0027 file will overwrite all existing language translations.","required":true},{"key":"SelectedTranslations","default":"bg-rBG, bn, cs-rCZ, el-rGR, es-rES, fr-rFR, hu-rHU, id-rID, in, it-rIT, ja-rJP, ko-rKR, nl-rNL, pl-rPL, pt-rBR, ro-rRO, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW","values":null,"title":"Translations to add","description":"A list of translations to be added for the RVX settings, separated by commas.","required":true},{"key":"SelectedStringResources","default":"af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu","values":null,"title":"String resources to keep","description":"A list of string resources to be kept, separated by commas.\nString resources not in the list will be removed from the app.\n\nDefault string resource, English, is not removed.","required":true}]},{"name":"Video playback","description":"Adds options to customize settings related to video playback, such as default video quality and playback speed.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Video playback","description":"Adds options to customize settings related to video playback, such as default video quality and playback speed.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Visual preferences icons","description":"Adds icons to specific preferences in the settings.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"RVXSettingsMenuIcon","default":"extension","values":{"Custom branding icon":"custom_branding_icon","Extension":"extension","Gear":"gear","ReVanced":"revanced","ReVanced Colored":"revanced_colored"},"title":"RVX settings menu icon","description":"The icon for the RVX settings menu.","required":true}]},{"name":"Watch history","description":"Adds an option to change the domain of the watch history or check its status.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]}] \ No newline at end of file +[{"name":"Alternative thumbnails","description":"Adds options to replace video thumbnails using the DeArrow API or image captures from the video.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Ambient mode control","description":"Adds options to disable Ambient mode and to bypass Ambient mode restrictions.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Amoled","description":"Applies a pure black theme to some components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bitrate default value","description":"Sets the audio quality to \u0027Always High\u0027 when you first install the app.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bypass image region restrictions","description":"Adds an option to use a different host for static images, so that images blocked in some countries can be received.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bypass image region restrictions","description":"Adds an option to use a different host for static images, so that images blocked in some countries can be received.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Certificate spoof","description":"Enables YouTube Music to work with Android Auto by spoofing the YouTube Music certificate.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change package name","description":"Changes the package name for Reddit to the name specified in options.json.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"PackageNameReddit","default":"com.reddit.frontpage","values":{"Clone":"com.reddit.frontpage.revanced","Default":"com.reddit.frontpage.rvx","Original":"com.reddit.frontpage"},"title":"Package name of Reddit","description":"The name of the package to rename the app to.","required":true}]},{"name":"Change player flyout menu toggles","description":"Adds an option to use text toggles instead of switch toggles within the additional settings menu.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change share sheet","description":"Add option to change from in-app share sheet to system share sheet.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change share sheet","description":"Add option to change from in-app share sheet to system share sheet.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change start page","description":"Adds an option to set which page the app opens in instead of the homepage.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change start page","description":"Adds an option to set which page the app opens in instead of the homepage.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change version code","description":"Changes the version code of the app to the value specified in options.json. Except when mounting, this can prevent app stores from updating the app and allow the app to be installed over an existing installation that has a higher version code. By default, the highest version code is set.","compatiblePackages":null,"use":false,"requiresIntegrations":false,"options":[{"key":"ChangeVersionCode","default":false,"values":null,"title":"Change version code","description":"Changes the version code of the app.","required":true},{"key":"VersionCode","default":"2147483647","values":null,"title":"Version code","description":"The version code to use. (1 ~ 2147483647)","required":true}]},{"name":"Custom Shorts action buttons","description":"Changes, at compile time, the icon of the action buttons of the Shorts player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"IconType","default":"youtubeoutline","values":{"Outline":"outline","OutlineCircle":"outlinecircle","Round":"round","YoutubeOutline":"youtubeoutline","YouTube":"youtube"},"title":"Shorts icon style ","description":"The style of the icons for the action buttons in the Shorts player.","required":true}]},{"name":"Custom branding icon for YouTube","description":"Changes the YouTube app icon to the icon specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppIcon","default":"revancify_blue","values":{"AFN Blue":"afn_blue","AFN Red":"afn_red","MMT":"mmt","Revancify Blue":"revancify_blue","Revancify Red":"revancify_red","YouTube":"youtube"},"title":"App icon","description":"The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_background_color_108.png\n- adaptiveproduct_youtube_foreground_color_108.png\n- ic_launcher.png\n- ic_launcher_round.png","required":true},{"key":"ChangeSplashIcon","default":true,"values":null,"title":"Change splash icons","description":"Apply the custom branding icon to the splash screen.","required":true},{"key":"RestoreOldSplashAnimation","default":true,"values":null,"title":"Restore old splash animation","description":"Restore the old style splash animation.","required":true}]},{"name":"Custom branding icon for YouTube Music","description":"Changes the YouTube Music app icon to the icon specified in options.json.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppIcon","default":"revancify_blue","values":{"AFN Blue":"afn_blue","AFN Red":"afn_red","MMT":"mmt","Revancify Blue":"revancify_blue","Revancify Red":"revancify_red","YouTube Music":"youtube_music"},"title":"App icon","description":"The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_music_background_color_108.png\n- adaptiveproduct_youtube_music_foreground_color_108.png\n- ic_launcher_release.png","required":true},{"key":"ChangeSplashIcon","default":true,"values":null,"title":"Change splash icons","description":"Apply the custom branding icon to the splash screen.","required":true}]},{"name":"Custom branding name for Reddit","description":"Renames the Reddit app to the name specified in options.json.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"AppName","default":"Reddit","values":{"Default":"RVX Reddit","Original":"Reddit"},"title":"App name","description":"The name of the app.","required":true}]},{"name":"Custom branding name for YouTube","description":"Renames the YouTube app to the name specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppName","default":"RVX","values":{"ReVanced Extended":"ReVanced Extended","RVX":"RVX","YouTube RVX":"YouTube RVX","YouTube":"YouTube"},"title":"App name","description":"The name of the app.","required":true}]},{"name":"Custom branding name for YouTube Music","description":"Renames the YouTube Music app to the name specified in options.json.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppNameNotification","default":"RVX Music","values":{"ReVanced Extended Music":"ReVanced Extended Music","RVX Music":"RVX Music","YouTube Music":"YouTube Music","YT Music":"YT Music"},"title":"App name in notification panel","description":"The name of the app as it appears in the notification panel.","required":true},{"key":"AppNameLauncher","default":"RVX Music","values":{"ReVanced Extended Music":"ReVanced Extended Music","RVX Music":"RVX Music","YouTube Music":"YouTube Music","YT Music":"YT Music"},"title":"App name in launcher","description":"The name of the app as it appears in the launcher.","required":true}]},{"name":"Custom double tap length","description":"Adds Double-tap to seek values that are specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"DoubleTapLengthArrays","default":"3, 5, 10, 15, 20, 30, 60, 120, 180","values":null,"title":"Double-tap to seek values","description":"A list of custom Double-tap to seek lengths to be added, separated by commas.","required":true}]},{"name":"Custom header for YouTube","description":"Applies a custom header in the top left corner within the app.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"CustomHeader","default":"custom_branding_icon","values":{"Custom branding icon":"custom_branding_icon"},"title":"Custom header","description":"The header to apply to the app.\n\nPatch option \u0027Custom branding icon\u0027 applies only when:\n\n1. Patch \u0027Custom branding icon for YouTube\u0027 is included.\n2. Patch option for \u0027Custom branding icon for YouTube\u0027 is selected from the preset.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n[Generic header]\n\n- yt_wordmark_header_light.png\n- yt_wordmark_header_dark.png\n\nThe image dimensions must be as follows:\n\n- drawable-xxxhdpi: 488px x 192px\n- drawable-xxhdpi: 366px x 144px\n- drawable-xhdpi: 244px x 96px\n- drawable-hdpi: 184px x 72px\n- drawable-mdpi: 122px x 48px\n\n[Premium header]\n\n- yt_premium_wordmark_header_light.png\n- yt_premium_wordmark_header_dark.png\n\nThe image dimensions must be as follows:\n- drawable-xxxhdpi: 516px x 192px\n- drawable-xxhdpi: 387px x 144px\n- drawable-xhdpi: 258px x 96px\n- drawable-hdpi: 194px x 72px\n- drawable-mdpi: 129px x 48px","required":true}]},{"name":"Custom header for YouTube Music","description":"Applies a custom header in the top left corner within the app.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"CustomHeader","default":"custom_branding_icon","values":{"Custom branding icon":"custom_branding_icon"},"title":"Custom header","description":"The header to apply to the app.\n\nPatch option \u0027Custom branding icon\u0027 applies only when:\n\n1. Patch \u0027Custom branding icon for YouTube Music\u0027 is included.\n2. Patch option for \u0027Custom branding icon for YouTube Music\u0027 is selected from the preset.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n- action_bar_logo.png\n- logo_music.png\n- ytm_logo.png\n\nThe image \u0027action_bar_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 320px x 96px\n- drawable-xxhdpi: 240px x 72px\n- drawable-xhdpi: 160px x 48px\n- drawable-hdpi: 121px x 36px\n- drawable-mdpi: 80px x 24px\n\nThe image \u0027logo_music.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 576px x 200px\n- drawable-xxhdpi: 432px x 150px\n- drawable-xhdpi: 288px x 100px\n- drawable-hdpi: 217px x 76px\n- drawable-mdpi: 144px x 50px\n\nThe image \u0027ytm_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 412px x 144px\n- drawable-xxhdpi: 309px x 108px\n- drawable-xhdpi: 206px x 72px\n- drawable-hdpi: 155px x 54px\n- drawable-mdpi: 103px x 36px","required":true}]},{"name":"Description components","description":"Adds options to hide and disable description components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable QUIC protocol","description":"Adds an option to disable CronetEngine\u0027s QUIC protocol.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto audio tracks","description":"Adds an option to disable audio tracks from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto captions","description":"Adds an option to disable captions from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto captions","description":"Adds an option to disable captions from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable dislike redirection","description":"Adds an option to disable redirection to the next track when clicking the Dislike button.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable haptic feedback","description":"Adds options to disable haptic feedback when swiping in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable resuming Shorts on startup","description":"Adds an option to disable the Shorts player from resuming on app startup when Shorts were last being watched.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable screenshot popup","description":"Adds an option to disable the popup that appears when taking a screenshot.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable splash animation","description":"Adds an option to disable the splash animation on app startup.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable Cairo splash animation","description":"Adds an option to enable Cairo splash animation.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["7.08.54","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable OPUS codec","description":"Adds an options to enable the OPUS audio codec if the player response includes.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable OPUS codec","description":"Adds an options to enable the OPUS audio codec if the player response includes.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable debug logging","description":"Adds an option to enable debug logging.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable debug logging","description":"Adds an option to enable debug logging.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable external browser","description":"Adds an option to always open links in your browser instead of in the in-app-browser.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable gradient loading screen","description":"Adds an option to enable the gradient loading screen.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable landscape mode","description":"Adds an option to enable landscape mode when rotating the screen on phones.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable open links directly","description":"Adds an option to skip over redirection URLs in external links.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Flyout menu components","description":"Adds options to hide or change flyout menu components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Force hide player buttons background","description":"Removes, at compile time, the dark background surrounding the video player controls.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Fullscreen components","description":"Adds options to hide or change components related to fullscreen.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"GmsCore support","description":"Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"GmsCoreVendorGroupId","default":"app.revanced","values":{"ReVanced":"app.revanced"},"title":"GmsCore vendor group ID","description":"The vendor\u0027s group ID for GmsCore.","required":true},{"key":"CheckGmsCore","default":true,"values":null,"title":"Check GmsCore","description":"Check if GmsCore is installed on the device and has battery optimizations disabled when the app starts. \n\nIf GmsCore is not installed the app will not work, so disabling this is not recommended.","required":true},{"key":"PackageNameYouTube","default":"app.rvx.android.youtube","values":{"Clone":"com.rvx.android.youtube","Default":"app.rvx.android.youtube"},"title":"Package name of YouTube","description":"The name of the package to use in GmsCore support.","required":true},{"key":"PackageNameYouTubeMusic","default":"app.rvx.android.apps.youtube.music","values":{"Clone":"com.rvx.android.apps.youtube.music","Default":"app.rvx.android.apps.youtube.music"},"title":"Package name of YouTube Music","description":"The name of the package to use in GmsCore support.","required":true}]},{"name":"GmsCore support","description":"Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"GmsCoreVendorGroupId","default":"app.revanced","values":{"ReVanced":"app.revanced"},"title":"GmsCore vendor group ID","description":"The vendor\u0027s group ID for GmsCore.","required":true},{"key":"CheckGmsCore","default":true,"values":null,"title":"Check GmsCore","description":"Check if GmsCore is installed on the device and has battery optimizations disabled when the app starts. \n\nIf GmsCore is not installed the app will not work, so disabling this is not recommended.","required":true},{"key":"PackageNameYouTube","default":"app.rvx.android.youtube","values":{"Clone":"com.rvx.android.youtube","Default":"app.rvx.android.youtube"},"title":"Package name of YouTube","description":"The name of the package to use in GmsCore support.","required":true},{"key":"PackageNameYouTubeMusic","default":"app.rvx.android.apps.youtube.music","values":{"Clone":"com.rvx.android.apps.youtube.music","Default":"app.rvx.android.apps.youtube.music"},"title":"Package name of YouTube Music","description":"The name of the package to use in GmsCore support.","required":true}]},{"name":"Hide Recently Visited shelf","description":"Adds an option to hide the Recently Visited shelf in the sidebar.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide Shorts dimming","description":"Removes, at compile time, the dimming effect at the top and bottom of Shorts videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide account components","description":"Adds options to hide components related to the account menu.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide action bar components","description":"Adds options to hide action bar components and replace the offline download button with an external download button.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide action buttons","description":"Adds options to hide action buttons under videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":true,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide comments components","description":"Adds options to hide components related to comments.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide feed components","description":"Adds options to hide components related to feeds.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide feed flyout menu","description":"Adds the ability to hide feed flyout menu components using a custom filter.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide layout components","description":"Adds options to hide general layout components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide layout components","description":"Adds options to hide general layout components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide navigation buttons","description":"Adds options to hide buttons in the navigation bar.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide overlay filter","description":"Removes, at compile time, the dark overlay that appears when player flyout menus are open.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide player buttons","description":"Adds options to hide buttons in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide player flyout menu","description":"Adds options to hide player flyout menu components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide player overlay filter","description":"Removes, at compile time, the dark overlay that appears when single-tapping in the player.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide recommended communities shelf","description":"Adds an option to hide the recommended communities shelves in subreddits.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hook download actions","description":"Adds support to download videos with an external downloader app using the in-app download button.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Layout switch","description":"Adds an option to spoof the dpi in order to use a tablet or phone layout.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"MaterialYou","description":"Applies the MaterialYou theme for Android 12+ devices.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Miniplayer","description":"Adds options to change the in app minimized player, and if patching target 19.16+ adds options to use modern miniplayers.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Navigation bar components","description":"Adds options to hide or change components related to the navigation bar.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Navigation bar components","description":"Adds options to hide or change components related to the navigation bar.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Open links directly","description":"Adds an option to skip over redirection URLs in external links.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Open links externally","description":"Adds an option to always open links in your browser instead of in the in-app-browser.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Overlay buttons","description":"Adds options to display overlay buttons in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"IconType","default":"bold","values":{"Bold":"bold","Rounded":"rounded","Thin":"thin"},"title":"Icon type","description":"The icon type.","required":true},{"key":"BottomMargin","default":"0.0dip","values":{"Wider":"6.0dip","Default":"0.0dip"},"title":"Bottom margin","description":"The bottom margin for the overlay buttons and timestamp.","required":true},{"key":"ChangeTopButtons","default":false,"values":null,"title":"Change top buttons","description":"Change the icons at the top of the player.","required":true}]},{"name":"Player components","description":"Adds options to hide or change components related to the player.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Player components","description":"Adds options to hide or change components related to the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Premium icon","description":"Unlocks premium app icons.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove background playback restrictions","description":"Removes restrictions on background playback, including for kids videos.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove background playback restrictions","description":"Removes restrictions on background playback, including for music and kids videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove subreddit dialog","description":"Adds options to remove the NSFW community warning and notifications suggestion dialogs by dismissing them automatically.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove viewer discretion dialog","description":"Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove viewer discretion dialog","description":"Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Restore old style library shelf","description":"Adds an option to return the Library tab to the old style.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Return YouTube Dislike","description":"Adds an option to show the dislike count of songs using the Return YouTube Dislike API.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Return YouTube Dislike","description":"Adds an option to show the dislike count of videos using the Return YouTube Dislike API.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Seekbar components","description":"Adds options to hide or change components related to the seekbar.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Settings for Reddit","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Settings for YouTube","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"InsertPosition","default":"@string/about_key","values":{"Parent settings":"@string/parent_tools_key","General":"@string/general_key","Account":"@string/account_switcher_key","Data saving":"@string/data_saving_settings_key","Autoplay":"@string/auto_play_key","Video quality preferences":"@string/video_quality_settings_key","Background":"@string/offline_key","Watch on TV":"@string/pair_with_tv_key","Manage all history":"@string/history_key","Your data in YouTube":"@string/your_data_key","Privacy":"@string/privacy_key","History \u0026 privacy":"@string/privacy_key","Try experimental new features":"@string/premium_early_access_browse_page_key","Purchases and memberships":"@string/subscription_product_setting_key","Billing \u0026 payments":"@string/billing_and_payment_key","Billing and payments":"@string/billing_and_payment_key","Notifications":"@string/notification_key","Connected apps":"@string/connected_accounts_browse_page_key","Live chat":"@string/live_chat_key","Captions":"@string/captions_key","Accessibility":"@string/accessibility_settings_key","About":"@string/about_key"},"title":"Insert position","description":"The settings menu name that the RVX settings menu should be above.","required":true},{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Settings for YouTube Music","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Shorts components","description":"Adds options to hide or change components related to YouTube Shorts.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"SponsorBlock","description":"Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as non-music sections.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"SponsorBlock","description":"Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as sponsored content.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"OutlineIcon","default":false,"values":null,"title":"Outline icons","description":"Apply the outline icon.","required":true}]},{"name":"Spoof app version","description":"Adds options to spoof the YouTube Music client version. This can remove the radio mode restriction in Canadian regions or disable real-time lyrics.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Spoof app version","description":"Adds options to spoof the YouTube client version. This can be used to restore old UI elements and features.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Spoof streaming data","description":"Adds options to spoof the streaming data to allow video playback.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Swipe controls","description":"Adds options for controlling volume and brightness with swiping, and whether to enter fullscreen when swiping down below the player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Theme","description":"Changes the app\u0027s theme to the values specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"DarkThemeBackgroundColor","default":"@android:color/black","values":{"Amoled Black":"@android:color/black","Catppuccin (Mocha)":"#FF181825","Dark Pink":"#FF290025","Dark Blue":"#FF001029","Dark Green":"#FF002905","Dark Yellow":"#FF282900","Dark Orange":"#FF291800","Dark Red":"#FF290000"},"title":"Dark theme background color","description":"Can be a hex color (#AARRGGBB) or a color resource reference.","required":true},{"key":"LightThemeBackgroundColor","default":"@android:color/white","values":{"White":"@android:color/white","Catppuccin (Latte)":"#FFE6E9EF","Light Pink":"#FFFCCFF3","Light Blue":"#FFD1E0FF","Light Green":"#FFCCFFCC","Light Yellow":"#FFFDFFCC","Light Orange":"#FFFFE6CC","Light Red":"#FFFFD6D6"},"title":"Light theme background color","description":"Can be a hex color (#AARRGGBB) or a color resource reference.","required":true}]},{"name":"Toolbar components","description":"Adds options to hide or change components located on the toolbar, such as toolbar buttons, search bar, and header.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Translations for YouTube","description":"Add translations or remove string resources.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"CustomTranslations","default":"","values":null,"title":"Custom translations","description":"The path to the \u0027strings.xml\u0027 file.\nPlease note that applying the \u0027strings.xml\u0027 file will overwrite all existing translations.","required":true},{"key":"SelectedTranslations","default":"ar, bg-rBG, de-rDE, el-rGR, es-rES, fr-rFR, hu-rHU, it-rIT, ja-rJP, ko-rKR, pl-rPL, pt-rBR, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW","values":null,"title":"Translations to add","description":"A list of translations to be added for the RVX settings, separated by commas.","required":true},{"key":"SelectedStringResources","default":"af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu","values":null,"title":"String resources to keep","description":"A list of string resources to be kept, separated by commas.\nString resources not in the list will be removed from the app.\n\nDefault string resource, English, is not removed.","required":true}]},{"name":"Translations for YouTube Music","description":"Add translations or remove string resources.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"CustomTranslations","default":"","values":null,"title":"Custom translations","description":"The path to the \u0027strings.xml\u0027 file.\nPlease note that applying the \u0027strings.xml\u0027 file will overwrite all existing language translations.","required":true},{"key":"SelectedTranslations","default":"bg-rBG, bn, cs-rCZ, el-rGR, es-rES, fr-rFR, hu-rHU, id-rID, in, it-rIT, ja-rJP, ko-rKR, nl-rNL, pl-rPL, pt-rBR, ro-rRO, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW","values":null,"title":"Translations to add","description":"A list of translations to be added for the RVX settings, separated by commas.","required":true},{"key":"SelectedStringResources","default":"af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu","values":null,"title":"String resources to keep","description":"A list of string resources to be kept, separated by commas.\nString resources not in the list will be removed from the app.\n\nDefault string resource, English, is not removed.","required":true}]},{"name":"Video playback","description":"Adds options to customize settings related to video playback, such as default video quality and playback speed.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Video playback","description":"Adds options to customize settings related to video playback, such as default video quality and playback speed.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Visual preferences icons","description":"Adds icons to specific preferences in the settings.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"RVXSettingsMenuIcon","default":"extension","values":{"Custom branding icon":"custom_branding_icon","Extension":"extension","Gear":"gear","ReVanced":"revanced","ReVanced Colored":"revanced_colored"},"title":"RVX settings menu icon","description":"The icon for the RVX settings menu.","required":true}]},{"name":"Watch history","description":"Adds an option to change the domain of the watch history or check its status.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]}] \ No newline at end of file From 3ca97f929276b6217d3364d222d1f948d6fe2e48 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sun, 1 Sep 2024 21:58:32 +0900 Subject: [PATCH 24/53] fix(YouTube/Spoof streaming data) : app crashes when loading ads in Shorts --- .../streamingdata/SpoofStreamingDataPatch.kt | 61 ++++--------------- ...nt.kt => BuildBrowseRequestFingerprint.kt} | 16 ++--- .../BuildPlayerRequestURIFingerprint.kt | 26 -------- 3 files changed, 16 insertions(+), 87 deletions(-) rename src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/{BuildRequestFingerprint.kt => BuildBrowseRequestFingerprint.kt} (73%) delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildPlayerRequestURIFingerprint.kt diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/SpoofStreamingDataPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/SpoofStreamingDataPatch.kt index c16b3d7a13..3c032f5ba7 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/SpoofStreamingDataPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/SpoofStreamingDataPatch.kt @@ -5,19 +5,18 @@ import app.revanced.patcher.extensions.InstructionExtensions.addInstructions import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patcher.extensions.InstructionExtensions.getInstructions -import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction import app.revanced.patcher.patch.PatchException import app.revanced.patcher.util.smali.ExternalLabel import app.revanced.patches.youtube.utils.compatibility.Constants +import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.BuildBrowseRequestFingerprint import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.BuildInitPlaybackRequestFingerprint import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.BuildMediaDataSourceFingerprint -import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.BuildPlayerRequestURIFingerprint -import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.BuildRequestFingerprint import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.CreateStreamingDataFingerprint import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.NerdsStatsVideoFormatBuilderFingerprint import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.ProtobufClassParseByteBufferFingerprint import app.revanced.patches.youtube.utils.integrations.Constants.MISC_PATH import app.revanced.patches.youtube.utils.settings.SettingsPatch +import app.revanced.patches.youtube.video.videoid.VideoIdPatch import app.revanced.util.getReference import app.revanced.util.patch.BaseBytecodePatch import app.revanced.util.resultOrThrow @@ -33,13 +32,13 @@ object SpoofStreamingDataPatch : BaseBytecodePatch( dependencies = setOf( SettingsPatch::class, SpoofUserAgentPatch::class, + VideoIdPatch::class, ), compatiblePackages = Constants.COMPATIBLE_PACKAGE, fingerprints = setOf( + BuildBrowseRequestFingerprint, BuildInitPlaybackRequestFingerprint, BuildMediaDataSourceFingerprint, - BuildPlayerRequestURIFingerprint, - BuildRequestFingerprint, CreateStreamingDataFingerprint, ProtobufClassParseByteBufferFingerprint, @@ -49,10 +48,6 @@ object SpoofStreamingDataPatch : BaseBytecodePatch( ) { private const val INTEGRATIONS_CLASS_DESCRIPTOR = "$MISC_PATH/SpoofStreamingDataPatch;" - private const val REQUEST_CLASS_DESCRIPTOR = - "Lorg/chromium/net/UrlRequest;" - private const val REQUEST_BUILDER_CLASS_DESCRIPTOR = - "Lorg/chromium/net/UrlRequest\$Builder;" override fun execute(context: BytecodeContext) { @@ -76,51 +71,16 @@ object SpoofStreamingDataPatch : BaseBytecodePatch( // endregion - // region Block /get_watch requests to fall back to /player requests. + // region Copy request headers for streaming data fetch. - BuildPlayerRequestURIFingerprint.resultOrThrow().let { - it.mutableMethod.apply { - val invokeToStringIndex = - BuildPlayerRequestURIFingerprint.indexOfToStringInstruction(this) - val uriRegister = - getInstruction(invokeToStringIndex).registerC - - addInstructions( - invokeToStringIndex, - """ - invoke-static { v$uriRegister }, $INTEGRATIONS_CLASS_DESCRIPTOR->blockGetWatchRequest(Landroid/net/Uri;)Landroid/net/Uri; - move-result-object v$uriRegister - """, - ) - } - } - - // endregion - - // region Fetch replacement streams. - - BuildRequestFingerprint.resultOrThrow().let { result -> + BuildBrowseRequestFingerprint.resultOrThrow().let { result -> result.mutableMethod.apply { - val buildRequestIndex = - BuildRequestFingerprint.indexOfBuildUrlRequestInstruction(this) - val requestBuilderRegister = - getInstruction(buildRequestIndex).registerC - val newRequestBuilderIndex = - BuildRequestFingerprint.indexOfNewUrlRequestBuilderInstruction(this) + BuildBrowseRequestFingerprint.indexOfNewUrlRequestBuilderInstruction(this) val urlRegister = getInstruction(newRequestBuilderIndex).registerD - // Replace "requestBuilder.build()" with integrations call. - replaceInstruction( - buildRequestIndex, - "invoke-static { v$requestBuilderRegister }, " + - "$INTEGRATIONS_CLASS_DESCRIPTOR->" + - "buildRequest($REQUEST_BUILDER_CLASS_DESCRIPTOR)" + - REQUEST_CLASS_DESCRIPTOR - ) - - val entrySetIndex = BuildRequestFingerprint.indexOfEntrySetInstruction(this) + val entrySetIndex = BuildBrowseRequestFingerprint.indexOfEntrySetInstruction(this) val mapRegister = if (entrySetIndex < 0) urlRegister + 1 else @@ -129,7 +89,7 @@ object SpoofStreamingDataPatch : BaseBytecodePatch( var smaliInstructions = "invoke-static { v$urlRegister, v$mapRegister }, " + "$INTEGRATIONS_CLASS_DESCRIPTOR->" + - "setHeader(Ljava/lang/String;Ljava/util/Map;)V" + "setFetchHeaders(Ljava/lang/String;Ljava/util/Map;)V" if (entrySetIndex < 0) smaliInstructions = """ move-object/from16 v$mapRegister, p1 @@ -257,6 +217,9 @@ object SpoofStreamingDataPatch : BaseBytecodePatch( // endregion + // Prefetch streaming data. + VideoIdPatch.hookPlayerResponseVideoId("$INTEGRATIONS_CLASS_DESCRIPTOR->fetchStreamingData(Ljava/lang/String;Z)V") + /** * Add settings */ diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildRequestFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildBrowseRequestFingerprint.kt similarity index 73% rename from src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildRequestFingerprint.kt rename to src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildBrowseRequestFingerprint.kt index d9f43bfe5d..d59e468193 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildRequestFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildBrowseRequestFingerprint.kt @@ -1,23 +1,21 @@ package app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints import app.revanced.patcher.fingerprint.MethodFingerprint -import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.BuildRequestFingerprint.indexOfBuildUrlRequestInstruction -import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.BuildRequestFingerprint.indexOfEntrySetInstruction -import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.BuildRequestFingerprint.indexOfNewUrlRequestBuilderInstruction -import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.BuildRequestFingerprint.indexOfRequestFinishedListenerInstruction +import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.BuildBrowseRequestFingerprint.indexOfEntrySetInstruction +import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.BuildBrowseRequestFingerprint.indexOfNewUrlRequestBuilderInstruction +import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.BuildBrowseRequestFingerprint.indexOfRequestFinishedListenerInstruction import app.revanced.util.getReference import app.revanced.util.indexOfFirstInstruction import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.iface.Method import com.android.tools.smali.dexlib2.iface.reference.MethodReference -internal object BuildRequestFingerprint : MethodFingerprint( +internal object BuildBrowseRequestFingerprint : MethodFingerprint( customFingerprint = { methodDef, _ -> methodDef.implementation != null && indexOfRequestFinishedListenerInstruction(methodDef) >= 0 && !methodDef.definingClass.startsWith("Lorg/") && indexOfNewUrlRequestBuilderInstruction(methodDef) >= 0 && - indexOfBuildUrlRequestInstruction(methodDef) >= 0 && // YouTube 17.34.36 ~ YouTube 18.35.36 (indexOfEntrySetInstruction(methodDef) >= 0 || // YouTube 18.36.39 ~ @@ -36,12 +34,6 @@ internal object BuildRequestFingerprint : MethodFingerprint( getReference().toString() == "Lorg/chromium/net/CronetEngine;->newUrlRequestBuilder(Ljava/lang/String;Lorg/chromium/net/UrlRequest${'$'}Callback;Ljava/util/concurrent/Executor;)Lorg/chromium/net/UrlRequest${'$'}Builder;" } - fun indexOfBuildUrlRequestInstruction(methodDef: Method) = - methodDef.indexOfFirstInstruction { - opcode == Opcode.INVOKE_VIRTUAL && - getReference().toString() == "Lorg/chromium/net/ExperimentalUrlRequest${'$'}Builder;->build()Lorg/chromium/net/ExperimentalUrlRequest;" - } - fun indexOfEntrySetInstruction(methodDef: Method) = methodDef.indexOfFirstInstruction { opcode == Opcode.INVOKE_INTERFACE && diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildPlayerRequestURIFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildPlayerRequestURIFingerprint.kt deleted file mode 100644 index 4ed9f4c7b5..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/fingerprints/BuildPlayerRequestURIFingerprint.kt +++ /dev/null @@ -1,26 +0,0 @@ -package app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints - -import app.revanced.patcher.fingerprint.MethodFingerprint -import app.revanced.patches.youtube.utils.fix.streamingdata.fingerprints.BuildPlayerRequestURIFingerprint.indexOfToStringInstruction -import app.revanced.util.getReference -import app.revanced.util.indexOfFirstInstruction -import com.android.tools.smali.dexlib2.Opcode -import com.android.tools.smali.dexlib2.iface.Method -import com.android.tools.smali.dexlib2.iface.reference.MethodReference - -internal object BuildPlayerRequestURIFingerprint : MethodFingerprint( - returnType = "Ljava/lang/String;", - strings = listOf( - "key", - "asig", - ), - customFingerprint = { methodDef, _ -> - indexOfToStringInstruction(methodDef) >= 0 - }, -) { - fun indexOfToStringInstruction(methodDef: Method) = - methodDef.indexOfFirstInstruction { - opcode == Opcode.INVOKE_VIRTUAL && - getReference().toString() == "Landroid/net/Uri;->toString()Ljava/lang/String;" - } -} From de0ccbf3d927da87e65c58081e1bcb651e612cf3 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sun, 1 Sep 2024 22:07:40 +0900 Subject: [PATCH 25/53] feat(YouTube/Shorts components): clarify the description of some settings https://github.com/inotia00/ReVanced_Extended/issues/2357 --- .../youtube/settings/host/values/strings.xml | 15 +++++++++------ .../youtube/settings/xml/revanced_prefs.xml | 5 +++-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml index 9b20a30670..85db4cb034 100644 --- a/src/main/resources/youtube/settings/host/values/strings.xml +++ b/src/main/resources/youtube/settings/host/values/strings.xml @@ -1071,6 +1071,9 @@ Side effect: Official headers in search results will be hidden." Hide paid promotion label Paid promotion label is hidden. Paid promotion label is shown. + Hide Shopping button + Shopping button is hidden. + Shopping button is shown. Hide Shop button Shop button is hidden. Shop button is shown. @@ -1080,15 +1083,15 @@ Side effect: Official headers in search results will be hidden." Hide tagged products Tagged products are hidden. Tagged products are shown. - Hide location label - Location label is hidden. - Location label is shown. + Hide location button + Location button is hidden. + Location button is shown. Hide save sound to playlist button Save sound to playlist button is hidden. Save sound to playlist button is shown. - Hide search suggestions - Search suggestions are hidden. - Search suggestions are shown. + Hide search suggestions button + Search suggestions button is hidden. + Search suggestions button is shown. Hide Use this sound button Use this sound button is hidden. Use this sound button is shown. diff --git a/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/src/main/resources/youtube/settings/xml/revanced_prefs.xml index 0b3ae4fd6b..bdbfda72dc 100644 --- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml +++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml @@ -476,12 +476,13 @@ + - + - + From 166f1a0cf634bf2439710bc0ace8ec4310d9af71 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sun, 1 Sep 2024 22:13:08 +0900 Subject: [PATCH 26/53] feat(YouTube/Shorts components): add settings - `Hide floating button`, `Hide Trends button`, `Hide Use template button` --- .../resources/youtube/settings/host/values/strings.xml | 9 +++++++++ .../resources/youtube/settings/xml/revanced_prefs.xml | 3 +++ 2 files changed, 12 insertions(+) diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml index 85db4cb034..21932789f5 100644 --- a/src/main/resources/youtube/settings/host/values/strings.xml +++ b/src/main/resources/youtube/settings/host/values/strings.xml @@ -1024,6 +1024,9 @@ The Expand video description option may not work if the entered string does not Disable resuming Shorts player Shorts player will not resume on app startup. Shorts player will resume on app startup. + Hide floating button + "Floating buttons like 'Use this sound' are hidden in the Shorts channel tab." + "Floating buttons like 'Use this sound' are shown in the Shorts channel tab." Shorts shelves @@ -1071,6 +1074,9 @@ Side effect: Official headers in search results will be hidden." Hide paid promotion label Paid promotion label is hidden. Paid promotion label is shown. + Hide Trends button + Trends button is hidden. + Trends button is shown. Hide Shopping button Shopping button is hidden. Shopping button is shown. @@ -1095,6 +1101,9 @@ Side effect: Official headers in search results will be hidden." Hide Use this sound button Use this sound button is hidden. Use this sound button is shown. + Hide Use template button + Use template button is hidden. + Use template button is shown. Hide info panels Info panels are hidden. Info panels are shown. diff --git a/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/src/main/resources/youtube/settings/xml/revanced_prefs.xml index bdbfda72dc..4e4c52e07c 100644 --- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml +++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml @@ -476,6 +476,7 @@ + @@ -484,6 +485,7 @@ + @@ -520,6 +522,7 @@ SETTINGS: DISABLE_RESUMING_SHORTS_PLAYER --> الفيديو الموصى به إخفاء الفيديوهات الموصى بها @@ -936,6 +944,9 @@ تعطيل استئناف مشغل Shorts لن يتم استئناف تشغيل مشغل Shorts عند بدء تشغيل التطبيق. سيتم استئناف تشغيل مشغل Shorts عند بدء تشغيل التطبيق. + إخفاء الزر العائم + "تم إخفاء الأزرار العائمة مثل 'استخدام هذا الصوت' في علامة تبويب قناة Shorts." + "يتم عرض الأزرار العائمة مثل 'استخدام هذا الصوت' في علامة تبويب قناة Shorts." رفوف Shorts إخفاء رفوف Shorts @@ -978,6 +989,12 @@ إخفاء تصنيف الترويج المدفوع تم إخفاء تصنيف الترويج المدفوع. يتم عرض تصنيف الترويج المدفوع. + إخفاء زر الرائجة + تم إخفاء زر الرائجة. + يتم عرض زر الرائجة. + إخفاء زر التسوق + تم إخفاء زر التسوق. + يتم عرض زر التسوق. إخفاء زر التسوق تم إخفاء زر المتجر. يتم عرض زر المتجر. @@ -987,15 +1004,21 @@ إخفاء المنتجات الموسومة تم إخفاء المنتجات المعلمة. يتم عرض المنتجات المعلمة. - إخفاء تسمية الموقع - تم إخفاء تسمية الموقع. - يتم عرض تسمية الموقع. + إخفاء زر الموقع + تم إخفاء زر الموقع. + يتم عرض زر الموقع. إخفاء زر حفظ الصوت إلى قائمة التشغيل تم إخفاء زر حفظ الصوت في قائمة التشغيل. يتم عرض زر حفظ الصوت في قائمة التشغيل. - إخفاء اقتراحات البحث - تم إخفاء اقتراحات البحث. - يتم عرض اقتراحات البحث. + إخفاء زر اقتراحات البحث + تم إخفاء زر اقتراحات البحث. + يتم عرض زر اقتراحات البحث. + إخفاء زر استخدام هذا الصوت + تم إخفاء زر استخدام هذا الصوت. + يتم عرض زر استخدام هذا الصوت. + إخفاء زر استخدام القالب + تم إخفاء زر القالب. + يتم عرض زر القالب. إخفاء لوحات المعلومات تم إخفاء لوحات المعلومات. يتم عرض لوحات المعلومات. @@ -1456,6 +1479,35 @@ إعادة تعيين تم نسخ الإعدادات إلى الحافظة. + Spoof Streaming Data + تزييف بيانات البث لمنع حدوث مشكلات أثناء التشغيل. + Spoof Streaming Data + يتم تزييف بيانات البث. + "لا يتم تزييف بيانات البث. قد لا يعمل تشغيل الفيديو." + إيقاف تشغيل هذا الإعداد قد يسبب مشاكل في تشغيل الفيديو. + العميل الافتراضي + iOS + Android + مشغل Android المضمّن + Android Testsuite + Android TV + Android VR + TV HTML5 + Web + التأثيرات الجانبية للتزييف + • قد لا يتم تشغيل الأفلام أو الفيديوهات المدفوعة. + • قائمة المقطع الصوتي مفقودة. + • قائمة المقطع الصوتي مفقودة. + • قد لا يتم تشغيل الفيديو. + فرض iOS AVC (H.264) + ترميز فيديو iOS هو AVC (H.264). + ترميز فيديو iOS هو AVC (H.264) أو VP9 أو AV1. + "قد يؤدي تمكين هذا إلى تحسين عمر البطارية وإصلاح مشكلة تقطيع التشغيل. + +يتمتع تنسيق AVC (H.264) بدقة قصوى تبلغ 1080P، وسيستخدم تشغيل الفيديو بيانات إنترنت اكثر من VP9 أو AV1." + عرض في إحصاءات تقنية + يتم عرض العميل المستخدم لجلب بيانات البث في إحصاءات تقنية. + تم إخفاء العميل المستخدم لجلب بيانات البث في إحصاءات تقنية. سجل المشاهدة تغيير الإعدادات المتعلقة بسجل المشاهدة. diff --git a/src/main/resources/youtube/translations/bg-rBG/strings.xml b/src/main/resources/youtube/translations/bg-rBG/strings.xml index 8f763777df..defec4d152 100644 --- a/src/main/resources/youtube/translations/bg-rBG/strings.xml +++ b/src/main/resources/youtube/translations/bg-rBG/strings.xml @@ -975,15 +975,9 @@ Скриване на маркираните продукти Маркираните продукти са скрити. Маркираните продукти се показват. - Етикет за местоположение - Етикет за местоположение е скрит. - Етикет за местоположение се показва. Бутон за запазване на аудиото в плейлиста Бутонът за Запазване в плейлиста е скрит. Бутонът за Запазване в плейлиста се показва. - Скриване на предложенията за търсене - Предложенията за търсене са скрити. - Предложенията за търсене се показват. Скриване на информационните панели Информационните панели са скрити. Информационните панели се показват. diff --git a/src/main/resources/youtube/translations/de-rDE/strings.xml b/src/main/resources/youtube/translations/de-rDE/strings.xml index 47b941b6f5..5779d8e099 100644 --- a/src/main/resources/youtube/translations/de-rDE/strings.xml +++ b/src/main/resources/youtube/translations/de-rDE/strings.xml @@ -894,7 +894,6 @@ Nebeneffekt: Offizielle Kopfzeilen in Suchergebnissen werden ausgeblendet."Markierte Produkte ausblenden Markierte Produkte sind ausgeblendet. Markierte Produkte werden angezeigt. - Suchvorschläge ausblenden Info-Panels ausblenden Live-Chat-Kopfzeile ausblenden Live-Chat-Kopfzeile wird ausgeblendet.\n\nZurück Button wird nicht ausgeblendet. diff --git a/src/main/resources/youtube/translations/el-rGR/strings.xml b/src/main/resources/youtube/translations/el-rGR/strings.xml index 7360778052..120561df9d 100644 --- a/src/main/resources/youtube/translations/el-rGR/strings.xml +++ b/src/main/resources/youtube/translations/el-rGR/strings.xml @@ -222,16 +222,22 @@ Playlists Τα σχόλια δε φιλτράρονται από λέξεις-κλειδιά. Λέξεις-κλειδιά για απόκρυψη "Λέξεις-κλειδιά και φράσεις προς απόκρυψη, διαχωρισμένες με νέες γραμμές. +Οι λέξεις-κλειδιά μπορεί να είναι ονόματα καναλιών ή κείμενο που εμφανίζεται σε τίτλους των βίντεο. Οι λέξεις με κεφαλαία γράμματα στη μέση πρέπει να είναι ευαίσθητες στην πεζότητα (π.χ: iPhone, TikTok, LeBlanc)." Σχετικά με το φιλτράρισμα λέξεων-κλειδιών "Οι καρτέλες «Αρχική», «Εγγραφές» και τα αποτελέσματα αναζήτησης φιλτράρονται για απόκρυψη περιεχομένου που ταιριάζει με τις λέξεις-κλειδιά. Περιορισμοί: -• Κάποια Shorts ενδέχεται να μην κρύβονται. +• Τα Shorts δεν γίνεται να κρύβονται με βάση το όνομα καναλιού. • Κάποια στοιχεία UI ενδέχεται να μην κρύβονται. • Η αναζήτηση για μια λέξη-κλειδί ενδέχεται να μην εμφανίζει κανένα αποτέλεσμα." - Μη έγκυρη λέξη-κλειδί. Αδυναμία χρήσης: \'%s\' ως φίλτρο - Η λέξη-κλειδί \'%1$s\' θα κρύβει όλα τα βίντεο. + Ταίριασμα ολόκληρων λέξεων + Περιβάλλοντας μια λέξη-κλειδί / φράση με διπλά εισαγωγικά θα αποτρέψει μερικές αντιστοιχίες των τίτλων βίντεο και των ονομάτων καναλιών<br><br>Για παράδειγμα,<br><b>\"ai\"</b> θα κρύψει το βίντεο: <b>How does AI work?</b><br>αλλά δεν θα κρύψει: <b>What does fair use mean?</b> + Αδυναμία χρήσης λέξης: %s. + Προσθέστε εισαγωγικά για χρήση της λέξης: %s. + Η λέξη έχει αντικρουόμενες δηλώσεις: %s. + Η λέξη είναι πολύ μικρή και απαιτεί εισαγωγικά: %s. + Η λέξη θα κρύβει όλα τα βίντεο: %s. Προτεινόμενα βίντεο Απόκρυψη προτεινόμενων βίντεο @@ -955,6 +961,13 @@ Playlists Απενεργοποίηση συνέχισης των Shorts Ο αναπαραγωγέας Shorts δεν θα συνεχιστεί κατά την εκκίνηση της εφαρμογής. Ο αναπαραγωγέας Shorts θα συνεχιστεί κατά την εκκίνηση της εφαρμογής. + Αιωρούμενα κουμπιά + "Κρυμμένα. + +Αφορά τα αιωρούμενα κουμπιά όπως το «Χρήση αυτού του ήχου» στην καρτέλα Shorts του καναλιού." + "Εμφανίζονται. + +Αφορά τα αιωρούμενα κουμπιά όπως το «Χρήση αυτού του ήχου» στην καρτέλα Shorts του καναλιού." Ενότητα Shorts Απόκρυψη των Shorts @@ -995,6 +1008,12 @@ Playlists Ετικέτες προώθησης επί πληρωμή Κρυμμένες. Εμφανίζονται. + Κουμπί «Τάσεις» + Κρυμμένο. + Εμφανίζεται. + Κουμπί «Κατάστημα» + Κρυμμένο. + Εμφανίζεται. Κουμπί «Κατάστημα» Κρυμμένο. Εμφανίζεται. @@ -1004,15 +1023,21 @@ Playlists Ετικέτες προϊόντων Κρυμμένες. Εμφανίζονται. - Ετικέτα τοποθεσίας - Κρυμμένη. - Εμφανίζεται. + Κουμπί τοποθεσίας + Κρυμμένο. + Εμφανίζεται. Κουμπί αποθήκευσης ήχου σε λίστα αναπαραγωγής Κρυμμένο. Εμφανίζεται. - Προτάσεις αναζήτησης - Κρυμμένες. - Εμφανίζονται. + Κουμπί προτάσεων αναζήτησης + Κρυμμένο. + Εμφανίζεται. + Κουμπί «Χρήση αυτού του ήχου» + Κρυμμένο. + Εμφανίζεται. + Κουμπί «Χρήση προτύπου» + Κρυμμένο. + Εμφανίζεται. Πάνελ πληροφοριών Κρυμμένα. Εμφανίζονται. @@ -1472,6 +1497,12 @@ Playlists Επαναφορά Οι ρυθμίσεις αντιγράφηκαν στο πρόχειρο. + Παραποίηση δεδομένων ροής + Παραποίηση των δεδομένων ροής για την αποφυγή προβλημάτων αναπαραγωγής. + Παραποίηση δεδομένων ροής + Τα δεδομένα ροής παραποιούνται. + "Τα δεδομένα ροής δεν παραποιούνται. Η αναπαραγωγή βίντεο ενδέχεται να μη λειτουργεί σωστά." + Η απενεργοποίηση αυτής της ρύθμισης ενδέχεται να προκαλέσει προβλήματα αναπαραγωγής βίντεο. Προεπιλογή iOS Android @@ -1482,6 +1513,19 @@ Playlists TV HTML5 Ιστός (Web) Παρενέργειες παραποίησης + • Οι ταινίες ή τα επί πληρωμή βίντεο ενδέχεται να μην αναπαράγονται. + • Το μενού «Κομμάτι ήχου» λείπει. + • Το μενού «Κομμάτι ήχου» λείπει. + • Τα βίντεο ενδέχεται να μην αναπαράγονται σωστά. + Εξαναγκασμός iOS AVC (H.264) + Ο κωδικοποιητής βίντεο iOS είναι ο AVC (H.264). + Ο κωδικοποιητής βίντεο iOS είναι ο AVC (H.264), ο VP9 ή ο AV1. + "Ενεργοποιώντας αυτόν τον κωδικοποιητή ίσως βελτιωθεί η κατανάλωση ενέργειας και ίσως διορθωθούν κολλήματα αναπαραγωγής. + +Ο AVC (H.264) έχει μέγιστη ανάλυση 1080p, και η αναπαραγωγή βίντεο καταναλώνει περισσότερα δεδομένα internet από τον VP9 ή τον AV1." + Εμφάνιση στο «Στατιστικά για σπασίκλες» + Το πρόγραμμα πελάτη που χρησιμοποιείται για τη λήψη δεδομένων ροής εμφανίζεται στο μενού «Στατιστικά για σπασίκλες». + Το πρόγραμμα πελάτη που χρησιμοποιείται για τη λήψη δεδομένων ροής δεν εμφανίζεται στο μενού «Στατιστικά για σπασίκλες». Ιστορικό παρακολούθησης Διαχείριση των ρυθμίσεων που σχετίζονται με το ιστορικό παρακολούθησης. diff --git a/src/main/resources/youtube/translations/es-rES/strings.xml b/src/main/resources/youtube/translations/es-rES/strings.xml index 972b3061cb..b070967493 100644 --- a/src/main/resources/youtube/translations/es-rES/strings.xml +++ b/src/main/resources/youtube/translations/es-rES/strings.xml @@ -993,15 +993,9 @@ Limitación: las cabeceras oficiales en los resultados de búsqueda estarán ocu Ocultar productos etiquetados Los productos etiquetados están ocultos. Los productos etiquetados están visibles. - Ocultar etiqueta de ubicación - La etiqueta de ubicación está oculta. - La etiqueta de ubicación está visible. Ocultar botón de guardar sonido El botón de guardar sonido está oculto. El botón de guardar sonido está visible. - Ocultar sugerencias de búsqueda - Las sugerencias de búsqueda están ocultas. - Las sugerencias de búsqueda están visibles. Ocultar botón de utilizar este sonido El botón de utilizar este sonido está oculto. El botón de utilizar este sonido está visible. diff --git a/src/main/resources/youtube/translations/fr-rFR/strings.xml b/src/main/resources/youtube/translations/fr-rFR/strings.xml index 8266a3946a..fa32fa89b8 100644 --- a/src/main/resources/youtube/translations/fr-rFR/strings.xml +++ b/src/main/resources/youtube/translations/fr-rFR/strings.xml @@ -224,16 +224,24 @@ Boutique" Les commentaires ne sont pas filtrés. Mots-clés à masquer "Mots-clés et phrases à masquer, séparés par des sauts de lignes. + +Les mots-clés peuvent être des noms de chaînes ou tout texte figurant dans les titres des vidéos. + Les mots comportant des majuscules au milieu doivent être saisis de la même façon (par exemple : iPhone, TikTok, TheoBabac)." À propos du filtrage par mots-clés - "Les onglets Page d'accueil / \"Abonnements\" / Résultats de recherche sont filtrés pour masquer le contenu correspondant aux mots-clés. + "Les onglets \"Pages d'accueil\" / \"Abonnements\" / Résultats de recherche sont filtrés pour masquer le contenu correspondant aux mots clés. Limitations : -• Certains shorts peuvent ne pas être masqués. +• Les shorts ne peuvent pas être masqués par le nom de la chaîne. • Certains éléments de l'interface utilisateur peuvent ne pas être masqués. • La recherche par mot-clé peut n'afficher aucun résultat." - Mot-clé invalide. Impossible d\'utiliser : \'%s\' comme filtre. - Le mot-clé \'%1$s\' masquera toutes les vidéos. + Faire correspondre des mots complets + Le fait de placer un mot-clé ou une expression entre guillemets permet d\'éviter les correspondances partielles entre les titres de vidéos et les noms des chaînes.<br><br>Par exemple,<br><b>\"ia\"</b> masquera la vidéo : <b>Comment fonctionne l\'IA?</b><br>mais ne masquera pas : <b>Comment fonctionne l\'Intelligence Artificielle ?</b> + Impossible d\'utiliser ce mot-clé : %s. + Ajouter des guillemets pour utiliser un mot-clé : %s. + Le mot-clé a des déclarations incompatibles : %s. + Le mot-clé est trop court et nécessite des guillemets : %s. + Ce mot-clé va masquer toutes les vidéos : %s. Vidéo recommandée Masquer les vidéos recommandées @@ -283,7 +291,9 @@ Limitations : Regarder plus tard Page de démarrage invalide, valeur réinitialisée par défaut. Désact. les pistes audio forcés - "Les pistes audio automatiques forcées sont désactivé." + "Les pistes audio automatiques forcées sont désactivé. + +Limitation : Ce paramètre ne s'applique pas pour les Shorts." Les pistes audio automatiques forcées sont activés. Désact. les sous-titres forcés Les sous-titres automatiques forcés sont désactivés. @@ -681,6 +691,9 @@ La lecture automatique peut être modifiée dans les paramètres de YouTube : Masquer le menu \"Commandes Premium\" Le menu \"Commandes Premium\" est masqué. Le menu \"Commandes Premium\" est affiché. + Masquer le menu \"Délai de mise en veille\" + Le menu \"Délai de mise en veille\" est masqué. + Le menu \"Délai de mise en veille\" est affiché. Masquer le menu \"Volume stable\" Le menu \"Volume stable\" est affiché. Le menu \"Volume stable\" est masqué. @@ -983,15 +996,12 @@ Effet secondaire : Les fiches officielles dans les résultats de recherche sont Masquer les produits associés Les produits associés sont masqués. Les produits associés sont affichés. - Masquer les informations de localisation - Les informations de localisation sont masqués. - Les informations de localisation sont affichés. Masquer le son du bouton \"Playlist\" Le son d\'enregistrement dans la Playlist est masqué. Le son d\'enregistrement dans la Playlist est affiché. - Masquer les suggestions de recherche - Les suggestions de recherche sont masqués. - Les suggestions de recherche sont affichés. + Masquer le bouton \"Utiliser ce son\" + Le bouton \"Utiliser ce son\" est masqué. + Le bouton \"Utiliser ce son\" est affiché. Masquer les panneaux d\'information Les panneaux d\'information sont masqués. Les panneaux d\'information sont affichés. @@ -1073,7 +1083,7 @@ Limitations : Les gestes de luminosité sont activé. Les gestes de luminosité sont désactivé. Activer les gestes de volume - Les gestes des volumes sont activé. + Les gestes de volume sont activé. Les gestes de volume sont désactivé. Activer enregistr. et restaur. de la luminosité Enregistrer et restaurer la luminosité en quittant ou en entrant en plein écran. @@ -1448,6 +1458,35 @@ Cliquez sur le bouton Continuer et désactivez les optimisations de la batterie. Réinitialiser Paramètres copiés dans le presse-papier. + Falsifier les données de diffusion en direct + Falsifier les données de diffusion en direct afin d\'éviter les problèmes de lecture. + Falsifier les données de lecture en direct + Les données de lecture en direct sont falsifiées. + "Les données de lecture en direct ne sont pas falsifiées. La lecture vidéo peut ne pas fonctionner." + Désactiver ce paramètre peut entraîner des problèmes de lecture vidéo. + Client par défaut + iOS + Android + Lecteur intégré Android + Android Testsuite + Android TV + Android VR + TV HTML5 + Web + Effets inconnus de la falsification + • Les films ou les vidéos payantes peuvent ne pas être lus. + • Le menu \"Piste Audio\" est manquant. + • Le menu \"Piste Audio\" est manquant. + • Les vidéos peuvent ne pas être lus. + Forcer iOS AVC (H.264) + Le codec vidéo d\'iOS est AVC (H.264). + Les codecs vidéos d\'iOS sont AVC (H.264), VP9, ou AV1. + "Activer ce paramètre peut améliorer l'autonomie de la batterie et résoudre les problèmes de lecture. + +AVC (H.264) a une résolution maximale de 1080p, et la lecture vidéo utilisera plus de données internet que le VP9 ou le AV1." + Afficher dans \"Statistiques pour les nerds\" + Le client utilisé pour récupérer les données de lecture en direct est affiché dans \"Statistiques pour les nerds\". + Le client utilisé pour récupérer les données de lecture en direct est masqué dans \"Statistiques pour les nerds\". Historique de visionnage Modifie les paramètres liés à l\'historique de visionnage. @@ -1459,6 +1498,9 @@ Cliquez sur le bouton Continuer et désactivez les optimisations de la batterie. Bloquer l\'historique de visionnage Statut de l\'historique de visionnage • L\'historique de visionnage est bloqué. + • Suit les paramètres de l\'historique de visionnage du compte Google. + "• Suit les paramètres de l'historique de visionnage du compte Google. +• L'historique de visionnage peut ne pas fonctionner en raison d'un DNS ou d'un VPN." Informations sur les patchs diff --git a/src/main/resources/youtube/translations/hu-rHU/strings.xml b/src/main/resources/youtube/translations/hu-rHU/strings.xml index ec02c364ca..fb5cb4b9ef 100644 --- a/src/main/resources/youtube/translations/hu-rHU/strings.xml +++ b/src/main/resources/youtube/translations/hu-rHU/strings.xml @@ -978,15 +978,9 @@ Korlát: A hivatalos fejlécek a keresési eredményekben el lesznek rejtve."Címkézett termékek elrejtése A címkézett termékek el vannak rejtve A címkézett termékek megjelennek - Helycímke elrejtése - A helycímke el van rejtve - A helycímke megjelenik Hang mentése a lejátszási listára gomb elrejtése A hang mentése a lejátszási listára gomb el van rejtve A hang mentése a lejátszási listára gomb megjelenik - Keresési javaslatok elrejtése - A keresési javaslatok el vannak rejtve - A keresési javaslatok megjelennek Infó panel elrejtése Az infó panel rejtett Az infó panel megjelenik diff --git a/src/main/resources/youtube/translations/it-rIT/strings.xml b/src/main/resources/youtube/translations/it-rIT/strings.xml index 2791a2e4a1..a7ea798859 100644 --- a/src/main/resources/youtube/translations/it-rIT/strings.xml +++ b/src/main/resources/youtube/translations/it-rIT/strings.xml @@ -232,7 +232,12 @@ Limitazioni: - Alcuni Short potrebbero non essere nascosti. - Alcuni componenti della interfaccia utente potrebbero non essere nascosti. - La ricerca di una parola chiave potrebbe non mostrare alcun risultato." + Abbina parole intere + Circondare una parola chiave/frase con doppie virgolette impedirà partite parziali di titoli video e nomi di canale.<br><br>Ad esempio,<br><b>\"ai\"</b> nasconderà il video: <b>Come funziona l\'intelligenza artificiale?</b><br>ma non si nasconde: <b>Cosa significa un uso equo?</b> Parola chiave non valida. Non è possibile usare: \'%s\' come filtro + Aggiungi virgolette da usare parola chiave: %s. + La parola chiave ha dichiarazioni in conflitto: %s. + Parola chiave troppo corta e richiede le virgolette: %s. La parola chiave \'%1$s\' nasconderà tutti i video. Video consigliati @@ -681,6 +686,9 @@ Impostazioni → Riproduzione automatica → Riproduzione automatica del video s Nascondi menu Controlli premium Il menu Controlli premium è nascosto. Il menu Controlli premium è visibile. + Nascondi il menu Timer del sonno + Il menu del timer del sonno è nascosto. + Il menu del timer del sonno è mostrato. Nascondi il menu Volume stabile Il menu Volume stabile è visibile. Il menu Volume stabile è nascosto. @@ -987,15 +995,12 @@ Effetto collaterale: il tema Cairo viene applicato anche ai punti di notifica."< Nascondi prodotti taggati Prodotti taggati sono nascosti. Prodotti taggati sono mostrati. - Nascondi etichetta posizione - L\'etichetta posizione è nascosta. - L\'etichetta posizione è mostrata. Nascondi il pulsante Salva suono nella playlist Il pulsante Salva suono nella playlist è nascosto. Il pulsante Salva suono nella playlist è mostrato. - Nascondi suggerimenti di ricerca - I suggerimenti della ricerca sono nascosti. - I suggerimenti della ricerca sono mostrati. + Nascondi Usa questo pulsante sonoro + Usa il pulsante sonoro è nascosto. + Usa il pulsante sonoro è mostrato. Nascondi i pannelli informativi I pannelli informativi sono nascosti. I pannelli informativi sono mostrati. @@ -1449,6 +1454,35 @@ Tocca il pulsante continua e disabilita le ottimizzazioni della batteria."Ripristina Impostazioni copiate negli appunti + Camuffa data streaming + Camuffa il data streaming per prevenire problemi di riproduzione. + Camuffa data streaming + I dati in streaming sono camuffati. + "I dati di streaming non sono camuffati. La riproduzione video potrebbe non funzionare." + Disattivare questa impostazione potrebbe causare problemi di riproduzione video. + Client predefinito + iOS + Android + Riproduttore Incorporato Android + Suite di test Android + Android TV + Android VR + TV HTML5 + Web + Effetti collaterali del camuffamento + • I film o i video a pagamento potrebbero non essere riprodotti. + • il menu traccia audio è mancante. + • il menu traccia audio è mancante. + • Il video potrebbe non essere riprodotto. + Forza iOS AVC (H.264) + il codec video iOS è AVC (H.264). + Il codec video iOS è AVC (H.264), VP9 o AV1. + "Abilitando questo si potrebbe migliorare la durata della batteria e correggere i problemi di riproduzione. + +AVC (H. 264) ha una risoluzione massima di 1080p e la riproduzione video utilizzerà più dati internet rispetto a VP9 o AV1." + Mostra nelle statistiche per nerd + Il client utilizzato per recuperare i dati streaming è mostrato nelle statistiche per nerd. + Il client utilizzato per recuperare i dati di streaming è nascosto nelle statistiche per nerd. Cronologia Cambia le impostazioni relative alla cronologia. @@ -1460,6 +1494,9 @@ Tocca il pulsante continua e disabilita le ottimizzazioni della batteria."Blocca cronologia Informazioni sulla cronologia • La cronologia non funziona. + • Segue le impostazioni di cronologia dell\'account Google. + "• Segue le impostazioni di cronologia dell'account Google. +• La cronologia potrebbe non funzionare a causa di DNS o VPN." Informazioni patch diff --git a/src/main/resources/youtube/translations/ja-rJP/strings.xml b/src/main/resources/youtube/translations/ja-rJP/strings.xml index 4f87d85c4e..d96b864e70 100644 --- a/src/main/resources/youtube/translations/ja-rJP/strings.xml +++ b/src/main/resources/youtube/translations/ja-rJP/strings.xml @@ -229,7 +229,12 @@ DeArrowの詳細については、ここをタップしてください。" + 単語全体を一致させる + キーワードやフレーズを二重引用符 (\" \") で囲むことで、動画のタイトルやチャンネル名の部分一致を防ぐことができます。<br><br>例えば、<br><b>\"ai\"</b> とすると、動画 <b>「AI はどのように機能するのか?」</b><br> は表示されなくなりますが、<b>「フェアユースとは何か? (What does f“ai”r use mean?) 」</b> は表示されます。 無効なキーワードです。\'%s\' はフィルターとして使用できません + キーワードを使用するには、引用符を追加してください: %s + キーワードに矛盾する宣言があります: %s + キーワードが短すぎるため、引用符が必要です: %s キーワード「%1$s」は範囲が広すぎるため、すべての動画を非表示にします。 おすすめ動画 @@ -933,6 +938,9 @@ DeArrowの詳細については、ここをタップしてください。"プレーヤーの再開を無効化 アプリを閉じる前に視聴していたショート動画をアプリ起動時に再開しないようにします。 アプリを閉じる前に視聴していたショート動画をアプリ起動時に再開しないようにします。 + フローティングボタンを非表示 + "「このサウンドを使用する」のようなフローティングボタンを、ショートタブから非表示にします。" + "「このサウンドを使用する」のようなフローティングボタンを、ショートタブから非表示にします。" ショート欄 ショート欄を非表示 @@ -975,6 +983,12 @@ DeArrowの詳細については、ここをタップしてください。"有料プロモーションラベルを非表示 プレーヤー左上の「プロモーションを含みます」を非表示にします。 プレーヤー左上の「プロモーションを含みます」を非表示にします。 + 「トレンド」ボタンを非表示 + 「トレンド」ボタンを非表示にします。 + 「トレンド」ボタンを非表示にします。 + 「購入」ボタンを非表示 + ショートで左下に表示される「購入」ボタンを非表示にします。 + ショートで左下に表示される「購入」ボタンを非表示にします。 「ショップ」ボタンを非表示 「ショップ」ボタンを非表示にします。 「ショップ」ボタンを非表示にします。 @@ -984,15 +998,21 @@ DeArrowの詳細については、ここをタップしてください。"タグ付き商品を非表示 タグ付けされている商品を非表示にします。 タグ付けされている商品を非表示にします。 - 位置情報のラベルを非表示 - プレーヤー下部に表示される、位置情報のラベルを非表示にします。 - プレーヤー下部に表示される、位置情報のラベルを非表示にします。 + 位置情報のボタンを非表示 + 位置情報のボタンを非表示にします。 + 位置情報のボタンを非表示にします。 「保存」ボタンを非表示 音楽の「保存」ボタンを非表示にします。 音楽の「保存」ボタンを非表示にします。 - 検索候補を非表示 - 検索候補を非表示にします - 検索候補を非表示にします + 検索候補のボタンを非表示 + 検索候補のボタンを非表示にします。 + 検索候補のボタンを非表示にします。 + 「このサウンドを使用する」を非表示 + ショートで楽曲ボタンを押した際に表示される「このサウンドを使用する」ボタンを非表示にします。 + ショートで楽曲ボタンを押した際に表示される「このサウンドを使用する」ボタンを非表示にします。 + 「テンプレートを使用する」ボタンを非表示 + 「テンプレートを使用する」ボタンを非表示にします。 + 「テンプレートを使用する」ボタンを非表示にします。 情報パネルを非表示 情報パネルを非表示にします。 情報パネルを非表示にします。 @@ -1449,6 +1469,35 @@ DeArrowの詳細については、ここをタップしてください。"リセット 設定をクリップボードにコピーしました。 + ストリーミングデータを偽装 + バッファリングの問題を防ぐためにストリーミングデータを偽装します。 + ストリーミングデータを偽装 + ストリーミングデータを偽装していない場合、動画の再生ができない可能性があります。 + "ストリーミングデータを偽装していない場合、動画の再生ができない可能性があります。" + この設定をオフにした場合、バッファリングの問題が発生する可能性があります。 + 偽装するクライアントの種類 + iOS + Android + Android 埋め込みプレーヤー + Android Testsuite + Android TV + Android VR + TV HTML5 + Web + ストリーミングデータを偽装することによる副作用 + • 映画や有料動画は再生できない場合があります。 + ・「音声トラック」メニューは表示されません。 + ・「音声トラック」メニューは表示されません。 + • 動画が再生できない可能性があります。 + iOS クライアントで AVC (H.264) を強制 + iOS クライアントで AVC コーデック (H.264) を強制します。 + iOS クライアントで AVC コーデック (H.264) を強制します。 + "これを有効にすると、バッテリーの持ちが改善され、再生時のカクつきが修正される可能性があります。 + +注意: \n・AVC コーデック (H.264) の最大解像度は 1080p です。\n・動画の再生には VP9 や AV1 よりも多くの通信量を消費します。" + 統計情報に偽装したクライアントを表示 + 統計情報に偽装したストリーミングデータを表示します。 + 統計情報に偽装したストリーミングデータを表示します。 再生履歴 再生履歴に関連する設定を変更します。 diff --git a/src/main/resources/youtube/translations/ko-rKR/strings.xml b/src/main/resources/youtube/translations/ko-rKR/strings.xml index 410658b636..f5d0d73bf8 100644 --- a/src/main/resources/youtube/translations/ko-rKR/strings.xml +++ b/src/main/resources/youtube/translations/ko-rKR/strings.xml @@ -228,9 +228,8 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 키워드 필터 "필터링할 키워드 및 구문을 줄바꿈으로 구분하여 설정합니다. -필터링 키워드는 채널 이름 또는 동영상 제목에 표시되는 모든 텍스트가 될 수 있습니다. - -가운데 대문자가 있는 단어는 대소문자를 함께 입력해야 합니다 (예: iPhone, TikTok, LeBlanc)." +• 필터링 키워드는 채널 이름 또는 동영상 제목에 표시되는 모든 텍스트가 될 수 있습니다. +• 가운데 대문자가 있는 단어는 대소문자를 함께 입력해야 합니다 (예: iPhone, TikTok, LeBlanc)." 키워드 필터링 정보 "홈 / 구독 / 검색 결과가 필터링되어 키워드 구문과 일치하는 콘텐츠가 숨겨집니다. @@ -239,7 +238,7 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." • 일부 화면 구성요소는 숨겨지지 않을 수 있습니다. • 필터링 키워드를 검색하면 검색 결과가 표시되지 않을 수 있습니다." 전체 단어 일치시키기 - 필터링할 키워드 및 구문을 큰따옴표로 묶으면 동영상 제목과 채널 이름이 부분적으로 일치하지 않도록 방지할 수 있습니다.<br><br>예를 들어,<br><b>\"ai\"</b>라는 키워드로 <b>How does AI work?</b><br>라는 제목의 동영상을 숨길 수 있지만, <b>What does fair use mean?</b>라는 제목의 동영상은 숨길 수 없습니다. + 필터링할 키워드 및 구문을 큰따옴표로 묶으면 동영상 제목과 채널 이름이 부분적으로 일치하지 않도록 방지할 수 있습니다.<br><br>예를 들어,<br><b>\"ai\"</b>라는 키워드로 <b>AI 커리어 완벽 가이드</b>라는 제목의 동영상을 숨길 수 있지만, <b>생성형AI가 바꿔논 세계</b> 또는 <b>What does fair use mean?</b>라는 제목의 동영상은 숨길 수 없습니다. 키워드를 사용할 수 없습니다: %s 따옴표를 추가하여 키워드를 사용합니다: %s 키워드에 충돌하는 선언이 있습니다: %s @@ -320,7 +319,7 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 이 설정은 다이얼로그를 자동으로 허용하기만 하며 연령 제한(성인인증 절차)을 우회할 수 없습니다." 휴대폰 레이아웃 활성화하기 - dpi를 변경하여 일부 레이아웃을 휴대폰 레이아웃으로 활성화합니다. + dpi를 변경하여 일부 레이아웃을 휴대폰 레이아웃으로 활성화합니다.\n\n• \'태블릿 레이아웃으로 활성화하면 잠겨지는 RVX 설정\'이 태블릿 또는 폴더블 폰에서도 잠겨져 있으므로, 이 설정을 사용하고 싶으면 휴대폰 레이아웃으로 활성화해야 합니다. 태블릿 레이아웃 활성화하기 dpi를 변경하여 일부 레이아웃을 태블릿 레이아웃으로 활성화합니다.\n\n이 설정을 활성화하면 다음 RVX 설정이 잠겨질 수 있습니다:\n• 최신 동영상 버튼 숨기기\n• 믹스 재생목록 숨기기\n• 커뮤니티 게시물 설정\n• 전체 화면의 일부 설정 (빠른 작업) 동영상 오프라인 저장 버튼 재정의하기 @@ -949,6 +948,9 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 앱을 시작할 때, Shorts 플레이어 비활성화하기 앱을 시작할 때, Shorts 플레이어를 다시 실행하지 않습니다. 앱을 시작할 때, Shorts 플레이어를 다시 실행합니다. + 플로팅 버튼 숨기기 + "'이 사운드 사용'과 같은 플로팅 버튼이 Shorts 채널 탭에서 숨겨집니다." + "'이 사운드 사용'과 같은 플로팅 버튼이 Shorts 채널 탭에서 표시됩니다." Shorts 선반 Shorts 선반 숨기기 @@ -995,6 +997,12 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 유료 광고 포함 라벨 숨기기 유료 광고 포함 라벨이 숨겨집니다. 유료 광고 포함 라벨이 표시됩니다. + 트렌드 버튼 숨기기 + 트렌드 버튼이 숨겨집니다. + 트렌드 버튼이 숨겨집니다. + 쇼핑 버튼 숨기기 + 쇼핑 버튼이 숨겨집니다. + 쇼핑 버튼이 표시됩니다. 쇼핑 버튼 숨기기 쇼핑 버튼이 숨겨집니다.\n\n일시 정지 오버레이에서도 쇼핑 버튼이 숨겨집니다. 쇼핑 버튼이 표시됩니다. @@ -1004,18 +1012,21 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 태그된 제품 숨기기 태그된 제품이 숨겨집니다. 태그된 제품이 표시됩니다. - 위치 라벨 숨기기 - 위치 라벨이 숨겨집니다. - 위치 라벨이 표시됩니다. + 위치 버튼 숨기기 + 위치 버튼이 숨겨집니다. + 위치 버튼이 표시됩니다. (재생목록에) 음악 저장 버튼 숨기기 (재생목록에) 음악 저장 버튼이 숨겨집니다. (재생목록에) 음악 저장 버튼이 표시됩니다. - 검색 추천 숨기기 - 검색 추천이 숨겨집니다. - 검색 추천이 표시됩니다. + 검색 추천 버튼 숨기기 + 검색 추천 버튼이 숨겨집니다. + 검색 추천 버튼이 표시됩니다. \'이 사운드 사용\' 버튼 숨기기 \'이 사운드 사용\' 버튼이 숨겨집니다. \'이 사운드 사용\' 버튼이 표시됩니다. + 템플릿 사용 버튼 숨기기 + 템플릿 사용 버튼이 숨겨집니다. + 템플릿 사용 버튼이 표시됩니다. 정보 패널 숨기기 정보 패널이 숨겨집니다. 정보 패널이 표시됩니다. @@ -1475,7 +1486,7 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 스트리밍 데이터를 변경하여 재생 문제를 방지할 수 있습니다. 스트리밍 데이터 변경하기 스트리밍 데이터를 변경합니다. - "스트리밍 데이터를 변경하지 않습니다.\n동영상이 재생되지 않을 수 있습니다." + "스트리밍 데이터를 변경하지 않습니다.\n동영상 재생 문제가 발생할 수 있습니다." 이 설정을 비활성화하면 동영상 재생 문제가 발생할 수 있습니다. 기본 클라이언트 iOS @@ -1486,14 +1497,14 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." Android VR TV HTML5 Web - 알려진 문제점 변경하기 + 알려진 문제점 • 영화 또는 유료 동영상이 재생되지 않을 수 있습니다. • 오디오 트랙 메뉴가 표시되지 않습니다. • 오디오 트랙 메뉴가 표시되지 않습니다. • 동영상이 재생되지 않을 수 있습니다. iOS AVC (H.264) 강제로 활성화하기 - iOS 동영상 코덱을 AVC (H.264)로 활성화합니다.\n\n• 일부 동영상을 재생하면 누락되었던 화질 값들이 표시될 수 있습니다.\n• 최대 화질 값이 1080p이므로 초고화질 동영상은 재생할 수 없습니다. - iOS 동영상 코덱을 AVC (H.264), VP9 또는 AV1으로 활성화합니다.\n\n• VP9 코덱 응답만 받는 기기에서 일부 동영상을 재생하면 일부 화질 값들이 누락될 수 있습니다. + iOS 동영상 코덱을 AVC (H.264)로 활성화합니다.\n\n• 일부 VP9 코덱 동영상을 재생하면 누락되었던 화질 값들이 표시될 수 있습니다.\n• 최대 화질 값이 1080p이므로 초고화질 동영상을 재생할 수 없습니다.\n• HDR 동영상을 재생할 수 없습니다. + iOS 동영상 코덱을 AVC (H.264), VP9 또는 AV1으로 활성화합니다.\n\n• VP9 코덱 응답을 받는 경우, 일부 동영상을 재생하면 일부 화질 값들이 누락될 수 있습니다. "이 설정을 활성화하면 배터리 수명이 향상되고 재생 끊김 현상이 해결될 수 있습니다. AVC (H.264)의 최대 화질 값은 1080p이며 동영상을 재생하면 VP9 또는 AV1보다 더 많은 인터넷 데이터가 사용됩니다." diff --git a/src/main/resources/youtube/translations/pl-rPL/strings.xml b/src/main/resources/youtube/translations/pl-rPL/strings.xml index 2209ce5341..1dfb53f478 100644 --- a/src/main/resources/youtube/translations/pl-rPL/strings.xml +++ b/src/main/resources/youtube/translations/pl-rPL/strings.xml @@ -222,16 +222,24 @@ Sklep" Wyłączone Słowa, które mają być ukryte "Słowa i frazy, które mają być ukryte, oddzielone nowymi liniami. + +Słowami mogą być nazwy kanałów, jak też jakikolwiek tekst z tytułu filmu. + Słowa z wielkimi literami w środku muszą być wpisane z odpowiednią wielkością liter (np. iPhone, TikTok, LeBlanc)." O filtrowaniu słów "Strona główna / subskrypcji / wyniki wyszukiwania są filtrowane, by ukryć kontent, który zawiera słowa z filtra. Ograniczenia: -• Niektóre Shortsy mogą nie być ukryte. -• Niektóre elementy interfejsu użytkownika mogą nie być ukryte. -• Wyszukiwanie słowa z filtru może nie pokazywać żadnych wyników." - Nieprawidłowe słowo. Nie można użyć: \'%s\' jako filtru - Słowo \'%1$s\' ukryje wszystkie filmy. +• Shortsy nie mogą być ukryte poprzez nazwę kanału +• Niektóre elementy interfejsu użytkownika mogą nie być ukryte +• Wyszukiwanie słowa z filtru może nie pokazywać żadnych wyników" + Uwzględnij całe wyrazy + Otoczenie słowa/frazy podwójnym cudzysłowem może zapobiec częściowemu dopasowywaniu tytułów filmów i nazw kanałów.<br><br>Dla przykładu,<br><b>\"ai\"</b> ukryje film: Jak działa AI?</b><br>, lecz nie ukryje: Co oznacza uczciwy użytek?</b> + Nie można użyć słowa: %s. + Dodaj cudzysłowy, by użyć słowa: %s. + Słowo zawiera sprzeczne deklaracje: %s. + Słowo jest za krótkie i wymaga cudzysłowu: %s. + Słowo ukryje wszystkie filmy: %s. Rekomendowane filmy Ukryj rekomendowane filmy @@ -935,6 +943,9 @@ Opcja rozwijania opisu filmu może nie działać, jeśli wprowadzony ciąg znak Start od Shortsów Shortsy nie będą włączane podczas startu aplikacji Shortsy będą włączane podczas startu aplikacji + Pływające przyciski nad tytułami + "Ukryte" + "Widoczne" Półki z Shortsami Półki z Shortsami @@ -977,6 +988,12 @@ Ograniczenie: Nagłówki z tytułami będą ukryte w wynikach wyszukiwania."Etykiety oznaczające płatne promocje Ukryte Widoczne + Przycisk od trendów + Ukryty + Widoczny + Przycisk od sklepu + Ukryty + Widoczny Przycisk do sklepu Ukryty Widoczny @@ -986,15 +1003,21 @@ Ograniczenie: Nagłówki z tytułami będą ukryte w wynikach wyszukiwania."Oznaczone produkty Ukryte Widoczne - Etykiety z lokalizacjami - Ukryte - Widoczne + Przycisk od lokalizacji + Ukryty + Widoczny Przycisk od zapisywania dźwięku do playlisty Ukryty Widoczny - Sugestie wyszukiwania - Ukryte - Widoczne + Przycisk od sugestii wyszukiwań + Ukryty + Widoczny + Przycisk \'Użyj tego dźwięku\' + Ukryty + Widoczny + Przycisk \'Użyj tego szablonu\' + Ukryty + Widoczny Panele z informacjami Ukryte Widoczne @@ -1451,6 +1474,35 @@ Kontynuuj i wyłącz optymalizację baterii." Zresetuj Skopiowano ustawienia do schowka. + Oszukuj strumień danych + Oszukuj strumień danych, by zapobiec problemom z odtwarzaniem + Oszukuj strumień danych + Włączone + "Wyłączone. Odtwarzanie filmów może nie działać" + Wyłączenie tej opcji może spowodować problemy z odtwarzaniem filmów. + Domyślny klient + iOS + Android + Wbudowany odtwarzacz Androida + Klient Testowy Androida + Android TV + Android VR + TV HTML5 + Przeglądarka + Efekty uboczne oszukiwania + • Filmy kinowe lub płatne filmy mogą się nie odtwarzać + • Brakuje menu od ścieżki dźwiękowej + • Brakuje menu od ścieżki dźwiękowej + • Filmy mogą się nie odtwarzać + Wymuś kodek iOS AVC (H.264) + Włączone + Wyłączone + "Włączenie tego ustawienia może poprawić żywotność baterii i naprawić zacinanie się filmów. + +Kodek AVC (H.264) obsługuje maksymalnie rozdzielczość 1080p, a odtwarzanie filmów wykorzystuje więcej danych internetowych niż VP9 i AV1." + Informacja w statystykach dla nerdów + Widoczna + Ukryta Historia oglądania Zmień ustawienia związane z historią oglądania diff --git a/src/main/resources/youtube/translations/pt-rBR/strings.xml b/src/main/resources/youtube/translations/pt-rBR/strings.xml index 3145548d55..2df3a4f2eb 100644 --- a/src/main/resources/youtube/translations/pt-rBR/strings.xml +++ b/src/main/resources/youtube/translations/pt-rBR/strings.xml @@ -986,15 +986,9 @@ Limitação: Os cabeçalhos oficiais nos resultados da pesquisa serão ocultados Ocultar produtos marcados Os produtos marcados estão ocultos. Os produtos marcados serão exibidos. - Ocultar rótulo de localização - O rótulo de localização está oculto. - O rótulo de localização será exibido. Ocultar botão salvar música na lista de reprodução Salvar música na lista de reprodução está oculta. Salvar música na lista de reprodução será exibida. - Ocultar sugestões de pesquisa - As sugestõrs de pesquisa estão ocultas. - As sugestões de pesquisa serão exibidas. Ocultar painéis de informações Os painéis de informação estão ocultos. Os painéis de informação serão exibidos. diff --git a/src/main/resources/youtube/translations/ru-rRU/strings.xml b/src/main/resources/youtube/translations/ru-rRU/strings.xml index 4e9edf513a..04145aedf3 100644 --- a/src/main/resources/youtube/translations/ru-rRU/strings.xml +++ b/src/main/resources/youtube/translations/ru-rRU/strings.xml @@ -1003,15 +1003,9 @@ Shorts Товары с тегом Товары с тегом скрыты. Товары с тегом отображены. - Метка местоположения - Метка местоположения скрыта. - Метка местоположения отображена. Кнопка \"Сохранить звук в плейлист\" Кнопка \"Сохранить звук в плейлист\" скрыта. Кнопка \"Сохранить звук в плейлист\" отображена. - Подсказки поиска - Подсказки поиска скрыты. - Подсказки поиска отображены. Информационные панели Информационные панели скрыты. Информационные панели отображены. diff --git a/src/main/resources/youtube/translations/tr-rTR/strings.xml b/src/main/resources/youtube/translations/tr-rTR/strings.xml index 84806f63db..34f30e186d 100644 --- a/src/main/resources/youtube/translations/tr-rTR/strings.xml +++ b/src/main/resources/youtube/translations/tr-rTR/strings.xml @@ -963,15 +963,9 @@ Bilinen sorun: Arama sonuçlarındaki resmi başlıklar da gizlenebiliyor."Etiketli ürünleri gizle Etiketli ürünler gizli. Etiketli ürünler görünür. - Konum etiketini gizle - Konum etiketi gizli. - Konum etiketi görünür Sesi oynatma listesine kaydetme butonunu gizle Sesi oynatma listesine kaydetme butonu gizleniyor Sesi oynatma listesine kaydetme butonu gösteriliyor. - Arama önerilerini gizle - Arama önerileri gizleniyor - Arama önerileri gösteriliyor Bilgi panellerini gizle Bilgi panelleri gizleniyor. Bilgi panelleri gizlenmiyor. diff --git a/src/main/resources/youtube/translations/uk-rUA/strings.xml b/src/main/resources/youtube/translations/uk-rUA/strings.xml index d0aa2a9c7e..4c8ff3036b 100644 --- a/src/main/resources/youtube/translations/uk-rUA/strings.xml +++ b/src/main/resources/youtube/translations/uk-rUA/strings.xml @@ -222,16 +222,24 @@ Коментарі не фільтрується. Ключові слова для приховування "Ключові слова та фрази для приховування, відокремлені новими рядками. + +Ключовими словами можуть бути назви каналів чи будь-який текст у заголовках відео. + Слова з великими літерами в середині повинні вводитися відповідно регістру (тобто: iPhone, TikTok, LeBlanc)." Про фільтрування ключових слів "Головна/Підписки/Результати пошуку фільтрується, щоб приховати контент, який відповідає ключовим фразам. Застереження: -• Деякі YouTube Shorts не можливо приховати. +• YouTube Shorts не можливо приховати за назвою каналу. • Деякі компоненти інтерфейсу не можливо приховати. • Шукання за ключовим словом може не давати результатів." - Невірне ключове слово. Неможливо використати \'%s\' як фільтр - Ключове слово \'%1$s\' приховає всі відео. + Лише цілі слова + Взяття ключового слова/фрази в подвійні лапки запобігатиме частковим збігам назв відео та каналів.<br><br>Наприклад,<br><b>\"ші\"</b> приховає відео: <b>Як працює ШІ?</b><br>але не приховає: <b>Що означає цифра шість?</b> + Неможливо використати ключове слово: %s. + Додайте лапки, щоб використовувати ключове слово: %s. + Ключове слово комплектує з: %s. + Ключове слово занадто коротке і потребує лапок: %s. + Ключове слово приховає всі відео: %s. Рекомендовані відео Приховати рекомендовані відео @@ -936,6 +944,9 @@ Вимкнути відновлення плеєра Shorts Плеєр Shorts не відновлюватиметься при запуску додатка. Плеєр Shorts відновлюватиметься при запуску додатка. + Приховати плавучу кнопку + "Плавучі кнопки, такі як 'Використати цей звук' приховано у вкладці YouTube Shorts каналу." + "Плавучі кнопки, такі як 'Використати цей звук' показується у вкладці YouTube Shorts каналу." Полиця Shorts Приховати полицю Shorts @@ -978,6 +989,12 @@ Приховати мітку Містить пряму рекламу Мітку Містить пряму рекламу приховано. Мітку Містить пряму рекламу показується. + Приховати кнопку Тренди + Кнопку Тренди приховано. + Кнопку Тренди показується. + Приховати кнопку Магазин + Кнопку Магазин приховано. + Кнопку Магазин показується. Приховати кнопку Магазин Кнопку Магазин приховано. Кнопка Магазин показується. @@ -987,15 +1004,21 @@ Приховати товари з тегами Товари з тегами приховано. Товари з тегами показується. - Приховати мітку місцезнаходження - Мітку місцезнаходження приховано. - Мітку місцезнаходження показується. + Приховати кнопку місцезнаходження + Кнопку місцезнаходження приховано. + Кнопку місцезнаходження показується. Приховати кнопку Зберегти звук в списку відтворення Зберегти звук в списку відтворення приховано. Зберегти звук в списку відтворення показується. - Приховати пропозиції пошуку - Пропозиції пошуку приховано. - Пропозиції пошуку показується. + Приховати кнопку пропозицій пошуку + Кнопку пропозицій пошуку приховано. + Кнопку пропозицій пошуку показується. + Приховати кнопку Використати цей звук + Кнопку Використати цей звук приховано. + Кнопку Використати цей звук показується. + Приховати кнопку Використати шаблон + Кнопку Використати шаблон приховано. + Кнопку Використати шаблон показується. Приховати інформаційні панелі Інформаційні панелі приховано. Інформаційні панелі показується. @@ -1445,6 +1468,35 @@ Скинути Налаштування скопійовано до буфера обміну. + Підробка даних трансляції + Підробка даних трансляції для вирішення проблем відтворення. + Підробити дані трансляції + Дані трансляції підроблено. + "Дані трансляції не підроблено. Відтворення відео може не працювати." + Вимикання цього налаштування може призвести до проблем відтворення відео. + Основний клієнт + iOS + Android + Вбудований плеєр Android + Тестовий Android + Android TV + Android VR + TV HTML5 + Web + Побічні ефекти імітування + • Фільми чи платні відео можуть не відтворюватися. + • Меню звукової доріжки відсутнє. + • Меню звукової доріжки відсутнє. + • Відео може не відтворюватися. + Примусово AVC (H.264) iOS + AVC (H.264) кодек відео iOS. + AVC (H.264), VP9, чи AV1 кодек відео iOS. + "Увімкнення може зменшити споживання акумулятора та усунути затинання при відтворенні. + +AVC (H.264) має максимальну роздільну здатність 1080p, а для відтворення відео використовується більше інтернет-даних, ніж VP9 або AV1." + Показувати в Статистика для сисадмінів + Клієнт, що використовується для отримання даних трансляції показується у Статистика для сисадмінів. + Клієнт, що використовується для отримання даних трансляції приховано у Статистика для сисадмінів. Історія перегляду Змінити налаштування пов\'язані з історією перегляду. diff --git a/src/main/resources/youtube/translations/vi-rVN/strings.xml b/src/main/resources/youtube/translations/vi-rVN/strings.xml index 46cd7fd28b..16a121edeb 100644 --- a/src/main/resources/youtube/translations/vi-rVN/strings.xml +++ b/src/main/resources/youtube/translations/vi-rVN/strings.xml @@ -238,6 +238,9 @@ Bộ lọc có phân biệt chữ hoa chữ thường, vì vậy bạn cần nh Khớp toàn bộ từ Việc đặt từ/cụm từ cần lọc trong dấu ngoặc kép sẽ ngăn chặn các kết quả chỉ trùng một phần với tiêu đề video và tên kênh.<br><br>Ví dụ,<br><b>\"ai\"</b> sẽ ẩn video: <b>How does AI work?</b><br>nhưng sẽ không ẩn: <b>What does fair use mean?</b> Không thể sử dụng từ khoá: %s. + Hãy thêm dấu ngoặc kép để sử dụng từ khoá: %s. + Từ khóa có các định nghĩa mâu thuẫn với nhau. %s. + Từ khóa quá ngắn và cần phải có dấu ngoặc kép: %s. Từ khóa sẽ ẩn tất cả video: %s. Video được đề xuất @@ -675,9 +678,9 @@ Cài đặt → Tự động phát → Tự động phát video tiếp theo."Ẩn Trợ giúp & Phản hồi Trợ giúp & Phản hồi đã ẩn. Trợ giúp & Phản hồi được hiển thị. - Ẩn mục Nghe nhạc cùng YouTube Music - Mục Nghe nhạc cùng YouTube Music đã bị ẩn. - Mục Nghe nhạc cùng YouTube Music được hiển thị. + Ẩn mục \'Nghe nhạc trên YouTube Music\' + Mục \'Nghe nhạc trên YouTube Music\' đã bị ẩn. + Mục \'Nghe nhạc trên YouTube Music\' được hiển thị. Ẩn mục Lặp lại video Mục lặp lại video đã ẩn. Mục lặp lại video được hiển thị. @@ -941,6 +944,9 @@ Mở rộng mô tả video có thể không hoạt động nếu bạn lưu chu Tắt tiếp tục trình phát Shorts Trinh phát Shorts sẽ không tiếp tục khi ứng dụng khởi chạy. Trinh phát Shorts sẽ tiếp tục khi ứng dụng khởi chạy. + Ẩn nút nổi + "Các nút nổi như 'Dùng bản âm thanh này' bị ẩn trong tab kênh Shorts." + "Các nút nổi như 'Dùng bản âm thanh này' được hiển thị trong tab kênh Shorts." Kệ Shorts Ẩn kệ Shorts @@ -983,6 +989,12 @@ Hạn chế: Tiêu đề chính thức trong kết quả tìm kiếm sẽ đư Ẩn nhãn quảng cáo được tài trợ Nhãn quảng cáo được tài trợ đã ẩn. Nhãn quảng cáo được tài trợ được hiển thị. + Ẩn nút Thịnh hành + Nút Thịnh hành đã ẩn. + Nút Thịnh hành đã hiển thị. + Ẩn nút Mua sắm + Nút Mua sắm đã ẩn. + Nút Mua sắm đã hiển thị. Ẩn nút Mua sắm Nút Mua sắm đã ẩn. Nút Mua sắm được hiển thị. @@ -992,15 +1004,21 @@ Hạn chế: Tiêu đề chính thức trong kết quả tìm kiếm sẽ đư Ẩn sản phẩm được gắn thẻ Sản phẩm được gắn thẻ đã ẩn. Sản phẩm gắn thẻ được hiển thị. - Ẩn nhãn Vị trí - Nhãn vị trí được ẩn. - Nhãn vị trí được hiển thị. + Ẩn nút Vị trí + Nút Vị trí đã ẩn. + Nút Vị trí đã hiển thị. Ẩn nút Lưu vào danh sách phát Nút lưu vào danh sách phát đã ẩn. Nút lưu vào danh sách phát được hiển thị. - Ẩn đề xuất tìm kiếm - Đề xuất tìm kiếm đã ẩn. - Đề xuất tìm kiếm được hiển thị. + Ẩn nút Gợi ý tìm kiếm + Nút Gợi ý tìm kiếm đã ẩn. + Nút Gợi ý tìm kiếm đã hiển thị. + Ẩn nút \'Dùng bản âm thanh này\' + Nút \'Dùng bản âm thanh này\' đã ẩn. + Nút \'Dùng bản âm thanh này\' đã hiển thị. + Ẩn nút Sử dụng mẫu + Nút Sử dụng mẫu đã ẩn. + Nút Sử dụng mẫu đã hiển thị. Ẩn Bảng thông tin Bảng thông tin đã ẩn. Bảng thông tin được hiển thị. @@ -1457,6 +1475,35 @@ Nhấn vào Tiếp tục và tắt tối ưu hóa pin." Đặt lại Đã sao chép cài đặt sang bảng nhớ tạm. + Giả mạo dữ liệu phát trực tiếp + Giả mạo dữ liệu phát trực tiếp để ngăn chặn sự cố phát. + Giả mạo dữ liệu phát trực tiếp + Đã giả mạo dữ liệu phát trực tiếp. + "Dữ liệu phát trực tiếp hiện không được giả mạo. Việc phát video có thể không hoạt động bình thường." + Việc tắt cài đặt này có thể gây ra sự cố phát video. + Máy khách mặc định + iOS + Android + Trình phát nhúng Android + Thử nghiệm Android + Android TV + Android VR + TV HTML5 + Trang Web + Hạn chế của việc giả mạo + • Phim hoặc video trả phí có thể không phát được. + • Mục Bản âm thanh bị thiếu. + • Mục Bản âm thanh bị thiếu. + • Video có thể không phát được. + Buộc iOS sử dụng AVC (H.264) + Codec video trên iOS là AVC (H.264). + Codec video trên iOS là AVC (H.264), VP9, or AV1. + "Bật chức năng này có thể tăng cường thời lượng pin và khắc phục tình trạng giật lag khi phát video. + +AVC (H.264) có độ phân giải tối đa 1080p, và phát video sẽ dùng nhiều dữ liệu di động hơn với VP9 hoặc AV1." + Hiển thị trong Thống kê chi tiết + Máy khách được sử dụng để lấy dữ liệu truyền trực tuyến sẽ được hiển thị trong Thống kê chi tiết. + Máy khách được sử dụng để lấy dữ liệu phát trực tiếp sẽ bị ẩn trong Thống kê chi tiết. Lịch sử xem Thay đổi cài đặt liên quan đến Lịch sử xem. diff --git a/src/main/resources/youtube/translations/zh-rCN/strings.xml b/src/main/resources/youtube/translations/zh-rCN/strings.xml index 2f4d007748..3c2743e8e1 100644 --- a/src/main/resources/youtube/translations/zh-rCN/strings.xml +++ b/src/main/resources/youtube/translations/zh-rCN/strings.xml @@ -982,15 +982,9 @@ 隐藏标记的产品 标记的产品已隐藏 标记的产品已显示 - 隐藏位置标签 - 位置标签已隐藏 - 位置标签已显示 隐藏保存声音到播放列表按钮 保存声音到播放列表按钮已隐藏 保存声音到播放列表按钮已显示 - 隐藏搜索建议 - 搜索建议已隐藏 - 搜索建议已显示 隐藏信息面板 信息面板已隐藏 信息面板已显示 diff --git a/src/main/resources/youtube/translations/zh-rTW/strings.xml b/src/main/resources/youtube/translations/zh-rTW/strings.xml index f974c7bdc2..3c152cfcf9 100644 --- a/src/main/resources/youtube/translations/zh-rTW/strings.xml +++ b/src/main/resources/youtube/translations/zh-rTW/strings.xml @@ -982,15 +982,9 @@ 隱藏標記的產品 標記的產品已隱藏 標記的產品已顯示 - 隱藏位置標簽 - 位置標簽已隱藏 - 位置標簽已顯示 隱藏儲存音效到播放清單按鈕 儲存音效到播放清單按鈕已隱藏。 儲存音效到播放清單按鈕已顯示。 - 隱藏搜尋建議 - 搜尋建議已隱藏 - 搜尋建議已顯示 隱藏訊息面板 訊息面板已隱藏 訊息面板已顯示 From 5aed8cb8814455112d52123dd57bccb40c2ce63a Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sun, 1 Sep 2024 22:28:34 +0900 Subject: [PATCH 29/53] bump 4.13.1-dev.3 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 61b16089d1..42fcd3c678 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.13.1-dev.2 +version = 4.13.1-dev.3 From 03dd80a0acff3cda96fa50e07050dcbd5abb3dd1 Mon Sep 17 00:00:00 2001 From: KobeW50 <84587632+KobeW50@users.noreply.github.com> Date: Mon, 2 Sep 2024 19:15:44 -0400 Subject: [PATCH 30/53] chore(YouTube/Hook download buttons): Clarify limitations of `Override playlist download button` --- src/main/resources/youtube/settings/host/values/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml index 21932789f5..c3a7532787 100644 --- a/src/main/resources/youtube/settings/host/values/strings.xml +++ b/src/main/resources/youtube/settings/host/values/strings.xml @@ -355,8 +355,8 @@ This does not bypass the age restriction. It just accepts it automatically."Native video download button opens your external downloader. Native video download button opens the native in-app downloader. Override playlist download button - Native playlist download button opens your external downloader. - Native playlist download button opens the native in-app downloader. + Native playlist download button is always shown, and in public playlists, it opens your external downloader. + If shown, the native playlist download button opens the native in-app downloader. Playlist downloader package name Package name of your installed external downloader app, such as YTDLnis. From 9d5998b5d21ddbab8a04907d35b16fce6ab16f9c Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Thu, 5 Sep 2024 15:51:49 +0900 Subject: [PATCH 31/53] fix(YouTube/Disable force auto captions): patch doesn't work with Shorts https://github.com/inotia00/ReVanced_Extended/issues/2346 --- .../autocaptions/AutoCaptionsBytecodePatch.kt | 6 -- .../general/autocaptions/AutoCaptionsPatch.kt | 34 +++++++--- .../shared/captions/BaseAutoCaptionsPatch.kt | 65 ------------------- .../SubtitleButtonControllerFingerprint.kt | 23 ------- .../fingerprints/SubtitleTrackFingerprint.kt | 2 +- .../autocaptions/AutoCaptionsBytecodePatch.kt | 6 -- .../general/autocaptions/AutoCaptionsPatch.kt | 47 ++++++++++++-- ...dererDecoderRecommendedLevelFingerprint.kt | 12 ++++ .../components/PlayerComponentsPatch.kt | 2 +- .../StartVideoInformerFingerprint.kt | 2 +- .../youtube/settings/host/values/strings.xml | 4 +- 11 files changed, 81 insertions(+), 122 deletions(-) delete mode 100644 src/main/kotlin/app/revanced/patches/music/general/autocaptions/AutoCaptionsBytecodePatch.kt delete mode 100644 src/main/kotlin/app/revanced/patches/shared/captions/BaseAutoCaptionsPatch.kt delete mode 100644 src/main/kotlin/app/revanced/patches/shared/captions/fingerprints/SubtitleButtonControllerFingerprint.kt rename src/main/kotlin/app/revanced/patches/shared/{captions => }/fingerprints/SubtitleTrackFingerprint.kt (86%) delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/general/autocaptions/AutoCaptionsBytecodePatch.kt create mode 100644 src/main/kotlin/app/revanced/patches/youtube/general/autocaptions/fingerprints/StoryboardRendererDecoderRecommendedLevelFingerprint.kt rename src/main/kotlin/app/revanced/patches/{shared => youtube/utils}/fingerprints/StartVideoInformerFingerprint.kt (89%) diff --git a/src/main/kotlin/app/revanced/patches/music/general/autocaptions/AutoCaptionsBytecodePatch.kt b/src/main/kotlin/app/revanced/patches/music/general/autocaptions/AutoCaptionsBytecodePatch.kt deleted file mode 100644 index 8deda09782..0000000000 --- a/src/main/kotlin/app/revanced/patches/music/general/autocaptions/AutoCaptionsBytecodePatch.kt +++ /dev/null @@ -1,6 +0,0 @@ -package app.revanced.patches.music.general.autocaptions - -import app.revanced.patches.music.utils.integrations.Constants.GENERAL_CLASS_DESCRIPTOR -import app.revanced.patches.shared.captions.BaseAutoCaptionsPatch - -object AutoCaptionsBytecodePatch : BaseAutoCaptionsPatch(GENERAL_CLASS_DESCRIPTOR, false) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/music/general/autocaptions/AutoCaptionsPatch.kt b/src/main/kotlin/app/revanced/patches/music/general/autocaptions/AutoCaptionsPatch.kt index c50428704f..22c0d9b647 100644 --- a/src/main/kotlin/app/revanced/patches/music/general/autocaptions/AutoCaptionsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/general/autocaptions/AutoCaptionsPatch.kt @@ -1,22 +1,38 @@ package app.revanced.patches.music.general.autocaptions -import app.revanced.patcher.data.ResourceContext +import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patches.music.utils.compatibility.Constants.COMPATIBLE_PACKAGE +import app.revanced.patches.music.utils.integrations.Constants.GENERAL_CLASS_DESCRIPTOR import app.revanced.patches.music.utils.settings.CategoryType import app.revanced.patches.music.utils.settings.SettingsPatch -import app.revanced.util.patch.BaseResourcePatch +import app.revanced.patches.shared.fingerprints.SubtitleTrackFingerprint +import app.revanced.util.patch.BaseBytecodePatch +import app.revanced.util.resultOrThrow +import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction @Suppress("unused") -object AutoCaptionsPatch : BaseResourcePatch( +object AutoCaptionsPatch : BaseBytecodePatch( name = "Disable auto captions", description = "Adds an option to disable captions from being automatically enabled.", - dependencies = setOf( - AutoCaptionsBytecodePatch::class, - SettingsPatch::class, - ), - compatiblePackages = COMPATIBLE_PACKAGE + dependencies = setOf(SettingsPatch::class), + compatiblePackages = COMPATIBLE_PACKAGE, + fingerprints = setOf(SubtitleTrackFingerprint), ) { - override fun execute(context: ResourceContext) { + override fun execute(context: BytecodeContext) { + + SubtitleTrackFingerprint.resultOrThrow().mutableMethod.apply { + val index = implementation!!.instructions.lastIndex + val register = getInstruction(index).registerA + + addInstructions( + index, """ + invoke-static {v$register}, $GENERAL_CLASS_DESCRIPTOR->disableAutoCaptions(Z)Z + move-result v$register + """ + ) + } SettingsPatch.addSwitchPreference( CategoryType.GENERAL, diff --git a/src/main/kotlin/app/revanced/patches/shared/captions/BaseAutoCaptionsPatch.kt b/src/main/kotlin/app/revanced/patches/shared/captions/BaseAutoCaptionsPatch.kt deleted file mode 100644 index cd819bf5ff..0000000000 --- a/src/main/kotlin/app/revanced/patches/shared/captions/BaseAutoCaptionsPatch.kt +++ /dev/null @@ -1,65 +0,0 @@ -package app.revanced.patches.shared.captions - -import app.revanced.patcher.data.BytecodeContext -import app.revanced.patcher.extensions.InstructionExtensions.addInstructions -import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels -import app.revanced.patcher.extensions.InstructionExtensions.getInstruction -import app.revanced.patcher.patch.BytecodePatch -import app.revanced.patcher.util.smali.ExternalLabel -import app.revanced.patches.shared.captions.fingerprints.SubtitleButtonControllerFingerprint -import app.revanced.patches.shared.captions.fingerprints.SubtitleTrackFingerprint -import app.revanced.patches.shared.fingerprints.StartVideoInformerFingerprint -import app.revanced.util.resultOrThrow -import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction - -abstract class BaseAutoCaptionsPatch( - private val classDescriptor: String, - private val captionsButtonStatus: Boolean -) : BytecodePatch( - setOf( - StartVideoInformerFingerprint, - SubtitleButtonControllerFingerprint, - SubtitleTrackFingerprint - ) -) { - override fun execute(context: BytecodeContext) { - - SubtitleTrackFingerprint.resultOrThrow().mutableMethod.apply { - if (captionsButtonStatus) { - addInstructionsWithLabels( - 0, """ - invoke-static {}, $classDescriptor->disableAutoCaptions()Z - move-result v0 - if-eqz v0, :disabled - const/4 v0, 0x1 - return v0 - """, ExternalLabel("disabled", getInstruction(0)) - ) - } else { - val index = implementation!!.instructions.lastIndex - val register = getInstruction(index).registerA - - addInstructions( - index, """ - invoke-static {v$register}, $classDescriptor->disableAutoCaptions(Z)Z - move-result v$register - """ - ) - } - } - - if (!captionsButtonStatus) return - - mapOf( - StartVideoInformerFingerprint to 0, - SubtitleButtonControllerFingerprint to 1 - ).forEach { (fingerprint, enabled) -> - fingerprint.resultOrThrow().mutableMethod.addInstructions( - 0, """ - const/4 v0, 0x$enabled - invoke-static {v0}, $classDescriptor->setCaptionsButtonStatus(Z)V - """ - ) - } - } -} \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/shared/captions/fingerprints/SubtitleButtonControllerFingerprint.kt b/src/main/kotlin/app/revanced/patches/shared/captions/fingerprints/SubtitleButtonControllerFingerprint.kt deleted file mode 100644 index 4041509b51..0000000000 --- a/src/main/kotlin/app/revanced/patches/shared/captions/fingerprints/SubtitleButtonControllerFingerprint.kt +++ /dev/null @@ -1,23 +0,0 @@ -package app.revanced.patches.shared.captions.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.AccessFlags -import com.android.tools.smali.dexlib2.Opcode - -internal object SubtitleButtonControllerFingerprint : MethodFingerprint( - returnType = "V", - accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = listOf("Lcom/google/android/libraries/youtube/player/subtitles/model/SubtitleTrack;"), - opcodes = listOf( - Opcode.IGET_OBJECT, - Opcode.IF_NEZ, - Opcode.RETURN_VOID, - Opcode.IGET_BOOLEAN, - Opcode.CONST_4, - Opcode.IF_NEZ, - Opcode.CONST, - Opcode.INVOKE_VIRTUAL, - Opcode.IGET_OBJECT, - ) -) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/shared/captions/fingerprints/SubtitleTrackFingerprint.kt b/src/main/kotlin/app/revanced/patches/shared/fingerprints/SubtitleTrackFingerprint.kt similarity index 86% rename from src/main/kotlin/app/revanced/patches/shared/captions/fingerprints/SubtitleTrackFingerprint.kt rename to src/main/kotlin/app/revanced/patches/shared/fingerprints/SubtitleTrackFingerprint.kt index b1a6012a79..b974573866 100644 --- a/src/main/kotlin/app/revanced/patches/shared/captions/fingerprints/SubtitleTrackFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/shared/fingerprints/SubtitleTrackFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.shared.captions.fingerprints +package app.revanced.patches.shared.fingerprints import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.MethodFingerprint diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/autocaptions/AutoCaptionsBytecodePatch.kt b/src/main/kotlin/app/revanced/patches/youtube/general/autocaptions/AutoCaptionsBytecodePatch.kt deleted file mode 100644 index 914f4db853..0000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/general/autocaptions/AutoCaptionsBytecodePatch.kt +++ /dev/null @@ -1,6 +0,0 @@ -package app.revanced.patches.youtube.general.autocaptions - -import app.revanced.patches.shared.captions.BaseAutoCaptionsPatch -import app.revanced.patches.youtube.utils.integrations.Constants.GENERAL_CLASS_DESCRIPTOR - -object AutoCaptionsBytecodePatch : BaseAutoCaptionsPatch(GENERAL_CLASS_DESCRIPTOR, true) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/autocaptions/AutoCaptionsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/general/autocaptions/AutoCaptionsPatch.kt index 52a9b95a02..4ed2f9a3da 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/general/autocaptions/AutoCaptionsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/general/autocaptions/AutoCaptionsPatch.kt @@ -1,24 +1,57 @@ package app.revanced.patches.youtube.general.autocaptions import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels +import app.revanced.patcher.extensions.InstructionExtensions.getInstruction +import app.revanced.patcher.util.smali.ExternalLabel +import app.revanced.patches.shared.fingerprints.SubtitleTrackFingerprint +import app.revanced.patches.youtube.general.autocaptions.fingerprints.StoryboardRendererDecoderRecommendedLevelFingerprint import app.revanced.patches.youtube.utils.compatibility.Constants.COMPATIBLE_PACKAGE -import app.revanced.patches.youtube.utils.playertype.PlayerTypeHookPatch +import app.revanced.patches.youtube.utils.fingerprints.StartVideoInformerFingerprint +import app.revanced.patches.youtube.utils.integrations.Constants.GENERAL_CLASS_DESCRIPTOR import app.revanced.patches.youtube.utils.settings.SettingsPatch import app.revanced.util.patch.BaseBytecodePatch +import app.revanced.util.resultOrThrow @Suppress("unused") object AutoCaptionsPatch : BaseBytecodePatch( name = "Disable auto captions", description = "Adds an option to disable captions from being automatically enabled.", - dependencies = setOf( - AutoCaptionsBytecodePatch::class, - PlayerTypeHookPatch::class, - SettingsPatch::class - ), - compatiblePackages = COMPATIBLE_PACKAGE + dependencies = setOf(SettingsPatch::class), + compatiblePackages = COMPATIBLE_PACKAGE, + fingerprints = setOf( + SubtitleTrackFingerprint, + StartVideoInformerFingerprint, + StoryboardRendererDecoderRecommendedLevelFingerprint, + ) ) { override fun execute(context: BytecodeContext) { + SubtitleTrackFingerprint.resultOrThrow().mutableMethod.apply { + addInstructionsWithLabels( + 0, """ + invoke-static {}, $GENERAL_CLASS_DESCRIPTOR->disableAutoCaptions()Z + move-result v0 + if-eqz v0, :disabled + const/4 v0, 0x1 + return v0 + """, ExternalLabel("disabled", getInstruction(0)) + ) + } + + mapOf( + StartVideoInformerFingerprint to 0, + StoryboardRendererDecoderRecommendedLevelFingerprint to 1 + ).forEach { (fingerprint, enabled) -> + fingerprint.resultOrThrow().mutableMethod.addInstructions( + 0, """ + const/4 v0, 0x$enabled + invoke-static {v0}, $GENERAL_CLASS_DESCRIPTOR->setCaptionsButtonStatus(Z)V + """ + ) + } + /** * Add settings */ diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/autocaptions/fingerprints/StoryboardRendererDecoderRecommendedLevelFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/general/autocaptions/fingerprints/StoryboardRendererDecoderRecommendedLevelFingerprint.kt new file mode 100644 index 0000000000..c20b3d2b90 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/general/autocaptions/fingerprints/StoryboardRendererDecoderRecommendedLevelFingerprint.kt @@ -0,0 +1,12 @@ +package app.revanced.patches.youtube.general.autocaptions.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.patcher.fingerprint.MethodFingerprint +import com.android.tools.smali.dexlib2.AccessFlags + +internal object StoryboardRendererDecoderRecommendedLevelFingerprint : MethodFingerprint( + returnType = "V", + accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, + parameters = listOf("Lcom/google/android/libraries/youtube/innertube/model/player/PlayerResponseModel;"), + strings = listOf("#-1#") +) diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/components/PlayerComponentsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/player/components/PlayerComponentsPatch.kt index cf863f8cc5..8b3bca28ef 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/player/components/PlayerComponentsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/player/components/PlayerComponentsPatch.kt @@ -9,7 +9,6 @@ import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction import app.revanced.patcher.patch.PatchException import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod import app.revanced.patcher.util.smali.ExternalLabel -import app.revanced.patches.shared.fingerprints.StartVideoInformerFingerprint import app.revanced.patches.shared.litho.LithoFilterPatch import app.revanced.patches.youtube.player.components.fingerprints.CrowdfundingBoxFingerprint import app.revanced.patches.youtube.player.components.fingerprints.EngagementPanelControllerFingerprint @@ -34,6 +33,7 @@ import app.revanced.patches.youtube.player.components.fingerprints.WatermarkPare import app.revanced.patches.youtube.player.speedoverlay.SpeedOverlayPatch import app.revanced.patches.youtube.utils.compatibility.Constants.COMPATIBLE_PACKAGE import app.revanced.patches.youtube.utils.controlsoverlay.ControlsOverlayConfigPatch +import app.revanced.patches.youtube.utils.fingerprints.StartVideoInformerFingerprint import app.revanced.patches.youtube.utils.fingerprints.YouTubeControlsOverlayFingerprint import app.revanced.patches.youtube.utils.fix.suggestedvideoendscreen.SuggestedVideoEndScreenPatch import app.revanced.patches.youtube.utils.integrations.Constants.COMPONENTS_PATH diff --git a/src/main/kotlin/app/revanced/patches/shared/fingerprints/StartVideoInformerFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/fingerprints/StartVideoInformerFingerprint.kt similarity index 89% rename from src/main/kotlin/app/revanced/patches/shared/fingerprints/StartVideoInformerFingerprint.kt rename to src/main/kotlin/app/revanced/patches/youtube/utils/fingerprints/StartVideoInformerFingerprint.kt index dec566143e..0609b6a3af 100644 --- a/src/main/kotlin/app/revanced/patches/shared/fingerprints/StartVideoInformerFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/fingerprints/StartVideoInformerFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.shared.fingerprints +package app.revanced.patches.youtube.utils.fingerprints import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.MethodFingerprint diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml index c3a7532787..bdc3461081 100644 --- a/src/main/resources/youtube/settings/host/values/strings.xml +++ b/src/main/resources/youtube/settings/host/values/strings.xml @@ -319,9 +319,7 @@ Limitations: Watch later Invalid start page, resetting to default. Disable forced auto audio tracks - "Forced auto audio tracks are disabled. - -Limitation: This setting does not apply to Shorts." + Forced auto audio tracks are disabled. Forced auto audio tracks are enabled. Disable forced auto captions Forced auto captions are disabled. From 8b3c44f9d581b1e675dec46daf4da176d7ec6695 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Thu, 5 Sep 2024 15:55:34 +0900 Subject: [PATCH 32/53] feat(YouTube/Hide player flyout menu): restore `Hide Ambient mode menu` setting --- src/main/resources/youtube/settings/host/values/strings.xml | 3 +++ src/main/resources/youtube/settings/xml/revanced_prefs.xml | 1 + 2 files changed, 4 insertions(+) diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml index bdc3461081..c272c00058 100644 --- a/src/main/resources/youtube/settings/host/values/strings.xml +++ b/src/main/resources/youtube/settings/host/values/strings.xml @@ -733,6 +733,9 @@ Settings → Autoplay → Autoplay next video" Additional settings + Hide Ambient mode menu + Ambient mode menu is hidden. + Ambient mode menu is shown. Hide Help & feedback menu Help & feedback menu is hidden. Help & feedback menu is shown. diff --git a/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/src/main/resources/youtube/settings/xml/revanced_prefs.xml index 4e4c52e07c..ab8d9c047e 100644 --- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml +++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml @@ -309,6 +309,7 @@ From 9cb1b4fdf2e125b33e6b102a52a78fa0ad901938 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Thu, 5 Sep 2024 17:00:46 +0900 Subject: [PATCH 33/53] feat(YouTube/Remove background playback restrictions): match with ReVanced --- .../youtube/misc/backgroundplayback/BackgroundPlaybackPatch.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/backgroundplayback/BackgroundPlaybackPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/backgroundplayback/BackgroundPlaybackPatch.kt index c4c72bc71e..54e3870a9c 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/backgroundplayback/BackgroundPlaybackPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/backgroundplayback/BackgroundPlaybackPatch.kt @@ -13,6 +13,7 @@ import app.revanced.patches.youtube.utils.compatibility.Constants.COMPATIBLE_PAC import app.revanced.patches.youtube.utils.integrations.Constants.MISC_PATH import app.revanced.patches.youtube.utils.playertype.PlayerTypeHookPatch import app.revanced.patches.youtube.utils.settings.SettingsPatch +import app.revanced.patches.youtube.video.information.VideoInformationPatch import app.revanced.util.getWalkerMethod import app.revanced.util.patch.BaseBytecodePatch import app.revanced.util.resultOrThrow @@ -26,6 +27,7 @@ object BackgroundPlaybackPatch : BaseBytecodePatch( description = "Removes restrictions on background playback, including for music and kids videos.", dependencies = setOf( PlayerTypeHookPatch::class, + VideoInformationPatch::class, SettingsPatch::class ), compatiblePackages = COMPATIBLE_PACKAGE, From b05b72e8c8221d3314f2157d7b7f17bb07456cfb Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Thu, 5 Sep 2024 17:28:43 +0900 Subject: [PATCH 34/53] build: bump dependencies --- .../patches/shared/litho/LithoFilterPatch.kt | 13 +++++++------ .../LithoFilterPatchConstructorFingerprint.kt | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/kotlin/app/revanced/patches/shared/litho/LithoFilterPatch.kt b/src/main/kotlin/app/revanced/patches/shared/litho/LithoFilterPatch.kt index f02aaa9d02..67d4c54a63 100644 --- a/src/main/kotlin/app/revanced/patches/shared/litho/LithoFilterPatch.kt +++ b/src/main/kotlin/app/revanced/patches/shared/litho/LithoFilterPatch.kt @@ -170,10 +170,10 @@ object LithoFilterPatch : BytecodePatch( addFilter = { classDescriptor -> addInstructions( 0, """ - new-instance v1, $classDescriptor - invoke-direct {v1}, $classDescriptor->()V - const/16 v2, ${filterCount++} - aput-object v1, v0, v2 + new-instance v0, $classDescriptor + invoke-direct {v0}, $classDescriptor->()V + const/16 v3, ${filterCount++} + aput-object v0, v2, v3 """ ) } @@ -184,8 +184,9 @@ object LithoFilterPatch : BytecodePatch( override fun close() = LithoFilterPatchConstructorFingerprint.result!! .mutableMethod.addInstructions( 0, """ - const/16 v0, $filterCount - new-array v0, v0, [$INTEGRATIONS_FILER_CLASS_DESCRIPTOR + const/16 v1, $filterCount + new-array v2, v1, [$INTEGRATIONS_FILER_CLASS_DESCRIPTOR + const/4 v1, 0x1 """ ) } \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/shared/litho/fingerprints/LithoFilterPatchConstructorFingerprint.kt b/src/main/kotlin/app/revanced/patches/shared/litho/fingerprints/LithoFilterPatchConstructorFingerprint.kt index af0ce820bb..a307628be3 100644 --- a/src/main/kotlin/app/revanced/patches/shared/litho/fingerprints/LithoFilterPatchConstructorFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/shared/litho/fingerprints/LithoFilterPatchConstructorFingerprint.kt @@ -7,7 +7,7 @@ import com.android.tools.smali.dexlib2.AccessFlags internal object LithoFilterPatchConstructorFingerprint : MethodFingerprint( returnType = "V", - accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC or AccessFlags.CONSTRUCTOR, + accessFlags = AccessFlags.STATIC or AccessFlags.CONSTRUCTOR, customFingerprint = { methodDef, _ -> methodDef.definingClass == "$COMPONENTS_PATH/LithoFilterPatch;" } From 82777db3cb2cd51a9c209c15ae1e428f02e92c81 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Thu, 5 Sep 2024 17:34:33 +0900 Subject: [PATCH 35/53] feat(YouTube/Hide ads): add `Hide promotion alert banner` setting --- src/main/resources/youtube/settings/host/values/strings.xml | 3 +++ src/main/resources/youtube/settings/xml/revanced_prefs.xml | 1 + 2 files changed, 4 insertions(+) diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml index c272c00058..0e50362444 100644 --- a/src/main/resources/youtube/settings/host/values/strings.xml +++ b/src/main/resources/youtube/settings/host/values/strings.xml @@ -45,6 +45,9 @@ Side effect: Community post images may be blocked in fullscreen." Hide paid promotion label Paid promotion label is hidden. Paid promotion label is shown. + Hide promotion alert banner + Promotion alert banner is hidden. + Promotion alert banner is shown. Hide self sponsored cards Self sponsored cards are hidden. Self sponsored cards are shown. diff --git a/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/src/main/resources/youtube/settings/xml/revanced_prefs.xml index ab8d9c047e..e3c21747f0 100644 --- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml +++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml @@ -9,6 +9,7 @@ + From 94f7c5b79ae99e2fefa5603a465491a35d2649a4 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Thu, 5 Sep 2024 17:35:26 +0900 Subject: [PATCH 36/53] feat(YouTube Music/Hide ads): add `Hide promotion alert banner` setting --- .../app/revanced/patches/music/ads/general/AdsPatch.kt | 5 +++++ src/main/resources/music/settings/host/values/strings.xml | 2 ++ 2 files changed, 7 insertions(+) diff --git a/src/main/kotlin/app/revanced/patches/music/ads/general/AdsPatch.kt b/src/main/kotlin/app/revanced/patches/music/ads/general/AdsPatch.kt index d8aed25c07..841f0527a3 100644 --- a/src/main/kotlin/app/revanced/patches/music/ads/general/AdsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/ads/general/AdsPatch.kt @@ -212,5 +212,10 @@ object AdsPatch : BaseBytecodePatch( "revanced_hide_premium_renewal", "true" ) + SettingsPatch.addSwitchPreference( + CategoryType.ADS, + "revanced_hide_promotion_alert_banner", + "true" + ) } } diff --git a/src/main/resources/music/settings/host/values/strings.xml b/src/main/resources/music/settings/host/values/strings.xml index 905bc8af5c..417a6d0e4a 100644 --- a/src/main/resources/music/settings/host/values/strings.xml +++ b/src/main/resources/music/settings/host/values/strings.xml @@ -73,6 +73,8 @@ If it is disabled, fullscreen ads are blocked. (there may be side effects)"Hides premium promotion popups. Hide premium renewal banner Hides the premium renewal banner. + Hide promotion alert banner + Hides the promotion alert banner. From fc832e2459a7c6ad96365a1e4485ed12205bec6e Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Thu, 5 Sep 2024 17:39:22 +0900 Subject: [PATCH 37/53] feat(YouTube/Player components): add `Disable switch mix playlists` setting --- .../player/components/PlayerComponentsPatch.kt | 8 ++++++++ .../video/information/VideoInformationPatch.kt | 2 +- .../playerresponse/PlayerResponseMethodHookPatch.kt | 11 ++++++++--- .../youtube/settings/host/values/strings.xml | 7 +++++++ .../resources/youtube/settings/xml/revanced_prefs.xml | 1 + 5 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/components/PlayerComponentsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/player/components/PlayerComponentsPatch.kt index 8b3bca28ef..c5ecd85d51 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/player/components/PlayerComponentsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/player/components/PlayerComponentsPatch.kt @@ -46,6 +46,7 @@ import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch.Scrim import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch.SeekUndoEduOverlayStub import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch.TapBloomView import app.revanced.patches.youtube.utils.settings.SettingsPatch +import app.revanced.patches.youtube.video.information.VideoInformationPatch import app.revanced.util.REGISTER_TEMPLATE_REPLACEMENT import app.revanced.util.getTargetIndexOrThrow import app.revanced.util.getTargetIndexReversedOrThrow @@ -73,6 +74,7 @@ object PlayerComponentsPatch : BaseBytecodePatch( SharedResourceIdPatch::class, SpeedOverlayPatch::class, SuggestedVideoEndScreenPatch::class, + VideoInformationPatch::class ), compatiblePackages = COMPATIBLE_PACKAGE, fingerprints = setOf( @@ -172,6 +174,12 @@ object PlayerComponentsPatch : BaseBytecodePatch( // endregion + // region patch for disable auto switch mix playlists + + VideoInformationPatch.hook("$PLAYER_CLASS_DESCRIPTOR->disableAutoSwitchMixPlaylists(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JZ)V") + + // endregion + // region patch for hide channel watermark WatermarkFingerprint.resolve( diff --git a/src/main/kotlin/app/revanced/patches/youtube/video/information/VideoInformationPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/video/information/VideoInformationPatch.kt index df1eaa5c1f..95dee191b1 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/video/information/VideoInformationPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/video/information/VideoInformationPatch.kt @@ -361,7 +361,7 @@ object VideoInformationPatch : BytecodePatch( // Call before any other video id hooks, // so they can use VideoInformation and check if the video id is for a Short. PlayerResponseMethodHookPatch += PlayerResponseMethodHookPatch.Hook.PlayerParameterBeforeVideoId( - "$INTEGRATIONS_CLASS_DESCRIPTOR->newPlayerResponseParameter(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;" + "$INTEGRATIONS_CLASS_DESCRIPTOR->newPlayerResponseParameter(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;" ) /** diff --git a/src/main/kotlin/app/revanced/patches/youtube/video/playerresponse/PlayerResponseMethodHookPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/video/playerresponse/PlayerResponseMethodHookPatch.kt index f003075cce..68beae36b5 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/video/playerresponse/PlayerResponseMethodHookPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/video/playerresponse/PlayerResponseMethodHookPatch.kt @@ -18,12 +18,14 @@ object PlayerResponseMethodHookPatch : // Parameter numbers of the patched method. private var PARAMETER_VIDEO_ID = 1 private var PARAMETER_PLAYER_PARAMETER = 3 + private var PARAMETER_PLAYLIST_ID = 4 private var PARAMETER_IS_SHORT_AND_OPENING_OR_PLAYING by Delegates.notNull() // Registers used to pass the parameters to integrations. private var playerResponseMethodCopyRegisters = false private lateinit var REGISTER_VIDEO_ID: String private lateinit var REGISTER_PLAYER_PARAMETER: String + private lateinit var REGISTER_PLAYLIST_ID: String private lateinit var REGISTER_IS_SHORT_AND_OPENING_OR_PLAYING: String private lateinit var playerResponseMethod: MutableMethod @@ -46,10 +48,12 @@ object PlayerResponseMethodHookPatch : if (playerResponseMethodCopyRegisters) { REGISTER_VIDEO_ID = "v0" REGISTER_PLAYER_PARAMETER = "v1" - REGISTER_IS_SHORT_AND_OPENING_OR_PLAYING = "v2" + REGISTER_PLAYLIST_ID = "v2" + REGISTER_IS_SHORT_AND_OPENING_OR_PLAYING = "v3" } else { REGISTER_VIDEO_ID = "p$PARAMETER_VIDEO_ID" REGISTER_PLAYER_PARAMETER = "p$PARAMETER_PLAYER_PARAMETER" + REGISTER_PLAYLIST_ID = "p$PARAMETER_PLAYLIST_ID" REGISTER_IS_SHORT_AND_OPENING_OR_PLAYING = "p$PARAMETER_IS_SHORT_AND_OPENING_OR_PLAYING" } } @@ -66,7 +70,7 @@ object PlayerResponseMethodHookPatch : fun hookPlayerParameter(hook: Hook) { playerResponseMethod.addInstructions( 0, """ - invoke-static {$REGISTER_VIDEO_ID, $REGISTER_PLAYER_PARAMETER, $REGISTER_IS_SHORT_AND_OPENING_OR_PLAYING}, $hook + invoke-static {$REGISTER_VIDEO_ID, $REGISTER_PLAYER_PARAMETER, $REGISTER_PLAYLIST_ID, $REGISTER_IS_SHORT_AND_OPENING_OR_PLAYING}, $hook move-result-object $REGISTER_PLAYER_PARAMETER """ ) @@ -90,11 +94,12 @@ object PlayerResponseMethodHookPatch : """ move-object/from16 $REGISTER_VIDEO_ID, p$PARAMETER_VIDEO_ID move-object/from16 $REGISTER_PLAYER_PARAMETER, p$PARAMETER_PLAYER_PARAMETER + move-object/from16 $REGISTER_PLAYLIST_ID, p$PARAMETER_PLAYLIST_ID move/from16 $REGISTER_IS_SHORT_AND_OPENING_OR_PLAYING, p$PARAMETER_IS_SHORT_AND_OPENING_OR_PLAYING """, ) - numberOfInstructionsAdded += 3 + numberOfInstructionsAdded += 4 // Move the modified register back. addInstruction( diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml index 0e50362444..a84f2f8c47 100644 --- a/src/main/resources/youtube/settings/host/values/strings.xml +++ b/src/main/resources/youtube/settings/host/values/strings.xml @@ -543,6 +543,13 @@ Tap and hold to open RVX settings." Disable player popup panels Auto player popup panels are disabled. Auto player popup panels are enabled. + Disable switch mix playlists + Auto switch mix playlists is disabled. + "Auto switch mix playlists is enabled when autoplay is turned on. + +Autoplay can be changed in YouTube settings: +Settings → Autoplay → Autoplay next video" + Enabling this feature will disable automatic switching to YouTube Mix when playing music while autoplay is turned on. Disable speed overlay "Disable '2x>>' while holding down. diff --git a/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/src/main/resources/youtube/settings/xml/revanced_prefs.xml index e3c21747f0..c01b4b4db5 100644 --- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml +++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml @@ -445,6 +445,7 @@ diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml index 391c672e49..f8b974915e 100644 --- a/src/main/resources/youtube/settings/host/values/strings.xml +++ b/src/main/resources/youtube/settings/host/values/strings.xml @@ -1341,7 +1341,6 @@ Limitation: Dislikes may not appear if the user is not logged in or in incognito Dislikes unavailable (client API limit reached). Dislikes unavailable (%s). Reload video to vote using Return YouTube Dislike - Hidden From 547fd291ffabbfbef0e7229bc0d0622c17305292 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Thu, 5 Sep 2024 19:46:55 +0900 Subject: [PATCH 41/53] fix(YouTube Music/SponsorBlock): SponsorBlock segments at the end of a song cause the player to get stuck https://github.com/inotia00/ReVanced_Extended/issues/2360 --- .../information/VideoInformationPatch.kt | 185 ++++++++++++++---- ...xPlayerDirectorSetVideoStageFingerprint.kt | 2 +- .../information/VideoInformationPatch.kt | 2 +- 3 files changed, 147 insertions(+), 42 deletions(-) rename src/main/kotlin/app/revanced/patches/{youtube/video/information => shared}/fingerprints/MdxPlayerDirectorSetVideoStageFingerprint.kt (78%) diff --git a/src/main/kotlin/app/revanced/patches/music/video/information/VideoInformationPatch.kt b/src/main/kotlin/app/revanced/patches/music/video/information/VideoInformationPatch.kt index 3f1817f5dd..53cd1e098e 100644 --- a/src/main/kotlin/app/revanced/patches/music/video/information/VideoInformationPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/video/information/VideoInformationPatch.kt @@ -8,6 +8,7 @@ import app.revanced.patcher.fingerprint.MethodFingerprintResult import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.PatchException import app.revanced.patcher.patch.annotation.Patch +import app.revanced.patcher.util.proxy.mutableTypes.MutableClass import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable import app.revanced.patcher.util.smali.toInstructions @@ -22,20 +23,26 @@ import app.revanced.patches.music.video.information.fingerprints.VideoLengthFing import app.revanced.patches.music.video.information.fingerprints.VideoQualityListFingerprint import app.revanced.patches.music.video.information.fingerprints.VideoQualityTextFingerprint import app.revanced.patches.music.video.videoid.VideoIdPatch +import app.revanced.patches.shared.fingerprints.MdxPlayerDirectorSetVideoStageFingerprint import app.revanced.util.addFieldAndInstructions +import app.revanced.util.getReference import app.revanced.util.getTargetIndexWithFieldReferenceTypeReversedOrThrow import app.revanced.util.getTargetIndexWithMethodReferenceNameReversedOrThrow import app.revanced.util.getWalkerMethod +import app.revanced.util.indexOfFirstInstructionOrThrow import app.revanced.util.resultOrThrow import com.android.tools.smali.dexlib2.AccessFlags +import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction import com.android.tools.smali.dexlib2.iface.reference.FieldReference +import com.android.tools.smali.dexlib2.iface.reference.MethodReference import com.android.tools.smali.dexlib2.immutable.ImmutableMethod import com.android.tools.smali.dexlib2.immutable.ImmutableMethodImplementation import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter +import com.android.tools.smali.dexlib2.util.MethodUtil @Patch( dependencies = [ @@ -46,6 +53,7 @@ import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter @Suppress("MemberVisibilityCanBePrivate") object VideoInformationPatch : BytecodePatch( setOf( + MdxPlayerDirectorSetVideoStageFingerprint, PlayerControllerSetTimeReferenceFingerprint, PlaybackSpeedParentFingerprint, SeekBarConstructorFingerprint, @@ -57,6 +65,23 @@ object VideoInformationPatch : BytecodePatch( private const val INTEGRATIONS_CLASS_DESCRIPTOR = "$SHARED_PATH/VideoInformation;" + /** + * Used in [VideoEndFingerprint] and [MdxPlayerDirectorSetVideoStageFingerprint]. + * Since both classes are inherited from the same class, + * [VideoEndFingerprint] and [MdxPlayerDirectorSetVideoStageFingerprint] always have the same [seekSourceEnumType] and [seekSourceMethodName]. + */ + private var seekSourceEnumType = "" + private var seekSourceMethodName = "" + + private lateinit var videoInformationMutableClass: MutableClass + private lateinit var context: BytecodeContext + + private lateinit var playerConstructorMethod: MutableMethod + private var playerConstructorInsertIndex = -1 + + private lateinit var mdxConstructorMethod: MutableMethod + private var mdxConstructorInsertIndex = -1 + private lateinit var videoTimeConstructorMethod: MutableMethod private var videoTimeConstructorInsertIndex = 2 @@ -64,54 +89,107 @@ object VideoInformationPatch : BytecodePatch( lateinit var rectangleFieldName: String internal lateinit var playbackSpeedResult: MethodFingerprintResult + private fun addSeekInterfaceMethods( + result: MethodFingerprintResult, + seekMethodName: String, + methodName: String, + fieldName: String + ) { + result.mutableMethod.apply { + result.mutableClass.methods.add( + ImmutableMethod( + definingClass, + "seekTo", + listOf(ImmutableMethodParameter("J", annotations, "time")), + "Z", + AccessFlags.PUBLIC or AccessFlags.FINAL, + annotations, + null, + ImmutableMethodImplementation( + 4, """ + # first enum (field a) is SEEK_SOURCE_UNKNOWN + sget-object v0, $seekSourceEnumType->a:$seekSourceEnumType + invoke-virtual {p0, p1, p2, v0}, ${definingClass}->$seekMethodName(J$seekSourceEnumType)Z + move-result p1 + return p1 + """.toInstructions(), + null, + null + ) + ).toMutable() + ) + + val smaliInstructions = + """ + if-eqz v0, :ignore + invoke-virtual {v0, p0, p1}, $definingClass->seekTo(J)Z + move-result v0 + return v0 + :ignore + const/4 v0, 0x0 + return v0 + """ + + videoInformationMutableClass.addFieldAndInstructions( + context, + methodName, + fieldName, + definingClass, + smaliInstructions, + true + ) + } + } + override fun execute(context: BytecodeContext) { - val videoInformationMutableClass = + this.context = context + videoInformationMutableClass = context.findClass(INTEGRATIONS_CLASS_DESCRIPTOR)!!.mutableClass VideoEndFingerprint.resultOrThrow().let { it.mutableMethod.apply { - val seekSourceEnumType = parameterTypes[1].toString() - - it.mutableClass.methods.add( - ImmutableMethod( - definingClass, - "seekTo", - listOf(ImmutableMethodParameter("J", annotations, "time")), - "Z", - AccessFlags.PUBLIC or AccessFlags.FINAL, - annotations, - null, - ImmutableMethodImplementation( - 4, """ - sget-object v0, $seekSourceEnumType->a:$seekSourceEnumType - invoke-virtual {p0, p1, p2, v0}, ${definingClass}->${name}(J$seekSourceEnumType)Z - move-result p1 - return p1 - """.toInstructions(), - null, - null - ) - ).toMutable() - ) + playerConstructorMethod = + it.mutableClass.methods.first { method -> MethodUtil.isConstructor(method) } - val smaliInstructions = - """ - if-eqz v0, :ignore - invoke-virtual {v0, p0, p1}, $definingClass->seekTo(J)Z - move-result v0 - return v0 - :ignore - const/4 v0, 0x0 - return v0 - """ + playerConstructorInsertIndex = + playerConstructorMethod.indexOfFirstInstructionOrThrow { + opcode == Opcode.INVOKE_DIRECT && getReference()?.name == "" + } + 1 + + // hook the player controller for use through integrations + onCreateHook(INTEGRATIONS_CLASS_DESCRIPTOR, "initialize") + + seekSourceEnumType = parameterTypes[1].toString() + seekSourceMethodName = name - videoInformationMutableClass.addFieldAndInstructions( - context, + // Create integrations interface methods. + addSeekInterfaceMethods( + it, + seekSourceMethodName, "overrideVideoTime", - "videoInformationClass", - definingClass, - smaliInstructions, - true + "videoInformationClass" + ) + } + } + + MdxPlayerDirectorSetVideoStageFingerprint.resultOrThrow().let { + it.mutableMethod.apply { + mdxConstructorMethod = + it.mutableClass.methods.first { method -> MethodUtil.isConstructor(method) } + + mdxConstructorInsertIndex = mdxConstructorMethod.indexOfFirstInstructionOrThrow { + opcode == Opcode.INVOKE_DIRECT && getReference()?.name == "" + } + 1 + + // hook the MDX director for use through integrations + onCreateHookMdx(INTEGRATIONS_CLASS_DESCRIPTOR, "initializeMdx") + + // Create integrations interface methods. + addSeekInterfaceMethods( + it, + seekSourceMethodName, + "overrideMDXVideoTime", + "videoInformationMDXClass" ) } } @@ -246,6 +324,33 @@ object VideoInformationPatch : BytecodePatch( private fun MutableMethod.insertTimeHook(insertIndex: Int, descriptor: String) = insert(insertIndex, "p1, p2", descriptor) + /** + * Hook the player controller. Called when a video is opened or the current video is changed. + * + * Note: This hook is called very early and is called before the video id, video time, video length, + * and many other data fields are set. + * + * @param targetMethodClass The descriptor for the class to invoke when the player controller is created. + * @param targetMethodName The name of the static method to invoke when the player controller is created. + */ + internal fun onCreateHook(targetMethodClass: String, targetMethodName: String) = + playerConstructorMethod.addInstruction( + playerConstructorInsertIndex++, + "invoke-static { }, $targetMethodClass->$targetMethodName()V" + ) + + /** + * Hook the MDX player director. Called when playing videos while casting to a big screen device. + * + * @param targetMethodClass The descriptor for the class to invoke when the player controller is created. + * @param targetMethodName The name of the static method to invoke when the player controller is created. + */ + internal fun onCreateHookMdx(targetMethodClass: String, targetMethodName: String) = + mdxConstructorMethod.addInstruction( + mdxConstructorInsertIndex++, + "invoke-static { }, $targetMethodClass->$targetMethodName()V" + ) + /** * Hook the video time. * The hook is usually called once per second. diff --git a/src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/MdxPlayerDirectorSetVideoStageFingerprint.kt b/src/main/kotlin/app/revanced/patches/shared/fingerprints/MdxPlayerDirectorSetVideoStageFingerprint.kt similarity index 78% rename from src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/MdxPlayerDirectorSetVideoStageFingerprint.kt rename to src/main/kotlin/app/revanced/patches/shared/fingerprints/MdxPlayerDirectorSetVideoStageFingerprint.kt index 800e579eff..5ffa26abe7 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/MdxPlayerDirectorSetVideoStageFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/shared/fingerprints/MdxPlayerDirectorSetVideoStageFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.youtube.video.information.fingerprints +package app.revanced.patches.shared.fingerprints import app.revanced.patcher.fingerprint.MethodFingerprint diff --git a/src/main/kotlin/app/revanced/patches/youtube/video/information/VideoInformationPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/video/information/VideoInformationPatch.kt index 95dee191b1..414f8ef623 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/video/information/VideoInformationPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/video/information/VideoInformationPatch.kt @@ -14,13 +14,13 @@ import app.revanced.patcher.util.proxy.mutableTypes.MutableClass import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable import app.revanced.patcher.util.smali.toInstructions +import app.revanced.patches.shared.fingerprints.MdxPlayerDirectorSetVideoStageFingerprint import app.revanced.patches.youtube.utils.fingerprints.VideoEndFingerprint import app.revanced.patches.youtube.utils.integrations.Constants.SHARED_PATH import app.revanced.patches.youtube.utils.playertype.PlayerTypeHookPatch import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch import app.revanced.patches.youtube.video.information.fingerprints.ChannelIdFingerprint import app.revanced.patches.youtube.video.information.fingerprints.ChannelNameFingerprint -import app.revanced.patches.youtube.video.information.fingerprints.MdxPlayerDirectorSetVideoStageFingerprint import app.revanced.patches.youtube.video.information.fingerprints.OnPlaybackSpeedItemClickFingerprint import app.revanced.patches.youtube.video.information.fingerprints.PlaybackInitializationFingerprint import app.revanced.patches.youtube.video.information.fingerprints.PlaybackSpeedClassFingerprint From faa112eed4483a09d5bc92aaf4f35bb61f37c181 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Thu, 5 Sep 2024 19:58:20 +0900 Subject: [PATCH 42/53] feat(YouTube Music): add support versions `7.16.53` ~ `7.17.51` --- .../patches/music/misc/splash/CairoSplashAnimationPatch.kt | 2 +- .../revanced/patches/music/utils/compatibility/Constants.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/app/revanced/patches/music/misc/splash/CairoSplashAnimationPatch.kt b/src/main/kotlin/app/revanced/patches/music/misc/splash/CairoSplashAnimationPatch.kt index 5c60085e3a..4a5cec5bc2 100644 --- a/src/main/kotlin/app/revanced/patches/music/misc/splash/CairoSplashAnimationPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/misc/splash/CairoSplashAnimationPatch.kt @@ -20,7 +20,7 @@ import app.revanced.util.literalInstructionBooleanHook "com.google.android.apps.youtube.music", [ "7.08.54", - "7.16.52", + "7.17.51", ] ) ] diff --git a/src/main/kotlin/app/revanced/patches/music/utils/compatibility/Constants.kt b/src/main/kotlin/app/revanced/patches/music/utils/compatibility/Constants.kt index 6405d96e17..6b8abb737b 100644 --- a/src/main/kotlin/app/revanced/patches/music/utils/compatibility/Constants.kt +++ b/src/main/kotlin/app/revanced/patches/music/utils/compatibility/Constants.kt @@ -11,8 +11,8 @@ object Constants { "6.33.52", // This is the latest version with the legacy code of YouTube Music. "6.42.55", // This is the latest version that supports Android 7.0 "6.51.53", // This is the latest version of YouTube Music 6.xx.xx - "7.15.52", // This was the latest version that was supported by the previous patch. - "7.16.52", // This is the latest version supported by the RVX patch. + "7.16.53", // This was the latest version that was supported by the previous patch. + "7.17.51", // This is the latest version supported by the RVX patch. ) ) ) From 5823acc339c3810fd6cb4f6a26ca009280b40aac Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Thu, 5 Sep 2024 20:08:07 +0900 Subject: [PATCH 43/53] feat(YouTube/Overlay buttons): change patch options https://github.com/inotia00/ReVanced_Extended/issues/2359 --- .../player/overlaybuttons/OverlayButtonsPatch.kt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/overlaybuttons/OverlayButtonsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/player/overlaybuttons/OverlayButtonsPatch.kt index bb2c33f683..e01517f4f6 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/player/overlaybuttons/OverlayButtonsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/player/overlaybuttons/OverlayButtonsPatch.kt @@ -36,8 +36,9 @@ object OverlayButtonsPatch : BaseResourcePatch( ), compatiblePackages = COMPATIBLE_PACKAGE ) { - private const val DEFAULT_MARGIN = "0.0dip" - private const val WIDER_MARGIN = "6.0dip" + private const val MARGIN_NONE = "0.0dip" + private const val MARGIN_DEFAULT = "2.5dip" + private const val MARGIN_WIDER = "5.0dip" private const val DEFAULT_ICON = "bold" @@ -58,10 +59,11 @@ object OverlayButtonsPatch : BaseResourcePatch( // Option to set bottom margin private val BottomMargin = stringPatchOption( key = "BottomMargin", - default = DEFAULT_MARGIN, + default = MARGIN_DEFAULT, values = mapOf( - "Wider" to WIDER_MARGIN, - "Default" to DEFAULT_MARGIN + "Default" to MARGIN_DEFAULT, + "None" to MARGIN_NONE, + "Wider" to MARGIN_WIDER, ), title = "Bottom margin", description = "The bottom margin for the overlay buttons and timestamp.", From 6a94ada6eb2452792ef8dbc667168c548fcbbe72 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Thu, 5 Sep 2024 20:09:28 +0900 Subject: [PATCH 44/53] feat(Translations): update translation --- .../music/translations/bg-rBG/strings.xml | 1 - .../music/translations/bn/strings.xml | 1 - .../music/translations/el-rGR/strings.xml | 1 - .../music/translations/es-rES/strings.xml | 19 +++--- .../music/translations/fr-rFR/strings.xml | 1 - .../music/translations/hu-rHU/strings.xml | 1 - .../music/translations/id-rID/strings.xml | 1 - .../music/translations/in/strings.xml | 1 - .../music/translations/it-rIT/strings.xml | 1 - .../music/translations/ja-rJP/strings.xml | 1 - .../music/translations/ko-rKR/strings.xml | 3 +- .../music/translations/nl-rNL/strings.xml | 1 - .../music/translations/pl-rPL/strings.xml | 1 - .../music/translations/pt-rBR/strings.xml | 1 - .../music/translations/ro-rRO/strings.xml | 1 - .../music/translations/ru-rRU/strings.xml | 1 - .../music/translations/tr-rTR/strings.xml | 1 - .../music/translations/uk-rUA/strings.xml | 1 - .../music/translations/vi-rVN/strings.xml | 1 - .../music/translations/zh-rCN/strings.xml | 1 - .../music/translations/zh-rTW/strings.xml | 1 - .../youtube/translations/ar/strings.xml | 10 +-- .../youtube/translations/bg-rBG/strings.xml | 64 ++++++++++++++++++- .../youtube/translations/de-rDE/strings.xml | 3 +- .../youtube/translations/el-rGR/strings.xml | 5 +- .../youtube/translations/es-rES/strings.xml | 21 +++++- .../youtube/translations/fr-rFR/strings.xml | 33 +++++++--- .../youtube/translations/hu-rHU/strings.xml | 3 +- .../youtube/translations/it-rIT/strings.xml | 31 +++++++-- .../youtube/translations/ja-rJP/strings.xml | 17 ++++- .../youtube/translations/ko-rKR/strings.xml | 47 +++++++++----- .../youtube/translations/pl-rPL/strings.xml | 21 ++++-- .../youtube/translations/pt-rBR/strings.xml | 64 ++++++++++++++++++- .../youtube/translations/ru-rRU/strings.xml | 64 +++++++++++++++++-- .../youtube/translations/tr-rTR/strings.xml | 3 +- .../youtube/translations/uk-rUA/strings.xml | 27 ++++++-- .../youtube/translations/vi-rVN/strings.xml | 5 +- .../youtube/translations/zh-rCN/strings.xml | 64 ++++++++++++++++++- .../youtube/translations/zh-rTW/strings.xml | 64 ++++++++++++++++++- 39 files changed, 479 insertions(+), 108 deletions(-) diff --git a/src/main/resources/music/translations/bg-rBG/strings.xml b/src/main/resources/music/translations/bg-rBG/strings.xml index f7f070441d..d3d2044330 100644 --- a/src/main/resources/music/translations/bg-rBG/strings.xml +++ b/src/main/resources/music/translations/bg-rBG/strings.xml @@ -209,7 +209,6 @@ Относно Данните за нехаресване са от Return YouTube Dislike API. Докоснете за да научите повече. Нехаресванията не са достъпни (достигнат лимит на API). - Скрит Вкл. отчети за грешки diff --git a/src/main/resources/music/translations/bn/strings.xml b/src/main/resources/music/translations/bn/strings.xml index 12d7f22d66..7bf375e2dc 100644 --- a/src/main/resources/music/translations/bn/strings.xml +++ b/src/main/resources/music/translations/bn/strings.xml @@ -66,7 +66,6 @@ সম্পর্কে তথ্য প্রদান করা হয় Return YouTube Dislike API দ্বারা। আরও জানতে আলতো চাপুন। অপছন্দ পাওয়া যাচ্ছে না (ক্লায়েন্ট API সর্বোচ্চ সীমা পৌঁছেছে) - লুকায়িত ডিবাগ লগ সক্রিয় করুন diff --git a/src/main/resources/music/translations/el-rGR/strings.xml b/src/main/resources/music/translations/el-rGR/strings.xml index 7a484f1970..54243712f9 100644 --- a/src/main/resources/music/translations/el-rGR/strings.xml +++ b/src/main/resources/music/translations/el-rGR/strings.xml @@ -276,7 +276,6 @@ Δεδομένα dislike μη διαθέσιμα (κατάσταση %d). Δεδομένα dislike μη διαθέσιμα (το όριο API έχει επιτευχθεί). Δεδομένα dislike μη διαθέσιμα (%s). - Κρυμμένα SponsorBlock Ενεργοποίηση του SponsorBlock diff --git a/src/main/resources/music/translations/es-rES/strings.xml b/src/main/resources/music/translations/es-rES/strings.xml index 7c1c369672..1a95fa56cb 100644 --- a/src/main/resources/music/translations/es-rES/strings.xml +++ b/src/main/resources/music/translations/es-rES/strings.xml @@ -12,7 +12,7 @@ Filtro de menú de cuenta Lista de nombres del menú de la cuenta a filtrar separados por una nueva línea. Ocultar componente vacío - Oculta componentes vacíos en el menú de la cuenta + Oculta componentes vacíos en el menú de la cuenta. Ocultar asa Oculta el asa en el conmutador de cuenta. Ocultar contenedor de términos @@ -132,10 +132,10 @@ Esta función aún está en desarrollo, por lo que puede ser inestable."Activar modo horizontal Permite entrar en modo horizontal mediante la rotación de la pantalla del teléfono. Activar filtro personalizado - Activa los filtros personalizados + Habilita el filtro personalizado para ocultar los componentes de diseño. Editar filtro personalizado - Filtra los nombres de los componentes separados por líneas + Filtra los nombres de los componentes, separados por líneas. Filtro personalizado no válido: %s. Ocultar menú de configuración "Oculta elementos del menú de configuración. @@ -177,7 +177,7 @@ Esto no evita la restricción de edad. Solo la acepta automáticamente." Objetivo de la versión de la app a modificar - Seleccione el objetivo de la versión de la app a modificar + Seleccione el objetivo de la versión de la app a modificar. 4.27.53 - Desactivar el modo radio en las regiones canadienses 6.11.52 - Desactivar letras en tiempo real @@ -244,7 +244,7 @@ Algunas características pueden no funcionar correctamente en la disposición de Video Editar velocidades de reproducción personalizadas - Agregar o cambiar las velocidades de reproducción disponibles + Agregar o cambiar las velocidades de reproducción disponibles. Recordar cambios de velocidad de reproducción Recuerda la última velocidad de reproducción seleccionada. Mostrar un mensaje @@ -274,9 +274,8 @@ Algunas características pueden no funcionar correctamente en la disposición de Los datos son proporcionados por la API Return YouTube Dislike. Pulse aquí para obtener más información. Los no me gusta están temporalmente no disponibles (la API no responde). Los no me gusta no están disponibles (estado %d). - Los No Me Gusta no están disponibles (se alcanzó el límite de la API del cliente) + Los No Me Gusta no están disponibles (se alcanzó el límite de la API del cliente). Los no me gusta no están disponibles (%s). - Oculto SponsorBlock Activar SponsorBlock @@ -342,7 +341,7 @@ Algunas características pueden no funcionar correctamente en la disposición de Activar nueva animación de bienvenida Habilita la animación de bienvenida \"Cairo\" cuando se inicia la aplicación. Activar registro de depuración - Imprime el registro de depuración + Imprime el registro de depuración. Incluir búfer en registro de depuración Incluye el búfer en el registro de depuración. Activar códec opus @@ -373,8 +372,8 @@ Pulsa el botón de continuar y desactiva las optimizaciones de la batería."Importar Copiar Error de importación: %s - Configuración restablecida por defecto - Configuración importada de %d + La configuración se restableció a los valores predeterminados. + Configuración importada de %d. Restablecer Ajustes copiados en el portapapeles. diff --git a/src/main/resources/music/translations/fr-rFR/strings.xml b/src/main/resources/music/translations/fr-rFR/strings.xml index 6bfaa98cc4..3bf51b90f3 100644 --- a/src/main/resources/music/translations/fr-rFR/strings.xml +++ b/src/main/resources/music/translations/fr-rFR/strings.xml @@ -276,7 +276,6 @@ Certaines fonctions peuvent ne pas fonctionner sur l'ancienne mise en page."Les \"Je n\'aime pas\" sont indisponible (status %d). Les \"Je n\'aime pas\" sont indisponibles (le client a atteint la limite de l\'API). Les \"Je n\'aime pas\" sont indisponible (%s). - Masqué SponsorBlock Activer Sponsorblock diff --git a/src/main/resources/music/translations/hu-rHU/strings.xml b/src/main/resources/music/translations/hu-rHU/strings.xml index 26cbb2ff11..874bb4c539 100644 --- a/src/main/resources/music/translations/hu-rHU/strings.xml +++ b/src/main/resources/music/translations/hu-rHU/strings.xml @@ -272,7 +272,6 @@ Előfordulhat, hogy egyes funkciók nem működnek megfelelően a régi lejátsz A nem tetszik funkció nem elérhető (állapot: %d). Nem tetszések nem érhetőek el (kliens API limit elérve). A nem tetszik funkció nem elérhető (%s). - Rejtett Szponzor Blokk SzponsorBlokk engedélyezése diff --git a/src/main/resources/music/translations/id-rID/strings.xml b/src/main/resources/music/translations/id-rID/strings.xml index 6e36257f4c..87350e6612 100644 --- a/src/main/resources/music/translations/id-rID/strings.xml +++ b/src/main/resources/music/translations/id-rID/strings.xml @@ -276,7 +276,6 @@ Some features may not work properly in the old player layout." Dislikes are unavailable (status %d). Dislike tidak tersedia (batas API client tercapai). Dislikes are unavailable (%s). - Sembunyikan SponsorBlock Enable SponsorBlock diff --git a/src/main/resources/music/translations/in/strings.xml b/src/main/resources/music/translations/in/strings.xml index 6e36257f4c..87350e6612 100644 --- a/src/main/resources/music/translations/in/strings.xml +++ b/src/main/resources/music/translations/in/strings.xml @@ -276,7 +276,6 @@ Some features may not work properly in the old player layout." Dislikes are unavailable (status %d). Dislike tidak tersedia (batas API client tercapai). Dislikes are unavailable (%s). - Sembunyikan SponsorBlock Enable SponsorBlock diff --git a/src/main/resources/music/translations/it-rIT/strings.xml b/src/main/resources/music/translations/it-rIT/strings.xml index fe9dbe7d74..38ffb6401d 100644 --- a/src/main/resources/music/translations/it-rIT/strings.xml +++ b/src/main/resources/music/translations/it-rIT/strings.xml @@ -61,7 +61,6 @@ Informazioni I dati vengono forniti dall\'API Return YouTube Dislike. Tocca qui per saperne di più. \"Non mi piace\" non disponibile (limite API client raggiunto) - Nascosto Abilita la registrazione del debug diff --git a/src/main/resources/music/translations/ja-rJP/strings.xml b/src/main/resources/music/translations/ja-rJP/strings.xml index 6e9cc64e15..c4634f32ce 100644 --- a/src/main/resources/music/translations/ja-rJP/strings.xml +++ b/src/main/resources/music/translations/ja-rJP/strings.xml @@ -276,7 +276,6 @@ YT Music の設定だけでなく、ReVanced Extended の設定も非表示に 低評価数は一時的に利用できません。(ステータス %d) 低評価数は利用できません (クライアント API 制限) 低評価数は一時的に利用できません。(%s) - 非表示 SponsorBlock Sponsor Block を有効化 diff --git a/src/main/resources/music/translations/ko-rKR/strings.xml b/src/main/resources/music/translations/ko-rKR/strings.xml index f66cacd39c..1909dbe758 100644 --- a/src/main/resources/music/translations/ko-rKR/strings.xml +++ b/src/main/resources/music/translations/ko-rKR/strings.xml @@ -64,6 +64,8 @@ YouTube Premium 팝업 광고를 숨깁니다. YouTube Premium 갱신 배너 제거 YouTube Premium 갱신 배너를 숨깁니다. + 프로모션 알림 배너 제거 + 프로모션 알림 배너를 숨깁니다. 메뉴 구성요소 소형 다이얼로그 활성화 @@ -277,7 +279,6 @@ YT Music 설정 메뉴뿐만 아니라 ReVanced Extended 설정 메뉴도 숨겨 싫어요 개수를 표시할 수 없습니다 (상태 코드: %d). 싫어요 개수를 표시할 수 없습니다. (클라이언트 API 제한 도달) 싫어요 개수를 표시할 수 없습니다 (%s). - 숨겨짐 SponsorBlock SponsorBlock 활성화 diff --git a/src/main/resources/music/translations/nl-rNL/strings.xml b/src/main/resources/music/translations/nl-rNL/strings.xml index 0e8ff81523..bf2c545561 100644 --- a/src/main/resources/music/translations/nl-rNL/strings.xml +++ b/src/main/resources/music/translations/nl-rNL/strings.xml @@ -182,7 +182,6 @@ Bekende problemen: Dislikes niet beschikbaar (status %d). Vind ik niet leuk is niet beschikbaar (client API limiet bereikt) Dislikes niet beschikbaar (%s). - Verborgen Debug logging aanzetten diff --git a/src/main/resources/music/translations/pl-rPL/strings.xml b/src/main/resources/music/translations/pl-rPL/strings.xml index 4d6713726d..b5dc6b8db5 100644 --- a/src/main/resources/music/translations/pl-rPL/strings.xml +++ b/src/main/resources/music/translations/pl-rPL/strings.xml @@ -276,7 +276,6 @@ Niektóre ustawienia mogą nie działać poprawnie ze starym układem odtwarzacz Liczba łapek w dół nie jest dostępna (status %d). Łapki w dół nie są dostępne (limit API użytkownika został osiągnięty). Liczba łapek w dół nie jest dostępna (%s). - Ukryte SponsorBlock Włącz SponsorBlock diff --git a/src/main/resources/music/translations/pt-rBR/strings.xml b/src/main/resources/music/translations/pt-rBR/strings.xml index 506164bf1a..bc20cf8cd4 100644 --- a/src/main/resources/music/translations/pt-rBR/strings.xml +++ b/src/main/resources/music/translations/pt-rBR/strings.xml @@ -276,7 +276,6 @@ Alguns recursos podem não funcionar corretamente no layout antigo do reprodutor Deslikes indisponível (status %d). Dislikes indisponível (limite de API do cliente atingido). Deslikes indisponível (%s). - Oculto SponsorBlock Ativar SponsorBlock diff --git a/src/main/resources/music/translations/ro-rRO/strings.xml b/src/main/resources/music/translations/ro-rRO/strings.xml index 880b51b8f9..e268254daf 100644 --- a/src/main/resources/music/translations/ro-rRO/strings.xml +++ b/src/main/resources/music/translations/ro-rRO/strings.xml @@ -75,7 +75,6 @@ Probleme cunoscute: Ascunde separatorul butonului apreciez. Despre Datele sunt furnizate de API-ul Returnare YouTube Dislike. Atinge aici pentru a afla mai multe. - Ascuns Activează jurnalul de depanare diff --git a/src/main/resources/music/translations/ru-rRU/strings.xml b/src/main/resources/music/translations/ru-rRU/strings.xml index e053c1417b..3e1341896a 100644 --- a/src/main/resources/music/translations/ru-rRU/strings.xml +++ b/src/main/resources/music/translations/ru-rRU/strings.xml @@ -276,7 +276,6 @@ Отметки \"Не нравится\" недоступны (состояние %d). Отметки \"Не нравится\" недоступны (достигнут лимит клиентов сервера API). Отметки \"Не нравится\" недоступны (%s). - Скрыты SponsorBlock Включить SponsorBlock diff --git a/src/main/resources/music/translations/tr-rTR/strings.xml b/src/main/resources/music/translations/tr-rTR/strings.xml index e16bbd2213..901cd27c63 100644 --- a/src/main/resources/music/translations/tr-rTR/strings.xml +++ b/src/main/resources/music/translations/tr-rTR/strings.xml @@ -271,7 +271,6 @@ Eski oynatıcı düzeninde bazı ayarlar düzgün çalışmayabilir." Beğenmemeler mevcut değil (durum %d). Beğenmeme sayısı mevcut değil (istemci API sınırına ulaşıldı). Beğenmemeler mevcut değil (%s). - Gizlendi SponsorBlock SponsorBlock\'u etkinleştir diff --git a/src/main/resources/music/translations/uk-rUA/strings.xml b/src/main/resources/music/translations/uk-rUA/strings.xml index adbde9c1d6..36953cf62f 100644 --- a/src/main/resources/music/translations/uk-rUA/strings.xml +++ b/src/main/resources/music/translations/uk-rUA/strings.xml @@ -276,7 +276,6 @@ Дизлайки недоступні (статус %d). Дизлайки недоступні (досягнуто ліміт клієнтів сервера API). Дизлайки недоступні (%s). - Приховано SponsorBlock Увімкнути SponsorBlock diff --git a/src/main/resources/music/translations/vi-rVN/strings.xml b/src/main/resources/music/translations/vi-rVN/strings.xml index f063c483b0..5f2625b0b0 100644 --- a/src/main/resources/music/translations/vi-rVN/strings.xml +++ b/src/main/resources/music/translations/vi-rVN/strings.xml @@ -276,7 +276,6 @@ Lưu ý:\n- Tuỳ chọn này sẽ thay đổi giao diện ứng dụng, tuy nhi Số lượt không thích không khả dụng (trạng thái %d). Số lượt không thích không khả dụng (đã đạt đến giới hạn API máy khách). Số lượt không thích không khả dụng (%s). - Ẩn SponsorBlock Kích hoạt SponsorBlock diff --git a/src/main/resources/music/translations/zh-rCN/strings.xml b/src/main/resources/music/translations/zh-rCN/strings.xml index ac53154f62..69ab604d25 100644 --- a/src/main/resources/music/translations/zh-rCN/strings.xml +++ b/src/main/resources/music/translations/zh-rCN/strings.xml @@ -242,7 +242,6 @@ 点踩数不可用(状态 %d) 点踩数不可用(已达到客户端 API 限制) 点踩数不可用(%s) - 隐藏 Debug 日志 diff --git a/src/main/resources/music/translations/zh-rTW/strings.xml b/src/main/resources/music/translations/zh-rTW/strings.xml index 4198055c3c..101aa700db 100644 --- a/src/main/resources/music/translations/zh-rTW/strings.xml +++ b/src/main/resources/music/translations/zh-rTW/strings.xml @@ -258,7 +258,6 @@ 倒讚數無法使用 (狀態 %d) 倒讚顯示不正常(已達到客戶端 API 限制) 倒讚數無法使用 (狀態 %s) - 隱藏 贊助區塊阻擋(SponsorBlock) 啟用SponsorBlock diff --git a/src/main/resources/youtube/translations/ar/strings.xml b/src/main/resources/youtube/translations/ar/strings.xml index c98cb5868e..792d6a02e2 100644 --- a/src/main/resources/youtube/translations/ar/strings.xml +++ b/src/main/resources/youtube/translations/ar/strings.xml @@ -236,7 +236,7 @@ • قد لا تكون بعض مكونات واجهة المستخدم مخفية. • قد لا يؤدي البحث عن كلمة رئيسية إلى ظهور أية نتائج." مطابقة الكلمات كاملة - سيؤدي وضع علامة اقتباس مزدوجة حول كلمة رئيسية/عبارة إلى منع التطابقات الجزئية لعناوين الفيديو وأسماء القنوات.<br><br>على سبيل المثال،<br><b>\"ai\"</b> سيخفي الفيديو: <b>كيف يعمل الذكاء الاصطناعي؟</b><br>ولكن لن يخفي: <b>What does fair use mean?</b> + سيؤدي وضع علامة اقتباس مزدوجة حول كلمة رئيسية/عبارة إلى منع التطابقات الجزئية لعناوين الفيديو وأسماء القنوات.<br><br>على سبيل المثال،<br><b>\"ai\"</b> سيخفي الفيديو: <b>How does AI work?</b><br>ولكن لن يخفي: <b>What does fair use mean?</b> لا يمكن استخدام الكلمة الرئيسية: %s. إضافة اقتباسات لاستخدام الكلمة الرئيسية: %s. الكلمة الرئيسية لها بيانات متضاربة: %s. @@ -291,9 +291,9 @@ المشاهدة لاحقًا صفحة البداية غير صالحة، تتم إعادة التعيين إلى الوضع الافتراضي. تعطيل المقطع الصوتي التلقائي المفروض - "تم تعطيل المقطع الصوتي التلقائي المفروض. + تم تعطيل المقطع الصوتي التلقائي المفروض. -التقييد: لا ينطبق هذا الإعداد على فيديوهات Shorts." +التقييد: لا ينطبق هذا الإعداد على فيديوهات Shorts. تم تمكين المقطع الصوتي التلقائي المفروض. تعطيل التَّرْجَمَة التلقائية المفروضة تم تعطيل التَّرْجَمَة التلقائية المفروضة. @@ -1234,7 +1234,6 @@ لم يعجبني غير متوفر (تم الوصول إلى حد API العميل). لم يعجبني غير متوفر (%s). أعد تحميل الفيديو للتصويت باستخدام Return YouTube Dislike - مخفي SponsorBlock تمكين SponsorBlock @@ -1454,6 +1453,9 @@ يزيل معلمات استعلام التتبع من عناوين URL عند مشاركة الروابط. تعطيل بروتوكول QUIC "تعطيل بروتوكول QUIC الخاص بـ CronetEngine." + تغيير لوح مشاركة + يتم استخدام لوح مشاركة النظام. + يتم استخدام لوح مشاركة داخل التطبيق. تمكين ترميز OPUS تمكين ترميز OPUS إذا كانت استجابة المشغل تتضمن برنامج ترميز OPUS. diff --git a/src/main/resources/youtube/translations/bg-rBG/strings.xml b/src/main/resources/youtube/translations/bg-rBG/strings.xml index defec4d152..c500bb78d7 100644 --- a/src/main/resources/youtube/translations/bg-rBG/strings.xml +++ b/src/main/resources/youtube/translations/bg-rBG/strings.xml @@ -226,7 +226,12 @@ •Някои Shorts може да не са скрити. • Някои елементи на потребителския интерфейс може да не са скрити. • Търсенето на дума -ключ може да не покаже никакви резултати." + Съвпадение на цялата дума + Ограждането на ключова дума/фраза с двойни кавички ще предотврати частични съвпадения на заглавия на видеоклипове и имена на канали<br><br>Например,<br><b>\"ai\"</b> ще скрие видеоклипа: <b>How does AI work?</b><br>но няма да скрие: <b>What does fair use mean?</b> Невалидна ключова дума. Не може да се използва: „%s“ като филтър + Добавете кавички, за да използвате ключова дума: %s. + Ключовата дума има противоречиви твърдения: %s. + Ключовата дума е твърде кратка и изисква кавички: %s. Ключовата дума „%1$s“ ще скрие всички видеоклипове. Препоръчани видеоклипове @@ -278,7 +283,7 @@ За Гледане по-късно Невалидна начална страница, нулиране по подразбиране. Принудителните автоматични аудио пътеки са деактивирани - "Задължителните аудио записи са деактивирани." + Задължителните аудио записи са деактивирани. Задължителните аудио записи са активирани. Изкл. принудителни автоматични субтититри Принудителните автоматични субтититри са изключени. @@ -671,6 +676,9 @@ Скриване на менюто за премиум контроли Менюто за премиум контроли е скрито. Менюто за премиум контроли се пказва. + Скрийте менюто „Изчакване на заспиване“ + Менюто на таймера за заспиване е скрито. + Менюто на таймера за заспиване се показва. Скрийте елемента \"Стабилно ниво на звука\" Стабилно ниво на звука се показва. Постоянно ниво на звука е скрито. @@ -924,6 +932,9 @@ Скриване на Shorts плейъра при стартиране на приложението Shorts плейъра при стартиране на приложението е скрит. Shorts плейъра при стартиране на приложението се показва. + Скриване на изскачащ бутон + "Изскачащи бутони като „Използване на този звук“ са скрити в раздела Shorts." + "Изскачащи бутони като „Използване на този звук“ Се показват в раздела Shorts." Shorts рафтове Скрийте рафтовете Shorts @@ -966,6 +977,12 @@ Скриване на платените промоции Промоционалните етикети са скрити. Промоционалните етикети се показват. + Бутон „Набиращи популярност“ + Скрит. + Показва се. + Бутон \"Пазаруване\" + Бутона за пазаруване е скрит. + Бутона за пазаруване се показва. Скриване на бутона за пазаруване Бутона за пазаруване е скрит. Бутона за пазаруване се показва. @@ -975,9 +992,21 @@ Скриване на маркираните продукти Маркираните продукти са скрити. Маркираните продукти се показват. + Бутон за \"Местоположение\" + Бутон за \"Местоположение\" е скрит. + Бутон за \"Местоположение\" се показва. Бутон за запазване на аудиото в плейлиста Бутонът за Запазване в плейлиста е скрит. Бутонът за Запазване в плейлиста се показва. + Бутон „Предложения за търсене“ + Бутон „Предложения за търсене“ е скрит. + Бутон „Предложения за търсене“ се показва. + Бутон „Използване на този звук“ + Бутон „Използване на този звук“ е скрит. + Бутон „Използване на този звук“ се показва. + Бутон за \"Използване на шаблон\" + Бутон за \"Използване на шаблон\" е скрит. + Бутон за \"Използване на шаблон\" се показва. Скриване на информационните панели Информационните панели са скрити. Информационните панели се показват. @@ -1183,7 +1212,6 @@ Нехаресванията не са достъпни (достигнат лимит на API). Нехаресванията не са налични (%s). Презареждане на видеото за гласуване чрез ReturnYouTubeDislike - Скрито SponsorBlock Включване на SponsorBlock @@ -1429,6 +1457,35 @@ Нулирай Настройките са копирани в клипборда. + Подправяне на поточни данни + Подправете поточно предаваните данни, за да предотвратите проблеми с възпроизвеждането. + Подправяне на поточни данни + Данните за поточно предаване са подправени. + "Данните за поточно предаване не са подправени. Възпроизвеждането на видео може да не работи." + Изключването на тази настройка може да причини проблеми с възпроизвеждането на видео. + Клиент по подразбиране + iOS + Android + Вграден Android плейър + Тестов пакет за Android + Android TV + Android VR + TV HTML5 + Web + Ефекти от замяната + • Филми или платени видеоклипове може да не се възпроизвеждат. + • Липсва менюто за избор на аудио. + • Липсва менюто за избор на аудио. + • Видеото може да не се възпроизведе. + Принудително AVC (H.264) за iOS + видео кодекът на iOS е AVC (H.264). + видео кодекът на iOS е AVC (H.264), VP9, or AV1. + "Активирането на това може да подобри живота на батерията и да коригира прекъсванията при възпроизвеждане. + +AVC (H.264) има максимална разделителна способност при 1080p и възпроизвеждането на видео ще използва повече интернет данни от VP9 или AV1." + Показване в \"Разширени статистики\" + Клиентът, използван за получаване на данни за потока, се показва в Статистика за системни администратори. + Клиентът, използван за получаване на данни за поток, е скрит в Статистика за системни администратори. История на гледане Променя настройките, за хронологията на гледане. @@ -1440,6 +1497,9 @@ Блокиране на хронологията на гледане Преглед на състоянието на хронологията • Хронологията на гледане е блокирана. + • Следва настройките на хронологията на сърфирането в акаунта ви в Google. + "• Следва настройките на хронологията на сърфирането в акаунта ви в Google. +• Историята на сърфиране може да не работи поради DNS или VPN." Информация за корекции diff --git a/src/main/resources/youtube/translations/de-rDE/strings.xml b/src/main/resources/youtube/translations/de-rDE/strings.xml index 5779d8e099..8586b36518 100644 --- a/src/main/resources/youtube/translations/de-rDE/strings.xml +++ b/src/main/resources/youtube/translations/de-rDE/strings.xml @@ -278,7 +278,7 @@ Einschränkungen: Später ansehen Ungültige Startseite, zurücksetzen auf Standard. Erzwungene automatische Audiospuren sind deaktivieren - "Erzwungene automatische Audiospuren sind deaktiviert." + Erzwungene automatische Audiospuren sind deaktiviert. Erzwungene automatische Audiospuren sind aktiviert. Deaktiviere erzwungene automatische Untertitel Erzwungene automatische Untertitel sind deaktiviert @@ -1060,7 +1060,6 @@ Einschränkung: Dislikes werden im Inkognito Modus nicht angezeigt." ReturnYouTubeDislike.com Dislikes Daten werden von der True RYD Worker API zur Verfügung gestellt. Tippe hier, um mehr zu erfahren. Dislikes nicht verfügbar (Client-API Limit erreicht) - Versteckt SponsorBlock SponsorBlock aktivieren diff --git a/src/main/resources/youtube/translations/el-rGR/strings.xml b/src/main/resources/youtube/translations/el-rGR/strings.xml index 120561df9d..9c9d658f7e 100644 --- a/src/main/resources/youtube/translations/el-rGR/strings.xml +++ b/src/main/resources/youtube/translations/el-rGR/strings.xml @@ -287,9 +287,9 @@ Playlists Παρακολούθηση αργότερα Μη έγκυρη αρχική σελίδα, επαναφέρθηκε. Απενεργοποίηση υποχρεωτικών κομματιών ήχου - "Τα υποχρεωτικά κομμάτια ήχου είναι απενεργοποιημένα. + Τα υποχρεωτικά κομμάτια ήχου είναι απενεργοποιημένα. -Περιορισμός: Αυτή η λειτουργία δεν ισχύει για τα Shorts." +Περιορισμός: Αυτή η λειτουργία δεν ισχύει για τα Shorts. Τα υποχρεωτικά κομμάτια ήχου είναι ενεργοποιημένα. Απενεργοποίηση αυτόματων υπότιτλων Οι υποχρεωτικοί αυτόματοι υπότιτλοι είναι απενεργοποιημένοι. @@ -1247,7 +1247,6 @@ Playlists Δεδομένα dislike μη διαθέσιμα (το όριο API έχει επιτευχθεί). Δεδομένα dislike μη διαθέσιμα (%s). Επαναφορτώστε το βίντεο για να ψηφίσετε χρησιμοποιώντας το Return YouTube Dislike - Κρυφό SponsorBlock Ενεργοποίηση του SponsorBlock diff --git a/src/main/resources/youtube/translations/es-rES/strings.xml b/src/main/resources/youtube/translations/es-rES/strings.xml index b070967493..bbcb15985d 100644 --- a/src/main/resources/youtube/translations/es-rES/strings.xml +++ b/src/main/resources/youtube/translations/es-rES/strings.xml @@ -289,7 +289,7 @@ Limitaciones: Ver más tarde Página de inicio no válida, restableciendo a la predeterminada. Desactivar pistas de audio automáticas forzadas - "Las pistas de audio automáticas forzadas están desactivadas." + Las pistas de audio automáticas forzadas están desactivadas. Las pistas de audio automáticas forzadas están activadas. Desactivar subtítulos automáticos forzados Los subtítulos automáticos forzados están desactivados. @@ -942,6 +942,9 @@ Estos caracteres varían dependiendo de tu idioma. Desactivar reanudación del reproductor de Shorts El reproductor de Shorts no se reanudará al iniciar la app El reproductor de Shorts se reanudará al iniciar la app + Ocultar botón flotante + "Los botones flotantes como \"Utilizar este sonido\" se ocultan en la pestaña Shorts del canal." + "Los botones flotantes como \"Utilizar este sonido\" se muestran en la pestaña Shorts del canal." Estantes de Shorts Ocultar estantes de Shorts @@ -984,6 +987,12 @@ Limitación: las cabeceras oficiales en los resultados de búsqueda estarán ocu Ocultar etiqueta de promoción pagada La etiqueta de promoción pagada está oculta. La etiqueta de promoción pagada está visible. + Ocultar botón de tendencias + El botón de tendencias está oculto. + El botón de tendencias está visible. + Ocultar botón de compras + El botón de compras está oculto. + El botón de compras está visible. Ocultar botón de comprar El botón de comprar está oculto. El botón de comprar está visible. @@ -993,12 +1002,21 @@ Limitación: las cabeceras oficiales en los resultados de búsqueda estarán ocu Ocultar productos etiquetados Los productos etiquetados están ocultos. Los productos etiquetados están visibles. + Ocultar botón de ubicación + El botón de ubicación está oculto. + El botón de ubicación está visible. Ocultar botón de guardar sonido El botón de guardar sonido está oculto. El botón de guardar sonido está visible. + Ocultar botón de sugerencias de búsqueda + El botón de sugerencias de búsqueda está oculto. + El botón de sugerencias de búsqueda está visible. Ocultar botón de utilizar este sonido El botón de utilizar este sonido está oculto. El botón de utilizar este sonido está visible. + Ocultar botón de utilizar plantilla + El botón de utilizar plantilla está oculto. + El botón de utilizar plantilla está visible. Ocultar paneles de información Los paneles de información están ocultos. Los paneles de información están visibles. @@ -1206,7 +1224,6 @@ Pulsa aquí para obtener más información. Los no me gusta no están disponibles (se alcanzó el límite de la API del cliente). Los no me gusta no están disponibles (%s). Recargar vídeo para votar utilizando Return YouTube Dislike - Oculto SponsorBlock Activar SponsorBlock diff --git a/src/main/resources/youtube/translations/fr-rFR/strings.xml b/src/main/resources/youtube/translations/fr-rFR/strings.xml index fa32fa89b8..65dbb69d39 100644 --- a/src/main/resources/youtube/translations/fr-rFR/strings.xml +++ b/src/main/resources/youtube/translations/fr-rFR/strings.xml @@ -236,10 +236,10 @@ Limitations : • Certains éléments de l'interface utilisateur peuvent ne pas être masqués. • La recherche par mot-clé peut n'afficher aucun résultat." Faire correspondre des mots complets - Le fait de placer un mot-clé ou une expression entre guillemets permet d\'éviter les correspondances partielles entre les titres de vidéos et les noms des chaînes.<br><br>Par exemple,<br><b>\"ia\"</b> masquera la vidéo : <b>Comment fonctionne l\'IA?</b><br>mais ne masquera pas : <b>Comment fonctionne l\'Intelligence Artificielle ?</b> + Le fait de placer un mot-clé ou une expression entre guillemets permet d\'éviter les correspondances partielles entre les titres de vidéos et les noms des chaînes.<br><br>Par exemple,<br><b>\"ia\"</b> masquera la vidéo : <b>Comment fonctionne les IA ?</b><br>mais ne masquera pas : <b>Quelles études pour devenir commercial ?</b> Impossible d\'utiliser ce mot-clé : %s. Ajouter des guillemets pour utiliser un mot-clé : %s. - Le mot-clé a des déclarations incompatibles : %s. + Le mot-clé a des déclarations en conflit : %s. Le mot-clé est trop court et nécessite des guillemets : %s. Ce mot-clé va masquer toutes les vidéos : %s. @@ -291,9 +291,9 @@ Limitations : Regarder plus tard Page de démarrage invalide, valeur réinitialisée par défaut. Désact. les pistes audio forcés - "Les pistes audio automatiques forcées sont désactivé. + Les pistes audio automatiques forcées sont désactivé. -Limitation : Ce paramètre ne s'applique pas pour les Shorts." +Limitation : Ce paramètre ne s\'applique pas pour les Shorts. Les pistes audio automatiques forcées sont activés. Désact. les sous-titres forcés Les sous-titres automatiques forcés sont désactivés. @@ -945,6 +945,9 @@ L'option \"Ouvrir la description automatiquement\" risque de ne pas fonctionner Désac. \"Reprendre la lecture\" sur les Shorts Les shorts ne reprennent pas au démarrage de l\'application. Les shorts reprennent au démarrage de l\'application. + Masquer les boutons flottants + "Les boutons flottants comme \"Utiliser ce son\" sont masqués dans l'onglet Shorts des chaînes." + "Les boutons flottants comme \"Utiliser ce son\" sont affichés dans l'onglet Shorts des chaînes." Étagères Shorts Masquer les étagères à Shorts @@ -987,6 +990,12 @@ Effet secondaire : Les fiches officielles dans les résultats de recherche sont Masquer bannière \"Communication commerciale\" La bannière \"Inclut une communication commerciale\" est masquée. La bannière \"Inclut une communication commerciale\" est affichée. + Masquer le bouton \"Tendance\" + Le bouton \"Tendance\" est masqué. + Le bouton \"Tendance\" est affiché. + Masquer le bouton \"Produit\" + Le bouton \"Produit\" est masqué. + Le bouton \"Produit\" est affiché. Masquer le bouton \"Magasin\" Le bouton \"Magasin\" est masqué. Le bouton \"Magasin\" est affiché. @@ -996,12 +1005,21 @@ Effet secondaire : Les fiches officielles dans les résultats de recherche sont Masquer les produits associés Les produits associés sont masqués. Les produits associés sont affichés. + Masquer le bouton \"Localisation\" + Le bouton \"Localisation\" est masqué. + Le bouton \"Localisation\" est affiché. Masquer le son du bouton \"Playlist\" Le son d\'enregistrement dans la Playlist est masqué. Le son d\'enregistrement dans la Playlist est affiché. + Masquer le bouton \"Suggestions de recherche\" + Le bouton \"Suggestions de recherche\" est masqué. + Le bouton \"Suggestions de recherche\" est affiché. Masquer le bouton \"Utiliser ce son\" Le bouton \"Utiliser ce son\" est masqué. Le bouton \"Utiliser ce son\" est affiché. + Masquer le bouton \"Utiliser le modèle\" + Le bouton \"Utiliser le modèle\" est masqué. + Le bouton \"Utiliser le modèle\" est affiché. Masquer les panneaux d\'information Les panneaux d\'information sont masqués. Les panneaux d\'information sont affichés. @@ -1210,7 +1228,6 @@ Limitation : les \"Je n'aime pas\" ne seront pas affichées si vous n'êtes pas Les \"Je n\'aime pas\" sont indisponibles (le client a atteint la limite de l\'API). Les \"Je n\'aime pas\" sont indisponible (%s). Recharger la vidéo pour voter avec Return YouTube Dislike - Masqué SponsorBlock Activer SponsorBlock @@ -1430,9 +1447,9 @@ Cliquez sur le bouton Continuer et désactivez les optimisations de la batterie. Supprime les paramètres de suivi (tracking) des URL lors du partage de liens. Protocole QUIC "Désactiver le protocole QUIC de CronetEngine." - Modifier la feuille de partage - La feuille de partage du système est utilisée. - La feuille de partage de l\'application est utilisée. + Modifier l\'onglet \"Partager avec\" + L\'onglet \"Partager avec\" du système est utilisée. + L\'onglet \"Partager avec\" de l\'application est utilisée. Activer le Codec OPUS Active le codec OPUS si la réponse du lecteur inclut le codec OPUS. diff --git a/src/main/resources/youtube/translations/hu-rHU/strings.xml b/src/main/resources/youtube/translations/hu-rHU/strings.xml index fb5cb4b9ef..b7b790842b 100644 --- a/src/main/resources/youtube/translations/hu-rHU/strings.xml +++ b/src/main/resources/youtube/translations/hu-rHU/strings.xml @@ -278,7 +278,7 @@ Lejátszási listák Megnézem később Érvénytelen kezdőlap, visszaállítás az eredetire. Kényszerített automatikus hangsávok letiltása - "A kényszerített automatikus hangsávok le vannak tiltva." + A kényszerített automatikus hangsávok le vannak tiltva. A kényszerített automatikus hangsávok engedélyezve vannak. Kényszerített automatikus feliratok letiltása A kényszerített automatikus feliratok le vannak tiltva. @@ -1185,7 +1185,6 @@ Egy másik kodek kerül alkalmazásra kb. 20 másodperc pufferezés után."A nem tetszik funkció nem elérhető A nem tetszik funkció nem elérhető (%s) Töltse újra a videót a Return YouTube Dislike-hoz - Rejtett Szponzor Blokk SponsorBlock bekapcsolása diff --git a/src/main/resources/youtube/translations/it-rIT/strings.xml b/src/main/resources/youtube/translations/it-rIT/strings.xml index a7ea798859..ae66547d97 100644 --- a/src/main/resources/youtube/translations/it-rIT/strings.xml +++ b/src/main/resources/youtube/translations/it-rIT/strings.xml @@ -235,10 +235,10 @@ Limitazioni: Abbina parole intere Circondare una parola chiave/frase con doppie virgolette impedirà partite parziali di titoli video e nomi di canale.<br><br>Ad esempio,<br><b>\"ai\"</b> nasconderà il video: <b>Come funziona l\'intelligenza artificiale?</b><br>ma non si nasconde: <b>Cosa significa un uso equo?</b> Parola chiave non valida. Non è possibile usare: \'%s\' come filtro - Aggiungi virgolette da usare parola chiave: %s. + Aggiungi le virgolette per usare parola chiave: %s. La parola chiave ha dichiarazioni in conflitto: %s. - Parola chiave troppo corta e richiede le virgolette: %s. - La parola chiave \'%1$s\' nasconderà tutti i video. + La parola chiave è troppo corta e richiede le virgolette: %s. + La parola chiave nasconderà tutti i video: %s. Video consigliati Nascondi video consigliati @@ -288,7 +288,7 @@ Limitazioni: Guarda più tardi Scheda iniziale non valida, ripristinata al valore predefinito. Disabilita le tracce audio automatiche forzate - "Le tracce audio automatiche forzate sono disattivate." + Le tracce audio automatiche forzate sono disattivate. Le tracce audio automatiche forzate sono abilitate. Disattiva i sottotitoli automatici forzati I sottotitoli automatici forzati sono disattivati. @@ -537,7 +537,7 @@ Nota: Nascondi le reazioni temporizzate Le reazioni temporizzate sono nascoste Le reazioni temporizzate sono visibili - Nascondi il video suggerito della schermata finale + Nascondi il video suggerito nella schermata finale "Il video suggerito della schermata finale è nascosto quando la riproduzione automatica è disattivata. La riproduzione automatica può essere modificata nelle impostazioni di YouTube: @@ -792,7 +792,7 @@ Problema noto: potrebbe rompere la funzione Picture-in-Picture Nascondi o mostra i pulsanti nel riproduttore video. Nascondi il pulsante Riproduzione Automatica Il pulsante Riproduzione Automatica è nascosto. - Il pulsante Riproduzione Automatica è mostrato. + Il pulsante Riproduzione Automatica è visibile. Nascondi il pulsante Sottotitoli Il pulsante Sottotitoli è nascosto. Il pulsante Sottotitoli è mostrato. @@ -946,6 +946,9 @@ Effetto collaterale: il tema Cairo viene applicato anche ai punti di notifica."< Disabilita la ripresa del riproduttore Shorts Il riproduttore Shorts non riprenderà all\'avvio dell\'app. Il riproduttore Shorts riprenderà all\'avvio dell\'app. + Nascondi pulsante fluttuante + "I pulsanti fluttuanti come 'Usa questo suono' sono nascosti nella scheda del Canale degli short." + "I pulsanti fluttuanti come 'Usa questo suono' sono mostrati nella scheda del Canale degli short." Scaffali Shorts Nascondi lo scaffale degli Shorts @@ -986,6 +989,12 @@ Effetto collaterale: il tema Cairo viene applicato anche ai punti di notifica."< Nascondi l\'etichetta della promozione a pagamento L\'etichetta della promozione a pagamento è nascosta. L\'etichetta della promozione a pagamento è mostrato. + Nascondi pulsante Tendenze + Il pulsante Tendenze è nascosto. + Il pulsante Tendenze è mostrato. + Nascondi pulsante Shopping + Il pulsante shopping è nascosto. + Il pulsante shopping è mostrato. Nascondi il pulsante Negozio Il pulsante Negozio è nascosto. Il pulsante negozio è mostrato. @@ -995,12 +1004,21 @@ Effetto collaterale: il tema Cairo viene applicato anche ai punti di notifica."< Nascondi prodotti taggati Prodotti taggati sono nascosti. Prodotti taggati sono mostrati. + Nascondi pulsante posizione + Il pulsante posizione è nascosto. + Il pulsante posizione è mostrato. Nascondi il pulsante Salva suono nella playlist Il pulsante Salva suono nella playlist è nascosto. Il pulsante Salva suono nella playlist è mostrato. + Nascondi il pulsante suggerimenti di ricerca + Il pulsante suggerimenti di ricerca è nascosto. + Il pulsante suggerimenti di ricerca è mostrato. Nascondi Usa questo pulsante sonoro Usa il pulsante sonoro è nascosto. Usa il pulsante sonoro è mostrato. + Nascondi il pulsante Usa modello + Il pulsante Usa modello è nascosto. + Il pulsante Usa modello è mostrato. Nascondi i pannelli informativi I pannelli informativi sono nascosti. I pannelli informativi sono mostrati. @@ -1206,7 +1224,6 @@ Limitazione: Non mi piace possono non apparire se l'utente non è registrato o i Non Mi Piace non disponibili (è stato raggiunto il limite del client API) Non Mi Piace non disponibili (%s) Ricarica il video per votare utilizzando Return YouTube Dislike - Nascosto SponsorBlock Abilita SponsorBlock diff --git a/src/main/resources/youtube/translations/ja-rJP/strings.xml b/src/main/resources/youtube/translations/ja-rJP/strings.xml index d96b864e70..871fe9768f 100644 --- a/src/main/resources/youtube/translations/ja-rJP/strings.xml +++ b/src/main/resources/youtube/translations/ja-rJP/strings.xml @@ -286,9 +286,9 @@ DeArrowの詳細については、ここをタップしてください。"後で見る 無効なスタートページです。デフォルトにリセットします。 音声トラックの強制を無効化 - "音声トラックが自動で選択されるのを無効化します。 + 音声トラックが自動で選択されるのを無効化します。 -注意: この設定はショートには適用されません。" +注意: この設定はショートには適用されません。 音声トラックが自動で選択されるのを無効化します。 注意: この設定はショートには適用されません。 @@ -490,6 +490,10 @@ DeArrowの詳細については、ここをタップしてください。"プレーヤーのポップアップパネルを無効化 再生リストとライブチャットのパネルが自動で開くのを無効化します。 再生リストとライブチャットのパネルが自動で開くのを無効化します。 + ミックスプレイリストの切り替えを無効化 + 自動再生がオフの場合、ミックスプレイリストの自動再生を無効化できます。\n\n自動再生は YouTube の設定で変更できます: 「設定 → 自動再生 → 次の動画を自動再生」 + "自動再生がオフの場合、ミックスプレイリストの自動再生を無効化できます。\n\n自動再生は YouTube の設定で変更できます: 「設定 → 自動再生 → 次の動画を自動再生」" + この設定をオンにした場合、自動再生がオフになっているときに音楽を再生すると、ミックスプレイリストの自動再生が無効になります。 再生速度のオーバーレイを無効化 "画面を長押しして2倍速で再生する機能を無効にします。 @@ -669,6 +673,9 @@ DeArrowの詳細については、ここをタップしてください。"「報告」メニューを非表示にします。 その他の設定 + 「アンビエントモード」を非表示 + 「アンビエントモード」メニューを非表示にします。 + 「アンビエントモード」メニューを非表示にします。 「ヘルプとフィードバック」を非表示 「ヘルプとフィードバック」メニューを非表示にします。 「ヘルプとフィードバック」メニューを非表示にします。 @@ -1164,6 +1171,11 @@ DeArrowの詳細については、ここをタップしてください。"古いスタイルの画質メニューを復元 古いスタイルの画質設定メニューを復活させます。 古いスタイルの画質設定メニューを復活させます。 + 音楽でデフォルトの再生速度を無効化 + "音楽でデフォルトの再生速度を無効化します。 + +注意: この設定は、「YouTube Musicで聴く」バナーが表示されている動画にのみ適用されます。" + 音楽でデフォルトの再生速度を無効化します。\n\n注意: この設定は、「YouTube Musicで聴く」バナーが表示されている動画にのみ適用されます。 ショートのデフォルト再生速度を有効化 デフォルトの再生速度をショートに適用します。 デフォルトの再生速度をショートに適用します。 @@ -1221,7 +1233,6 @@ DeArrowの詳細については、ここをタップしてください。"低評価数は一時的に利用できません。 (クライアント API が制限に達しました) 低評価数は一時的に利用できません。(%s) 投票するために Return YouTube Dislike を使用するため、動画を再読み込みします - 非表示 SponsorBlock SponsorBlock を有効化 diff --git a/src/main/resources/youtube/translations/ko-rKR/strings.xml b/src/main/resources/youtube/translations/ko-rKR/strings.xml index f5d0d73bf8..804481185c 100644 --- a/src/main/resources/youtube/translations/ko-rKR/strings.xml +++ b/src/main/resources/youtube/translations/ko-rKR/strings.xml @@ -39,6 +39,9 @@ 유료 광고 포함 라벨 숨기기 유료 광고 포함 라벨이 숨겨집니다. 유료 광고 포함 라벨이 표시됩니다. + 프로모션 알림 배너 숨기기 + 프로모션 알림 배너가 숨겨집니다. + 프로모션 알림 배너가 표시됩니다. 셀프 스폰서 카드 숨기기 셀프 스폰서 카드가 숨겨집니다. 셀프 스폰서 카드가 표시됩니다. @@ -238,7 +241,7 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." • 일부 화면 구성요소는 숨겨지지 않을 수 있습니다. • 필터링 키워드를 검색하면 검색 결과가 표시되지 않을 수 있습니다." 전체 단어 일치시키기 - 필터링할 키워드 및 구문을 큰따옴표로 묶으면 동영상 제목과 채널 이름이 부분적으로 일치하지 않도록 방지할 수 있습니다.<br><br>예를 들어,<br><b>\"ai\"</b>라는 키워드로 <b>AI 커리어 완벽 가이드</b>라는 제목의 동영상을 숨길 수 있지만, <b>생성형AI가 바꿔논 세계</b> 또는 <b>What does fair use mean?</b>라는 제목의 동영상은 숨길 수 없습니다. + 필터링할 키워드 및 구문을 큰따옴표로 묶으면 동영상 제목과 채널 이름이 부분적으로 일치하지 않도록 방지할 수 있습니다.<br><br>• 예를 들어, <b>\"ai\"</b>라는 키워드로 <b>AI 커리어 완벽 가이드</b>라는 동영상을 숨길 수 있지만, <b>생성형AI가 바꿔놓은 세계</b> 또는 <b>What does fair use mean?</b>라는 동영상은 숨길 수 없습니다.<br>• 그리고 구두점을 단어의 경계로 간주하기 때문에 <b>인공지능(AI)의 원리</b>라는 동영상은 숨길 수 있습니다. 큰따옴표는 다른 단어 내부의 하위 문자열만 무시합니다 (예: <b>fair</b>는 숨길 수 없지만, <b>f(ai)r</b>는 숨김). 키워드를 사용할 수 없습니다: %s 따옴표를 추가하여 키워드를 사용합니다: %s 키워드에 충돌하는 선언이 있습니다: %s @@ -292,9 +295,7 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 나중에 볼 동영상 잘못된 앱 시작 페이지이므로 기본값으로 초기화합니다. 자동 오디오 트랙 비활성화하기 - "오디오 트랙 사용이 강제된 동영상에서 오디오 트랙을 비활성화합니다. - -알려진 문제점: 이 설정은 Shorts에는 적용되지 않습니다." + 오디오 트랙 사용이 강제된 동영상에서 오디오 트랙을 비활성화합니다. 오디오 트랙 사용이 강제된 동영상에서 오디오 트랙을 활성화합니다. 자동 자막 비활성화하기 자막 사용이 강제된 동영상에서 자막을 비활성화합니다. @@ -315,19 +316,17 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 스낵바(팝업 메시지바)가 숨겨집니다. 스낵바(팝업 메시지바)가 표시됩니다. 시청 경고 다이얼로그 제거하기 - "시청 경고 다이얼로그를 제거합니다. - -이 설정은 다이얼로그를 자동으로 허용하기만 하며 연령 제한(성인인증 절차)을 우회할 수 없습니다." + "시청 경고 다이얼로그를 제거합니다.\n\n• 이 설정은 다이얼로그를 자동으로 허용하기만 하며 연령 제한(성인인증 절차)을 우회할 수 없습니다.\n• 성인인증이 필요한 동영상에서 인증을 하려 할 때, 휴대폰 번호가 필요하다고 알려주는 소형 팝업창(다이얼로그) 없이 바로 휴대폰 번호 인증 페이지가 표시됩니다." 휴대폰 레이아웃 활성화하기 - dpi를 변경하여 일부 레이아웃을 휴대폰 레이아웃으로 활성화합니다.\n\n• \'태블릿 레이아웃으로 활성화하면 잠겨지는 RVX 설정\'이 태블릿 또는 폴더블 폰에서도 잠겨져 있으므로, 이 설정을 사용하고 싶으면 휴대폰 레이아웃으로 활성화해야 합니다. + dpi를 변경하여 일부 레이아웃을 휴대폰 레이아웃으로 활성화합니다.\n\n• \'태블릿 레이아웃으로 활성화하면 잠겨지는 RVX 설정\'이 태블릿 또는 폴더블 폰에서는 기본적으로 잠겨져 있으므로, 이 설정을 사용하고 싶으면 휴대폰 레이아웃으로 활성화해야 합니다. 태블릿 레이아웃 활성화하기 dpi를 변경하여 일부 레이아웃을 태블릿 레이아웃으로 활성화합니다.\n\n이 설정을 활성화하면 다음 RVX 설정이 잠겨질 수 있습니다:\n• 최신 동영상 버튼 숨기기\n• 믹스 재생목록 숨기기\n• 커뮤니티 게시물 설정\n• 전체 화면의 일부 설정 (빠른 작업) 동영상 오프라인 저장 버튼 재정의하기 동영상 오프라인 저장 버튼으로 외부 다운로더를 실행할 수 있습니다. 동영상 오프라인 저장 버튼으로 기본 다운로더를 실행할 수 있습니다. (YouTube Premium 기능) 재생목록 오프라인 저장 버튼 재정의하기 - 재생목록 오프라인 저장 버튼으로 외부 다운로더를 실행할 수 있습니다. - 재생목록 오프라인 저장 버튼으로 기본 다운로더를 실행할 수 있습니다. (YouTube Premium 기능) + 기본 재생목록 오프라인 저장 버튼이 항상 표시되어 있으며, 공개 재생목록에서는 그 버튼으로 외부 다운로더를 실행할 수 있습니다. + 기본 재생목록 오프라인 저장 버튼이 표시되어 있으면, 그 버튼으로 기본 다운로더를 실행할 수 있습니다. (YouTube Premium 기능) 재생목록 외부 다운로더 앱 패키지명 YTDLnis와 같은 설치된 외부 다운로더 앱 패키지명을 설정하세요. 앱 버전 변경하기 @@ -492,6 +491,13 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 플레이어 팝업 패널 비활성화하기 자동 플레이어 팝업 패널을 비활성화합니다.\n• 재생목록, 실시간 채팅, 제품 패널 ... 자동 플레이어 팝업 패널을 활성화합니다.\n• 재생목록, 실시간 채팅, 제품 패널 ... + 믹스 재생목록 전환 비활성화하기 + 믹스 재생목록 자동전환을 비활성화합니다. + "자동재생이 켜져 있으면 믹스 재생목록 자동전환을 활성화합니다. + +자동재생은 YouTube 설정에서 변경할 수 있습니다: +설정 → 자동재생 → 다음 동영상 자동재생" + 이 설정을 활성화하면 자동재생이 켜져 있는 동안에 음악을 재생하면 YouTube 믹스 재생목록으로 자동전환되지 않습니다. 동영상 재생 속도 오버레이 비활성화하기 "화면을 길게 눌러서 '2배속 >>'을 비활성화합니다. @@ -675,6 +681,9 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 신고 메뉴가 표시됩니다. 추가 설정 + 앰비언트 모드 메뉴 숨기기 + 앰비언트 모드 메뉴가 숨겨집니다. + 앰비언트 모드 메뉴가 표시됩니다. 고객센터 메뉴 숨기기 고객센터 메뉴가 숨겨집니다. 고객센터 메뉴가 표시됩니다. @@ -1001,11 +1010,11 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 트렌드 버튼이 숨겨집니다. 트렌드 버튼이 숨겨집니다. 쇼핑 버튼 숨기기 - 쇼핑 버튼이 숨겨집니다. - 쇼핑 버튼이 표시됩니다. + 일시 정지 오버레이에서 쇼핑 버튼이 숨겨집니다. + 일시 정지 오버레이에서 쇼핑 버튼이 표시됩니다. 쇼핑 버튼 숨기기 - 쇼핑 버튼이 숨겨집니다.\n\n일시 정지 오버레이에서도 쇼핑 버튼이 숨겨집니다. - 쇼핑 버튼이 표시됩니다. + 플레이어 하단 정보에서 쇼핑 버튼이 숨겨집니다. + 플레이어 하단 정보에서 쇼핑 버튼이 표시됩니다. Super Thanks 구매 버튼 숨기기 Super Thanks 구매 버튼이 숨겨집니다. Super Thanks 구매 버튼이 표시됩니다. @@ -1177,6 +1186,11 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 이전 동영상 화질 설정 메뉴 활성화하기 이전 동영상 화질 설정 메뉴를 활성화합니다. 이전 동영상 화질 설정을 비활성화합니다. + 음악 재생 속도 비활성화하기 + "음악에 기본 동영상 재생 속도를 비활성화합니다. + +알려진 문제점: 이 설정은 'YouTube Music에서 감상하기' 배너가 포함되지 않은 동영상에는 적용되지 않을 수 있습니다." + 음악에 기본 동영상 재생 속도를 활성화합니다. Shorts 기본 동영상 재생 속도 활성화하기 Shorts에 기본 동영상 재생 속도를 적용합니다. Shorts에 기본 동영상 재생 속도를 적용하지 않습니다. @@ -1234,7 +1248,6 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 싫어요 개수를 표시할 수 없습니다 (클라이언트 API 제한 도달). 싫어요 개수를 표시할 수 없습니다 (%s). Return YouTube Dislike를 사용하여 투표하려면 동영상을 다시 로드하세요. - 숨겨짐 SponsorBlock SponsorBlock 활성화하기 @@ -1503,8 +1516,8 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." • 오디오 트랙 메뉴가 표시되지 않습니다. • 동영상이 재생되지 않을 수 있습니다. iOS AVC (H.264) 강제로 활성화하기 - iOS 동영상 코덱을 AVC (H.264)로 활성화합니다.\n\n• 일부 VP9 코덱 동영상을 재생하면 누락되었던 화질 값들이 표시될 수 있습니다.\n• 최대 화질 값이 1080p이므로 초고화질 동영상을 재생할 수 없습니다.\n• HDR 동영상을 재생할 수 없습니다. - iOS 동영상 코덱을 AVC (H.264), VP9 또는 AV1으로 활성화합니다.\n\n• VP9 코덱 응답을 받는 경우, 일부 동영상을 재생하면 일부 화질 값들이 누락될 수 있습니다. + iOS 동영상 코덱을 AVC (H.264)로 활성화합니다.\n\n• \'일부 VP9 코덱 동영상에서 누락되었던 화질 값들\'이 표시될 수 있습니다.\n• 최대 화질 값이 1080p이므로 초고화질 동영상을 재생할 수 없습니다.\n• HDR 동영상을 재생할 수 없습니다. + iOS 동영상 코덱을 AVC (H.264), VP9 또는 AV1으로 활성화합니다.\n\n• 예전에 업로드된 동영상을 재생했는데 VP9 코덱 응답을 받는 경우, 일부 화질 값들이 누락되어 있거나 화질 메뉴를 선택할 수 없을 수 있습니다. "이 설정을 활성화하면 배터리 수명이 향상되고 재생 끊김 현상이 해결될 수 있습니다. AVC (H.264)의 최대 화질 값은 1080p이며 동영상을 재생하면 VP9 또는 AV1보다 더 많은 인터넷 데이터가 사용됩니다." diff --git a/src/main/resources/youtube/translations/pl-rPL/strings.xml b/src/main/resources/youtube/translations/pl-rPL/strings.xml index 1dfb53f478..f7ebf4b024 100644 --- a/src/main/resources/youtube/translations/pl-rPL/strings.xml +++ b/src/main/resources/youtube/translations/pl-rPL/strings.xml @@ -39,6 +39,9 @@ Ograniczenie: obrazy postów społeczności w trybie pełnoekranowym mogą być Etykiety oznaczające płatne promocje Ukryte Widoczne + Banery z alertami promocyjnymi + Ukryte + Widoczne Karty z autopromocją Ukryte Widoczne @@ -196,7 +199,7 @@ Sklep" Ukryte Widoczne - Menu ustawień filmu + Menu ustawień ze strony głównej Ukryj lub pokazuj menu na stronie głównej Filtr menu ze strony głównej Włączony @@ -289,9 +292,9 @@ Ograniczenia: Do obejrzenia Nieprawidłowa strona startowa, zresetowano do domyślnej. Wymuszone ścieżki dźwiękowe - "Wyłączone + Wyłączone -Ograniczenie: ustawienie nie działa na Shortsy." +Ograniczenie: ustawienie nie działa na Shortsy. Włączone Wymuszone napisy Wyłączone @@ -492,6 +495,8 @@ Stuknij i przytrzymaj, by otworzyć ustawienia RVX." Wyskakujące panele w odtwarzaczu Widoczne Ukryte + Automatyczne zmienianie playlist mix + Wyłączone Wyłącz nakładkę prędkości odtwarzania "Wyłącz 'Odtwarzam 2x szybciej' podczas przytrzymywania. @@ -674,6 +679,9 @@ Autoodtwarzanie można zmienić w ustawieniach YouTube: Widoczne Dodatkowe ustawienia + Menu od oświetlenia kinowego + Ukryte + Widoczne Menu od pomocy i opinii Ukryte Widoczne @@ -861,7 +869,7 @@ Stuknij i przytrzymaj, by cofnąć generowanie playlisty." Dodatkowa informacja obok czasu Widoczna Niewidoczna - Informacja + Typ informacji Jakość filmu Prędkość odtwarzania Działanie informacji obok czasu @@ -1226,7 +1234,6 @@ Ograniczenie: Liczba łapek w dół może nie być widoczna, gdy użytkownik nie Liczba łapek w dół nie jest dostępna (limit API użytkownika został osiągnięty). Liczba łapek w dół nie jest dostępna (%s). Odśwież film, aby zagłosować używając Return YouTube Dislike - Ukryte SponsorBlock SponsorBlock @@ -1518,9 +1525,9 @@ Kodek AVC (H.264) obsługuje maksymalnie rozdzielczość 1080p, a odtwarzanie fi "• Stosuje się do ustawień historii oglądania konta Google • Historia oglądania może nie działać przy używaniu DNS lub VPN" - Lista łatek + Informacje o łatkach - Lista łatek + Informacje o łatkach Informacje na temat zastosowanych łatek. Użyte narzędzie diff --git a/src/main/resources/youtube/translations/pt-rBR/strings.xml b/src/main/resources/youtube/translations/pt-rBR/strings.xml index 2df3a4f2eb..86248b7d7c 100644 --- a/src/main/resources/youtube/translations/pt-rBR/strings.xml +++ b/src/main/resources/youtube/translations/pt-rBR/strings.xml @@ -232,7 +232,12 @@ Limitações: • Alguns Shorts podem não ser ocultos. • Alguns componentes da UI podem não ser ocultos. • A pesquisa por uma palavra-chave pode não apresentar resultados." + Corresponder palavras inteiras + Colocar uma palavra-chave/frase entre aspas duplas evitará correspondências parciais de títulos de vídeo e nomes de canais.<br><br>Por exemplo,<br><b>\"ia\"</b> ocultará o vídeo: <b>Como funciona a IA?</b><br>mas não ocultará: <b>O que significa uso justo?</b> Palavra-chave inválida. Não pode usar: \'%s\' como um filtro + Adicione aspas para usar a palavra-chave: %s. + A palavra-chave tem declarações conflitantes: %s. + A palavra-chave é muito curta e requer aspas: %s. Palavra-chave \'%1$s\' irá ocultar todos os vídeos. Vídeo recomendado @@ -284,7 +289,7 @@ Limitações: Assistir mais tarde Página inicial inválida, redefinindo para o padrão. Desativar faixas de áudio automáticas forçadas - "As faixas de áudio automáticas forçadas estão desativadas." + As faixas de áudio automáticas forçadas estão desativadas. As faixas de áudio automáticas forçadas estão ativadas. Desativar legendas automáticas forçadas As legendas automáticas forçadas estão desativadas. @@ -682,6 +687,9 @@ A reprodução automática pode ser alterada nas configurações do YouTube: Ocultar menu de controles premium O menu de controles premium está oculto. O menu de controles premium será exibido. + Ocultar menu de Timer de suspensão + O menu Timer de suspensão está oculto. + O menu Timer de suspensão será exibido. Ocultar menu volume estável O menu volume estável será exibido. O menu volume estável está oculto. @@ -935,6 +943,9 @@ Estes caracteres variam dependendo do seu idioma. Desativar continuar a reproduzir Shorts O shorts não irá continuar reproduzindo ao iniciar o aplicativo O shorts irá continuar reproduzindo ao iniciar o aplicativo + Ocultar botão flutuante + "Os botões flutuantes como \"Usar este som\" estão ocultos na aba do canal do Shorts." + "Os botões flutuantes como \"Usar este som\" serão exibidos na aba do canal do Shorts." Painel de shorts Ocultar painel de Shorts @@ -977,6 +988,12 @@ Limitação: Os cabeçalhos oficiais nos resultados da pesquisa serão ocultados Ocultar rótulo de promoção paga O rótulo de promoção pago está oculto. O rótulo de promoção pago será exibido. + Ocultar botão Tendências + O botão de tendências está oculto. + O botão de tendências será exibido. + Ocultar botão de Compras + O botão de compras está oculto. + O botão de compras será exibido. Ocultar botão comprar O botão comprar está oculto. O botão comprar será exibido. @@ -986,9 +1003,21 @@ Limitação: Os cabeçalhos oficiais nos resultados da pesquisa serão ocultados Ocultar produtos marcados Os produtos marcados estão ocultos. Os produtos marcados serão exibidos. + Ocultar botão localização + O botão localização está oculto. + O botão de localização será exibido. Ocultar botão salvar música na lista de reprodução Salvar música na lista de reprodução está oculta. Salvar música na lista de reprodução será exibida. + Ocultar botão de sugestões de pesquisa + O botão de sugestões de pesquisa está oculto. + O botão de sugestões de pesquisa será exibido. + Ocultar botão Usar este som + O botão Usar este som está oculto. + O botão Usar este som será exibido. + Ocultar botão Usar template + O botão Usar template está oculto. + O botão Usar template será exibido. Ocultar painéis de informações Os painéis de informação estão ocultos. Os painéis de informação serão exibidos. @@ -1194,7 +1223,6 @@ Limitação: Dislikes pode não aparecer no modo incógnito." Dislikes indisponível (limite da API do cliente atingido). Deslikes indisponível (%s). Recarregue o vídeo para votar usando o Return YouTube Dislike - Oculto SponsorBlock Ativar SponsorBlock @@ -1442,6 +1470,35 @@ Toque no botão continuar e desative as otimizações da bateria." Redefinir Configurações copiadas para a área de transferência. + Dados de streaming falsos + Falsifique os dados de streaming para evitar problemas de reprodução. + Dados de streaming falsos + Os dados de streaming são falsificados. + "Os dados de streaming não são falsificados. A reprodução de vídeo pode não funcionar." + Desativar esta configuração pode causar problemas de reprodução de vídeo. + Cliente padrão + iOS + Android + Reprodutor Incorporado Android + Suite de teste Android + Android TV + Android VR + TV HTML5 + Web + Efeitos colaterais da falsificação + • Filmes ou vídeos pagos podem não reproduzir. + • O menu de faixa de áudio está faltando. + • O menu de faixa de áudio está faltando. + • O vídeo pode não reproduzir. + Forçar iOS AVC (H.264) + O codec de vídeo do iOS é AVC (H.264). + O codec de vídeo do iOS é AVC (H.264), VP9 ou AV1. + "Ativar isto pode melhorar a duração da bateria e corrigir travamentos na reprodução. + +AVC (H. 64) tem uma resolução máxima de 1080p, e a reprodução de vídeo usará mais dados de internet do que VP9 ou AV1." + Exibir em Estatísticas para nerds + O cliente usado para buscar dados de streaming é mostrado em Estatísticas para nerds. + O cliente usado para buscar dados de streaming está oculto em Estatísticas para nerds. Histórico de exibição Altere as configurações relacionadas ao histórico de exibição. @@ -1453,6 +1510,9 @@ Toque no botão continuar e desative as otimizações da bateria." Bloquear histórico de exibição Sobre o histórico de exibição • O histórico de exibição não funciona. + • Segue as configurações do histórico de exibição da conta do Google. + "• Segue as configurações do histórico de exibição da conta do Google. +• O histórico de exibição pode não funcionar devido ao DNS ou à VPN." Informações do patch diff --git a/src/main/resources/youtube/translations/ru-rRU/strings.xml b/src/main/resources/youtube/translations/ru-rRU/strings.xml index 04145aedf3..16ec32dd7f 100644 --- a/src/main/resources/youtube/translations/ru-rRU/strings.xml +++ b/src/main/resources/youtube/translations/ru-rRU/strings.xml @@ -5,7 +5,7 @@ Служба специальных возможностей включена. Управление изменено. ReVanced Extended - Поиск настроек + Поиск %s Экспериментальные опции Подтверждаете действие? Перезапустить для правильной загрузки интерфейса? @@ -236,7 +236,13 @@ Shorts • Некоторые Shorts могут быть не скрыты. • Некоторые компоненты интерфейса могут быть не скрыты. • Поиск по ключевому слову может не дать результатов." + Ключевые слова обрабатываются целиком + Ключевые слова/фразы с двойными кавычками, принудительно, используют набор символов между кавычками <br><br>, как слово. +Например:<br><b>\"ai\"</b> скроет видео: <b>How does AI work?</b><br>но не будет скрывать: <b>What does fair use mean?</b> Недопустимо. \'%s\' не подходит в качестве фильтра. + Добавьте кавычки для использования ключевого слова: %s. + У ключевого слова %s есть конфликт. + Ключевое слово короткое и необходимо взятие в кавычки: %s. Ключевое слово \'%1$s\' не точное и скроет все видео Рекомендованное видео @@ -297,7 +303,7 @@ Shorts Смотреть позже Недопустимая начальная страница, сброс по умолчанию. Принудительные автоматические звуковые дорожки - "Принудительные автоматические звуковые дорожки отключены." + Принудительные автоматические звуковые дорожки отключены. Принудительные автоматические звуковые дорожки включены. Принудительные автоматические субтитры Принудительные автоматические субтитры отключены. @@ -951,6 +957,9 @@ Shorts Возобновление Shorts при запуске приложения Возобновление Shorts отключено. Возобновление Shorts включено. + Всплывающая кнопка + "Всплывающие кнопки, такие как «Использовать этот звук», во вкладке Shorts скрыты." + "Всплывающие кнопки, такие как «Использовать этот звук», во вкладке Shorts отображены." Настройки скрытия Shorts Секции Shorts @@ -994,6 +1003,12 @@ Shorts Метка \"Содержит прямую рекламу\" Метка \"Содержит прямую рекламу\" скрыта. Метка \"Содержит прямую рекламу\" отображена. + Кнопка \"В тренде\" + Кнопка \"В тренде\" скрыта. + Кнопка \"В тренде\" отображена. + Кнопка \"Покупки\" + Кнопка \"Покупки\" скрыта. + Кнопка \"Покупки\" отображена. Кнопка \"Магазин\" Кнопка \"Магазин\" скрыта. Кнопка \"Магазин\" отображена. @@ -1003,9 +1018,21 @@ Shorts Товары с тегом Товары с тегом скрыты. Товары с тегом отображены. + Кнопка \"Местоположение\" + Кнопка \"Местоположение\" скрыта. + Кнопка \"Местоположение\" отображена. Кнопка \"Сохранить звук в плейлист\" Кнопка \"Сохранить звук в плейлист\" скрыта. Кнопка \"Сохранить звук в плейлист\" отображена. + Кнопка \"Подсказки поиска\" + Кнопка \"Подсказки поиска\" скрыта. + Кнопка \"Подсказки поиска\" отображена. + Кнопка \"Использовать этот звук\" + Кнопка \"Использовать этот звук\" скрыта. + Кнопка \"Использовать этот звук\" отображена. + Кнопка \"Использовать шаблон\" + Кнопка \"Использовать шаблон\" скрыта. + Кнопка \"Использовать шаблон\" отображена. Информационные панели Информационные панели скрыты. Информационные панели отображены. @@ -1219,7 +1246,6 @@ Shorts Return YouTube Dislike недоступен (достигнут лимит клиента API). Return YouTube Dislike недоступен (%s). Обновите видео для использования Return YouTube Dislike - Скрыто SponsorBlock Включить SponsorBlock @@ -1266,7 +1292,7 @@ Shorts Пропустить спонсорскую рекламу Пропустить саморекламу Пропустить напоминание о взаимодействии - Пропустить основные моменты + Ключевой момент Пропустить вступление Пропустить перерыв Пропустить перерыв @@ -1467,6 +1493,36 @@ Shorts Сброс Настройки скопированы в буфер обмена. + Подмена потоковых данных + Подменяет потоковые данные при проблемах с воспроизведением видео. + Подмена потоковых данных + Подмена потоковых данных включена. + "Подмена потоковых данных отключена. +Воспроизведение видео может не работать." + Отключение этой настройки вызовет проблемы с воспроизведением видео. + Клиент по умолчанию + iOS + Android + Встроенный Android плеер + Android Тестовый набор + Android TV + Android VR + TV HTML5 + Веб + Эффекты от подмены + • Фильмы или платные видео могут не проигрываться. + • Меню \"Звуковая дорожка\" не доступно. + • Меню \"Звуковая дорожка\" VR не доступно. + • Видео может не воспроизводиться. + Принудительно подмена как iOS, AVC (H.264) + Видео кодек подмены как iOS - AVC (H.264). + Видео кодек подмены как iOS - VP9 или AV1. + "Включение - может улучшить время работы батареи и исправить задержки воспроизведения. + +AVC (H.264) имеет максимальное разрешение 1080p, и будет использовать больше интернет данных, чем VP9 или AV1." + Показывать в Статистике для сисадминов + Клиент, используемый для получения данных потока, отображается в Статистике для сисадминов. + Клиент, используемый для получения данных потока, скрыт в Статистике для сисадминов. История просмотра Изменить настройки истории просмотра. diff --git a/src/main/resources/youtube/translations/tr-rTR/strings.xml b/src/main/resources/youtube/translations/tr-rTR/strings.xml index 34f30e186d..17afa69f86 100644 --- a/src/main/resources/youtube/translations/tr-rTR/strings.xml +++ b/src/main/resources/youtube/translations/tr-rTR/strings.xml @@ -276,7 +276,7 @@ Kısıtlamalar: Daha sonra izlenecekler Başlangıç sayfası geçersiz, varsayılana dönülüyor. Ses parçalarının kendiliğinden açılmasını kapat - "Ses parçalarının kendiliğinden açılması kapalı." + Ses parçalarının kendiliğinden açılması kapalı. Ses parçalarının kendiliğinden açılması etkin. Altyazıların kendiliğinden açılmasını kapat Altyazıların kendiliğinden açılması kapalı @@ -1166,7 +1166,6 @@ Kısıtlama: Gizli modda beğenmeme sayıları görünmeyebilir." Beğenmeme sayısı mevcut değil (istemci API sınırına ulaşıldı). Beğenmemeler mevcut değil (%s). ReturnYouTubeDislike\'ı kullanarak oy vermek için videoyu yeniden yükleyin - Gizlendi SponsorBlock SponsorBlock\'u etkinleştir diff --git a/src/main/resources/youtube/translations/uk-rUA/strings.xml b/src/main/resources/youtube/translations/uk-rUA/strings.xml index 4c8ff3036b..6fcb553535 100644 --- a/src/main/resources/youtube/translations/uk-rUA/strings.xml +++ b/src/main/resources/youtube/translations/uk-rUA/strings.xml @@ -39,6 +39,9 @@ Приховати мітку Містить пряму рекламу Мітку Містить пряму рекламу приховано. Мітку Містить пряму рекламу показується. + Приховати рекламні сповіщення + Рекламні сповіщення приховано. + Рекламні сповіщення показується. Приховати картки само спонсорства Картки само спонсорства приховано. Картки само спонсорства показується. @@ -289,9 +292,7 @@ Переглянути пізніше Недійсна початкова сторінка, скидається на стандартну. Вимкнути примусові автоматичні звукові доріжки - "Примусові автоматичні звукові доріжки вимкнено. - -Застереження: Це налаштування не застосовується до Shorts." + Примусові автоматичні звукові доріжки вимкнено. Примусові автоматичні звукові доріжки увімкнено. Вимкнути примусові авто субтитри Примусові авто субтитри вимкнено. @@ -322,8 +323,8 @@ Кнопка завантаження відео відкриває зовнішній завантажувач. Кнопка завантаження відео відкриває вбудований завантажувач. Перевизначити кнопку завантаження списку відтворення - Кнопка завантаження списку відтворення відкриває зовнішній завантажувач. - Кнопка завантаження списку відтворення відкриває вбудований завантажувач. + Кнопка вбудованого завантаження списку відтворення завжди показується, і в публічних списках відтворення відкриває зовнішній завантажувач. + Кнопка вбудованого завантаження списку відтворення відкриває вбудований завантажувач, якщо показується. Ім\'я пакета завантажувача списку відтворення Ім\'я пакета встановленого зовнішнього завантажувача, наприклад YTDLnis. Підробити версію програми @@ -492,6 +493,13 @@ Вимкнути висувні панелі плеєра Автовисувні панелі плеєра вимкнено. Автовисувні панелі плеєра увімкнено. + Вимкнути перемикання списків відтворення Мікс + Автоперемикання списків відтворення Мікс вимкнено. + "Автоперемикання списків створення Мікс увімкнено коли автовідтворення увімкнене. + +Автовідтворення можна змінити у налаштуваннях YouTube: +Налаштування → Автоматичне відтворення → Автовідтворення наступного відео" + Вмикання цієї функції вимкне автоматичне перемикання на YouTube Mix коли музика відтворюється якщо автовідтворення увімкнене. Вимкнути накладання швидкості "Вимикається 'Відтворення зі швидкістю 2x' під час утримання @@ -674,6 +682,9 @@ Меню Поскаржитися показується. Додаткові налаштування + Приховати меню Кінематографічне освітлення + Меню Кінематографічне освітлення приховано. + Меню Кінематографічне освітлення показується. Приховати меню допомоги та підтримки Меню допомоги та підтримки приховано. Меню допомоги та підтримки показується. @@ -1169,6 +1180,11 @@ Відновити старе меню якості відео Старе меню якості відео показується. Старе меню якості відео не показується. + Вимкнути швидкість відтворення для музики + "Типову швидкість відтворення вимкнено для музики. + +Застереження: Це налаштування застосовується лише до відео, які містять напис 'Слухати через YouTube Music'." + Типову швидкість відтворення увімкнено для музики. Увімкнути типову швидкість відтворення Shorts Типову швидкість відтворення застосовується для Shorts. Типову швидкість відтворення не застосовується для Shorts. @@ -1226,7 +1242,6 @@ Дизлайки недоступні (досягнутий ліміт клієнта API) Дизлайки недоступні (%s). Перезавантажте відео, щоб голосувати використовуючи Повернення дизлайків YouTube - Приховано Спонсорблок Увімкнути Спонсорблок diff --git a/src/main/resources/youtube/translations/vi-rVN/strings.xml b/src/main/resources/youtube/translations/vi-rVN/strings.xml index 16a121edeb..fb006c4c1a 100644 --- a/src/main/resources/youtube/translations/vi-rVN/strings.xml +++ b/src/main/resources/youtube/translations/vi-rVN/strings.xml @@ -291,9 +291,9 @@ Bộ lọc có phân biệt chữ hoa chữ thường, vì vậy bạn cần nh Xem sau Trang khởi động không hợp lệ. Đã đặt lại về mặc định. Tắt buộc tự động phát bản âm thanh - "Buộc tự động phát bản âm thanh đã bị tắt. + Buộc tự động phát bản âm thanh đã bị tắt. -Hạn chế: Tính năng này hiện chưa áp dụng cho trình Shorts." +Hạn chế: Tính năng này hiện chưa áp dụng cho trình Shorts. Buộc tự động phát bản âm thanh đã được bật. Tắt tự động hiển thị phụ đề Tự động hiển thị phụ đề khi phát video có phụ đề đã tắt. @@ -1227,7 +1227,6 @@ Hạn chế: Lượt không thích có thể không hiển thị nếu người Số lượt không thích không khả dụng (đã đạt đến giới hạn API máy khách). Số lượt không thích không khả dụng (%s). Tải lại video để bình chọn sử dụng Return YouTube Dislike - Ẩn SponsorBlock Bật SponsorBlock diff --git a/src/main/resources/youtube/translations/zh-rCN/strings.xml b/src/main/resources/youtube/translations/zh-rCN/strings.xml index 3c2743e8e1..53cf38c69d 100644 --- a/src/main/resources/youtube/translations/zh-rCN/strings.xml +++ b/src/main/resources/youtube/translations/zh-rCN/strings.xml @@ -232,7 +232,12 @@ • 某些Shorts可能不会隐藏 • 某些UI组件可能不会隐藏 • 搜索关键词可能不会显示任何结果" + 全词匹配 + 环绕一个关键字/短语带双引号会防止视频标题和频道名称<br><br>例如,<br><b>\"ai\"</b> 将隐藏视频: <b>How does AI work?</b><br>但不会隐藏: <b>What does fair use mean?</b> 关键词无效无法使用:\'%s\' 作为过滤器 + 添加引号以使用关键词: %s + 关键词有冲突声明: %s + 关键词太短,需要引号: %s 关键词 \'%1$s\' 太宽,这将隐藏所有视频 推荐视频 @@ -284,7 +289,7 @@ 稍后观看 起始页无效,正在重置为默认值 禁用强制自动音轨 - "强制自动音轨已禁用" + 强制自动音轨已禁用 强制自动音轨已启用 禁用强制显示字幕 强制显示字幕已禁用 @@ -680,6 +685,9 @@ 隐藏高级控件菜单 高级控件菜单已隐藏 高级控件菜单已显示 + 隐藏睡眠计时器菜单 + 睡眠计时器已隐藏 + 睡眠计时器已显示 隐藏稳定音量菜单 稳定音量菜单已显示 稳定音量菜单已隐藏 @@ -931,6 +939,9 @@ 禁用恢复短片播放器 应用启动时不会恢复短片播放器 应用启动时恢复短片播放器 + 隐蔽悬浮按钮 + "‘使用此声音’等浮动按钮已在短视频频道标签中隐藏" + "‘使用此声音’等浮动按钮已在短视频频道标签中显示" Shorts 栏 隐藏 Shorts 栏 @@ -973,6 +984,12 @@ 隐藏付费推广横幅 付费推广横幅已隐藏 付费推广横幅标签已显示 + 隐藏趋势按钮 + 趋势按钮已隐藏 + 趋势按钮已显示 + 隐藏商店按钮 + 商店按钮已隐藏 + 商店按钮已显示 隐藏商店按钮 商店按钮已隐藏 商店按钮已显示 @@ -982,9 +999,21 @@ 隐藏标记的产品 标记的产品已隐藏 标记的产品已显示 + 隐藏位置按钮 + 位置按钮已隐藏 + 位置按钮已显示 隐藏保存声音到播放列表按钮 保存声音到播放列表按钮已隐藏 保存声音到播放列表按钮已显示 + 隐藏搜索建议按钮 + 搜索建议按钮已隐藏 + 搜索建议按钮已显示 + 隐藏使用此声音按钮 + 使用此声音按钮已隐藏 + 使用此声音按钮已显示 + 隐藏使用模板按钮 + 使用模板按钮已隐藏 + 使用模板按钮已显示 隐藏信息面板 信息面板已隐藏 信息面板已显示 @@ -1188,7 +1217,6 @@ 点踩数不可用(已达到客户端 API 限制) 点踩数不可用(%s) 重新加载视频以使用 Return YouTube Dislike进行投票 - 隐藏 SponsorBlock 启用 SponsorBlock @@ -1436,6 +1464,35 @@ 重置 设置已复制到剪贴板 + 伪装流媒体数据 + 伪装流媒体数据以防止播放问题 + 伪装流媒体数据 + 流媒体数据已伪装 + "流媒体数据未伪装,视频可能无法正常播放" + 关闭此选项可能会导致视频不能正常播放 + 默认客户端 + iOS + Android + Android 嵌入式播放器 + Android 测试套件 + Android TV + Android VR + TV HTML5 + 网址 + 伪装副作用 + • 电影或付费视频可能无法播放 + • 音轨菜单缺失 + • 音轨菜单缺失 + • 视频可能无法播放 + 强制使用 iOS AVC (H.264) + iOS 视频编解码器是 AVC (H.264) + iOS 视频编解码器是 AVC (H.264), VP9, 或 AV1 + "启用此功能可能会改善耗电并修复播放卡顿问题 + +AVC (H.264) 的最大解析度为 1080p,且视频播放将使用比 VP9 或 AV1 更多的网路数据" + 显示统计信息 + 用于获取流媒体数据的客户端已在统计信息中显示 + 用于获取流媒体数据的客户端已在统计信息中隐藏 观看历史 更改与观看历史记录相关的设置 @@ -1447,6 +1504,9 @@ 屏蔽历史记录 关于历史记录 • 历史记录不可用 + • 遵循谷歌帐户的观看历史设置 + "• 遵循谷歌帐户的观看历史设置 +• 由于 DNS 或 VPN 的原因,观看历史可能无法工作" 补丁信息 diff --git a/src/main/resources/youtube/translations/zh-rTW/strings.xml b/src/main/resources/youtube/translations/zh-rTW/strings.xml index 3c152cfcf9..8c06dd3aad 100644 --- a/src/main/resources/youtube/translations/zh-rTW/strings.xml +++ b/src/main/resources/youtube/translations/zh-rTW/strings.xml @@ -232,7 +232,12 @@ • 部分 Shorts 可能不會隱藏 • 部分介面元件可能不會隱藏 • 搜尋關鍵字可能不會顯示任何結果" + 匹配整個單字 + 用雙引號將關鍵字/短語括起來將防止影片標題和頻道名稱部分匹配。<br></b>例如,<br><b>\"ai\"</b>將隱藏影片:<b>人工智慧是如何運作的?</b><br> 但不會隱藏: <b>合理使用是什麼意思?</b> 無效的關鍵字。不能使用:「%s」作為篩選器 + 添加引號以使用關鍵字:%s. + 關鍵字有衝突的聲明:%s. + 關鍵字太短,需要引號:%s. 關鍵字 \'%1$s\' 將隱藏所有影片。 推薦影片 @@ -283,7 +288,7 @@ 稍後觀看 起始頁無效,正在重設為預設值。 停用強制自動音軌 - "強制自動音軌已停用" + 強制自動音軌已停用 強制自動音軌已啟用 停用強制顯示字幕 強制顯示字幕已停用 @@ -681,6 +686,9 @@ 隱藏高級控件選單 高級控件選單已隱藏 高級控件選單已顯示 + 隱藏睡眠定時器選單 + 睡眠定時器選單已隱藏。 + 顯示睡眠定時器選單。 隱藏穩定音量選單 穩定音量選單已顯示 穩定音量選單已隱藏 @@ -931,6 +939,9 @@ 停用恢復短片播放器 短片播放器在應用程式啟動時不會恢復播放。 短片播放器在應用程式啟動時會恢復播放。 + 隱藏浮動按鈕 + "「使用此聲音」等浮動按鈕隱藏在 短片頻道標籤中。" + "「使用此聲音」等浮動按鈕顯示在 短片頻道標籤中。" 短片欄 隱藏短片欄 @@ -973,6 +984,12 @@ 隱藏付費促銷標籤 付費促銷標籤被隱藏 付費推廣橫幅標簽已顯示 + 隱藏按鈕 + 按鈕被隱藏。 + 按鈕已顯示。 + 隱藏購物按鈕 + 購物按鈕已隱藏。 + 顯示購物按鈕。 隱藏商店按鈕 商店按鈕已隱藏 商店按鈕已顯示 @@ -982,9 +999,21 @@ 隱藏標記的產品 標記的產品已隱藏 標記的產品已顯示 + 隱藏位置按鈕 + 位置按鈕已隱藏。 + 顯示位置按鈕。 隱藏儲存音效到播放清單按鈕 儲存音效到播放清單按鈕已隱藏。 儲存音效到播放清單按鈕已顯示。 + 隱藏搜尋建議按鈕 + 搜尋建議按鈕已隱藏。 + 顯示搜尋建議按鈕。 + 隱藏使用此聲音按鈕 + 使用此聲音按鈕已隱藏。 + 顯示使用此聲音按鈕。 + 隱藏使用模板按鈕 + 使用模板按鈕已隱藏 + 顯示使用模板按鈕。 隱藏訊息面板 訊息面板已隱藏 訊息面板已顯示 @@ -1191,7 +1220,6 @@ 倒讚數不可用(已達到用戶端 API 限制) 倒讚數不可用(%s) 重新載入影片以使用 恢復 YouTube 倒讚 進行投票 - 隱藏 贊助區塊阻擋(SponsorBlock) 啟用 SponsorBlock @@ -1443,6 +1471,35 @@ 重置 設定已複製到剪貼簿。 + 偽裝串流數據 + 偽裝串流資料以防止播放問題。 + 偽裝串流數據 + 串流資料已偽裝。 + "串流資料未偽裝。 影片可能無法播放。" + 關閉此設定可能會導致影片播放問題。 + 預設客戶端 + iOS + Android + Android 嵌入式播放器 + Android 測試套件 + Android 電視 + Android VR + TV HTML5 + Web + 偽裝副作用 + • 電影或付費影片可能無法播放。 + • 音軌選單遺失。 + • 音軌選單遺失。 + • 影片可能無法播放。 + 強制 iOS AVC (H.264) + iOS 影片編解碼器為 AVC (H.264)、VP9 或 AV1。 + iOS 視訊編解碼器是 AVC (H.264)、VP9 或 AV1。 + "啟用此功能可能會延長電池壽命並修復播放卡頓問題。 + +AVC (H.264) 的最大解析度為 1080p,影片播放將比 VP9 或 AV1 使用更多的網路資料。" + 顯示統計資料 + 用於取得串流資料的用戶端顯示在統計資料中。 + 用於獲取串流資料的用戶端隱藏在統計資料中。 觀看歷史記錄 變更與觀看歷史記錄相關的設定。 @@ -1454,6 +1511,9 @@ 區塊觀看歷史記錄 關於觀看歷史記錄 • 觀看歷史記錄不起作用。 + • 遵循Google 帳戶的觀看記錄設定。 + "• 遵循Google 帳戶的觀看記錄設定。 +• 由於 DNS 或 VPN 的原因,觀看記錄可能無法運作。" 補丁訊息 From 4edfb1b6c6954adf0404fea792dad43418a86265 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Thu, 5 Sep 2024 20:11:17 +0900 Subject: [PATCH 45/53] bump 4.13.1-dev.4 --- README.md | 74 +++++++++++++++++++++++------------------------ gradle.properties | 2 +- patches.json | 2 +- 3 files changed, 39 insertions(+), 39 deletions(-) diff --git a/README.md b/README.md index e9adeaa2ab..b8a6b4fee5 100644 --- a/README.md +++ b/README.md @@ -75,41 +75,41 @@ ReVanced Extended Patches. | 💊 Patch | 📜 Description | 🏹 Target Version | |:--------:|:--------------:|:-----------------:| -| `Amoled` | Applies a pure black theme to some components. | 6.29.58 ~ 7.16.52 | -| `Bitrate default value` | Sets the audio quality to 'Always High' when you first install the app. | 6.29.58 ~ 7.16.52 | -| `Bypass image region restrictions` | Adds an option to use a different host for static images, so that images blocked in some countries can be received. | 6.29.58 ~ 7.16.52 | -| `Certificate spoof` | Enables YouTube Music to work with Android Auto by spoofing the YouTube Music certificate. | 6.29.58 ~ 7.16.52 | -| `Change share sheet` | Add option to change from in-app share sheet to system share sheet. | 6.29.58 ~ 7.16.52 | -| `Change start page` | Adds an option to set which page the app opens in instead of the homepage. | 6.29.58 ~ 7.16.52 | -| `Custom branding icon for YouTube Music` | Changes the YouTube Music app icon to the icon specified in options.json. | 6.29.58 ~ 7.16.52 | -| `Custom branding name for YouTube Music` | Renames the YouTube Music app to the name specified in options.json. | 6.29.58 ~ 7.16.52 | -| `Custom header for YouTube Music` | Applies a custom header in the top left corner within the app. | 6.29.58 ~ 7.16.52 | -| `Disable auto captions` | Adds an option to disable captions from being automatically enabled. | 6.29.58 ~ 7.16.52 | -| `Disable dislike redirection` | Adds an option to disable redirection to the next track when clicking the Dislike button. | 6.29.58 ~ 7.16.52 | -| `Enable Cairo splash animation` | Adds an option to enable Cairo splash animation. | 7.08.54 ~ 7.16.52 | -| `Enable OPUS codec` | Adds an options to enable the OPUS audio codec if the player response includes. | 6.29.58 ~ 7.16.52 | -| `Enable debug logging` | Adds an option to enable debug logging. | 6.29.58 ~ 7.16.52 | -| `Enable landscape mode` | Adds an option to enable landscape mode when rotating the screen on phones. | 6.29.58 ~ 7.16.52 | -| `Flyout menu components` | Adds options to hide or change flyout menu components. | 6.29.58 ~ 7.16.52 | -| `GmsCore support` | Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services. | 6.29.58 ~ 7.16.52 | -| `Hide account components` | Adds options to hide components related to the account menu. | 6.29.58 ~ 7.16.52 | -| `Hide action bar components` | Adds options to hide action bar components and replace the offline download button with an external download button. | 6.29.58 ~ 7.16.52 | -| `Hide ads` | Adds options to hide ads. | 6.29.58 ~ 7.16.52 | -| `Hide layout components` | Adds options to hide general layout components. | 6.29.58 ~ 7.16.52 | -| `Hide overlay filter` | Removes, at compile time, the dark overlay that appears when player flyout menus are open. | 6.29.58 ~ 7.16.52 | -| `Hide player overlay filter` | Removes, at compile time, the dark overlay that appears when single-tapping in the player. | 6.29.58 ~ 7.16.52 | -| `Navigation bar components` | Adds options to hide or change components related to the navigation bar. | 6.29.58 ~ 7.16.52 | -| `Player components` | Adds options to hide or change components related to the player. | 6.29.58 ~ 7.16.52 | -| `Remove background playback restrictions` | Removes restrictions on background playback, including for kids videos. | 6.29.58 ~ 7.16.52 | -| `Remove viewer discretion dialog` | Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction. | 6.29.58 ~ 7.16.52 | -| `Restore old style library shelf` | Adds an option to return the Library tab to the old style. | 6.29.58 ~ 7.16.52 | -| `Return YouTube Dislike` | Adds an option to show the dislike count of songs using the Return YouTube Dislike API. | 6.29.58 ~ 7.16.52 | -| `Sanitize sharing links` | Adds an option to remove tracking query parameters from URLs when sharing links. | 6.29.58 ~ 7.16.52 | -| `Settings for YouTube Music` | Applies mandatory patches to implement ReVanced Extended settings into the application. | 6.29.58 ~ 7.16.52 | -| `SponsorBlock` | Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as non-music sections. | 6.29.58 ~ 7.16.52 | -| `Spoof app version` | Adds options to spoof the YouTube Music client version. This can remove the radio mode restriction in Canadian regions or disable real-time lyrics. | 6.29.58 ~ 7.16.52 | -| `Translations for YouTube Music` | Add translations or remove string resources. | 6.29.58 ~ 7.16.52 | -| `Video playback` | Adds options to customize settings related to video playback, such as default video quality and playback speed. | 6.29.58 ~ 7.16.52 | +| `Amoled` | Applies a pure black theme to some components. | 6.29.58 ~ 7.17.51 | +| `Bitrate default value` | Sets the audio quality to 'Always High' when you first install the app. | 6.29.58 ~ 7.17.51 | +| `Bypass image region restrictions` | Adds an option to use a different host for static images, so that images blocked in some countries can be received. | 6.29.58 ~ 7.17.51 | +| `Certificate spoof` | Enables YouTube Music to work with Android Auto by spoofing the YouTube Music certificate. | 6.29.58 ~ 7.17.51 | +| `Change share sheet` | Add option to change from in-app share sheet to system share sheet. | 6.29.58 ~ 7.17.51 | +| `Change start page` | Adds an option to set which page the app opens in instead of the homepage. | 6.29.58 ~ 7.17.51 | +| `Custom branding icon for YouTube Music` | Changes the YouTube Music app icon to the icon specified in options.json. | 6.29.58 ~ 7.17.51 | +| `Custom branding name for YouTube Music` | Renames the YouTube Music app to the name specified in options.json. | 6.29.58 ~ 7.17.51 | +| `Custom header for YouTube Music` | Applies a custom header in the top left corner within the app. | 6.29.58 ~ 7.17.51 | +| `Disable auto captions` | Adds an option to disable captions from being automatically enabled. | 6.29.58 ~ 7.17.51 | +| `Disable dislike redirection` | Adds an option to disable redirection to the next track when clicking the Dislike button. | 6.29.58 ~ 7.17.51 | +| `Enable Cairo splash animation` | Adds an option to enable Cairo splash animation. | 7.08.54 ~ 7.17.51 | +| `Enable OPUS codec` | Adds an options to enable the OPUS audio codec if the player response includes. | 6.29.58 ~ 7.17.51 | +| `Enable debug logging` | Adds an option to enable debug logging. | 6.29.58 ~ 7.17.51 | +| `Enable landscape mode` | Adds an option to enable landscape mode when rotating the screen on phones. | 6.29.58 ~ 7.17.51 | +| `Flyout menu components` | Adds options to hide or change flyout menu components. | 6.29.58 ~ 7.17.51 | +| `GmsCore support` | Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services. | 6.29.58 ~ 7.17.51 | +| `Hide account components` | Adds options to hide components related to the account menu. | 6.29.58 ~ 7.17.51 | +| `Hide action bar components` | Adds options to hide action bar components and replace the offline download button with an external download button. | 6.29.58 ~ 7.17.51 | +| `Hide ads` | Adds options to hide ads. | 6.29.58 ~ 7.17.51 | +| `Hide layout components` | Adds options to hide general layout components. | 6.29.58 ~ 7.17.51 | +| `Hide overlay filter` | Removes, at compile time, the dark overlay that appears when player flyout menus are open. | 6.29.58 ~ 7.17.51 | +| `Hide player overlay filter` | Removes, at compile time, the dark overlay that appears when single-tapping in the player. | 6.29.58 ~ 7.17.51 | +| `Navigation bar components` | Adds options to hide or change components related to the navigation bar. | 6.29.58 ~ 7.17.51 | +| `Player components` | Adds options to hide or change components related to the player. | 6.29.58 ~ 7.17.51 | +| `Remove background playback restrictions` | Removes restrictions on background playback, including for kids videos. | 6.29.58 ~ 7.17.51 | +| `Remove viewer discretion dialog` | Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction. | 6.29.58 ~ 7.17.51 | +| `Restore old style library shelf` | Adds an option to return the Library tab to the old style. | 6.29.58 ~ 7.17.51 | +| `Return YouTube Dislike` | Adds an option to show the dislike count of songs using the Return YouTube Dislike API. | 6.29.58 ~ 7.17.51 | +| `Sanitize sharing links` | Adds an option to remove tracking query parameters from URLs when sharing links. | 6.29.58 ~ 7.17.51 | +| `Settings for YouTube Music` | Applies mandatory patches to implement ReVanced Extended settings into the application. | 6.29.58 ~ 7.17.51 | +| `SponsorBlock` | Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as non-music sections. | 6.29.58 ~ 7.17.51 | +| `Spoof app version` | Adds options to spoof the YouTube Music client version. This can remove the radio mode restriction in Canadian regions or disable real-time lyrics. | 6.29.58 ~ 7.17.51 | +| `Translations for YouTube Music` | Add translations or remove string resources. | 6.29.58 ~ 7.17.51 | +| `Video playback` | Adds options to customize settings related to video playback, such as default video quality and playback speed. | 6.29.58 ~ 7.17.51 | ### [📦 `com.reddit.frontpage`](https://play.google.com/store/apps/details?id=com.reddit.frontpage) @@ -173,8 +173,8 @@ Example: "6.33.52", "6.42.55", "6.51.53", - "7.15.52", - "7.16.52" + "7.16.53", + "7.17.51" ] } ], diff --git a/gradle.properties b/gradle.properties index 42fcd3c678..cebdc4644b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.13.1-dev.3 +version = 4.13.1-dev.4 diff --git a/patches.json b/patches.json index aa2da76a3e..9c010e9018 100644 --- a/patches.json +++ b/patches.json @@ -1 +1 @@ -[{"name":"Alternative thumbnails","description":"Adds options to replace video thumbnails using the DeArrow API or image captures from the video.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Ambient mode control","description":"Adds options to disable Ambient mode and to bypass Ambient mode restrictions.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Amoled","description":"Applies a pure black theme to some components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bitrate default value","description":"Sets the audio quality to \u0027Always High\u0027 when you first install the app.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bypass image region restrictions","description":"Adds an option to use a different host for static images, so that images blocked in some countries can be received.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bypass image region restrictions","description":"Adds an option to use a different host for static images, so that images blocked in some countries can be received.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Certificate spoof","description":"Enables YouTube Music to work with Android Auto by spoofing the YouTube Music certificate.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change package name","description":"Changes the package name for Reddit to the name specified in options.json.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"PackageNameReddit","default":"com.reddit.frontpage","values":{"Clone":"com.reddit.frontpage.revanced","Default":"com.reddit.frontpage.rvx","Original":"com.reddit.frontpage"},"title":"Package name of Reddit","description":"The name of the package to rename the app to.","required":true}]},{"name":"Change player flyout menu toggles","description":"Adds an option to use text toggles instead of switch toggles within the additional settings menu.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change share sheet","description":"Add option to change from in-app share sheet to system share sheet.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change share sheet","description":"Add option to change from in-app share sheet to system share sheet.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change start page","description":"Adds an option to set which page the app opens in instead of the homepage.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change start page","description":"Adds an option to set which page the app opens in instead of the homepage.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change version code","description":"Changes the version code of the app to the value specified in options.json. Except when mounting, this can prevent app stores from updating the app and allow the app to be installed over an existing installation that has a higher version code. By default, the highest version code is set.","compatiblePackages":null,"use":false,"requiresIntegrations":false,"options":[{"key":"ChangeVersionCode","default":false,"values":null,"title":"Change version code","description":"Changes the version code of the app.","required":true},{"key":"VersionCode","default":"2147483647","values":null,"title":"Version code","description":"The version code to use. (1 ~ 2147483647)","required":true}]},{"name":"Custom Shorts action buttons","description":"Changes, at compile time, the icon of the action buttons of the Shorts player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"IconType","default":"youtubeoutline","values":{"Outline":"outline","OutlineCircle":"outlinecircle","Round":"round","YoutubeOutline":"youtubeoutline","YouTube":"youtube"},"title":"Shorts icon style ","description":"The style of the icons for the action buttons in the Shorts player.","required":true}]},{"name":"Custom branding icon for YouTube","description":"Changes the YouTube app icon to the icon specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppIcon","default":"revancify_blue","values":{"AFN Blue":"afn_blue","AFN Red":"afn_red","MMT":"mmt","Revancify Blue":"revancify_blue","Revancify Red":"revancify_red","YouTube":"youtube"},"title":"App icon","description":"The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_background_color_108.png\n- adaptiveproduct_youtube_foreground_color_108.png\n- ic_launcher.png\n- ic_launcher_round.png","required":true},{"key":"ChangeSplashIcon","default":true,"values":null,"title":"Change splash icons","description":"Apply the custom branding icon to the splash screen.","required":true},{"key":"RestoreOldSplashAnimation","default":true,"values":null,"title":"Restore old splash animation","description":"Restore the old style splash animation.","required":true}]},{"name":"Custom branding icon for YouTube Music","description":"Changes the YouTube Music app icon to the icon specified in options.json.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppIcon","default":"revancify_blue","values":{"AFN Blue":"afn_blue","AFN Red":"afn_red","MMT":"mmt","Revancify Blue":"revancify_blue","Revancify Red":"revancify_red","YouTube Music":"youtube_music"},"title":"App icon","description":"The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_music_background_color_108.png\n- adaptiveproduct_youtube_music_foreground_color_108.png\n- ic_launcher_release.png","required":true},{"key":"ChangeSplashIcon","default":true,"values":null,"title":"Change splash icons","description":"Apply the custom branding icon to the splash screen.","required":true}]},{"name":"Custom branding name for Reddit","description":"Renames the Reddit app to the name specified in options.json.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"AppName","default":"Reddit","values":{"Default":"RVX Reddit","Original":"Reddit"},"title":"App name","description":"The name of the app.","required":true}]},{"name":"Custom branding name for YouTube","description":"Renames the YouTube app to the name specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppName","default":"RVX","values":{"ReVanced Extended":"ReVanced Extended","RVX":"RVX","YouTube RVX":"YouTube RVX","YouTube":"YouTube"},"title":"App name","description":"The name of the app.","required":true}]},{"name":"Custom branding name for YouTube Music","description":"Renames the YouTube Music app to the name specified in options.json.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppNameNotification","default":"RVX Music","values":{"ReVanced Extended Music":"ReVanced Extended Music","RVX Music":"RVX Music","YouTube Music":"YouTube Music","YT Music":"YT Music"},"title":"App name in notification panel","description":"The name of the app as it appears in the notification panel.","required":true},{"key":"AppNameLauncher","default":"RVX Music","values":{"ReVanced Extended Music":"ReVanced Extended Music","RVX Music":"RVX Music","YouTube Music":"YouTube Music","YT Music":"YT Music"},"title":"App name in launcher","description":"The name of the app as it appears in the launcher.","required":true}]},{"name":"Custom double tap length","description":"Adds Double-tap to seek values that are specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"DoubleTapLengthArrays","default":"3, 5, 10, 15, 20, 30, 60, 120, 180","values":null,"title":"Double-tap to seek values","description":"A list of custom Double-tap to seek lengths to be added, separated by commas.","required":true}]},{"name":"Custom header for YouTube","description":"Applies a custom header in the top left corner within the app.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"CustomHeader","default":"custom_branding_icon","values":{"Custom branding icon":"custom_branding_icon"},"title":"Custom header","description":"The header to apply to the app.\n\nPatch option \u0027Custom branding icon\u0027 applies only when:\n\n1. Patch \u0027Custom branding icon for YouTube\u0027 is included.\n2. Patch option for \u0027Custom branding icon for YouTube\u0027 is selected from the preset.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n[Generic header]\n\n- yt_wordmark_header_light.png\n- yt_wordmark_header_dark.png\n\nThe image dimensions must be as follows:\n\n- drawable-xxxhdpi: 488px x 192px\n- drawable-xxhdpi: 366px x 144px\n- drawable-xhdpi: 244px x 96px\n- drawable-hdpi: 184px x 72px\n- drawable-mdpi: 122px x 48px\n\n[Premium header]\n\n- yt_premium_wordmark_header_light.png\n- yt_premium_wordmark_header_dark.png\n\nThe image dimensions must be as follows:\n- drawable-xxxhdpi: 516px x 192px\n- drawable-xxhdpi: 387px x 144px\n- drawable-xhdpi: 258px x 96px\n- drawable-hdpi: 194px x 72px\n- drawable-mdpi: 129px x 48px","required":true}]},{"name":"Custom header for YouTube Music","description":"Applies a custom header in the top left corner within the app.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"CustomHeader","default":"custom_branding_icon","values":{"Custom branding icon":"custom_branding_icon"},"title":"Custom header","description":"The header to apply to the app.\n\nPatch option \u0027Custom branding icon\u0027 applies only when:\n\n1. Patch \u0027Custom branding icon for YouTube Music\u0027 is included.\n2. Patch option for \u0027Custom branding icon for YouTube Music\u0027 is selected from the preset.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n- action_bar_logo.png\n- logo_music.png\n- ytm_logo.png\n\nThe image \u0027action_bar_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 320px x 96px\n- drawable-xxhdpi: 240px x 72px\n- drawable-xhdpi: 160px x 48px\n- drawable-hdpi: 121px x 36px\n- drawable-mdpi: 80px x 24px\n\nThe image \u0027logo_music.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 576px x 200px\n- drawable-xxhdpi: 432px x 150px\n- drawable-xhdpi: 288px x 100px\n- drawable-hdpi: 217px x 76px\n- drawable-mdpi: 144px x 50px\n\nThe image \u0027ytm_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 412px x 144px\n- drawable-xxhdpi: 309px x 108px\n- drawable-xhdpi: 206px x 72px\n- drawable-hdpi: 155px x 54px\n- drawable-mdpi: 103px x 36px","required":true}]},{"name":"Description components","description":"Adds options to hide and disable description components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable QUIC protocol","description":"Adds an option to disable CronetEngine\u0027s QUIC protocol.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto audio tracks","description":"Adds an option to disable audio tracks from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto captions","description":"Adds an option to disable captions from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto captions","description":"Adds an option to disable captions from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable dislike redirection","description":"Adds an option to disable redirection to the next track when clicking the Dislike button.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable haptic feedback","description":"Adds options to disable haptic feedback when swiping in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable resuming Shorts on startup","description":"Adds an option to disable the Shorts player from resuming on app startup when Shorts were last being watched.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable screenshot popup","description":"Adds an option to disable the popup that appears when taking a screenshot.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable splash animation","description":"Adds an option to disable the splash animation on app startup.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable Cairo splash animation","description":"Adds an option to enable Cairo splash animation.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["7.08.54","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable OPUS codec","description":"Adds an options to enable the OPUS audio codec if the player response includes.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable OPUS codec","description":"Adds an options to enable the OPUS audio codec if the player response includes.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable debug logging","description":"Adds an option to enable debug logging.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable debug logging","description":"Adds an option to enable debug logging.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable external browser","description":"Adds an option to always open links in your browser instead of in the in-app-browser.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable gradient loading screen","description":"Adds an option to enable the gradient loading screen.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable landscape mode","description":"Adds an option to enable landscape mode when rotating the screen on phones.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable open links directly","description":"Adds an option to skip over redirection URLs in external links.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Flyout menu components","description":"Adds options to hide or change flyout menu components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Force hide player buttons background","description":"Removes, at compile time, the dark background surrounding the video player controls.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Fullscreen components","description":"Adds options to hide or change components related to fullscreen.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"GmsCore support","description":"Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"GmsCoreVendorGroupId","default":"app.revanced","values":{"ReVanced":"app.revanced"},"title":"GmsCore vendor group ID","description":"The vendor\u0027s group ID for GmsCore.","required":true},{"key":"CheckGmsCore","default":true,"values":null,"title":"Check GmsCore","description":"Check if GmsCore is installed on the device and has battery optimizations disabled when the app starts. \n\nIf GmsCore is not installed the app will not work, so disabling this is not recommended.","required":true},{"key":"PackageNameYouTube","default":"app.rvx.android.youtube","values":{"Clone":"com.rvx.android.youtube","Default":"app.rvx.android.youtube"},"title":"Package name of YouTube","description":"The name of the package to use in GmsCore support.","required":true},{"key":"PackageNameYouTubeMusic","default":"app.rvx.android.apps.youtube.music","values":{"Clone":"com.rvx.android.apps.youtube.music","Default":"app.rvx.android.apps.youtube.music"},"title":"Package name of YouTube Music","description":"The name of the package to use in GmsCore support.","required":true}]},{"name":"GmsCore support","description":"Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"GmsCoreVendorGroupId","default":"app.revanced","values":{"ReVanced":"app.revanced"},"title":"GmsCore vendor group ID","description":"The vendor\u0027s group ID for GmsCore.","required":true},{"key":"CheckGmsCore","default":true,"values":null,"title":"Check GmsCore","description":"Check if GmsCore is installed on the device and has battery optimizations disabled when the app starts. \n\nIf GmsCore is not installed the app will not work, so disabling this is not recommended.","required":true},{"key":"PackageNameYouTube","default":"app.rvx.android.youtube","values":{"Clone":"com.rvx.android.youtube","Default":"app.rvx.android.youtube"},"title":"Package name of YouTube","description":"The name of the package to use in GmsCore support.","required":true},{"key":"PackageNameYouTubeMusic","default":"app.rvx.android.apps.youtube.music","values":{"Clone":"com.rvx.android.apps.youtube.music","Default":"app.rvx.android.apps.youtube.music"},"title":"Package name of YouTube Music","description":"The name of the package to use in GmsCore support.","required":true}]},{"name":"Hide Recently Visited shelf","description":"Adds an option to hide the Recently Visited shelf in the sidebar.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide Shorts dimming","description":"Removes, at compile time, the dimming effect at the top and bottom of Shorts videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide account components","description":"Adds options to hide components related to the account menu.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide action bar components","description":"Adds options to hide action bar components and replace the offline download button with an external download button.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide action buttons","description":"Adds options to hide action buttons under videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":true,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide comments components","description":"Adds options to hide components related to comments.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide feed components","description":"Adds options to hide components related to feeds.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide feed flyout menu","description":"Adds the ability to hide feed flyout menu components using a custom filter.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide layout components","description":"Adds options to hide general layout components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide layout components","description":"Adds options to hide general layout components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide navigation buttons","description":"Adds options to hide buttons in the navigation bar.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide overlay filter","description":"Removes, at compile time, the dark overlay that appears when player flyout menus are open.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide player buttons","description":"Adds options to hide buttons in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide player flyout menu","description":"Adds options to hide player flyout menu components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide player overlay filter","description":"Removes, at compile time, the dark overlay that appears when single-tapping in the player.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide recommended communities shelf","description":"Adds an option to hide the recommended communities shelves in subreddits.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hook download actions","description":"Adds support to download videos with an external downloader app using the in-app download button.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Layout switch","description":"Adds an option to spoof the dpi in order to use a tablet or phone layout.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"MaterialYou","description":"Applies the MaterialYou theme for Android 12+ devices.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Miniplayer","description":"Adds options to change the in app minimized player, and if patching target 19.16+ adds options to use modern miniplayers.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Navigation bar components","description":"Adds options to hide or change components related to the navigation bar.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Navigation bar components","description":"Adds options to hide or change components related to the navigation bar.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Open links directly","description":"Adds an option to skip over redirection URLs in external links.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Open links externally","description":"Adds an option to always open links in your browser instead of in the in-app-browser.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Overlay buttons","description":"Adds options to display overlay buttons in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"IconType","default":"bold","values":{"Bold":"bold","Rounded":"rounded","Thin":"thin"},"title":"Icon type","description":"The icon type.","required":true},{"key":"BottomMargin","default":"0.0dip","values":{"Wider":"6.0dip","Default":"0.0dip"},"title":"Bottom margin","description":"The bottom margin for the overlay buttons and timestamp.","required":true},{"key":"ChangeTopButtons","default":false,"values":null,"title":"Change top buttons","description":"Change the icons at the top of the player.","required":true}]},{"name":"Player components","description":"Adds options to hide or change components related to the player.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Player components","description":"Adds options to hide or change components related to the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Premium icon","description":"Unlocks premium app icons.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove background playback restrictions","description":"Removes restrictions on background playback, including for kids videos.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove background playback restrictions","description":"Removes restrictions on background playback, including for music and kids videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove subreddit dialog","description":"Adds options to remove the NSFW community warning and notifications suggestion dialogs by dismissing them automatically.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove viewer discretion dialog","description":"Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove viewer discretion dialog","description":"Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Restore old style library shelf","description":"Adds an option to return the Library tab to the old style.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Return YouTube Dislike","description":"Adds an option to show the dislike count of songs using the Return YouTube Dislike API.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Return YouTube Dislike","description":"Adds an option to show the dislike count of videos using the Return YouTube Dislike API.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Seekbar components","description":"Adds options to hide or change components related to the seekbar.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Settings for Reddit","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Settings for YouTube","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"InsertPosition","default":"@string/about_key","values":{"Parent settings":"@string/parent_tools_key","General":"@string/general_key","Account":"@string/account_switcher_key","Data saving":"@string/data_saving_settings_key","Autoplay":"@string/auto_play_key","Video quality preferences":"@string/video_quality_settings_key","Background":"@string/offline_key","Watch on TV":"@string/pair_with_tv_key","Manage all history":"@string/history_key","Your data in YouTube":"@string/your_data_key","Privacy":"@string/privacy_key","History \u0026 privacy":"@string/privacy_key","Try experimental new features":"@string/premium_early_access_browse_page_key","Purchases and memberships":"@string/subscription_product_setting_key","Billing \u0026 payments":"@string/billing_and_payment_key","Billing and payments":"@string/billing_and_payment_key","Notifications":"@string/notification_key","Connected apps":"@string/connected_accounts_browse_page_key","Live chat":"@string/live_chat_key","Captions":"@string/captions_key","Accessibility":"@string/accessibility_settings_key","About":"@string/about_key"},"title":"Insert position","description":"The settings menu name that the RVX settings menu should be above.","required":true},{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Settings for YouTube Music","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Shorts components","description":"Adds options to hide or change components related to YouTube Shorts.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"SponsorBlock","description":"Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as non-music sections.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"SponsorBlock","description":"Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as sponsored content.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"OutlineIcon","default":false,"values":null,"title":"Outline icons","description":"Apply the outline icon.","required":true}]},{"name":"Spoof app version","description":"Adds options to spoof the YouTube Music client version. This can remove the radio mode restriction in Canadian regions or disable real-time lyrics.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Spoof app version","description":"Adds options to spoof the YouTube client version. This can be used to restore old UI elements and features.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Spoof streaming data","description":"Adds options to spoof the streaming data to allow video playback.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Swipe controls","description":"Adds options for controlling volume and brightness with swiping, and whether to enter fullscreen when swiping down below the player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Theme","description":"Changes the app\u0027s theme to the values specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"DarkThemeBackgroundColor","default":"@android:color/black","values":{"Amoled Black":"@android:color/black","Catppuccin (Mocha)":"#FF181825","Dark Pink":"#FF290025","Dark Blue":"#FF001029","Dark Green":"#FF002905","Dark Yellow":"#FF282900","Dark Orange":"#FF291800","Dark Red":"#FF290000"},"title":"Dark theme background color","description":"Can be a hex color (#AARRGGBB) or a color resource reference.","required":true},{"key":"LightThemeBackgroundColor","default":"@android:color/white","values":{"White":"@android:color/white","Catppuccin (Latte)":"#FFE6E9EF","Light Pink":"#FFFCCFF3","Light Blue":"#FFD1E0FF","Light Green":"#FFCCFFCC","Light Yellow":"#FFFDFFCC","Light Orange":"#FFFFE6CC","Light Red":"#FFFFD6D6"},"title":"Light theme background color","description":"Can be a hex color (#AARRGGBB) or a color resource reference.","required":true}]},{"name":"Toolbar components","description":"Adds options to hide or change components located on the toolbar, such as toolbar buttons, search bar, and header.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Translations for YouTube","description":"Add translations or remove string resources.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"CustomTranslations","default":"","values":null,"title":"Custom translations","description":"The path to the \u0027strings.xml\u0027 file.\nPlease note that applying the \u0027strings.xml\u0027 file will overwrite all existing translations.","required":true},{"key":"SelectedTranslations","default":"ar, bg-rBG, de-rDE, el-rGR, es-rES, fr-rFR, hu-rHU, it-rIT, ja-rJP, ko-rKR, pl-rPL, pt-rBR, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW","values":null,"title":"Translations to add","description":"A list of translations to be added for the RVX settings, separated by commas.","required":true},{"key":"SelectedStringResources","default":"af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu","values":null,"title":"String resources to keep","description":"A list of string resources to be kept, separated by commas.\nString resources not in the list will be removed from the app.\n\nDefault string resource, English, is not removed.","required":true}]},{"name":"Translations for YouTube Music","description":"Add translations or remove string resources.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"CustomTranslations","default":"","values":null,"title":"Custom translations","description":"The path to the \u0027strings.xml\u0027 file.\nPlease note that applying the \u0027strings.xml\u0027 file will overwrite all existing language translations.","required":true},{"key":"SelectedTranslations","default":"bg-rBG, bn, cs-rCZ, el-rGR, es-rES, fr-rFR, hu-rHU, id-rID, in, it-rIT, ja-rJP, ko-rKR, nl-rNL, pl-rPL, pt-rBR, ro-rRO, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW","values":null,"title":"Translations to add","description":"A list of translations to be added for the RVX settings, separated by commas.","required":true},{"key":"SelectedStringResources","default":"af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu","values":null,"title":"String resources to keep","description":"A list of string resources to be kept, separated by commas.\nString resources not in the list will be removed from the app.\n\nDefault string resource, English, is not removed.","required":true}]},{"name":"Video playback","description":"Adds options to customize settings related to video playback, such as default video quality and playback speed.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.15.52","7.16.52"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Video playback","description":"Adds options to customize settings related to video playback, such as default video quality and playback speed.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Visual preferences icons","description":"Adds icons to specific preferences in the settings.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"RVXSettingsMenuIcon","default":"extension","values":{"Custom branding icon":"custom_branding_icon","Extension":"extension","Gear":"gear","ReVanced":"revanced","ReVanced Colored":"revanced_colored"},"title":"RVX settings menu icon","description":"The icon for the RVX settings menu.","required":true}]},{"name":"Watch history","description":"Adds an option to change the domain of the watch history or check its status.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]}] \ No newline at end of file +[{"name":"Alternative thumbnails","description":"Adds options to replace video thumbnails using the DeArrow API or image captures from the video.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Ambient mode control","description":"Adds options to disable Ambient mode and to bypass Ambient mode restrictions.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Amoled","description":"Applies a pure black theme to some components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bitrate default value","description":"Sets the audio quality to \u0027Always High\u0027 when you first install the app.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bypass image region restrictions","description":"Adds an option to use a different host for static images, so that images blocked in some countries can be received.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bypass image region restrictions","description":"Adds an option to use a different host for static images, so that images blocked in some countries can be received.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Certificate spoof","description":"Enables YouTube Music to work with Android Auto by spoofing the YouTube Music certificate.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change package name","description":"Changes the package name for Reddit to the name specified in options.json.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"PackageNameReddit","default":"com.reddit.frontpage","values":{"Clone":"com.reddit.frontpage.revanced","Default":"com.reddit.frontpage.rvx","Original":"com.reddit.frontpage"},"title":"Package name of Reddit","description":"The name of the package to rename the app to.","required":true}]},{"name":"Change player flyout menu toggles","description":"Adds an option to use text toggles instead of switch toggles within the additional settings menu.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change share sheet","description":"Add option to change from in-app share sheet to system share sheet.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change share sheet","description":"Add option to change from in-app share sheet to system share sheet.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change start page","description":"Adds an option to set which page the app opens in instead of the homepage.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change start page","description":"Adds an option to set which page the app opens in instead of the homepage.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change version code","description":"Changes the version code of the app to the value specified in options.json. Except when mounting, this can prevent app stores from updating the app and allow the app to be installed over an existing installation that has a higher version code. By default, the highest version code is set.","compatiblePackages":null,"use":false,"requiresIntegrations":false,"options":[{"key":"ChangeVersionCode","default":false,"values":null,"title":"Change version code","description":"Changes the version code of the app.","required":true},{"key":"VersionCode","default":"2147483647","values":null,"title":"Version code","description":"The version code to use. (1 ~ 2147483647)","required":true}]},{"name":"Custom Shorts action buttons","description":"Changes, at compile time, the icon of the action buttons of the Shorts player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"IconType","default":"youtubeoutline","values":{"Outline":"outline","OutlineCircle":"outlinecircle","Round":"round","YoutubeOutline":"youtubeoutline","YouTube":"youtube"},"title":"Shorts icon style ","description":"The style of the icons for the action buttons in the Shorts player.","required":true}]},{"name":"Custom branding icon for YouTube","description":"Changes the YouTube app icon to the icon specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppIcon","default":"revancify_blue","values":{"AFN Blue":"afn_blue","AFN Red":"afn_red","MMT":"mmt","Revancify Blue":"revancify_blue","Revancify Red":"revancify_red","YouTube":"youtube"},"title":"App icon","description":"The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_background_color_108.png\n- adaptiveproduct_youtube_foreground_color_108.png\n- ic_launcher.png\n- ic_launcher_round.png","required":true},{"key":"ChangeSplashIcon","default":true,"values":null,"title":"Change splash icons","description":"Apply the custom branding icon to the splash screen.","required":true},{"key":"RestoreOldSplashAnimation","default":true,"values":null,"title":"Restore old splash animation","description":"Restore the old style splash animation.","required":true}]},{"name":"Custom branding icon for YouTube Music","description":"Changes the YouTube Music app icon to the icon specified in options.json.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppIcon","default":"revancify_blue","values":{"AFN Blue":"afn_blue","AFN Red":"afn_red","MMT":"mmt","Revancify Blue":"revancify_blue","Revancify Red":"revancify_red","YouTube Music":"youtube_music"},"title":"App icon","description":"The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_music_background_color_108.png\n- adaptiveproduct_youtube_music_foreground_color_108.png\n- ic_launcher_release.png","required":true},{"key":"ChangeSplashIcon","default":true,"values":null,"title":"Change splash icons","description":"Apply the custom branding icon to the splash screen.","required":true}]},{"name":"Custom branding name for Reddit","description":"Renames the Reddit app to the name specified in options.json.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"AppName","default":"Reddit","values":{"Default":"RVX Reddit","Original":"Reddit"},"title":"App name","description":"The name of the app.","required":true}]},{"name":"Custom branding name for YouTube","description":"Renames the YouTube app to the name specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppName","default":"RVX","values":{"ReVanced Extended":"ReVanced Extended","RVX":"RVX","YouTube RVX":"YouTube RVX","YouTube":"YouTube"},"title":"App name","description":"The name of the app.","required":true}]},{"name":"Custom branding name for YouTube Music","description":"Renames the YouTube Music app to the name specified in options.json.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppNameNotification","default":"RVX Music","values":{"ReVanced Extended Music":"ReVanced Extended Music","RVX Music":"RVX Music","YouTube Music":"YouTube Music","YT Music":"YT Music"},"title":"App name in notification panel","description":"The name of the app as it appears in the notification panel.","required":true},{"key":"AppNameLauncher","default":"RVX Music","values":{"ReVanced Extended Music":"ReVanced Extended Music","RVX Music":"RVX Music","YouTube Music":"YouTube Music","YT Music":"YT Music"},"title":"App name in launcher","description":"The name of the app as it appears in the launcher.","required":true}]},{"name":"Custom double tap length","description":"Adds Double-tap to seek values that are specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"DoubleTapLengthArrays","default":"3, 5, 10, 15, 20, 30, 60, 120, 180","values":null,"title":"Double-tap to seek values","description":"A list of custom Double-tap to seek lengths to be added, separated by commas.","required":true}]},{"name":"Custom header for YouTube","description":"Applies a custom header in the top left corner within the app.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"CustomHeader","default":"custom_branding_icon","values":{"Custom branding icon":"custom_branding_icon"},"title":"Custom header","description":"The header to apply to the app.\n\nPatch option \u0027Custom branding icon\u0027 applies only when:\n\n1. Patch \u0027Custom branding icon for YouTube\u0027 is included.\n2. Patch option for \u0027Custom branding icon for YouTube\u0027 is selected from the preset.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n[Generic header]\n\n- yt_wordmark_header_light.png\n- yt_wordmark_header_dark.png\n\nThe image dimensions must be as follows:\n\n- drawable-xxxhdpi: 488px x 192px\n- drawable-xxhdpi: 366px x 144px\n- drawable-xhdpi: 244px x 96px\n- drawable-hdpi: 184px x 72px\n- drawable-mdpi: 122px x 48px\n\n[Premium header]\n\n- yt_premium_wordmark_header_light.png\n- yt_premium_wordmark_header_dark.png\n\nThe image dimensions must be as follows:\n- drawable-xxxhdpi: 516px x 192px\n- drawable-xxhdpi: 387px x 144px\n- drawable-xhdpi: 258px x 96px\n- drawable-hdpi: 194px x 72px\n- drawable-mdpi: 129px x 48px","required":true}]},{"name":"Custom header for YouTube Music","description":"Applies a custom header in the top left corner within the app.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"CustomHeader","default":"custom_branding_icon","values":{"Custom branding icon":"custom_branding_icon"},"title":"Custom header","description":"The header to apply to the app.\n\nPatch option \u0027Custom branding icon\u0027 applies only when:\n\n1. Patch \u0027Custom branding icon for YouTube Music\u0027 is included.\n2. Patch option for \u0027Custom branding icon for YouTube Music\u0027 is selected from the preset.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n- action_bar_logo.png\n- logo_music.png\n- ytm_logo.png\n\nThe image \u0027action_bar_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 320px x 96px\n- drawable-xxhdpi: 240px x 72px\n- drawable-xhdpi: 160px x 48px\n- drawable-hdpi: 121px x 36px\n- drawable-mdpi: 80px x 24px\n\nThe image \u0027logo_music.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 576px x 200px\n- drawable-xxhdpi: 432px x 150px\n- drawable-xhdpi: 288px x 100px\n- drawable-hdpi: 217px x 76px\n- drawable-mdpi: 144px x 50px\n\nThe image \u0027ytm_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 412px x 144px\n- drawable-xxhdpi: 309px x 108px\n- drawable-xhdpi: 206px x 72px\n- drawable-hdpi: 155px x 54px\n- drawable-mdpi: 103px x 36px","required":true}]},{"name":"Description components","description":"Adds options to hide and disable description components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable QUIC protocol","description":"Adds an option to disable CronetEngine\u0027s QUIC protocol.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto audio tracks","description":"Adds an option to disable audio tracks from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto captions","description":"Adds an option to disable captions from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto captions","description":"Adds an option to disable captions from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable dislike redirection","description":"Adds an option to disable redirection to the next track when clicking the Dislike button.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable haptic feedback","description":"Adds options to disable haptic feedback when swiping in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable resuming Shorts on startup","description":"Adds an option to disable the Shorts player from resuming on app startup when Shorts were last being watched.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable screenshot popup","description":"Adds an option to disable the popup that appears when taking a screenshot.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable splash animation","description":"Adds an option to disable the splash animation on app startup.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable Cairo splash animation","description":"Adds an option to enable Cairo splash animation.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["7.08.54","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable OPUS codec","description":"Adds an options to enable the OPUS audio codec if the player response includes.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable OPUS codec","description":"Adds an options to enable the OPUS audio codec if the player response includes.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable debug logging","description":"Adds an option to enable debug logging.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable debug logging","description":"Adds an option to enable debug logging.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable external browser","description":"Adds an option to always open links in your browser instead of in the in-app-browser.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable gradient loading screen","description":"Adds an option to enable the gradient loading screen.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable landscape mode","description":"Adds an option to enable landscape mode when rotating the screen on phones.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable open links directly","description":"Adds an option to skip over redirection URLs in external links.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Flyout menu components","description":"Adds options to hide or change flyout menu components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Force hide player buttons background","description":"Removes, at compile time, the dark background surrounding the video player controls.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Fullscreen components","description":"Adds options to hide or change components related to fullscreen.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"GmsCore support","description":"Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"GmsCoreVendorGroupId","default":"app.revanced","values":{"ReVanced":"app.revanced"},"title":"GmsCore vendor group ID","description":"The vendor\u0027s group ID for GmsCore.","required":true},{"key":"CheckGmsCore","default":true,"values":null,"title":"Check GmsCore","description":"Check if GmsCore is installed on the device and has battery optimizations disabled when the app starts. \n\nIf GmsCore is not installed the app will not work, so disabling this is not recommended.","required":true},{"key":"PackageNameYouTube","default":"app.rvx.android.youtube","values":{"Clone":"com.rvx.android.youtube","Default":"app.rvx.android.youtube"},"title":"Package name of YouTube","description":"The name of the package to use in GmsCore support.","required":true},{"key":"PackageNameYouTubeMusic","default":"app.rvx.android.apps.youtube.music","values":{"Clone":"com.rvx.android.apps.youtube.music","Default":"app.rvx.android.apps.youtube.music"},"title":"Package name of YouTube Music","description":"The name of the package to use in GmsCore support.","required":true}]},{"name":"GmsCore support","description":"Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"GmsCoreVendorGroupId","default":"app.revanced","values":{"ReVanced":"app.revanced"},"title":"GmsCore vendor group ID","description":"The vendor\u0027s group ID for GmsCore.","required":true},{"key":"CheckGmsCore","default":true,"values":null,"title":"Check GmsCore","description":"Check if GmsCore is installed on the device and has battery optimizations disabled when the app starts. \n\nIf GmsCore is not installed the app will not work, so disabling this is not recommended.","required":true},{"key":"PackageNameYouTube","default":"app.rvx.android.youtube","values":{"Clone":"com.rvx.android.youtube","Default":"app.rvx.android.youtube"},"title":"Package name of YouTube","description":"The name of the package to use in GmsCore support.","required":true},{"key":"PackageNameYouTubeMusic","default":"app.rvx.android.apps.youtube.music","values":{"Clone":"com.rvx.android.apps.youtube.music","Default":"app.rvx.android.apps.youtube.music"},"title":"Package name of YouTube Music","description":"The name of the package to use in GmsCore support.","required":true}]},{"name":"Hide Recently Visited shelf","description":"Adds an option to hide the Recently Visited shelf in the sidebar.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide Shorts dimming","description":"Removes, at compile time, the dimming effect at the top and bottom of Shorts videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide account components","description":"Adds options to hide components related to the account menu.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide action bar components","description":"Adds options to hide action bar components and replace the offline download button with an external download button.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide action buttons","description":"Adds options to hide action buttons under videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":true,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide comments components","description":"Adds options to hide components related to comments.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide feed components","description":"Adds options to hide components related to feeds.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide feed flyout menu","description":"Adds the ability to hide feed flyout menu components using a custom filter.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide layout components","description":"Adds options to hide general layout components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide layout components","description":"Adds options to hide general layout components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide navigation buttons","description":"Adds options to hide buttons in the navigation bar.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide overlay filter","description":"Removes, at compile time, the dark overlay that appears when player flyout menus are open.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide player buttons","description":"Adds options to hide buttons in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide player flyout menu","description":"Adds options to hide player flyout menu components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide player overlay filter","description":"Removes, at compile time, the dark overlay that appears when single-tapping in the player.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide recommended communities shelf","description":"Adds an option to hide the recommended communities shelves in subreddits.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hook download actions","description":"Adds support to download videos with an external downloader app using the in-app download button.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Layout switch","description":"Adds an option to spoof the dpi in order to use a tablet or phone layout.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"MaterialYou","description":"Applies the MaterialYou theme for Android 12+ devices.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Miniplayer","description":"Adds options to change the in app minimized player, and if patching target 19.16+ adds options to use modern miniplayers.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Navigation bar components","description":"Adds options to hide or change components related to the navigation bar.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Navigation bar components","description":"Adds options to hide or change components related to the navigation bar.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Open links directly","description":"Adds an option to skip over redirection URLs in external links.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Open links externally","description":"Adds an option to always open links in your browser instead of in the in-app-browser.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Overlay buttons","description":"Adds options to display overlay buttons in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"IconType","default":"bold","values":{"Bold":"bold","Rounded":"rounded","Thin":"thin"},"title":"Icon type","description":"The icon type.","required":true},{"key":"BottomMargin","default":"2.5dip","values":{"Default":"2.5dip","None":"0.0dip","Wider":"5.0dip"},"title":"Bottom margin","description":"The bottom margin for the overlay buttons and timestamp.","required":true},{"key":"ChangeTopButtons","default":false,"values":null,"title":"Change top buttons","description":"Change the icons at the top of the player.","required":true}]},{"name":"Player components","description":"Adds options to hide or change components related to the player.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Player components","description":"Adds options to hide or change components related to the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Premium icon","description":"Unlocks premium app icons.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove background playback restrictions","description":"Removes restrictions on background playback, including for kids videos.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove background playback restrictions","description":"Removes restrictions on background playback, including for music and kids videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove subreddit dialog","description":"Adds options to remove the NSFW community warning and notifications suggestion dialogs by dismissing them automatically.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove viewer discretion dialog","description":"Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove viewer discretion dialog","description":"Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Restore old style library shelf","description":"Adds an option to return the Library tab to the old style.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Return YouTube Dislike","description":"Adds an option to show the dislike count of songs using the Return YouTube Dislike API.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Return YouTube Dislike","description":"Adds an option to show the dislike count of videos using the Return YouTube Dislike API.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Seekbar components","description":"Adds options to hide or change components related to the seekbar.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Settings for Reddit","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Settings for YouTube","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"InsertPosition","default":"@string/about_key","values":{"Parent settings":"@string/parent_tools_key","General":"@string/general_key","Account":"@string/account_switcher_key","Data saving":"@string/data_saving_settings_key","Autoplay":"@string/auto_play_key","Video quality preferences":"@string/video_quality_settings_key","Background":"@string/offline_key","Watch on TV":"@string/pair_with_tv_key","Manage all history":"@string/history_key","Your data in YouTube":"@string/your_data_key","Privacy":"@string/privacy_key","History \u0026 privacy":"@string/privacy_key","Try experimental new features":"@string/premium_early_access_browse_page_key","Purchases and memberships":"@string/subscription_product_setting_key","Billing \u0026 payments":"@string/billing_and_payment_key","Billing and payments":"@string/billing_and_payment_key","Notifications":"@string/notification_key","Connected apps":"@string/connected_accounts_browse_page_key","Live chat":"@string/live_chat_key","Captions":"@string/captions_key","Accessibility":"@string/accessibility_settings_key","About":"@string/about_key"},"title":"Insert position","description":"The settings menu name that the RVX settings menu should be above.","required":true},{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Settings for YouTube Music","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Shorts components","description":"Adds options to hide or change components related to YouTube Shorts.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"SponsorBlock","description":"Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as non-music sections.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"SponsorBlock","description":"Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as sponsored content.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"OutlineIcon","default":false,"values":null,"title":"Outline icons","description":"Apply the outline icon.","required":true}]},{"name":"Spoof app version","description":"Adds options to spoof the YouTube Music client version. This can remove the radio mode restriction in Canadian regions or disable real-time lyrics.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Spoof app version","description":"Adds options to spoof the YouTube client version. This can be used to restore old UI elements and features.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Spoof streaming data","description":"Adds options to spoof the streaming data to allow video playback.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Swipe controls","description":"Adds options for controlling volume and brightness with swiping, and whether to enter fullscreen when swiping down below the player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Theme","description":"Changes the app\u0027s theme to the values specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"DarkThemeBackgroundColor","default":"@android:color/black","values":{"Amoled Black":"@android:color/black","Catppuccin (Mocha)":"#FF181825","Dark Pink":"#FF290025","Dark Blue":"#FF001029","Dark Green":"#FF002905","Dark Yellow":"#FF282900","Dark Orange":"#FF291800","Dark Red":"#FF290000"},"title":"Dark theme background color","description":"Can be a hex color (#AARRGGBB) or a color resource reference.","required":true},{"key":"LightThemeBackgroundColor","default":"@android:color/white","values":{"White":"@android:color/white","Catppuccin (Latte)":"#FFE6E9EF","Light Pink":"#FFFCCFF3","Light Blue":"#FFD1E0FF","Light Green":"#FFCCFFCC","Light Yellow":"#FFFDFFCC","Light Orange":"#FFFFE6CC","Light Red":"#FFFFD6D6"},"title":"Light theme background color","description":"Can be a hex color (#AARRGGBB) or a color resource reference.","required":true}]},{"name":"Toolbar components","description":"Adds options to hide or change components located on the toolbar, such as toolbar buttons, search bar, and header.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Translations for YouTube","description":"Add translations or remove string resources.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"CustomTranslations","default":"","values":null,"title":"Custom translations","description":"The path to the \u0027strings.xml\u0027 file.\nPlease note that applying the \u0027strings.xml\u0027 file will overwrite all existing translations.","required":true},{"key":"SelectedTranslations","default":"ar, bg-rBG, de-rDE, el-rGR, es-rES, fr-rFR, hu-rHU, it-rIT, ja-rJP, ko-rKR, pl-rPL, pt-rBR, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW","values":null,"title":"Translations to add","description":"A list of translations to be added for the RVX settings, separated by commas.","required":true},{"key":"SelectedStringResources","default":"af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu","values":null,"title":"String resources to keep","description":"A list of string resources to be kept, separated by commas.\nString resources not in the list will be removed from the app.\n\nDefault string resource, English, is not removed.","required":true}]},{"name":"Translations for YouTube Music","description":"Add translations or remove string resources.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"CustomTranslations","default":"","values":null,"title":"Custom translations","description":"The path to the \u0027strings.xml\u0027 file.\nPlease note that applying the \u0027strings.xml\u0027 file will overwrite all existing language translations.","required":true},{"key":"SelectedTranslations","default":"bg-rBG, bn, cs-rCZ, el-rGR, es-rES, fr-rFR, hu-rHU, id-rID, in, it-rIT, ja-rJP, ko-rKR, nl-rNL, pl-rPL, pt-rBR, ro-rRO, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW","values":null,"title":"Translations to add","description":"A list of translations to be added for the RVX settings, separated by commas.","required":true},{"key":"SelectedStringResources","default":"af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu","values":null,"title":"String resources to keep","description":"A list of string resources to be kept, separated by commas.\nString resources not in the list will be removed from the app.\n\nDefault string resource, English, is not removed.","required":true}]},{"name":"Video playback","description":"Adds options to customize settings related to video playback, such as default video quality and playback speed.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Video playback","description":"Adds options to customize settings related to video playback, such as default video quality and playback speed.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Visual preferences icons","description":"Adds icons to specific preferences in the settings.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"RVXSettingsMenuIcon","default":"extension","values":{"Custom branding icon":"custom_branding_icon","Extension":"extension","Gear":"gear","ReVanced":"revanced","ReVanced Colored":"revanced_colored"},"title":"RVX settings menu icon","description":"The icon for the RVX settings menu.","required":true}]},{"name":"Watch history","description":"Adds an option to change the domain of the watch history or check its status.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]}] \ No newline at end of file From 40082ce972a4bfaf8b7d69366649766ac9b02c38 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Fri, 6 Sep 2024 19:42:21 +0900 Subject: [PATCH 46/53] fix(BytecodeUtils): due to structural limitations of ReVanced Patcher, incorrect classes may be retrieved --- .../kotlin/app/revanced/util/BytecodeUtils.kt | 34 +++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/app/revanced/util/BytecodeUtils.kt b/src/main/kotlin/app/revanced/util/BytecodeUtils.kt index e2c42f0ac0..2c4f5d906e 100644 --- a/src/main/kotlin/app/revanced/util/BytecodeUtils.kt +++ b/src/main/kotlin/app/revanced/util/BytecodeUtils.kt @@ -604,13 +604,35 @@ fun MutableMethod.getTargetIndexWithReferenceReversed(startIndex: Int, reference return -1 } -fun MethodFingerprintResult.getWalkerMethod(context: BytecodeContext, index: Int) = - mutableMethod.getWalkerMethod(context, index) +fun MethodFingerprintResult.getWalkerMethod(context: BytecodeContext, offset: Int) = + mutableMethod.getWalkerMethod(context, offset) -fun MutableMethod.getWalkerMethod(context: BytecodeContext, index: Int) = - context.toMethodWalker(this) - .nextMethod(index, true) - .getMethod() as MutableMethod +/** + * MethodWalker structural limitations cause incorrect class to be found + * + * MethodReference to find in YouTube 18.29.38: + * 'Lng;->d(Lou;)Z' + * + * Class found by MethodWalker in YouTube 18.29.38: + * 'Lcom/google/android/gms/maps/model/LatLng;' + * + * The reason this error occurs is because [BytecodeContext.findClass] checks whether className is included or not + * + * In ReVanced Patcher 19.3.1: + * fun findClass(className: String) = findClass { it.type.contains(className) } + * + * (Class 'Lcom/google/android/gms/maps/model/LatLng;' is returned because class 'Lcom/google/android/gms/maps/model/LatLng;' contains keyword 'Lng;') + * + * As a workaround, redefine MethodWalker here + */ +fun MutableMethod.getWalkerMethod(context: BytecodeContext, offset: Int): MutableMethod { + val newMethod = getInstruction(offset).reference as MethodReference + return context.findClass { classDef -> classDef.type == newMethod.definingClass } + ?.mutableClass + ?.methods + ?.first { method -> MethodUtil.methodSignaturesMatch(method, newMethod) } + ?: throw PatchException("This method can not be walked at offset $offset inside the method $name") +} fun MutableClass.addFieldAndInstructions( context: BytecodeContext, From fd021fdf150ee9376c9359925d632e2ee3ba1c47 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Fri, 6 Sep 2024 19:46:48 +0900 Subject: [PATCH 47/53] chore(YouTube/Settings): re-arrange strings --- src/main/resources/youtube/settings/host/values/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml index f8b974915e..a3f41b233c 100644 --- a/src/main/resources/youtube/settings/host/values/strings.xml +++ b/src/main/resources/youtube/settings/host/values/strings.xml @@ -604,12 +604,12 @@ Note: Autoplay can be changed in YouTube settings: Settings → Autoplay → Autoplay next video" Suggested video end screen is shown. - Hide zoom overlay - Zoom overlay is hidden. - Zoom overlay is shown. Skip autoplay countdown If autoplay is enabled, the next video will play immediately. If autoplay is enabled, the next video will play after the countdown ends. + Hide zoom overlay + Zoom overlay is hidden. + Zoom overlay is shown. Action buttons From 3d331a70fbb042dddacc96ad02663f2eaf36b71d Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sat, 7 Sep 2024 03:36:21 +0900 Subject: [PATCH 48/53] feat(YouTube Music): rename `Enable Cairo splash animation` to `Disable Cairo splash animation` https://github.com/inotia00/ReVanced_Extended/issues/2366 --- .../music/misc/splash/CairoSplashAnimationPatch.kt | 13 ++++++------- .../music/settings/host/values/strings.xml | 4 ++-- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/main/kotlin/app/revanced/patches/music/misc/splash/CairoSplashAnimationPatch.kt b/src/main/kotlin/app/revanced/patches/music/misc/splash/CairoSplashAnimationPatch.kt index 4a5cec5bc2..a5df7926a4 100644 --- a/src/main/kotlin/app/revanced/patches/music/misc/splash/CairoSplashAnimationPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/misc/splash/CairoSplashAnimationPatch.kt @@ -2,7 +2,6 @@ package app.revanced.patches.music.misc.splash import app.revanced.patcher.data.BytecodeContext import app.revanced.patcher.patch.BytecodePatch -import app.revanced.patcher.patch.PatchException import app.revanced.patcher.patch.annotation.CompatiblePackage import app.revanced.patcher.patch.annotation.Patch import app.revanced.patches.music.misc.splash.fingerprints.CairoSplashAnimationConfigFingerprint @@ -12,14 +11,14 @@ import app.revanced.patches.music.utils.settings.SettingsPatch import app.revanced.util.literalInstructionBooleanHook @Patch( - name = "Enable Cairo splash animation", - description = "Adds an option to enable Cairo splash animation.", + name = "Disable Cairo splash animation", + description = "Adds an option to disable Cairo splash animation.", dependencies = [SettingsPatch::class], compatiblePackages = [ CompatiblePackage( "com.google.android.apps.youtube.music", [ - "7.08.54", + "7.06.54", "7.17.51", ] ) @@ -34,17 +33,17 @@ object CairoSplashAnimationPatch : BytecodePatch( CairoSplashAnimationConfigFingerprint.result?.let { CairoSplashAnimationConfigFingerprint.literalInstructionBooleanHook( 45635386, - "$MISC_PATH/CairoSplashAnimationPatch;->enableCairoSplashAnimation()Z" + "$MISC_PATH/CairoSplashAnimationPatch;->disableCairoSplashAnimation(Z)Z" ) SettingsPatch.addSwitchPreference( CategoryType.MISC, - "revanced_enable_cairo_splash_animation", + "revanced_disable_cairo_splash_animation", "false" ) } - ?: throw PatchException("WARNING: This patch is not supported in this version. Use YouTube Music 7.08.54 or later.") + ?: println("WARNING: This patch is not supported in this version. Use YouTube Music 7.06.54 or later.") } } diff --git a/src/main/resources/music/settings/host/values/strings.xml b/src/main/resources/music/settings/host/values/strings.xml index 6145609b89..51e591a927 100644 --- a/src/main/resources/music/settings/host/values/strings.xml +++ b/src/main/resources/music/settings/host/values/strings.xml @@ -378,8 +378,8 @@ Some features may not work properly in the old player layout." Replaces the domain that is blocked in some regions so that playlist thumbnails, channel avatars, etc. can be received. Change share sheet Change from in-app share sheet to system share sheet. - Enable Cairo splash animation - Enables Cairo splash animation when the app starts up. + Disable Cairo splash animation + Disables Cairo splash animation when the app starts up. Enable debug logging Prints the debug log. Enable debug buffer logging From cdbd3496a128ccc5172b0a8d1bd7c5759f2a3219 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sat, 7 Sep 2024 03:37:25 +0900 Subject: [PATCH 49/53] feat(YouTube Music/Custom branding icon for YouTube Music): add patch option `RestoreOldSplashIcon` https://github.com/inotia00/ReVanced_Extended/issues/2368 --- .../branding/icon/CustomBrandingIconPatch.kt | 64 +++++++++++++++--- .../branding/icon/CustomBrandingIconPatch.kt | 7 +- .../kotlin/app/revanced/util/ResourceUtils.kt | 17 ++++- .../drawable-hdpi/action_bar_logo_release.png | Bin 0 -> 1987 bytes .../splash/drawable-hdpi/record.png | Bin 0 -> 1837 bytes .../splash/drawable-large-hdpi/record.png | Bin 0 -> 2701 bytes .../splash/drawable-large-mdpi/record.png | Bin 0 -> 1828 bytes .../splash/drawable-large-xhdpi/record.png | Bin 0 -> 3570 bytes .../splash/drawable-mdpi/record.png | Bin 0 -> 1285 bytes .../splash/drawable-xhdpi/record.png | Bin 0 -> 2398 bytes .../splash/drawable-xlarge-hdpi/record.png | Bin 0 -> 3545 bytes .../splash/drawable-xlarge-mdpi/record.png | Bin 0 -> 2398 bytes .../splash/drawable-xxhdpi/record.png | Bin 0 -> 3545 bytes 13 files changed, 71 insertions(+), 17 deletions(-) create mode 100644 src/main/resources/music/branding/youtube_music/splash/drawable-hdpi/action_bar_logo_release.png create mode 100644 src/main/resources/music/branding/youtube_music/splash/drawable-hdpi/record.png create mode 100644 src/main/resources/music/branding/youtube_music/splash/drawable-large-hdpi/record.png create mode 100644 src/main/resources/music/branding/youtube_music/splash/drawable-large-mdpi/record.png create mode 100644 src/main/resources/music/branding/youtube_music/splash/drawable-large-xhdpi/record.png create mode 100644 src/main/resources/music/branding/youtube_music/splash/drawable-mdpi/record.png create mode 100644 src/main/resources/music/branding/youtube_music/splash/drawable-xhdpi/record.png create mode 100644 src/main/resources/music/branding/youtube_music/splash/drawable-xlarge-hdpi/record.png create mode 100644 src/main/resources/music/branding/youtube_music/splash/drawable-xlarge-mdpi/record.png create mode 100644 src/main/resources/music/branding/youtube_music/splash/drawable-xxhdpi/record.png diff --git a/src/main/kotlin/app/revanced/patches/music/layout/branding/icon/CustomBrandingIconPatch.kt b/src/main/kotlin/app/revanced/patches/music/layout/branding/icon/CustomBrandingIconPatch.kt index e1f67deb89..e206022ddb 100644 --- a/src/main/kotlin/app/revanced/patches/music/layout/branding/icon/CustomBrandingIconPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/layout/branding/icon/CustomBrandingIconPatch.kt @@ -9,8 +9,10 @@ import app.revanced.patches.music.utils.settings.ResourceUtils.setIconType import app.revanced.util.ResourceGroup import app.revanced.util.Utils.trimIndentMultiline import app.revanced.util.copyResources +import app.revanced.util.getResourceGroup import app.revanced.util.patch.BaseResourcePatch import app.revanced.util.underBarOrThrow +import org.w3c.dom.Element import java.io.File import java.nio.file.Files @@ -71,17 +73,11 @@ object CustomBrandingIconPatch : BaseResourcePatch( "record" ).map { "$it.png" }.toTypedArray() - private val launcherIconResourceGroups = mipmapDirectories.map { directory -> - ResourceGroup( - directory, *launcherIconResourceFileNames - ) - } + private val launcherIconResourceGroups = + mipmapDirectories.getResourceGroup(launcherIconResourceFileNames) - private val splashIconResourceGroups = largeDrawableDirectories.map { directory -> - ResourceGroup( - directory, *splashIconResourceFileNames - ) - } + private val splashIconResourceGroups = + largeDrawableDirectories.getResourceGroup(splashIconResourceFileNames) private val AppIcon = stringPatchOption( key = "AppIcon", @@ -110,6 +106,20 @@ object CustomBrandingIconPatch : BaseResourcePatch( required = true ) + private val RestoreOldSplashIcon by booleanPatchOption( + key = "RestoreOldSplashIcon", + default = false, + title = "Restore old splash icon", + description = """ + Restore the old style splash icon. + + If you enable both the old style splash icon and the Cairo splash animation, + + Old style splash icon will appear first and then the Cairo splash animation will start. + """.trimIndentMultiline(), + required = true + ) + override fun execute(context: ResourceContext) { // Check patch options first. @@ -117,6 +127,7 @@ object CustomBrandingIconPatch : BaseResourcePatch( .underBarOrThrow() val appIconResourcePath = "music/branding/$appIcon" + val youtubeMusicIconResourcePath = "music/branding/youtube_music" // Check if a custom path is used in the patch options. if (!availableIcon.containsValue(appIcon)) { @@ -160,6 +171,39 @@ object CustomBrandingIconPatch : BaseResourcePatch( context.copyResources("$appIconResourcePath/monochrome", resourceGroup) } + // Change splash icon. + if (RestoreOldSplashIcon == true) { + var oldSplashIconNotExists: Boolean + + context.xmlEditor["res/drawable/splash_screen.xml"].use { editor -> + editor.file.apply { + val node = getElementsByTagName("layer-list").item(0) + oldSplashIconNotExists = (node as Element) + .getElementsByTagName("item") + .length == 1 + + if (oldSplashIconNotExists) { + createElement("item").also { itemNode -> + itemNode.appendChild( + createElement("bitmap").also { bitmapNode -> + bitmapNode.setAttribute("android:gravity", "center") + bitmapNode.setAttribute("android:src", "@drawable/record") + } + ) + node.appendChild(itemNode) + } + } + } + } + if (oldSplashIconNotExists) { + splashIconResourceGroups.let { resourceGroups -> + resourceGroups.forEach { + context.copyResources("$youtubeMusicIconResourcePath/splash", it, createDirectoryIfNotExist = true) + } + } + } + } + // Change splash icon. if (ChangeSplashIcon == true) { // Some resources have been removed in the latest YouTube Music. diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/branding/icon/CustomBrandingIconPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/branding/icon/CustomBrandingIconPatch.kt index 1b32eb836e..956b6f3203 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/branding/icon/CustomBrandingIconPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/branding/icon/CustomBrandingIconPatch.kt @@ -11,6 +11,7 @@ import app.revanced.util.Utils.trimIndentMultiline import app.revanced.util.copyFile import app.revanced.util.copyResources import app.revanced.util.copyXmlNode +import app.revanced.util.getResourceGroup import app.revanced.util.patch.BaseResourcePatch import app.revanced.util.underBarOrThrow @@ -73,12 +74,6 @@ object CustomBrandingIconPatch : BaseResourcePatch( "avd_anim" ).map { "$it.xml" }.toTypedArray() - private fun List.getResourceGroup(fileNames: Array) = map { directory -> - ResourceGroup( - directory, *fileNames - ) - } - private val launcherIconResourceGroups = mipmapDirectories.getResourceGroup(launcherIconResourceFileNames) diff --git a/src/main/kotlin/app/revanced/util/ResourceUtils.kt b/src/main/kotlin/app/revanced/util/ResourceUtils.kt index 6a7a21458d..38ddccbd3f 100644 --- a/src/main/kotlin/app/revanced/util/ResourceUtils.kt +++ b/src/main/kotlin/app/revanced/util/ResourceUtils.kt @@ -63,6 +63,12 @@ fun String.startsWithAny(vararg prefixes: String): Boolean { return false } +fun List.getResourceGroup(fileNames: Array) = map { directory -> + ResourceGroup( + directory, *fileNames + ) +} + fun ResourceContext.copyFile( resourceGroup: List, path: String, @@ -98,16 +104,25 @@ fun ResourceContext.copyFile( * * @param sourceResourceDirectory The source resource directory name. * @param resources The resources to copy. + * @param createDirectoryIfNotExist Whether to create a new directory if it does not exist. */ fun ResourceContext.copyResources( sourceResourceDirectory: String, vararg resources: ResourceGroup, + createDirectoryIfNotExist: Boolean = false, ) { val targetResourceDirectory = this["res"] for (resourceGroup in resources) { resourceGroup.resources.forEach { resource -> - val resourceFile = "${resourceGroup.resourceDirectoryName}/$resource" + val resourceDirectoryName = resourceGroup.resourceDirectoryName + + if (createDirectoryIfNotExist) { + val targetDirectory = targetResourceDirectory.resolve(resourceDirectoryName) + if (!targetDirectory.isDirectory) Files.createDirectories(targetDirectory.toPath()) + } + + val resourceFile = "$resourceDirectoryName/$resource" inputStreamFromBundledResource( sourceResourceDirectory, diff --git a/src/main/resources/music/branding/youtube_music/splash/drawable-hdpi/action_bar_logo_release.png b/src/main/resources/music/branding/youtube_music/splash/drawable-hdpi/action_bar_logo_release.png new file mode 100644 index 0000000000000000000000000000000000000000..59c91455af269db79943e281f61c84799a1c9d05 GIT binary patch literal 1987 zcmV;!2R!(RP)Uo6 zs;unV<{Qbc)D1-EB|;j2CZGjq1=>oeZCdPO-=RjBKV_W;!R~y>WrndD_tHd-2WPRv)77iE<7te(E0wP7Vp)GA{ zTOaz;XRQ#^2((=UYYvD1&V=D5K&Oy3OdtBvr@oCL&reL-rLe(hxO@)G5=1prU;5Oy zG34!ust1~X2ulouGv~l;gB}dkw=o!tF&SGPo|=vq;kbmMl(`zqi*PK^p8hnY%{2=R zgNqC*k2)MKFve=nO*(2mAJ%diHjq54F&e8eSA!%Sv|I;Ux`G%$EvT_x51Sji7%EE6 zov^csoQ`WrjoH{skd!v8d~y=V$puMb$a=VGsOel-Cw*AuW4N6SYl|r>k{S+#MRGYI zCrsR85?dBYU}tWZ@&px=*u}e5fu-%p&??i#Uj>U zU-h@ws*-VwQLN=WJslsxITZ=6sVQQoog)7CzlitVi^$HQktAJk`z}uNLI1WZ8Ph|?oZ&#OeSQ-p#YWDKl~w-IP9=wTVj`kVg%I# z3rvQOl9%!iKXfvk`bT+Cuy5)LWv*#Fxi$I$VH*y)%GZSCwXEvp)+TJ(gZ1U=0se2X~a@XrGe9@z7r>G zIgkrE`P%&R8k~`0+%17(Vppo|*TfacRG_P?Jl}io9ZKxDV-i8H!s&(Pp?YAxPvNd4 zf?Q1|P3qrVP)vpmi#Xwgf#*zS+-^($``;vjsBV@M)sJiIO!g$P<`It)uFS-1mtlbJwJ0da0wWtINf{ME0F!B|qNji1Uz zL4sz%gmMjA!%^IcXG)MVb7sW9{#ANgaoTC2#G;F)6!ym#CCE)%*#ueWQY=@b6I58n zj*ZxS^Wrx5-8U3tN!hp-BWU4V6J#PN0Z{rzxmj6lGOnc2W zZJ&=xIycL_8L_z#4AL@RfS~1Ip%3An#WpY*Skb`2i>1JT*N$_!U!OWbcRKaZDeREeZvsef$B^SjC_6xlY*UzgZ*EivM zIgpEDHR;|9;nYlv_7>J_q-Za8Ihb3~zO5NnnFgaWdF^xm{T9LmlKa;_(_y683sn=p zD2>1(FTurGy*Lzr;&998#i7G0^B0FN!9`*(b<#uTx=(_gD)j2v)h%hYaza)dR$0D! z7IUFeYawX?mU;_rso>!S6TAK&Ua;-WH``Mi1t#P)6|0!V-rv(5eLsS|D{}nBT;&VL zU)(>r$#f^~(y#j4Yu@|9@fZ76R%14HF{G1Inxv(Ufjw(s;xU6n`GrV1#l@}95yl5vWHayNiD!a zz#13B&(kyRY%^qIGB#s0)&z2rQ-D5T`L$u2=i$o1{;+^C7>h9(TUJYX>c<7zfklAT zPJ)BqfZMA5X$pPn+Zc=`;iCc-eVV#~C4e;!hkc)g%PTqbw5<<)=~LgvQ2D1OeQxRj z76(>sgN^?S-+cvcPJN}MYC~Jv)V4nKrO&jvrurXMY6d!i1%PFMHGmELYhMMwejF}( z2kv(no(jWF(UGiG6D$%5QzjsL&5rbaAM-W9xN8*<_5E~!QEYuOa`e`(9RB|)7Ni# zc3;l%L^#;o28;;xRB!^zjj*Fd&ndK4`GVNw3itTI!bbtLUAQe0_*f-zu zXMtO{-{&tr;~dqy@m9XwZ-z4I*!GELJl|=D9d-M1y`u1AlSvjpOv%!j$e2& z_o-9a%=l{VI<6QV8MB(Fp!8)&T0B5+&mH6Q(XI!QT2_NGF8FoE#jByYL9fiRpo?C5}3CDqB9Pg?T-Q8Fh_lp% z(`d9@iMOl!k2o`$Uo;&Cc~euajbo0^tq+NhP1PB@iYQe{=X==9vM$Nn1_FlS76s=d zs1B)kjTLcLBAM}0*Z(Bk`>ivcVzK9Fj`zZ_aq9<2mUfe(*RNOKGV!p$>ZYJQG12u^+Lu%%}OQQ9@FReD?=RN z-Ld`B_>nNvHX?g?5BvLz(l2|i3QzKoBoFTTl8ME?4C(+}k`3<=k8clTw7OP?(ENwh z#DE;{HE&KHMy+=7<5`#qEMwUm2(g@3c$IiRn(3+WdqEr_N`iT=jm2vL83>0XM_qUa z#ff`DPL)T(*$>8VRH3;5q@O=)fyP#_9Mhdc=e$F-HXSd?%$}U7UI23tps!_k9KT2f z;+u$U)I;MSY|U_%wb5->O;#7>J~$+ZE$WJ)dCqOtQSjsyU^9;WK!T_~W?)Y$h~>uu z1k|!C;o>?WafLuT`1!&2t(Uu!ID8jgl zj}YYHciXn4b%JL%4xO`DCfHIh96EF0I8<7c1PSlq0lp=E0$PzYpDe@ACmBZ9(i**=Obt^zRPmyV;1#l^3(m39y*E{;!q z`4+^2Y(p!8RMkpV`R`C6e)x(-`n1v=z^Y+|dSj1o6%zsLO(BdoOL0Un%(F|tIm*kT zi_#U}XiY+cpx$VTy8Z8z5xyPy0s;NK=_(SE8_hI{9dW)G{9$8oP55u^G}HYRrf5-G z%fX{71+>UB7VdyyADX=u#n;SeD0zbyc8*!ml^$U*rn2~<-wm_4y!97aRz5owv91^N zY;YV1`J981_zr~y%CYVs+%GDSvbHdf+@uiRZyxNL7Fx^dE~gnPkxSl(){vdPTl`IY zSvN6}?gN_xJ=YyzYSvg&kp<2(slDTjwn^M4gVo6)#U-Gl#jz9J2`34}tS4nAW1dML zYgCke_(#7~;%W&mHb0qD#o1~)5E_DynGTA^rW8YqHfwC|ZKO$vu2$-a%Si(xBk`yQ zG4%d%t)La?ecwsFgRR=FUdP$FDvDCa!jRET)m5|5(I9lYXK}>i)^r>!Qbl&FtFS#$ znOO?K+6&b;`f^rs^R1^3Y4~}8{Ss_TU-?Jmk0ljFw9Jdj#_2w7wd7_#ZXY2PxL78% z=E;J&M5>5oeb&8YcCx1y!&VX>+4F?)wUF#cb)o(Ipli!i1ER=GbmA99&F3OpbuMskXt%Ceztfkzd)VqMA<(zTB4=n)6fC#z)k;j=Oi5&YI#5 z)K=JIJt2Gdg^sBI!C%-D`7UjIzwCI5?9$x>4ez?`-?;48Z)GgLWt8m|sorOnvJB(5 TuGn|EJS4!v#0FJsj7|6#L=jnX literal 0 HcmV?d00001 diff --git a/src/main/resources/music/branding/youtube_music/splash/drawable-large-hdpi/record.png b/src/main/resources/music/branding/youtube_music/splash/drawable-large-hdpi/record.png new file mode 100644 index 0000000000000000000000000000000000000000..90472fa9f851d8986fd15ab696099f7a9602047e GIT binary patch literal 2701 zcmb7G`#;l<8(kzRY`Nc(46BSyZeuZWk1#^+vm)8#8e(b`&8@j5%8*JWHo4yt8WD*U z(QTWdxnxKYdVhWXgztGh=bWF;bAEbWuP4pf(MD{a!afiPBxYx8>9XU?|8cM2j%rEY zNAK7;7aFC-GOKqM^})FSvc7l3Bi?h4g>s}Y?kbmi#Z^WNS~dh`I)#~U&eX@Ksut9 z*rJQv%fQ>zFm{&cn|T%@^K^#%CUe8E%S(~xf68FfMbWgkAs)E)zFJcnGujGH)yrtn z+meY5vxDZLryA#=Pw|YTmz-Ql9%P?|tp_A@I#Sp@OYo#})0iN)_<*tRYvy&ziZ*z*UyO?uA6T%JYGm^p~Pxt)Afyq zrT3+7H8Tx|f~D6Gb9cr$Q0>sI=~3$-)22<2RHc?Ht}o;_ zWS4&M-kW#DnCBQHz`Y)$EiT5d9jWWfL5pv=tEWbN4fa|z>#b|LzOQED$KC#8eTH{q zO(el=ZLTL2fzkAv)!GszgV`M%td_o;cxE3}Q)ij<>=$B6V&NQs${h+wsDJ!j}`z4Hg2!$ErM~k{OQogy2c95*4u!{BlsrPeh465|`!0GXD`*#Mumr2yhjJLTXQ!%P>96gAs+{Vdlx#9^@VFj9({C3O zP#MUtpT9s18>KdIre?f&8B!e%ZyF#j(Uj^mHnbf%A<<;L*{2qq$H)o4UGdYL+0G}X zCnZC#I*ZWjWqVsJTn;KSILs$hVtI%;ew&GjD`#fWwA_buCFaq}y{VFhGJ=cp zBX8g7{=}|YTMus9cEu&D!M>;Jz-AK9bL2M;{5s&8u-u*IZNFy_CX-tdw~KXy*-ou` zxQER=*xf^+PDCB$EtSw)&V(I#-p=RZ6Jsx5fAklwu@m2;YiJaaD^X`!`%xkz%{($4 zkN;+);p6#oFU15llLGU$v>ttf=3gB1g`nskK?#Q7 z#G%`$g3=6BQBH)Yaf5L|T+FM6c#^3`Xuj$4wxOMp;8`aBSd_eVG4YSdAa6gUZREwM zkIiq#O~!Yv@}oWQA2Ns5MJ*jOVOY{iG^}OzSR@`*f_zIKpggyUz$39Shuk8?~t#|5)x5g6wxithSGG zF53iE!oIh15I7&i40Y+9Xvn~sre)^eX)~};M>l}r6HKP#=6d^Yh;#g^}$cTt9 z6^qr}R)N_b!`#&EE+>yYRD|Q|MEkRpGvdRAzc~0oN+npB<=v$ml?#Osv@DBTY__Dt zlCCES-s|oTI(n%~alzH=p}O+U9n2iTJzl$@ifH!YTOT)?Eu##ID%FzTx6n%X=ln2` z=9Py}oRT}DE-E+o+0jolM0l;`usgj~-(=lHzcOuCW9O>&6q6o!{Wu*w+i^KXV%>3U zcy{;=E_949TlB&J$;s)b5*1NNfj`7~DN;rn0jzdaWTW_rT2+SbwRLz?VZ+=NP1HyP zIF2?cYDR5NEPPOCZxAdnH4tbL_2uF~z52`CyP+g%G6U!=T1_Q<{xB77!dsgg`h99e zx&Ko7rX*ATPY&u|&AT$Z#k0T=bjjZlTtaw)QBK`CQo}|s*Fs?soLa50VHjnyRl;7P ztTa*c#BQz|J4G_}JiuT2Qw+1i1g7xow>Z^rgJ9nC`>#F%)2a>$yRVKotnikYuyASP-rg18Pdy6vqj=vqcl5f7h@rpGBa_5py?}*ZW)_#PwK5ol zE_1o`a#?sbsJ{XTnT?e}pdWngI=m{=yAJ(n+(5w$R7gS>RE!zYZA9Z|y`LV>6~oWL zF8y?>#v*CiIPO-bhEi^{fsk<8JWjY@8U_Jmmu^nu;o)Fm)K0y4@u}#*a*EhtGOJ$Dn`8t2Xd0x-^d0x*i&-=$Ghf2NxhiSt=AQ0TendE-p zwSONJa-d}eW~>7Xrn-7M0S5qq{u$9|fIt9JQvnVK;PC)F9-vbH?kOw;5C|Y30AMfx zu^3oi2PP(fni@Uw)6s)>s&VdQ4-lS^N)6xv;zBf|W?~(|X~=XL0)gcHT}Y0ex4|Qm zQ;s0Kl9K>B+E}_*>I5*pgr(74!nKd6CU2v$ajG#9nd4kJwsTm_keox~Gh&!!smcDp z;SZswG^7P8+^rw5L}-`sUU>nmM|gx}mzC~v@h zZtL7Z3vas?K_yJh|LzZ%6E;&6OqE!@9l$QTZr|eu$XKtY zwh!wJkA1y`CV+x6xss9o94D|0!t2Z&de&hc1opS2Hc{Ju4nZSw(y`yaLgFFpGq27y z=5|&&xagnzIJkc@#jc{exZNV?v)OIkPo*|hSKd!MLUa1p-o9nw zVo$JQo_g>5F@n1^ecj@DU+1;9$ohXlG`H1!itjbzFLQ?sGV@;48^s4SA7cBy5c#*> zhnGN0*aZP6UD+zTri!ci4Vxs)l{21fSwlp(?paDD#}?&NFO?@^8ujEWjZ6`}XPGJX z%249Bw95nw|Hd63?K{mF^)z31qrlIJ^>H=hN_b)^MB79aBeV}KEFvsbPQfV}Sk=us z4QPgX#uY<-zBGJ#%Km(tpWCtsR-Y8GkAkwO7+386aoJVV61Zs=VkyEW_kDac8QFrf zCSu-gjfbe_Z#Eqxmg-0AxCBv3=$Eu@z+0tj1eW@!06DxS$Q_+jU;S(ztffQfw8V_m zUM+pEUk2evm6`ku?t%}gZ0WIR_KE3ACy3Qb*HceTc)P}~D$>fr4hQBVZz&*tARSLA z5oO4^^y!2 z$}fqRp(`Jq?61DwGHf{mR|PaU=i^oMrfI6N=`M1sIZFPVYi1sU&E+dYIo3FFQk&Xe z1iGWKO+^i?ikNj&Z1g3H^)NVaXSmOdpX8adB2VPEu5UMKr+k-yX+d|9bMv@Vi>5w` zq$XQfNts9s#>^i?lT$72kyZ5NsurH2g=4}yl^dC~97*RuM!7;c^O6=e-)|u_?PPY$ zx+;-(q(rxvdw87uMoxS&SJrPD7i8)~as!E6DeBwx1rP){RnfsNA#|vLUUw!{|CJRt zjP;>AlkvzrEWMaC9pl3&l1D;QvE=NXpTIHSDl;AwgLa-a=dT;2czPKf5r+WEzH?dU zCYQpe9_!E?a+myMBtvc{X+EGpyGsL=(Ri}#8(kqyu_w6)b$y*}aD1cGx=1?7O;>N5 z{Ug!2*h4p@qwS80i=_y>sQK{4A)meAm;CA6Tei$tqGuRJ2$LoCRQYXyjmakGb(HBz ztJCgu&|N1~m*Rdy^8YRkX(#VyGFG9L9)cKa4;Tkf44y{2r5 zhB1wmC>A$7qAnlV-7o0o$qd)V{#7kDlC?RSsArcvxVZPz-oF!%)wze8XAa1&TT?`q zGknxqJr^V6xgaag%sUTTFqB~~kkEyXp|YE5OoDHS-25h6pUP6?D0d~@8T(~0JB8-u z9kRebn`-#+&{iFh-kEgcWyR_*BC86gAIGN>B98B7EcHCOFgD@51_?LV247rz6Y!h| zrT;kyo9hAfWq}zBalXTj$Vsfb*JCVcZm@M1)mpCHMVu&|$#n>QRv~<2lD8{frWqI> P>=4MsiA-uH2BiHT=+aeg literal 0 HcmV?d00001 diff --git a/src/main/resources/music/branding/youtube_music/splash/drawable-large-xhdpi/record.png b/src/main/resources/music/branding/youtube_music/splash/drawable-large-xhdpi/record.png new file mode 100644 index 0000000000000000000000000000000000000000..711c10127217b869a4e578c7338ce0538e0f8842 GIT binary patch literal 3570 zcmb7{`9BkmAIG;`!`NJNu2NpmwfH5olNO}4FLH691f=&8q%RqIvP#KV(E2t^o|ZXjrMOpi00>B`Ezs07MiIj;K-wvGU0LoX~ETGuf|Ur2@97t>a9J-YrfDq5HzoiMyPR@G>pVDUHtBuIhR*N-PzF)!D%%{&sKHJO&AKAp9`!4Lio5s&e+XbW79K zyp`o%owiEIbZ3Z~3@sILyY;)$(+kg;h8%I@!KG|!q961el zD1IS8Lf=Qvcmy%sk(QXv>SvjFu2>bey7qumSXEZvE7YBu>_lQtx~1$|k?;0X;*iNR zW?OZKRYx#c)S3g`UAPA1oZ`WWgt8L)rNRuk=LGDzAN*8sX6;6d&H$yoS)@uBTY_!1 z;jDMTvaB3#QYA!-Gbr0-1=Ik;e+sBxh%lx5g?@JFI%9$VsC!gUuZB%$)yID2>~y}x z;d%+{&gkpE`p2)jhQeozU9@eU!^qg=`2FbKkdVDf(H^CO-3>hdQ^zdXDg{6evZ z`+E{=4@_kwPMbDuQXr4&#^c4w8T1t1Wr6VT7oz26#<+L5%}>yk187DO@t;|&#s)X=Q>mOQQSA$)BNbdn^_ry zl$m4H$L5m|OmZ$sHamyXG{AdfK*}c|mvVf3q~D)QzSXz*+jML=vKL^_dHC^Y^~|Wgan|oBk5&FB}(-YUVN! z7$vn8&9ir+bkfgKjE8j=!|)G!b*2%aDU`k_@yYhjVx{@BUxdrYwlLFG;(H7|MRAaX zzUy$17@DIn@PJ`S`3Th;sLR-tp>Fm(+tLQsIl?LKR&O>V49R_OG(8=C+|nSUygR^L z5>q(Sz)6&r2hX{C=hqtrC{PADyDD*|npTV@ z7;XiKSz*cTY4YFLBnkk=@3~MU+=nIytuG}RVvX9;!VyY0U|7RK5{VBnu3f)rS6mKt zPWSK-`OclDuluARZ)WPwwZs-S<5+TQ-z#^6(v25HV6p7g!xEP$C%Y-3=&K~mu*I$P&Lwkz?dQNOa=Z0?O-)`be6Y~Y7m*-2WI?38@3D%kw^+*b zYzn@;et=+3$DHovNnS2ckF^EsC;tMAh8~u>q^yREWPV&U-KBETz8?oQt_cc>&Kh)m zD%FU(2qNyD-JNb}>|b62wa~~eu8z%#J+jH9ewIafgLRd0grtw^KpC7FiLsebMLADN zU*xf1V-S1HGA#slE^Dt8`~&lGScBLq5un+<0|pQFd}5izTflpvcCvh50=5X9V7;bV8Hz^H(B-Thqz4*Lt{&3tHV#C?UUFxAIT zlS1HKsJ2=N05X@9yLmAmnkg06Y{@%t{>WtVgX-0qxyez#7N1CpgI9T<_5yQbnq_R7 zy49W@T??d&vl%%hG7P}y*Gw&w)Nxn>Um?}&GFP58WM!S z8CAF^ZyBw!h*9sEO)C>Hfo>2l8a6R_K9)#8 z9+P0#Q;uM>!-z>W&DzPml2~O7Zd16ZM$j5KqyIr%Mp0MG$x_>c`4Z%gjr9<-?_Lsi zE{!O=wl@j7eXsq}H!O<|^S7nRCXwRKKHHz-KwaEQCiQFtK)8;AQhY4m4Ugt_9lU_6 z9gWcoY4w)E#xoUwE+_DW`j0x${mMw4vGry46f==9y~ieC56xtN*n1kgjxoYnCLSOP zLtk{1zEkH>L<#IO7l6E7qJ(eG)G!o~^*+I)jdnpYTMQW4=rQ+Nhdpha%V{5eXj$wF>;yFd2YrlDL}SiCCJ ze5s-?I4F20GDzc(slJ2S7JL8<1z#x|GAY7c@|MsR)*7{wqWPHXgH-VjYf z8OOPknQ~U7SrrDhv`d4(X(r7?1EO>_Zx%}mX`l@n9C6=RMvBJEV>hj!7*p>ZJk!PH zu>Bn_T+=`X>0!v8Te@OQ#aqahmzDSCXEjVu7Gq$@6%7iR*K8hvdwAwotv-2cERXa- zTjy~NM9w?k3ikARxlz#K=6m=Z^UOmcu+{xR6YV1Q$QZwTW& zjJaaUs!v+{DrVs~<6g01;>J_8~OM8oo#H#10Pxr8Ac~VFE-0Q(R%d){b=vVISHXOOlFe zt%b1DEp=ASBpwgb4DH&RhF!1~FrPTlRJn8%(*=AxHP(f5KCGNiMP%v6&9MI-lekh=V4gY~yu|EeVqA6<_xQj;7oO zfOp5@CXY%od=@>D<0jTWg~@r4c(3ra5$9B1)P4C?k=Yo5YWtyF_Q1kKP{h-Z%W600 z8k_L}?+2}FlIfD~*J&QuvSh;8$h{Kopp3}hZiVYFRHL)(Pvi=N_05jD3FqFtqqn}a nnA<-PIjJTK;PyG}eskz_{J0X<-ckSes{&Y<+M3{vykh?c?P0dd literal 0 HcmV?d00001 diff --git a/src/main/resources/music/branding/youtube_music/splash/drawable-mdpi/record.png b/src/main/resources/music/branding/youtube_music/splash/drawable-mdpi/record.png new file mode 100644 index 0000000000000000000000000000000000000000..23d6fddd048ddb9482beef30138e913e4cf31963 GIT binary patch literal 1285 zcmV+g1^W7lP)cikdXfn5dSbR|IpC?|Ns9`Q2*fI{~#d$@bLejp#NZC|FE!`ddFx0000qm zQchC<5I|6Xa4@jY|M0+&U?8C2amvpOz5Jn020RaQZJ>dI4 ze=_Rvn^e!^BM%ooJef=sm8X zaiPcbE=gvnO2`7fi7F#I6c$vrWLRZihE?`uA=#y{Ux64{`XVOlxWE;WeG;)h29g1? ztm+51N;Y&%x;wHTCab-5{cpP4@X`R1l9r|%`#r{LB0b^B2sV}KA@g)Dib5N~AEtV) z7AfUW-D=fu+?q3mUl6A4ws_s-?+?oVpGfms%n4I&p_0UD=dEdk@l6Zk`^)YqDb4pk zbd6cVLR=Kxag3(=A)AaER$vv*JqxpH4H}l~RcfIlTBQ$T;A~uAuF&f;rcNunIvWWJ z4N&0_%mmohrydFnPyyLj7*V*3gUaaO!#HOO6l0=I97Li54b41L=LYunC##Lpj24Jk72JzvT-1Utl1h- zdn1tPyUj|y=uG|C8lNu5gsJ`?_db8$RE~U&h_l5@5vG3C&83`ZrIF=4f|VOvKs`~A zj%DmIsycb4A`;TuI$#>hhO~GN!#loC;f+(XqywTCucW5s$8AGBm+h;UQsPR6NGTgK z#D!Og*75D%!s28>e6mX{98B>!m0ej9I(mxFsqD#Opn@{{xdNsCk)PbSiTy4N5$StX z;W}sV?Z*!jruKh|g~?vZ+C@08ApFy|GVw vO~RmviIb$h>--6>=lfCmjqhjfslfdMP?wYSbB$#j00000NkvXXu0mjf!mE1s literal 0 HcmV?d00001 diff --git a/src/main/resources/music/branding/youtube_music/splash/drawable-xhdpi/record.png b/src/main/resources/music/branding/youtube_music/splash/drawable-xhdpi/record.png new file mode 100644 index 0000000000000000000000000000000000000000..ff4651b1709a3963faf8eb121ee514f8ea449ce9 GIT binary patch literal 2398 zcmV-k38D6hP)u)X|A2u1z`+0i|Nrpt{~#d$prHTY;Qvri|IpC?U||1{kpD0+|FE#=4lREG000qm zQchC&&V!ZZi9xgxHpg z;$LQTLdo@sd+6AO%+?!jM;(^Jgca?ZFmMC5YLL}Jg*}aF>C$UB$ke?!?_6qWXmvOg}M<;ls(<~cNEj^N(C!5CkJp1 zi)Aqv6w8eywmKNhM6jjosWXh4V4*>bI0ccw5M{56fn7mn$lU_?42CFsgDr|6YX=@L z%PD9Lo+yHQD=F}BS!sftliO9WQ%CUiAo!RBTtQ(t{_I7$L29@N|4hBPEw>88P_(6K zCbwQpWNZiq{{Jh_^o5hsxV4r|X5!~$$inj0mgFd?%9p;T{#vHIVx%9fZ9$l`Sle7J zXRVwI;_dEysQkI@n%L^vv%l}rDv^FKaiS}-OSxpc{(zuvU6Zz4Tjyu3r1;A{O42o& z)rlz_gXQDTw~c#odwvE8$yqGIbDp^OLe# zF0Q!lbvKkd_}I3F_QvPA9-dZ_3N!qaw(*bej6cP4z;bw8q5c@VWf~gOzPC(l-ME5a zK&yUU{Ip=wH#sa`$eEk>qOQVB3nu0F7hIF!n^mr<Hxk3u(=Fc{A{P%a$GtPsaSZtz_lFTLUikXO|kwRQg?>+0uQ9TdQt=L zzJMkgOjgDL^#xf2#Ndes;4nW^VbY;u3?KxN0{TA>l?4v$ zBvPWVNViDaH%I_&lJ#vYKVBBe;0LLK+myJFA~T$t8JJi7u`(_tETqf~$0CDK>FrWT zvg)!NkX-W2d(iv#7h=}Cw32dOcFd8%NuRM!L@Pu|HMiDS!EMytiyesxucjg<%A*i` z)r!S5hlGZTk4PsHf|a(rl=$wXi7e}(UT6(&MQUIJsL1Hokec|Ul)zz5R+y@BfuyWK zDS{jD4B=GD8byE?+$+nF*)4G@WsOpkgEb2~e*~dwoEYVc9Cf|Uy=MlnDH8Py?! zN?oG>s&@_591Mtxny6kc?YpNJJ(Vp?)wpwlMAaIq&Hbt3HOk{rQ4@79Dp`Xn+UOk~ zn<_Flmj|Ybr>=WZO@s=&`00VwqV*4~fuK4@RMlOnKqsR#6*ro~6`fmZK*il{ZVQ8X zcF@cpDHZ7Ej`O%eL-h)3;R~e#o%ai>g`dEjQ79E?;|iEJexh#7M5#c_ePZ1h&<}Kg zicTLLxSsGlQ>mog11dHt_GB*i)n^AH7yuO;I|d+uZ%V2*@n8vTzr>GKtDK2cU`XZw z75jsh0}bhS<;4V_I3yE3HHeG>z4mIt0d#L$Mm2eO0k>D*&)R`uqa#${#-JnjRG+o~ z5Ev5-zy(3{pjJWE)tQ&| zJ@{kKNAatO5~(-fR!#qSJEPr(K^TfkTQ@05$y$O*%M$qizuZ$EP$ZWftoprGuk09T zxW~i+b44r2vr!el+WthgiUDydQ$w;sy*=toRYIQ4FV=0Jx~lVegZhSc=9l}izL6c2 z^9HzK&WvSOmaI)t)lcr(SgHnUR7x+Gk$`V}pC8SHtxAq0OWDYT)awf@)M0qTW?^|% zgO6^r*#=!Ajx&f$1fDPETZ;w2eOU>P0n`Vp@i2k{ge7=S#4QZ`f9Z}35MZ!9vGf8n za_OT>JKA{dZK(H+Th?!#&|Ybmg+<8-P0&Y7yi9aiTofqoOE-$7#CBOoR4g1u!m%-X zyDTJXw*bdDzE#tyYmfrBm_U9mJrIDnT0mZZ*T}I2b+6!zl|z=*<|#*A6oTu|T$WB< z0~9zS${j+K<_=_adGD8%i&C+-Gd;eGk*?miA9hG8Iz4na_Ym{$E) z>m!_PB?i0>z9MhaZ7RyeSuhS*;v58r)Hs6@?5s5^XJ=Vcc{?kpD%;r>Ru!<9^}pTc~0pEgmt2+_yaih zCIR=O61!qNB1r6~5R{dta1Hp#z_+k0P*!f2Bs|SY>l@|K!ct;GHK2`vCrNB! z^Jt4CKCLj6k*>l4U65F6QnZ?QpT0=B#G9>z0eFe`**IYkiMM!%Qg;l+<;_x(a*M>X zw!C9lVb8DQMXOI3T_Bbc|4Fh>m`0!_%NBoDr1I`Cr9{NcRYWoKP7aTH1I}}1GKeU1 QWB>pF07*qoM6N<$g4B82dUHku0U`5!pueEF;E}3_~;&QQ5Z{OUaU%lJ&Lk%2w904O3B( zHL}gvvb4ol(Ht$N(7% zT%Q6ll}hp$4a*9%^_?iSX{`vF0)LCoizR_orOPNP`)U;w{v)-Tn!ROezWqIvP1 zWg5TFoSJftd!HMwWrhiM{IJiL&(#DGsv>nbbduzZUpltnh_4y6n%uCMW^(-^z6$AJkgddi?^t@YjW#+PXcDg*&;EL*b z@c<}ff9y_oe)#1qb`ycC*#@%@VJ$z^VV`#kQ=zvTRBM-1Ix7!X_qXj?OI7a<=W_IV z$e!C?zP&2cn1wKFKm5?>cRKlt#}OZ9EOXV4*Y5G7OL2=dj)~YqFPW?6BE1h2>`79W z-J+syq`%p4GOu+>RkT9oC@pHTT8cnaVPw6hhew*rzwMTO1(F_ec-J@gM4kbSIl0XT z{<+vcfx&bFxkswzRXDm-R~u9)PL$6AIu;i6=CEA(zQuTXHMd<|%$Lr& zQ#BP0Y;)!h&+*hSz|`zwOIm_yjv2&=QRw&~&q9Kk`=9TwSn$l(ordWC?FdV+%~OTs z9>hi~WE&R$6h?MAe4F*@`Ne!Z@~G^28qq@dRl5^@*iVbizo6p;s$?V|EXLaqwa=wz z$`m&KeUT)1w@!iAP~LD<#q)T*>D;>uv*~+t5mEb2%vP)i?HKk35L_*JtIlgv+}h{8 zRth=d7!eHEuG6uwHb=V^_$mwJ$H zs|rHNyt{s4#*o{xo+am-x!GVyhO5=vN&Moq_XAh@Yj1AK4zA7?;j}oI=g7oWy?&I^ zwDh;RM&EZ;e!T~%lUr{fH>E;0jIT&UE8bw9Hp;0W6E!usyZ)|SQ1`1kH(Zl`LjWpV z5_fKupEfccq?n^6qat_9d%AfJV|-*p-CmU?5ZO6Hk>&mxQ%>pN_WQ!oPk01yF4w_2 z@Xr=3QNS;=NwDA=->e9$qa>er8E-z?*yrG2_}XG8it_PU^wQe->wuw=s?mv|(%?kS^yya;D7N0tv|gRp{mqzhn3)h{s72Tr#Wckgtb>_XhFIZVvYztoCaJ zI2UZ+3fhPAQD=Gkdk7A&ST~M%z;N$xVtRoA?ePOOhvq|nAI>;XnYg2BglWUYjDv;% z*H8%wYYHF(=Gs@+&g?lFVsiVe66`?ribzCkVfO`O4#86y{nid$mPoIjw zXd+o}Yh9k(^8AybJ{QLMc#ix2ubgf}#!?LJK2U!o=p#vq6SE_{==ogqvIOp+G5m|Y z>Tgs(m!Gp)p&*C*$@^>RG8$$7qKUVuV(T-ApyUpPeb%HemGvxCGsi4nYm-l8q$EJN z7*PDH4tc~n@V!VVoIP6d2Suu?vN zdg_|w2x-dikg`y5A-SB@r8OdG(>*N&O(W$gfNn2FSnFbnHi4(qw05v7^wsqEvp+#F zY<)vh4>;1W3ExDPtZTK4qxa(y!b#=+Dgs!#+10n;NKn{d9MS=R?V0qjzgH|v&_4C= zrn`S1Cw{;ohDN3@j0!K~A2rJcD}lzM(=LD0#Hwhwo>~oFq}VD?T?_TIFaB z@95if_w(Y{n7Vj(1}*k_cN0))&>`0AeO*%H3ROkP##JeR< z0f#-iA&8v`zdpC-jTLT>Q}Ml(tAWN3mJg@NSYV*qR!h^$pdZO?m9T}1am>&sW0yld zrZ_GaOnnnV-lE*-q9k%UNn?w&uwL&y-%riaeH1Hq=qwhBj*fE~D1E%u;kQlEeF<2z z;1IFip<~9G?R38s7d$`{1Hlz}#Ha_;?9kaLF+QMfy!E>NhSKW`I1BsP=(aa={;icU zm7MqK1?fK>U0j*4w#2g6eiFcW{{-?Ss?_}IGU?aAIR_0QP$mxRA2Ua`kj08s;)hx6**-7iygi)I05Or_r!w5D=BUh z-r6Af@6Nh3_u`MITv}o zDD8FeTF^d8h@ih_d-K}4#|Lh+Z^5}jN%}OCRj%m7<-|6|puM9|le<+h(GjX2=U-7e zH74ouI!Q|Hg)sH3M!SnZK-Imoya7vUsoVj6;LM%On)w&2kiub1Tg44<$(3qz%_`n! zYiB+Hhg!b^svlR$6V~Lc+$JX?Y*7G*_ejC4Z4mVAM=^rbPMGI86%mhFuwKf}P#QI&tUyWZHTm%GC6hMMq4#rPBR-7j;G|LVEKW}x zwGLOr5|G<~%)lxE!XY)nCRA^%clWkghlTxdSMFyB5m9ZXIor!e62+%tyB&1U5rfHN zqpF$%6x$*P~h}1)J%ZQ z9~P?n3Na^xnuL(kyw6%5vBN3@yF0HIaKBaaJ=y{Le(r10Hsdk!ul$p)xnMoKuUm>o z?k7d1@geB-7rg@Q0>QsKuIpILJdTBU_h?34Pi0!T)lcM*#lchbidYJx4EY8Nm#6ZH zGWSmsTQc#7(=pN0%gn)c@yA&|TVl-Ni6W9b7Oqt#fbE1}orXF3MEsenKqu;b;(jrHq|+dCqi^Pigf8u(lZVKnT-I`t$!1OVwQx45(g{8v*aIO&SyXRrmd`Vu@YwoYb=jV3w6F(t7%cR7tk}kCep(y z_u4Y~A~qbYMexlafTR?%OtNJ(0RJ#Al-u-xuKOLDUQ9%8 zhZ=6YMK?lC<((1EHow0h2b~e6M<@iRNamXPIzKB0qAR1_U-&d{v-cBPw3#|mXrnwJ;QPw%iw$!5pQgP@KU0%rWG1A{m-sFV zVYs@y!fSLjFx%-jG-wK{Cyprt5<=MW*G&lw$b%7 literal 0 HcmV?d00001 diff --git a/src/main/resources/music/branding/youtube_music/splash/drawable-xlarge-mdpi/record.png b/src/main/resources/music/branding/youtube_music/splash/drawable-xlarge-mdpi/record.png new file mode 100644 index 0000000000000000000000000000000000000000..ff4651b1709a3963faf8eb121ee514f8ea449ce9 GIT binary patch literal 2398 zcmV-k38D6hP)u)X|A2u1z`+0i|Nrpt{~#d$prHTY;Qvri|IpC?U||1{kpD0+|FE#=4lREG000qm zQchC&&V!ZZi9xgxHpg z;$LQTLdo@sd+6AO%+?!jM;(^Jgca?ZFmMC5YLL}Jg*}aF>C$UB$ke?!?_6qWXmvOg}M<;ls(<~cNEj^N(C!5CkJp1 zi)Aqv6w8eywmKNhM6jjosWXh4V4*>bI0ccw5M{56fn7mn$lU_?42CFsgDr|6YX=@L z%PD9Lo+yHQD=F}BS!sftliO9WQ%CUiAo!RBTtQ(t{_I7$L29@N|4hBPEw>88P_(6K zCbwQpWNZiq{{Jh_^o5hsxV4r|X5!~$$inj0mgFd?%9p;T{#vHIVx%9fZ9$l`Sle7J zXRVwI;_dEysQkI@n%L^vv%l}rDv^FKaiS}-OSxpc{(zuvU6Zz4Tjyu3r1;A{O42o& z)rlz_gXQDTw~c#odwvE8$yqGIbDp^OLe# zF0Q!lbvKkd_}I3F_QvPA9-dZ_3N!qaw(*bej6cP4z;bw8q5c@VWf~gOzPC(l-ME5a zK&yUU{Ip=wH#sa`$eEk>qOQVB3nu0F7hIF!n^mr<Hxk3u(=Fc{A{P%a$GtPsaSZtz_lFTLUikXO|kwRQg?>+0uQ9TdQt=L zzJMkgOjgDL^#xf2#Ndes;4nW^VbY;u3?KxN0{TA>l?4v$ zBvPWVNViDaH%I_&lJ#vYKVBBe;0LLK+myJFA~T$t8JJi7u`(_tETqf~$0CDK>FrWT zvg)!NkX-W2d(iv#7h=}Cw32dOcFd8%NuRM!L@Pu|HMiDS!EMytiyesxucjg<%A*i` z)r!S5hlGZTk4PsHf|a(rl=$wXi7e}(UT6(&MQUIJsL1Hokec|Ul)zz5R+y@BfuyWK zDS{jD4B=GD8byE?+$+nF*)4G@WsOpkgEb2~e*~dwoEYVc9Cf|Uy=MlnDH8Py?! zN?oG>s&@_591Mtxny6kc?YpNJJ(Vp?)wpwlMAaIq&Hbt3HOk{rQ4@79Dp`Xn+UOk~ zn<_Flmj|Ybr>=WZO@s=&`00VwqV*4~fuK4@RMlOnKqsR#6*ro~6`fmZK*il{ZVQ8X zcF@cpDHZ7Ej`O%eL-h)3;R~e#o%ai>g`dEjQ79E?;|iEJexh#7M5#c_ePZ1h&<}Kg zicTLLxSsGlQ>mog11dHt_GB*i)n^AH7yuO;I|d+uZ%V2*@n8vTzr>GKtDK2cU`XZw z75jsh0}bhS<;4V_I3yE3HHeG>z4mIt0d#L$Mm2eO0k>D*&)R`uqa#${#-JnjRG+o~ z5Ev5-zy(3{pjJWE)tQ&| zJ@{kKNAatO5~(-fR!#qSJEPr(K^TfkTQ@05$y$O*%M$qizuZ$EP$ZWftoprGuk09T zxW~i+b44r2vr!el+WthgiUDydQ$w;sy*=toRYIQ4FV=0Jx~lVegZhSc=9l}izL6c2 z^9HzK&WvSOmaI)t)lcr(SgHnUR7x+Gk$`V}pC8SHtxAq0OWDYT)awf@)M0qTW?^|% zgO6^r*#=!Ajx&f$1fDPETZ;w2eOU>P0n`Vp@i2k{ge7=S#4QZ`f9Z}35MZ!9vGf8n za_OT>JKA{dZK(H+Th?!#&|Ybmg+<8-P0&Y7yi9aiTofqoOE-$7#CBOoR4g1u!m%-X zyDTJXw*bdDzE#tyYmfrBm_U9mJrIDnT0mZZ*T}I2b+6!zl|z=*<|#*A6oTu|T$WB< z0~9zS${j+K<_=_adGD8%i&C+-Gd;eGk*?miA9hG8Iz4na_Ym{$E) z>m!_PB?i0>z9MhaZ7RyeSuhS*;v58r)Hs6@?5s5^XJ=Vcc{?kpD%;r>Ru!<9^}pTc~0pEgmt2+_yaih zCIR=O61!qNB1r6~5R{dta1Hp#z_+k0P*!f2Bs|SY>l@|K!ct;GHK2`vCrNB! z^Jt4CKCLj6k*>l4U65F6QnZ?QpT0=B#G9>z0eFe`**IYkiMM!%Qg;l+<;_x(a*M>X zw!C9lVb8DQMXOI3T_Bbc|4Fh>m`0!_%NBoDr1I`Cr9{NcRYWoKP7aTH1I}}1GKeU1 QWB>pF07*qoM6N<$g4B82dUHku0U`5!pueEF;E}3_~;&QQ5Z{OUaU%lJ&Lk%2w904O3B( zHL}gvvb4ol(Ht$N(7% zT%Q6ll}hp$4a*9%^_?iSX{`vF0)LCoizR_orOPNP`)U;w{v)-Tn!ROezWqIvP1 zWg5TFoSJftd!HMwWrhiM{IJiL&(#DGsv>nbbduzZUpltnh_4y6n%uCMW^(-^z6$AJkgddi?^t@YjW#+PXcDg*&;EL*b z@c<}ff9y_oe)#1qb`ycC*#@%@VJ$z^VV`#kQ=zvTRBM-1Ix7!X_qXj?OI7a<=W_IV z$e!C?zP&2cn1wKFKm5?>cRKlt#}OZ9EOXV4*Y5G7OL2=dj)~YqFPW?6BE1h2>`79W z-J+syq`%p4GOu+>RkT9oC@pHTT8cnaVPw6hhew*rzwMTO1(F_ec-J@gM4kbSIl0XT z{<+vcfx&bFxkswzRXDm-R~u9)PL$6AIu;i6=CEA(zQuTXHMd<|%$Lr& zQ#BP0Y;)!h&+*hSz|`zwOIm_yjv2&=QRw&~&q9Kk`=9TwSn$l(ordWC?FdV+%~OTs z9>hi~WE&R$6h?MAe4F*@`Ne!Z@~G^28qq@dRl5^@*iVbizo6p;s$?V|EXLaqwa=wz z$`m&KeUT)1w@!iAP~LD<#q)T*>D;>uv*~+t5mEb2%vP)i?HKk35L_*JtIlgv+}h{8 zRth=d7!eHEuG6uwHb=V^_$mwJ$H zs|rHNyt{s4#*o{xo+am-x!GVyhO5=vN&Moq_XAh@Yj1AK4zA7?;j}oI=g7oWy?&I^ zwDh;RM&EZ;e!T~%lUr{fH>E;0jIT&UE8bw9Hp;0W6E!usyZ)|SQ1`1kH(Zl`LjWpV z5_fKupEfccq?n^6qat_9d%AfJV|-*p-CmU?5ZO6Hk>&mxQ%>pN_WQ!oPk01yF4w_2 z@Xr=3QNS;=NwDA=->e9$qa>er8E-z?*yrG2_}XG8it_PU^wQe->wuw=s?mv|(%?kS^yya;D7N0tv|gRp{mqzhn3)h{s72Tr#Wckgtb>_XhFIZVvYztoCaJ zI2UZ+3fhPAQD=Gkdk7A&ST~M%z;N$xVtRoA?ePOOhvq|nAI>;XnYg2BglWUYjDv;% z*H8%wYYHF(=Gs@+&g?lFVsiVe66`?ribzCkVfO`O4#86y{nid$mPoIjw zXd+o}Yh9k(^8AybJ{QLMc#ix2ubgf}#!?LJK2U!o=p#vq6SE_{==ogqvIOp+G5m|Y z>Tgs(m!Gp)p&*C*$@^>RG8$$7qKUVuV(T-ApyUpPeb%HemGvxCGsi4nYm-l8q$EJN z7*PDH4tc~n@V!VVoIP6d2Suu?vN zdg_|w2x-dikg`y5A-SB@r8OdG(>*N&O(W$gfNn2FSnFbnHi4(qw05v7^wsqEvp+#F zY<)vh4>;1W3ExDPtZTK4qxa(y!b#=+Dgs!#+10n;NKn{d9MS=R?V0qjzgH|v&_4C= zrn`S1Cw{;ohDN3@j0!K~A2rJcD}lzM(=LD0#Hwhwo>~oFq}VD?T?_TIFaB z@95if_w(Y{n7Vj(1}*k_cN0))&>`0AeO*%H3ROkP##JeR< z0f#-iA&8v`zdpC-jTLT>Q}Ml(tAWN3mJg@NSYV*qR!h^$pdZO?m9T}1am>&sW0yld zrZ_GaOnnnV-lE*-q9k%UNn?w&uwL&y-%riaeH1Hq=qwhBj*fE~D1E%u;kQlEeF<2z z;1IFip<~9G?R38s7d$`{1Hlz}#Ha_;?9kaLF+QMfy!E>NhSKW`I1BsP=(aa={;icU zm7MqK1?fK>U0j*4w#2g6eiFcW{{-?Ss?_}IGU?aAIR_0QP$mxRA2Ua`kj08s;)hx6**-7iygi)I05Or_r!w5D=BUh z-r6Af@6Nh3_u`MITv}o zDD8FeTF^d8h@ih_d-K}4#|Lh+Z^5}jN%}OCRj%m7<-|6|puM9|le<+h(GjX2=U-7e zH74ouI!Q|Hg)sH3M!SnZK-Imoya7vUsoVj6;LM%On)w&2kiub1Tg44<$(3qz%_`n! zYiB+Hhg!b^svlR$6V~Lc+$JX?Y*7G*_ejC4Z4mVAM=^rbPMGI86%mhFuwKf}P#QI&tUyWZHTm%GC6hMMq4#rPBR-7j;G|LVEKW}x zwGLOr5|G<~%)lxE!XY)nCRA^%clWkghlTxdSMFyB5m9ZXIor!e62+%tyB&1U5rfHN zqpF$%6x$*P~h}1)J%ZQ z9~P?n3Na^xnuL(kyw6%5vBN3@yF0HIaKBaaJ=y{Le(r10Hsdk!ul$p)xnMoKuUm>o z?k7d1@geB-7rg@Q0>QsKuIpILJdTBU_h?34Pi0!T)lcM*#lchbidYJx4EY8Nm#6ZH zGWSmsTQc#7(=pN0%gn)c@yA&|TVl-Ni6W9b7Oqt#fbE1}orXF3MEsenKqu;b;(jrHq|+dCqi^Pigf8u(lZVKnT-I`t$!1OVwQx45(g{8v*aIO&SyXRrmd`Vu@YwoYb=jV3w6F(t7%cR7tk}kCep(y z_u4Y~A~qbYMexlafTR?%OtNJ(0RJ#Al-u-xuKOLDUQ9%8 zhZ=6YMK?lC<((1EHow0h2b~e6M<@iRNamXPIzKB0qAR1_U-&d{v-cBPw3#|mXrnwJ;QPw%iw$!5pQgP@KU0%rWG1A{m-sFV zVYs@y!fSLjFx%-jG-wK{Cyprt5<=MW*G&lw$b%7 literal 0 HcmV?d00001 From 72f0970ff56b73e1f82358e22ec8cbaf489b028a Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sat, 7 Sep 2024 03:38:42 +0900 Subject: [PATCH 50/53] feat(Translations): update translation --- .../music/translations/el-rGR/strings.xml | 6 ++- .../music/translations/es-rES/strings.xml | 2 - .../music/translations/fr-rFR/strings.xml | 4 +- .../music/translations/hu-rHU/strings.xml | 2 - .../music/translations/id-rID/strings.xml | 2 - .../music/translations/in/strings.xml | 2 - .../music/translations/ja-rJP/strings.xml | 2 - .../music/translations/ko-rKR/strings.xml | 4 +- .../music/translations/pl-rPL/strings.xml | 10 ++-- .../music/translations/pt-rBR/strings.xml | 10 ++-- .../music/translations/ru-rRU/strings.xml | 2 - .../music/translations/tr-rTR/strings.xml | 2 - .../music/translations/uk-rUA/strings.xml | 4 +- .../music/translations/vi-rVN/strings.xml | 4 +- .../youtube/translations/ar/strings.xml | 26 ++++++++-- .../youtube/translations/bg-rBG/strings.xml | 19 ++++++- .../youtube/translations/el-rGR/strings.xml | 32 +++++++++--- .../youtube/translations/es-rES/strings.xml | 18 +++++++ .../youtube/translations/fr-rFR/strings.xml | 26 ++++++++-- .../youtube/translations/it-rIT/strings.xml | 32 +++++++++--- .../youtube/translations/ja-rJP/strings.xml | 21 ++++---- .../youtube/translations/ko-rKR/strings.xml | 14 ++--- .../youtube/translations/pl-rPL/strings.xml | 16 ++++-- .../youtube/translations/pt-rBR/strings.xml | 6 +++ .../youtube/translations/rename_translate.bat | 20 +++++++ .../youtube/translations/ru-rRU/strings.xml | 19 +++++++ .../youtube/translations/uk-rUA/strings.xml | 2 +- .../youtube/translations/vi-rVN/strings.xml | 52 ++++++++++++------- .../youtube/translations/zh-rTW/strings.xml | 18 +++++++ 29 files changed, 279 insertions(+), 98 deletions(-) create mode 100644 src/main/resources/youtube/translations/rename_translate.bat diff --git a/src/main/resources/music/translations/el-rGR/strings.xml b/src/main/resources/music/translations/el-rGR/strings.xml index 54243712f9..44d13ce3da 100644 --- a/src/main/resources/music/translations/el-rGR/strings.xml +++ b/src/main/resources/music/translations/el-rGR/strings.xml @@ -64,6 +64,8 @@ Απόκρυψη των αναδυόμενων παραθύρων προώθησης Premium. Απόκρυψη διαφημιστικού ανανέωσης Premium Απόκρυψη του διαφημιστικού ανανέωσης YT Premium. + Απόκρυψη ετικετών προειδοποίησης προώθησης + Απόκρυψη των ετικετών προειδοποίησης προώθησης. Αναδυόμενο μενού ρυθμίσεων Αναδυόμενο μενού μικρότερου στυλ @@ -338,8 +340,8 @@ Αντικατάσταση του domain για την φόρτωση εικόνων όπου είναι μπλοκαρισμένες σε ορισμένες περιοχές ώστε να μπορούν να ληφθούν μικρογραφίες βίντεο, εικόνες δημοσιεύσεων, κλπ. Αλλαγή μενού κοινοποίησης Αλλαγή του μενού κοινοποίησης σε αυτό του συστήματος σας αντί του YouTube. - Εφέ εκκίνησης θέματος Cairo - Ενεργοποίηση των εφέ θέματος Cairo κατά την εκκίνηση της εφαρμογής. + Απενεργοποίηση εφέ εκκίνησης θέματος Cairo + Απενεργοποίηση των εφέ θέματος Cairo κατά την εκκίνηση της εφαρμογής. Ενεργοποίηση καταγραφής σφαλμάτων Εκτύπωση του αρχείου καταγραφής σφαλμάτων. Συμπερίληψη του buffer στην καταγραφή diff --git a/src/main/resources/music/translations/es-rES/strings.xml b/src/main/resources/music/translations/es-rES/strings.xml index 1a95fa56cb..21bbd91a9b 100644 --- a/src/main/resources/music/translations/es-rES/strings.xml +++ b/src/main/resources/music/translations/es-rES/strings.xml @@ -338,8 +338,6 @@ Algunas características pueden no funcionar correctamente en la disposición de Reemplaza el dominio que está bloqueado en algunas regiones para que las miniaturas de la lista de reproducción, avatares de canales, etc. puedan ser recibidas. Cambiar la hoja de compartir Cambia la hoja de compartir en la app a la hoja de compartir del sistema. - Activar nueva animación de bienvenida - Habilita la animación de bienvenida \"Cairo\" cuando se inicia la aplicación. Activar registro de depuración Imprime el registro de depuración. Incluir búfer en registro de depuración diff --git a/src/main/resources/music/translations/fr-rFR/strings.xml b/src/main/resources/music/translations/fr-rFR/strings.xml index 3bf51b90f3..831740bdf5 100644 --- a/src/main/resources/music/translations/fr-rFR/strings.xml +++ b/src/main/resources/music/translations/fr-rFR/strings.xml @@ -64,6 +64,8 @@ Si désactivé, Les publicités en plein écran seront bloquées. (peut avoir de Masque les publicités pour YouTube Premium. Masquer la bannière \"Renouveler votre abonnement Premium\" Masque la bannière \"Renouveler votre abonnement Premium\". + Masquer la bannière d\'alerte de promotion + Masque la bannière d\'alerte de promotion. Menu déroulant Activer la boîte de dialogue compacte @@ -338,8 +340,6 @@ Certaines fonctions peuvent ne pas fonctionner sur l'ancienne mise en page."Remplace le domaine qui est bloqué dans certaines régions afin que les miniatures des listes de lecture, les avatars des chaînes, etc. puissent être reçus. Modifier la fiche de partage Remplace la fiche de partage de l\'appli par celui du système. - Activer l\'animation Cairo au démarrage - Active l\'animation Cairo lors du démarrage de l\'application. Activer le journal de débogage Enregistrer le journal de débogage. Activer les informations sur la mémoire tampon dans le journal de débogage diff --git a/src/main/resources/music/translations/hu-rHU/strings.xml b/src/main/resources/music/translations/hu-rHU/strings.xml index 874bb4c539..92c12d5db5 100644 --- a/src/main/resources/music/translations/hu-rHU/strings.xml +++ b/src/main/resources/music/translations/hu-rHU/strings.xml @@ -334,8 +334,6 @@ Előfordulhat, hogy egyes funkciók nem működnek megfelelően a régi lejátsz Helyettesíti az egyes régiókban blokkolt tartományt, így a lejátszási lista miniatűrjei, csatorna avatarok stb. fogadhatóak. Megosztási lap megváltoztatása Váltás az alkalmazáson belüli megosztási lapról a rendszer megosztási lapjára. - Betöltési animáció engedélyezése - Engedélyezi a betöltési animációt amikor az app indul. Hibanaplók engedélyezése Kiírja a hibanaplót. Hibakeresési puffer naplózásának engedélyezése diff --git a/src/main/resources/music/translations/id-rID/strings.xml b/src/main/resources/music/translations/id-rID/strings.xml index 87350e6612..fba07240a2 100644 --- a/src/main/resources/music/translations/id-rID/strings.xml +++ b/src/main/resources/music/translations/id-rID/strings.xml @@ -338,8 +338,6 @@ Some features may not work properly in the old player layout." Mengganti domain yang ke blokir di negara tertentu sehingga playlist thumbnail, channel avatar, dll bisa di terima. Ubah lembar berbagi Mengubah dari lembar berbagi dalam aplikasi ke lembar berbagi sistem. - Aktifkan animasi splash Cairo - Mengaktifkan Animasi splash Cairo ketika app dibuka. Aktifkan pencatatan debug Mencetak catatan debug. Enable debug buffer logging diff --git a/src/main/resources/music/translations/in/strings.xml b/src/main/resources/music/translations/in/strings.xml index 87350e6612..fba07240a2 100644 --- a/src/main/resources/music/translations/in/strings.xml +++ b/src/main/resources/music/translations/in/strings.xml @@ -338,8 +338,6 @@ Some features may not work properly in the old player layout." Mengganti domain yang ke blokir di negara tertentu sehingga playlist thumbnail, channel avatar, dll bisa di terima. Ubah lembar berbagi Mengubah dari lembar berbagi dalam aplikasi ke lembar berbagi sistem. - Aktifkan animasi splash Cairo - Mengaktifkan Animasi splash Cairo ketika app dibuka. Aktifkan pencatatan debug Mencetak catatan debug. Enable debug buffer logging diff --git a/src/main/resources/music/translations/ja-rJP/strings.xml b/src/main/resources/music/translations/ja-rJP/strings.xml index c4634f32ce..f0282c331b 100644 --- a/src/main/resources/music/translations/ja-rJP/strings.xml +++ b/src/main/resources/music/translations/ja-rJP/strings.xml @@ -338,8 +338,6 @@ YT Music の設定だけでなく、ReVanced Extended の設定も非表示に プレイリストのサムネイルやチャンネルアバターなどを受信できるように、一部の地域でブロックされているドメインを置き換えます。 共有メニューを変更 アプリ内共有メニューからシステムの共有メニューに置き換えます。 - Cairo のスプラッシュアニメーションを有効化 - アプリ起動時にCairo のスプラッシュアニメーションを有効にします。 デバッグログ デバッグログを出力します。 デバッグバッファログを有効化 diff --git a/src/main/resources/music/translations/ko-rKR/strings.xml b/src/main/resources/music/translations/ko-rKR/strings.xml index 1909dbe758..b651c21ad6 100644 --- a/src/main/resources/music/translations/ko-rKR/strings.xml +++ b/src/main/resources/music/translations/ko-rKR/strings.xml @@ -341,8 +341,8 @@ YT Music 설정 메뉴뿐만 아니라 ReVanced Extended 설정 메뉴도 숨겨 이미지 도메인을 변경하여 일부 국가에서 차단된 재생목록 썸네일, 채널 프로필 사진, 커뮤니티 게시물 이미지 등을 수신할 수 있습니다. 공유 시트 변경 YT Music 기본 공유 시트에서 Android 기본 공유 시트로 변경합니다.\n\n• 공유 버튼으로 바로 Android 기본 공유 메뉴를 실행할 수 있습니다. - Cairo 스플래시 애니메이션 활성화 - 앱을 시작할 때, Cairo 스플래시 애니메이션을 활성화합니다. + Cairo 스플래시 애니메이션 비활성화 + 앱을 시작할 때, Cairo 스플래시 애니메이션을 비활성화합니다. 디버그 로깅 활성화 디버그 로그를 출력합니다. 디버그 버퍼 로깅 활성화 diff --git a/src/main/resources/music/translations/pl-rPL/strings.xml b/src/main/resources/music/translations/pl-rPL/strings.xml index b5dc6b8db5..3fd0ec1e5e 100644 --- a/src/main/resources/music/translations/pl-rPL/strings.xml +++ b/src/main/resources/music/translations/pl-rPL/strings.xml @@ -64,6 +64,8 @@ Jeśli opcja jest wyłączona, pełnoekranowe reklamy są blokowane (mogą wyst Ukrywa wyskakujące okienka promocyjne Premium. Ukryj baner odnawiania Premium Ukrywa baner odnawiania Premium. + Ukryj banery z alertami promocyjnymi + Ukrywa banery z alertami promocyjnymi. Menu ustawień utworu Włącz kompaktowe dialogi @@ -251,8 +253,8 @@ Niektóre ustawienia mogą nie działać poprawnie ze starym układem odtwarzacz Komunikaty będą wyświetlane po zmianie domyślnej prędkości odtwarzania. Zapamiętuj zmiany jakości teledysku Zapisuje ostatnią wybraną jakość teledysku. - Komunikaty o zmianie domyślnej jakości filmów - Komunikaty będą wyświetlane po zmianie domyślnej jakości filmów. + Komunikaty o zmianie domyślnej jakości teledysków + Komunikaty będą wyświetlane po zmianie domyślnej jakości teledysków. Nieprawidłowe niestandardowe prędkości odtwarzania. Przywrócono domyślne wartości. Nieprawidłowe niestandardowe prędkości odtwarzania. Przywrócono domyślne wartości. Zmieniono domyślną prędkość odtwarzania na %s. @@ -338,8 +340,8 @@ Niektóre ustawienia mogą nie działać poprawnie ze starym układem odtwarzacz Zastępuje domenę, która jest blokowana w niektórych regionach, aby można było otrzymywać miniaturki playlist, awatary kanałów itp. Zmień wygląd panelu udostępniania Zmienia wygląd panelu udostępniania z natywnego aplikacji na systemowy. - Włącz animację uruchamiania aplikacji - Włącza animację ładowania aplikacji związaną z motywem Cairo podczas otwierania aplikacji. + Wyłącz animację uruchamiania aplikacji + Wyłącza animację ładowania aplikacji związaną z motywem Cairo podczas otwierania aplikacji. Włącz logowanie debugowania Wyświetla log od debugowania. Logi do debugowania buforu diff --git a/src/main/resources/music/translations/pt-rBR/strings.xml b/src/main/resources/music/translations/pt-rBR/strings.xml index bc20cf8cd4..802de6bbfc 100644 --- a/src/main/resources/music/translations/pt-rBR/strings.xml +++ b/src/main/resources/music/translations/pt-rBR/strings.xml @@ -64,6 +64,8 @@ Se estiver desativado, os anúncios em tela cheia serão bloqueados. (pode haver Oculta pop-ups de promoção premium. Ocultar banner de renovação premium Oculta o banner de renovação premium. + Ocultar banner de alerta de promoção + Oculta o banner de alerta de promoção. Menu flutuante Ativar diálogo compacto @@ -247,11 +249,11 @@ Alguns recursos podem não funcionar corretamente no layout antigo do reprodutor Adicionar ou alterar as velocidades de reprodução disponíveis. Lembrar mudança na velocidade de reprodução Lembra a última velocidade de reprodução selecionada. - Mostrar uma notificação flutuante + Exibir uma notificação flutuante Exibir uma notificação flutuante quando alterar a velocidade padrão de reprodução. Lembrar mudança na qualidade do vídeo Lembra a última qualidade de vídeo selecionada. - Mostrar uma notificação flutuante + Exibir uma notificação flutuante Exibir uma notificação flutuante quando alterar a qualidade padrão do vídeo. Velocidades personalizadas devem ser menores que %sx. Usando valores padrão. Velocidade personalizada de reprodução inválida. Usando valores padrão. @@ -281,7 +283,7 @@ Alguns recursos podem não funcionar corretamente no layout antigo do reprodutor Ativar SponsorBlock SponsorBlock é um sistema coletivo para pular partes irritantes de vídeos do YouTube. Exibir uma notificação flutuante se a API não estiver disponível - Mostra uma notificação flutuante se a API SponsorBlock não estiver disponível. + Exibe uma notificação flutuante se a API SponsorBlock não estiver disponível. Exibir uma notificação flutuante quando pular automaticamente Uma notificação flutuante é exibida quando um segmento é ignorado automaticamente. Alterar URL da API @@ -338,8 +340,6 @@ Alguns recursos podem não funcionar corretamente no layout antigo do reprodutor Substitui o domínio que está bloqueado em algumas regiões para que miniaturas para playlists, avatares de canais, etc. possam ser recebidos. Alterar menu de compartilhamento Alterar o menu de compartilhamento do app para o meno de compartilhamento do sistema. - Ativar animação inicial do Cairo - Ativa a animação inicial do Cairo quando o aplicativo é iniciado. Ativar o relatório de depuração Imprime o relatório de depuração Ativar o registro de depuração do buffer diff --git a/src/main/resources/music/translations/ru-rRU/strings.xml b/src/main/resources/music/translations/ru-rRU/strings.xml index 3e1341896a..1417269289 100644 --- a/src/main/resources/music/translations/ru-rRU/strings.xml +++ b/src/main/resources/music/translations/ru-rRU/strings.xml @@ -338,8 +338,6 @@ Заменяет заблокированный в некоторых регионах домен, чтобы можно было получать миниатюры плейлистов, аватары каналов и т. д. Изменить список \"Поделиться\" Меняет встроенное диалоговое окно \"Поделиться\" на системное. - Анимация заставки Каир - Включает анимацию заставки Каир при запуске приложения. Ведение журнала отладки Выводит журнал отладки. Ведение журналов отладки буфера diff --git a/src/main/resources/music/translations/tr-rTR/strings.xml b/src/main/resources/music/translations/tr-rTR/strings.xml index 901cd27c63..6ebe3d43c5 100644 --- a/src/main/resources/music/translations/tr-rTR/strings.xml +++ b/src/main/resources/music/translations/tr-rTR/strings.xml @@ -331,8 +331,6 @@ Eski oynatıcı düzeninde bazı ayarlar düzgün çalışmayabilir." Diğer ayarlar Resimlerin bölge kısıtlamalarını atla Bazı bölgelerde engellenen alan adını değiştirerek oynatma listesi küçük resimlerinin, kanal avatarlarının vb. alınabilmesini sağlar. - Kahire açılış animasyonunu etkinleştir - Uyuklama başlangıcında kahire açılış animasyonunu etkinleştirir. Hata ayıklama günlüğünü etkinleştir Hata ayıklama günlüğünü yazdırır. Hata ayıklama günlüklerine arabelleği kaydet diff --git a/src/main/resources/music/translations/uk-rUA/strings.xml b/src/main/resources/music/translations/uk-rUA/strings.xml index 36953cf62f..4764290f57 100644 --- a/src/main/resources/music/translations/uk-rUA/strings.xml +++ b/src/main/resources/music/translations/uk-rUA/strings.xml @@ -64,6 +64,8 @@ Приховує спливаючі вікна реклами підписки Music Premium. Приховати банер поновлення Premium Приховує банер поновлення підписки Music Premium. + Приховати рекламні сповіщення + Приховує банер рекламних сповіщень. Спливаюче меню Увімкнути компактний вигляд меню @@ -338,8 +340,6 @@ Замінює домен для зображень, заблокований у деяких регіонах, що дозволить отримувати мініатюри списків відтворення, аватари каналів тощо. Змінити діалог поширення Змінює тип вікна діалогу поширення з вбудованого до системного. - Увімкнути сплеш анімацію Каїр - Вмикає сплеш анімацію Каїр під час запуску програми. Увімкнути протоколи налагодження Виводить протокол налагодження. Увімкнути ведення журналу буфера налагодження diff --git a/src/main/resources/music/translations/vi-rVN/strings.xml b/src/main/resources/music/translations/vi-rVN/strings.xml index 5f2625b0b0..086ac17469 100644 --- a/src/main/resources/music/translations/vi-rVN/strings.xml +++ b/src/main/resources/music/translations/vi-rVN/strings.xml @@ -64,6 +64,8 @@ Nếu tính năng này tắt, quảng cáo toàn màn hình sẽ bị chặn (c Ẩn quảng cáo mua Music Premium bật lên. Ẩn quảng cáo biểu ngữ Ẩn quảng cáo biểu ngữ mua Music Premium. + Ẩn biểu ngữ thông báo khuyến mãi + Ẩn biểu ngữ thông báo khuyến mãi. Trình đơn tuỳ chọn Trình đơn tuỳ chọn thu gọn @@ -338,8 +340,6 @@ Lưu ý:\n- Tuỳ chọn này sẽ thay đổi giao diện ứng dụng, tuy nhi Thay thế miền bị chặn ở một số khu vực để có thể thu được được ảnh bìa video của danh sách phát, ảnh đại diện kênh, v. v. Thay đổi giao diện chia sẻ Chuyển giao diện chia sẻ trong ứng dụng sang của hệ thống. - Sử dụng hoạt ảnh kiểu Cairo - Sử dụng hoạt ảnh kiểu Cairo khi khởi động ứng dụng. Nhật ký gỡ lỗi Bật ghi nhật ký gỡ lỗi. Bật nhật ký gỡ lỗi bộ đệm diff --git a/src/main/resources/youtube/translations/ar/strings.xml b/src/main/resources/youtube/translations/ar/strings.xml index 792d6a02e2..9e48899b25 100644 --- a/src/main/resources/youtube/translations/ar/strings.xml +++ b/src/main/resources/youtube/translations/ar/strings.xml @@ -39,6 +39,9 @@ إخفاء تصنيف الترويج المدفوع تم إخفاء تصنيف الترويج المدفوع. يتم عرض تصنيف الترويج المدفوع. + إخفاء لافتة تنبيه الترقية + تم إخفاء لافتة تنبيه الترقية. + يتم عرض لافتة تنبيه الترقية. إخفاء بطاقات الرعاية الذاتية تم إخفاء بطاقات الرعاية الذاتية. يتم عرض بطاقات الرعاية الذاتية. @@ -291,9 +294,7 @@ المشاهدة لاحقًا صفحة البداية غير صالحة، تتم إعادة التعيين إلى الوضع الافتراضي. تعطيل المقطع الصوتي التلقائي المفروض - تم تعطيل المقطع الصوتي التلقائي المفروض. - -التقييد: لا ينطبق هذا الإعداد على فيديوهات Shorts. + تم تعطيل المقطع الصوتي التلقائي المفروض. تم تمكين المقطع الصوتي التلقائي المفروض. تعطيل التَّرْجَمَة التلقائية المفروضة تم تعطيل التَّرْجَمَة التلقائية المفروضة. @@ -323,8 +324,8 @@ يفتح زر تنزيل الفيديو الأصلي أداة التنزيل الخارجية. يفتح زر تنزيل الفيديو أداة التنزيل الأصلية داخل التطبيق. تجاوز زر تنزيل قائمة التشغيل - يفتح زر تنزيل قائمة التشغيل الأصلية أداة التنزيل الخارجية. - يفتح زر تنزيل قائمة التشغيل الأصلية أداة التنزيل الأصلية داخل التطبيق. + يتم دائمًا عرض زر تنزيل قائمة التشغيل الأصلية، وفي قوائم التشغيل العامة، يتم فتح أداة التنزيل الخارجية لديك. + إذا تم عرضه، فإن زر تنزيل قائمة التشغيل الأصلية يفتح أداة التنزيل الأصلية داخل التطبيق. اسم حزمة تنزيل قائمة التشغيل اسم الحزمة لتطبيق التنزيل الخارجي المثبت لديك، مثل YTDLnis. إصدار تطبيق وهمي @@ -493,6 +494,13 @@ تعطيل لوحات المشغل المنبثقة تم تعطيل لوحات المشغل المنبثقة تلقائيًا. تم تمكين لوحات المشغل المنبثقة تلقائيًا. + تعطيل تبديل قوائم تشغيل التشكيلة + تم تعطيل التبديل التلقائي لقوائم تشغيل التشكيلة. + "تم تمكين التبديل التلقائي لقوائم تشغيل التشكيلة عند تمكين التشغيل التلقائي. + +يمكن تغيير التشغيل التلقائي في إعدادات YouTube: +الإعدادات ← التشغيل التلقائي ← تشغيل الفيديو التالي تلقائيًا" + سيؤدي تمكين هذه الميزة إلى تعطيل التبديل التلقائي إلى YouTube Mix عند تشغيل الموسيقى أثناء تمكين التشغيل التلقائي. تعطيل تراكب السرعة "تعطيل '2x>>' أثناء الضغط باستمرار. @@ -675,6 +683,9 @@ يتم عرض قائمة الإبلاغ. إعدادات إضافية + إخفاء قائمة الإضاءة السينمائية + تم إخفاء قائمة الإضاءة السينمائية. + يتم عرض قائمة الإضاءة السينمائية. إخفاء قائمة المساعدة & الملاحظات تم إخفاء قائمة المساعدة & الملاحظات. يتم عرض قائمة المساعدة & الملاحظات. @@ -1177,6 +1188,11 @@ استعادة قائمة جودة الفيديو القديمة يتم عرض قائمة جودة الفيديو القديمة. لا يتم عرض قائمة جودة الفيديو القديمة. + تعطيل سرعة التشغيل للموسيقى + "تم تعطيل سرعة التشغيل الافتراضية للموسيقى. + +التقييد: قد لا ينطبق هذا الإعداد على مقاطع الفيديو التي لا تتضمن لافتة \"الاستماع على YouTube Music\"." + تم تمكين سرعة التشغيل الافتراضية للموسيقى. تمكين سرعة التشغيل الافتراضية لفيديوهات Shorts تنطبق سرعة التشغيل الافتراضية على Shorts. لا تنطبق سرعة التشغيل الافتراضية على Shorts. diff --git a/src/main/resources/youtube/translations/bg-rBG/strings.xml b/src/main/resources/youtube/translations/bg-rBG/strings.xml index c500bb78d7..39c14c67dc 100644 --- a/src/main/resources/youtube/translations/bg-rBG/strings.xml +++ b/src/main/resources/youtube/translations/bg-rBG/strings.xml @@ -39,6 +39,9 @@ Скриване на платените промоции Промоционалните етикети са скрити. Промоционалните етикети се показват. + Скриване на банери с известия за промоция + Банерът за известия за промоциите е скрит. + Банерът за известия за промоциите се показва. Скриване на самоспонсорирани карти Самоспонсорираните карти са скрити. Самоспонсорираните карти се показват. @@ -466,7 +469,7 @@ Бутон за гласово търсене се показва. Заменете бутона \"Създаване\" Заменете „Създаване“ с бутон за настройки. - Action à attribuer au bouton + Тип действие за назначаване на бутона "Докоснете, за да отворите настройките на RVX. Докоснете и задръжте, за да отворите настройките на YouTube." "Докоснете, за да отворите настройките на YouTube. @@ -479,6 +482,12 @@ Изскачащи прозорци на плейъра Изскачащите панели на плейъра са деактивирани. Изскачащите панели на плейъра са активирани. + Деактивирайте превключването на микс плейлисти + Автоматичното превключване на миксирани плейлисти е изключено. + "Автоматичното превключване на миксирани плейлисти е активирано, когато автоматичното пускане е включено. +Автоматичното пускане може да се промени в настройките на YouTube: +Настройки → Автоматично пускане → Автоматично пускане на следващия видеоклип" + Активирането на тази функция ще деактивира автоматичното превключване към YouTube Mix при възпроизвеждане на музика, докато автоматичното пускане е включено. Скрива бутона за скорост "Деактивирайте „Възпроизвеждане с 2x>> скорост при продължително натискане. @@ -661,6 +670,9 @@ Менюто за докладване се показва. Допълнителни настройки + Подсветка около видеото + Менюто за подсветка около видеото е скрито. + Менюто за подсветка около видеото се показва. Скриване на менюто & за помощ Менюто & за помощ е скрито. Менюто & за помощ се показва. @@ -1156,6 +1168,11 @@ Възстановете старото меню за качество на видеото Показва се старото меню за видео качество. Старото меню за видео качество е скрито. + Деактивирайте скоростта на възпроизвеждане за музика + "Скоростта на възпроизвеждане по подразбиране не се прилага за музикални видеоклипове + + Тази настройка може да не се прилага за видеоклипове, които не включват функцията „Слушане с YouTube Music“." + Скоростта на възпроизвеждане по подразбиране е активирана за музика. Променете скоростта на възпроизвеждане на Shorts Скоростта на възпроизвеждане по подразбиране се прилага за Shorts. Скоростта на възпроизвеждане по подразбиране не се прилага за Shorts. diff --git a/src/main/resources/youtube/translations/el-rGR/strings.xml b/src/main/resources/youtube/translations/el-rGR/strings.xml index 9c9d658f7e..7d8c5877d0 100644 --- a/src/main/resources/youtube/translations/el-rGR/strings.xml +++ b/src/main/resources/youtube/translations/el-rGR/strings.xml @@ -39,6 +39,9 @@ Ετικέτες προώθησης επί πληρωμή Κρυμμένες. Εμφανίζονται. + Ετικέτες προειδοποίησης προώθησης + Κρυμμένες. + Εμφανίζονται. Κάρτες αυτοχρηματοδότησης Κρυμμένες. Εμφανίζονται. @@ -287,9 +290,7 @@ Playlists Παρακολούθηση αργότερα Μη έγκυρη αρχική σελίδα, επαναφέρθηκε. Απενεργοποίηση υποχρεωτικών κομματιών ήχου - Τα υποχρεωτικά κομμάτια ήχου είναι απενεργοποιημένα. - -Περιορισμός: Αυτή η λειτουργία δεν ισχύει για τα Shorts. + Τα υποχρεωτικά κομμάτια ήχου είναι απενεργοποιημένα. Τα υποχρεωτικά κομμάτια ήχου είναι ενεργοποιημένα. Απενεργοποίηση αυτόματων υπότιτλων Οι υποχρεωτικοί αυτόματοι υπότιτλοι είναι απενεργοποιημένοι. @@ -320,8 +321,8 @@ Playlists Το κουμπί λήψης του YouTube ανοίγει το εξωτερικό πρόγραμμα λήψης σας. Το κουμπί λήψης του YouTube ανοίγει το εγγενές πρόγραμμα λήψης της εφαρμογής. Μετατροπή κουμπιού λήψης playlist - Το κουμπί λήψης του YouTube ανοίγει το εξωτερικό πρόγραμμα λήψης σας. - Το κουμπί λήψης του YouTube ανοίγει το εγγενές πρόγραμμα λήψης της εφαρμογής. + Το κουμπί λήψης λίστας αναπαραγωγής εμφανίζεται πάντα, και σε δημόσιες λίστες αναπαραγωγής ανοίγει το εξωτερικό πρόγραμμα λήψης σας. + Αν εμφανίζεται, το κουμπί λήψης λίστας αναπαραγωγής ανοίγει το εγγενές πρόγραμμα λήψης του YouTube. Όνομα πακέτου προγράμματος λήψης playlist Όνομα πακέτου της εγκατεστημένης σας εξωτερικής εφαρμογής λήψης (π.χ YTLDnis). Τροποποίηση έκδοσης εφαρμογής @@ -489,6 +490,13 @@ Playlists Αναδυόμενα παράθυρα του αναπαραγωγέα Κρυμμένα. Εμφανίζονται. + Απενεργοποίηση εναλλαγής λιστών αναπαραγωγής μίξης + Η αυτόματη εναλλαγή λιστών αναπαραγωγής μίξης είναι απενεργοποιημένη. + "Η αυτόματη εναλλαγή λιστών αναπαραγωγής μίξης είναι ενεργοποιημένη όταν η αυτόματη αναπαραγωγή είναι επίσης ενεργοποιημένη. + +Η αυτόματη αναπαραγωγή μπορεί να αλλαχτεί στις ρυθμίσεις YouTube: +Ρυθμίσεις → Αυτόματη αναπαραγωγή → Αυτόματη αναπαραγωγή επόμενου βίντεο" + Η ενεργοποίηση αυτής της ρύθμισης θα απενεργοποιήσει την αυτόματη εναλλαγή σε YouTube Mix κατά την αναπαραγωγή μουσικής ενώ η αυτόματη αναπαραγωγή είναι ενεργοποιημένη. Απενεργοποίηση διεπαφής ταχύτητας "Απενεργοποίηση του «Παίζοντας με 2x ταχύτητα» κατά το παρατεταμένο πάτημα. @@ -672,6 +680,9 @@ Playlists Εμφανίζεται. Πρόσθετες ρυθμίσεις + Μενού «Λειτουργία περιβάλλοντος» + Κρυμμένο. + Εμφανίζεται. Μενού «Βοήθεια & σχόλια» Κρυμμένο. Εμφανίζεται. @@ -1190,9 +1201,14 @@ Playlists Μενού ποιότητας βίντεο παλιού στυλ Εμφανίζεται το μενού αλλαγής ποιότητας βίντεο παλιού στυλ. Εμφανίζεται το μενού αλλαγής ποιότητας βίντεο νέου στυλ. - Εφαρμογή της ταχύτητας σε Shorts - Η προεπιλεγμένη ταχύτητα αναπαραγωγής ισχύει για τα Shorts. - Η προεπιλεγμένη ταχύτητα αναπαραγωγής δεν ισχύει για τα Shorts. + Αποτροπή αλλαγής ταχύτητας για μουσική + "Η προεπιλεγμένη ταχύτητα αναπαραγωγής δεν εφαρμόζεται για τα βίντεο μουσικής. + +Περιορισμός: Αυτή η ρύθμιση ενδέχεται να μην ισχύει για τα βίντεο που δεν περιλαμβάνουν την λειτουργία «Ακρόαση με YouTube Music»." + Η προεπιλεγμένη ταχύτητα εφαρμόζεται σε βίντεο μουσικής. + Αλλαγή προεπιλεγμένης ταχύτητας Shorts + Η προεπιλεγμένη ταχύτητα αναπαραγωγής εφαρμόζεται στα Shorts. + Η προεπιλεγμένη ταχύτητα αναπαραγωγής δεν εφαρμόζεται στα Shorts. Η προφόρτωση βίντεο παραλείφθηκε. Παράλειψη προφόρτωσης βίντεο "Παράλειψη της προφόρτωσης στην αρχή του βίντεο, για να γίνει παράκαμψη της καθυστέρησης στην εφαρμογή της προεπιλεγμένης ποιότητας. diff --git a/src/main/resources/youtube/translations/es-rES/strings.xml b/src/main/resources/youtube/translations/es-rES/strings.xml index bbcb15985d..bf7eec87f7 100644 --- a/src/main/resources/youtube/translations/es-rES/strings.xml +++ b/src/main/resources/youtube/translations/es-rES/strings.xml @@ -39,6 +39,9 @@ Limitación: la imagen de la publicación de la comunidad en pantalla completa p Ocultar etiqueta de promoción pagada La etiqueta de promoción pagada está oculta. La etiqueta de promoción pagada está visible. + Ocultar banner de alerta de promoción + El banner de alerta de promoción está oculto. + El banner de alerta de promoción está visible. Ocultar tarjetas autopatrocinadas Las tarjetas autopatrocinadas están ocultas. Las tarjetas autopatrocinadas están visibles. @@ -490,6 +493,13 @@ Mantén pulsado para abrir los ajustes de RVX." Desactivar paneles emergentes del reproductor Los paneles emergentes del reproductor automático están activados. Los paneles emergentes del reproductor automático están desactivados. + Desactivar cambio de listas de reproducción Mix + El cambio automático de listas de reproducción Mix está desactivado. + "El cambio automático de listas de reproducción Mix está activado cuando la reproducción automática está activada. + +La reproducción automática se puede cambiar en la configuración de YouTube: +Configuración → Reproducción automática → Reproducción automática del siguiente vídeo" + Al activar esta función, se desactivará el cambio automático a YouTube Mix al reproducir música con la reproducción automática activada. Desactivar superposición de velocidad "Desactiva \"Reproducir a velocidad x2\" mientras mantienes pulsado. @@ -672,6 +682,9 @@ La reproducción automática se puede cambiar en la configuración de YouTube: El menú de denunciar está visible. Ajustes adicionales + Ocultar menú del modo ambiente + El menú del modo ambiente está oculto. + El menú del modo ambiente está visible. Ocultar menú de ayuda y comentarios El menú de ayuda y comentarios está oculto. El menú de ayuda y comentarios está visible. @@ -1167,6 +1180,11 @@ Desliza hacia arriba / abajo para reproducir el vídeo siguiente / anterior.Restaurar antiguo menú de calidad de vídeo El antiguo menú de calidad de vídeo está visible. El antiguo menú de calidad de vídeo está oculto. + Desactivar velocidad de reproducción para música + "La velocidad predeterminada de reproducción está desactivada para la música. + +Limitación: Es posible que este ajuste no se aplique a los vídeos que no incluyan el banner \"Escuchar en YouTube Music\"." + La velocidad predeterminada de reproducción está activada para la música. Activar velocidad predeterminada de reproducción de Shorts La velocidad predeterminada de reproducción se aplica a los Shorts. La velocidad predeterminada de reproducción no se aplica a los Shorts. diff --git a/src/main/resources/youtube/translations/fr-rFR/strings.xml b/src/main/resources/youtube/translations/fr-rFR/strings.xml index 65dbb69d39..7ae77aaafe 100644 --- a/src/main/resources/youtube/translations/fr-rFR/strings.xml +++ b/src/main/resources/youtube/translations/fr-rFR/strings.xml @@ -39,6 +39,9 @@ Effet secondaire : Les images des posts communautaires peuvent être bloquées e Masquer la bannière \"Communication commerciale\" La bannière \"Inclut une communication commerciale\" est masqué. La bannière \"Inclut une communication commerciale\" est affiché. + Masquer la bannière d\'alerte de promotion + La bannière d\'alerte de promotion est masquée. + La bannière d\'alerte de promotion est affichée. Masquer les cartes autosponsorisées Les cartes autosponsorisées sont masquées. Les cartes autosponsorisées sont affichées. @@ -291,9 +294,7 @@ Limitations : Regarder plus tard Page de démarrage invalide, valeur réinitialisée par défaut. Désact. les pistes audio forcés - Les pistes audio automatiques forcées sont désactivé. - -Limitation : Ce paramètre ne s\'applique pas pour les Shorts. + Les pistes audio automatiques forcées sont désactivé. Les pistes audio automatiques forcées sont activés. Désact. les sous-titres forcés Les sous-titres automatiques forcés sont désactivés. @@ -324,8 +325,8 @@ Cela ne contourne pas la restriction d'âge, mais le confirme automatiquement."< Le bouton \"Télécharger\" natif ouvre votre téléchargeur externe. Le bouton \"Télécharger\" natif ouvre le téléchargeur de l\'appli. Remplacer le bouton de téléchargement de la playlist - Le bouton \"Télécharger\" natif de la playlist ouvre votre téléchargeur externe. - Le bouton \"Télécharger\" natif de la playlist ouvre votre téléchargeur de l\'appli. + Le bouton de téléchargement natif de la playlist est toujours affiché, et dans les playlists publiques, il ouvre votre téléchargeur externe. + Si affiché, le bouton \"Télécharger\" natif de la playlist ouvre le téléchargeur natif de l\'appli. Nom du paquet du téléchargeur de la playlist Nom de package du téléchargeur externe installé, telle que YTDLnis. Falsifier la version de l\'app @@ -494,6 +495,13 @@ Appuyez longuement pour ouvrir les paramètres RVX." Fenêtres pop-up du lecteur automatique Les fenêtres pop-up du lecteur automatique sont désactivées. Les fenêtres pop-up du lecteur automatique sont activés. + Désactiver le mélange des playlists mix + Le mélange auto des playlists est désactivé. + "Le mélange auto des playlists est activé lorsque la lecture automatique est activé. + +La lecture automatique peut être modifiée dans les paramètres de YouTube : +Paramètres → Lecture automatique → Lecture automatique de la vidéo suivante" + Activer cette fonction désactive le passage automatique à YouTube Mix lors de la lecture de musique lorsque la lecture automatique est activée. Désactiver le contrôle de la vitesse "Désactive '2x>>' en appuyant longuement. @@ -676,6 +684,9 @@ La lecture automatique peut être modifiée dans les paramètres de YouTube : Le menu \"Signaler\" est affiché. Paramètres supplémentaires + Masquer le menu \"Mode Ambiant\" + Le menu \"Mode Ambiant\" est masqué. + Le menu \"Mode Ambiant\" est affiché. Masquer le menu \"Aide et commentaires\" Le menu \"Aide et commentaires\" est masqué. Le menu \"Aide et commentaires\" est affiché. @@ -1170,6 +1181,11 @@ Limitations : Restaur. ancien. interface de qualité vidéo Affiche l\'ancienne interface de qualité vidéo. Masque la nouvelle interface de qualité vidéo. + Désactiver la vitesse de lecture pour la musique + "La vitesse de lecture par défaut est désactivée pour la musique. + +Limitation : Ce paramètre peut ne pas s'appliquer aux vidéos qui n'incluent pas la bannière \"Écouter sur YouTube Music\"." + La vitesse de lecture par défaut est activée pour la musique. Activ. vitesses de lecture shorts par défaut La vitesse de lecture par défaut s\'applique aux Shorts. La vitesse de lecture par défaut ne s\'applique pas aux Shorts. diff --git a/src/main/resources/youtube/translations/it-rIT/strings.xml b/src/main/resources/youtube/translations/it-rIT/strings.xml index ae66547d97..d4299c79dc 100644 --- a/src/main/resources/youtube/translations/it-rIT/strings.xml +++ b/src/main/resources/youtube/translations/it-rIT/strings.xml @@ -39,6 +39,9 @@ Limitazione: Le immagini dei post della community a schermo intero potrebbero es Nascondi l\'etichetta della promozione a pagamento L\'etichetta della promozione a pagamento è nascosta. L\'etichetta della promozione a pagamento è visibile. + Nascondi banner di avviso promozionale + Il banner di avviso promozionale è nascosto. + Il banner di avviso promozionale è visibile. Nascondi le schede auto promozionali Le schede auto promozionali sono nascoste. Le schede auto promozionali sono visibili. @@ -273,7 +276,7 @@ Limitazioni: Esplora canali Predefinita Esplora - Gaming + Giochi Cronologia Libreria Video piaciuti @@ -295,7 +298,7 @@ Limitazioni: I sottotitoli automatici forzati sono attivati. Disabilita l\'animazione all\'avvio L\'animazione di avvio è disabilitata. - L\'animazione di avvio è abilitata. + L\'animazione di avvio è attivata. Attiva la schermata di caricamento gradiente La schermata di caricamento gradiente è attivata. La schermata di caricamento gradiente è disattivata. @@ -315,12 +318,12 @@ Questo non aggira la restrizione di età. La accetta solamente in automatico."Camuffa i dpi per usare alcune interfacce da telefono. Attiva l\'interfaccia da tablet Camuffa i dpi per usare alcune interfacce da tablet. - Sovrascrivi il pulsante di download video + Sovrascrivi il pulsante per scaricare i video Il pulsante nativo per scaricare il video apre il tuo scaricatore esterno. Il pulsante nativo per scaricare il video apre lo scaricatore nativo. - Sovrascrivi il pulsante per scaricare una playlist - Il pulsante nativo per scaricare una playlist apre il tuo scaricatore esterno. - Il pulsante nativo per scaricare una playlist apre lo scaricatore nativo. + Sovrascrivi il pulsante per scaricare le playlist + Il pulsante nativo di download della playlist è sempre visualizzato, e nelle playlist pubbliche, apre il tuo scaricatore esterno. + Se visualizzato, il pulsante nativo di download della playlist apre lo scaricatore nativo. Nome del pacchetto dello scaricatore di playlist Nome del pacchetto dello scaricatore esterno installato, come YTDLnis. Camuffa la versione dell\'app @@ -414,7 +417,7 @@ Alcuni componenti potrebbero non essere nascosti" Nascondi il pulsante Shorts Il pulsante Shorts è nascosto. Il pulsante Shorts è visibile. - Nascondi la pagina Iscrizioni + Nascondi il pulsante Iscrizioni Il pulsante Iscrizioni è nascosto. Il pulsante Iscrizioni è visibile. Nascondi le etichette della barra di navigazione @@ -489,6 +492,13 @@ Tocca e tieni premuto per aprire le impostazioni di RVX." Disabilita i pannelli popup del riproduttore I pannelli popup del riproduttore automatico sono disabilitati. I pannelli popup del riproduttore automatico sono abilitati. + Disabilita interruttori delle playlist miste + L\'interruttore automatico delle playlist miste è disabilitato. + "L'interruttore automatico delle playlist miste è abilitato quando la riproduzione automatica è attivato. + +La riproduzione automatica può essere modificato nelle impostazioni di YouTube: +Impostazioni → riproduzione automatica→ riproduzione automatica video successivo" + Abilitando questa funzionalità si disabiliterà l\'interruttore automatico a YouTube Misto quando si riproduce musica mentre la riproduzione automatica è attivata. Disattiva la sovrapposizione della velocità quando tieni premuto "Disabilita la funzione '2x>>' tenendo premuto. @@ -671,6 +681,9 @@ Impostazioni → Riproduzione automatica → Riproduzione automatica del video s Il menu Segnala è visibile. Impostazioni aggiuntive + Nascondi il menu Modalità Ambient + Il menu Modalità Ambient è nascosto. + Il menu Modalità Ambient è mostrato. Nascondi menu Guida & feedback Il menu Guida & feedback è nascosto. Il menu Guida & feedback è visibile. @@ -1167,6 +1180,11 @@ Problema noto: Poiché questa è una caratteristica nella fase di sviluppo di Go Ripristina il vecchio menu di qualità video Vecchio menu di qualità video è mostrato. Il vecchio menu di qualità video non è mostrato. + Disabilita la velocità di riproduzione per la musica + "La velocità di riproduzione predefinita è disabilitata per la musica. + +Limitazione: Questa impostazione potrebbe non applicarsi ai video che non includono il banner 'Ascolta su YouTube Music'." + La velocità di riproduzione predefinita è abilitata per la musica. Attiva la velocità di riproduzione predefinita negli Shorts La velocità di riproduzione predefinita negli Shorts è attivata La velocità di riproduzione predefinita negli Shorts è disattivata diff --git a/src/main/resources/youtube/translations/ja-rJP/strings.xml b/src/main/resources/youtube/translations/ja-rJP/strings.xml index 871fe9768f..9fd0a28a62 100644 --- a/src/main/resources/youtube/translations/ja-rJP/strings.xml +++ b/src/main/resources/youtube/translations/ja-rJP/strings.xml @@ -39,6 +39,9 @@ 有料プロモーションラベルを非表示 プレーヤー上に表示される「プロモーションを含みます」の文章を非表示にします。 プレーヤー上に表示される「プロモーションを含みます」の文章を非表示にします。 + プロモーションバナーを非表示 + YouTube Premium の価格の値上げなどのプロモーションバナーを非表示にします。 + YouTube Premium の価格の値上げなどのプロモーションバナーを非表示にします。 自己スポンサーカードを非表示 概要欄下部に表示されるセルフスポンサーカードを非表示にします。 概要欄下部に表示されるセルフスポンサーカードを非表示にします。 @@ -491,9 +494,9 @@ DeArrowの詳細については、ここをタップしてください。"再生リストとライブチャットのパネルが自動で開くのを無効化します。 再生リストとライブチャットのパネルが自動で開くのを無効化します。 ミックスプレイリストの切り替えを無効化 - 自動再生がオフの場合、ミックスプレイリストの自動再生を無効化できます。\n\n自動再生は YouTube の設定で変更できます: 「設定 → 自動再生 → 次の動画を自動再生」 - "自動再生がオフの場合、ミックスプレイリストの自動再生を無効化できます。\n\n自動再生は YouTube の設定で変更できます: 「設定 → 自動再生 → 次の動画を自動再生」" - この設定をオンにした場合、自動再生がオフになっているときに音楽を再生すると、ミックスプレイリストの自動再生が無効になります。 + 自動再生がオフの場合、音楽を再生した際に自動的にミックスプレイリストに切り替わるのを無効化できます。\n\n自動再生は YouTube の設定で変更できます: 「設定 → 自動再生 → 次の動画を自動再生」 + "自動再生がオフの場合、音楽を再生した際にミックスプレイリストへの自動切り替えを無効化できます。\n\n自動再生は YouTube の設定で変更できます: 「設定 → 自動再生 → 次の動画を自動再生」" + 自動再生がオフの場合、音楽を再生した際にミックスプレイリストへの自動切り替えを無効化できます。\n\n自動再生は YouTube の設定で変更できます: 「設定 → 自動再生 → 次の動画を自動再生」 再生速度のオーバーレイを無効化 "画面を長押しして2倍速で再生する機能を無効にします。 @@ -691,7 +694,7 @@ DeArrowの詳細については、ここをタップしてください。"「Premium のコントロール」を非表示 「Premium のコントロール」メニューを非表示にします。 「Premium のコントロール」メニューを非表示にします。 - スリープタイマーメニューを非表示 + 「スリープタイマー」を非表示 「スリープタイマー」メニューを非表示にします。 「スリープタイマー」メニューを非表示にします。 「一定音量」を非表示 @@ -1017,7 +1020,7 @@ DeArrowの詳細については、ここをタップしてください。"「このサウンドを使用する」を非表示 ショートで楽曲ボタンを押した際に表示される「このサウンドを使用する」ボタンを非表示にします。 ショートで楽曲ボタンを押した際に表示される「このサウンドを使用する」ボタンを非表示にします。 - 「テンプレートを使用する」ボタンを非表示 + 「テンプレートを使用する」を非表示 「テンプレートを使用する」ボタンを非表示にします。 「テンプレートを使用する」ボタンを非表示にします。 情報パネルを非表示 @@ -1171,11 +1174,11 @@ DeArrowの詳細については、ここをタップしてください。"古いスタイルの画質メニューを復元 古いスタイルの画質設定メニューを復活させます。 古いスタイルの画質設定メニューを復活させます。 - 音楽でデフォルトの再生速度を無効化 - "音楽でデフォルトの再生速度を無効化します。 + 音楽再生時にデフォルトの再生速度を無効化 + "音楽を再生する際に、「デフォルトの再生速度」で設定した再生速度を無効化します。 -注意: この設定は、「YouTube Musicで聴く」バナーが表示されている動画にのみ適用されます。" - 音楽でデフォルトの再生速度を無効化します。\n\n注意: この設定は、「YouTube Musicで聴く」バナーが表示されている動画にのみ適用されます。 +注意: この設定は、「YouTube Music で聴く」バナーが表示されている動画にのみ適用されます。" + 音楽を再生する際に、「デフォルトの再生速度」で設定した再生速度を無効化します。\n\n注意: この設定は、「YouTube Music で聴く」バナーが表示されている動画にのみ適用されます。 ショートのデフォルト再生速度を有効化 デフォルトの再生速度をショートに適用します。 デフォルトの再生速度をショートに適用します。 diff --git a/src/main/resources/youtube/translations/ko-rKR/strings.xml b/src/main/resources/youtube/translations/ko-rKR/strings.xml index 804481185c..636514807c 100644 --- a/src/main/resources/youtube/translations/ko-rKR/strings.xml +++ b/src/main/resources/youtube/translations/ko-rKR/strings.xml @@ -1186,14 +1186,14 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." 이전 동영상 화질 설정 메뉴 활성화하기 이전 동영상 화질 설정 메뉴를 활성화합니다. 이전 동영상 화질 설정을 비활성화합니다. - 음악 재생 속도 비활성화하기 - "음악에 기본 동영상 재생 속도를 비활성화합니다. + 음악에서 기본 동영상 재생 속도 비활성화하기 + "음악 동영상에서 기본 동영상 재생 속도를 비활성화합니다. 알려진 문제점: 이 설정은 'YouTube Music에서 감상하기' 배너가 포함되지 않은 동영상에는 적용되지 않을 수 있습니다." - 음악에 기본 동영상 재생 속도를 활성화합니다. - Shorts 기본 동영상 재생 속도 활성화하기 - Shorts에 기본 동영상 재생 속도를 적용합니다. - Shorts에 기본 동영상 재생 속도를 적용하지 않습니다. + 음악 동영상에서 기본 동영상 재생 속도를 활성화합니다. + Shorts에서 기본 동영상 재생 속도 활성화하기 + Shorts에서 기본 동영상 재생 속도를 활성화합니다. + Shorts에서 기본 동영상 재생 속도를 비활성화합니다. 미리 로드된 버퍼를 건너뛰었습니다. 미리 로드된 버퍼 건너뛰기 "동영상을 시작할 때, 미리 로드된 버퍼를 건너뛰어 기본 동영상 화질 적용 지연을 우회합니다. @@ -1517,7 +1517,7 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요." • 동영상이 재생되지 않을 수 있습니다. iOS AVC (H.264) 강제로 활성화하기 iOS 동영상 코덱을 AVC (H.264)로 활성화합니다.\n\n• \'일부 VP9 코덱 동영상에서 누락되었던 화질 값들\'이 표시될 수 있습니다.\n• 최대 화질 값이 1080p이므로 초고화질 동영상을 재생할 수 없습니다.\n• HDR 동영상을 재생할 수 없습니다. - iOS 동영상 코덱을 AVC (H.264), VP9 또는 AV1으로 활성화합니다.\n\n• 예전에 업로드된 동영상을 재생했는데 VP9 코덱 응답을 받는 경우, 일부 화질 값들이 누락되어 있거나 화질 메뉴를 선택할 수 없을 수 있습니다. + iOS 동영상 코덱을 AVC (H.264), VP9 또는 AV1으로 활성화합니다.\n\n• 예전에 업로드된 동영상을 재생했는데 VP9 코덱 응답을 받았을 경우, 일부 화질 값들이 누락되어 있거나 화질 메뉴를 선택할 수 없을 수 있습니다. "이 설정을 활성화하면 배터리 수명이 향상되고 재생 끊김 현상이 해결될 수 있습니다. AVC (H.264)의 최대 화질 값은 1080p이며 동영상을 재생하면 VP9 또는 AV1보다 더 많은 인터넷 데이터가 사용됩니다." diff --git a/src/main/resources/youtube/translations/pl-rPL/strings.xml b/src/main/resources/youtube/translations/pl-rPL/strings.xml index f7ebf4b024..145960fbfe 100644 --- a/src/main/resources/youtube/translations/pl-rPL/strings.xml +++ b/src/main/resources/youtube/translations/pl-rPL/strings.xml @@ -292,9 +292,7 @@ Ograniczenia: Do obejrzenia Nieprawidłowa strona startowa, zresetowano do domyślnej. Wymuszone ścieżki dźwiękowe - Wyłączone - -Ograniczenie: ustawienie nie działa na Shortsy. + Wyłączone Włączone Wymuszone napisy Wyłączone @@ -495,8 +493,13 @@ Stuknij i przytrzymaj, by otworzyć ustawienia RVX." Wyskakujące panele w odtwarzaczu Widoczne Ukryte - Automatyczne zmienianie playlist mix + Automatyczne przełączanie na playlisty mix Wyłączone + "Włączone, gdy autoodtwarzanie jest włączone. + +Autoodtwarzanie może być zmienione w ustawieniach YouTube: +Ustawienia → Autoodtwarzanie → Autoodtwarzanie następnego filmu" + Włączenie tej funkcji wyłączy automatyczne zmienianie na YouTube Mix, podczas odtwarzania muzyki z włączonym autoodtwarzaniem. Wyłącz nakładkę prędkości odtwarzania "Wyłącz 'Odtwarzam 2x szybciej' podczas przytrzymywania. @@ -1176,6 +1179,11 @@ Ograniczenia: Stare menu od jakości filmu Widoczne Niewidoczne + Domyślna prędkość odtwarzania dla muzyki + "Wyłączona + +Ograniczenie: To ustawienie może nie działać dla filmów bez baneru 'Słuchaj w YouTube Music'." + Włączona Domyślna prędkość odtwarzania w Shortsach Włączona Wyłączona diff --git a/src/main/resources/youtube/translations/pt-rBR/strings.xml b/src/main/resources/youtube/translations/pt-rBR/strings.xml index 86248b7d7c..b2944e494b 100644 --- a/src/main/resources/youtube/translations/pt-rBR/strings.xml +++ b/src/main/resources/youtube/translations/pt-rBR/strings.xml @@ -39,6 +39,9 @@ Limitação: A imagem do post da comunidade em tela cheia pode ser bloqueada."Ocultar rótulo de promoção paga O rótulo de promoção pago está oculto. O rótulo de promoção pago será exibido. + Ocultar banner de alerta de promoção + O banner de alerta de promoção está oculto. + O banner de alerta de promoção será exibido. Ocultar cartões auto-patrocinados Os cartões auto-patrocinados estão ocultos. Os cartões auto-patrocinados serão exibidos. @@ -672,6 +675,9 @@ A reprodução automática pode ser alterada nas configurações do YouTube: O menu denunciar será exibido. Configurações adicionais + Ocultar menu do Modo Ambiente + O menu modo ambiente está oculto. + O menu modo ambiente será exibido. Ocultar menu ajuda & feedback O menu ajuda & feedback está oculto. O menu ajuda & feedback será exibido. diff --git a/src/main/resources/youtube/translations/rename_translate.bat b/src/main/resources/youtube/translations/rename_translate.bat new file mode 100644 index 0000000000..256b3c1d64 --- /dev/null +++ b/src/main/resources/youtube/translations/rename_translate.bat @@ -0,0 +1,20 @@ +rename ar ar +rename bg bg-rBG +rename de de-rDE +rename fr fr-rFR +rename el el-rGR +rename es-ES es-rES +rename hu hu-rHU +rename it it-rIT +rename ja ja-rJP +rename ko ko-rKR +rename pl pl-rPL +rename pt-BR pt-rBR +rename ru ru-rRU +rename tr tr-rTR +rename uk uk-rUA +rename vi vi-rVN +rename zh-CN zh-rCN +rename zh-TW zh-rTW + +::RD /S /Q bg diff --git a/src/main/resources/youtube/translations/ru-rRU/strings.xml b/src/main/resources/youtube/translations/ru-rRU/strings.xml index 16ec32dd7f..bcfbfc9de6 100644 --- a/src/main/resources/youtube/translations/ru-rRU/strings.xml +++ b/src/main/resources/youtube/translations/ru-rRU/strings.xml @@ -40,6 +40,9 @@ Метка \"Прямая реклама\" Метка \"Прямая реклама\" скрыта. Метка \"Прямая реклама\" отображена. + Баннер оповещения о промо акциях + Баннер скрыт. + Баннер отображен. Карточки саморекламы Карточки саморекламы скрыты. Карточки саморекламы отображены. @@ -504,6 +507,13 @@ Shorts Всплывающие панели плеера Всплывающие панели плеера отключены. Всплывающие панели плеера включены. + Переключатель списков \"Джем\" + Авто-переключатель списков \"Джем\" отключен. + "Авто-переключение списков \"Джем\", при активном автовоспроизведении, включено. + +Автовоспроизведение настраивается в: +Настройки YouTube → Автовоспроизведение → Автовоспроизведение следующего видео" + Авто-переключение списков \"Джем\", при активном автовоспроизведении, отключено. Наложение скорости "Отключить наложение скорости при нажатии и удержании. @@ -686,6 +696,9 @@ Shorts Меню \"Пожаловаться\" отображено. Дополнительные настройки + Меню режима окружающей подсветки + Меню скрыто. + Меню отображено. Меню \"Справка и Отзывы\" Меню \"Справка и Отзывы\" скрыто. Меню \"Справка и Отзывы\" отображено. @@ -1187,6 +1200,12 @@ Shorts Старое меню качества Старое меню качества отображено. Старое меню качества скрыто. + Скорость воспроизведения для музыки + "Скорость воспроизведения по умолчанию для музыки отключена. + +Ограничение: +Этот параметр не может применяться к видео, которые не содержат баннер 'Слушать в YouTube Music'." + Скорость воспроизведения по умолчанию для музыки включена. Скорость воспроизведения по умолчанию в Shorts Скорость воспроизведения по умолчанию в Shorts включена. Скорость воспроизведения по умолчанию в Shorts отключена. diff --git a/src/main/resources/youtube/translations/uk-rUA/strings.xml b/src/main/resources/youtube/translations/uk-rUA/strings.xml index 6fcb553535..730e6f7f96 100644 --- a/src/main/resources/youtube/translations/uk-rUA/strings.xml +++ b/src/main/resources/youtube/translations/uk-rUA/strings.xml @@ -1183,7 +1183,7 @@ Вимкнути швидкість відтворення для музики "Типову швидкість відтворення вимкнено для музики. -Застереження: Це налаштування застосовується лише до відео, які містять напис 'Слухати через YouTube Music'." +Застереження: Це налаштування може не застосовуватись до відео, які не містять напис 'Слухати через YouTube Music'." Типову швидкість відтворення увімкнено для музики. Увімкнути типову швидкість відтворення Shorts Типову швидкість відтворення застосовується для Shorts. diff --git a/src/main/resources/youtube/translations/vi-rVN/strings.xml b/src/main/resources/youtube/translations/vi-rVN/strings.xml index fb006c4c1a..05e77ee138 100644 --- a/src/main/resources/youtube/translations/vi-rVN/strings.xml +++ b/src/main/resources/youtube/translations/vi-rVN/strings.xml @@ -39,6 +39,9 @@ Hạn chế: Hình ảnh của bài đăng cộng đồng ở chế độ toàn Ẩn nhãn quảng cáo được tài trợ Nhãn Nội dung được trả tiền để quảng cáo đã ẩn. Nhãn Nội dung được trả tiền để quảng cáo được hiển thị. + Ẩn biểu ngữ thông báo khuyến mãi + Biểu ngữ thông báo khuyến mãi đã ẩn. + Biểu ngữ thông báo khuyến mãi đã hiển thị. Ẩn thẻ được tài trợ Thẻ được tài trợ đã ẩn. Thẻ được tài trợ được hiển thị. @@ -291,9 +294,7 @@ Bộ lọc có phân biệt chữ hoa chữ thường, vì vậy bạn cần nh Xem sau Trang khởi động không hợp lệ. Đã đặt lại về mặc định. Tắt buộc tự động phát bản âm thanh - Buộc tự động phát bản âm thanh đã bị tắt. - -Hạn chế: Tính năng này hiện chưa áp dụng cho trình Shorts. + Buộc tự động phát bản âm thanh đã bị tắt. Buộc tự động phát bản âm thanh đã được bật. Tắt tự động hiển thị phụ đề Tự động hiển thị phụ đề khi phát video có phụ đề đã tắt. @@ -324,8 +325,8 @@ Tuỳ chọn này chỉ tự động chấp nhận hộp thoại cảnh báo, kh Nút tải xuống video sẽ mở trình tải xuống bên ngoài của bạn. Nút tải xuống video sẽ mở trình tải xuống gốc trong ứng dụng. Ghi đè nút tải xuống danh sách phát - Nút tải xuống danh sách phát sẽ mở trình tải xuống bên ngoài của bạn. - Nút tải xuống danh sách phát sẽ mở trình tải xuống gốc trong ứng dụng. + Nút tải xuống danh sách phát sẽ luôn được hiển thị, và khi thao tác sẽ mở trình tải xuống bên ngoài đối với các danh sách phát công khai. + Nếu được hiển thị, nút tải xuống danh sách phát sẽ mở trình tải xuống gốc trong ứng dụng. Tên gói ứng dụng trình tải xuống danh sách phát Nhập tên gói ứng dụng trình tải xuống đã cài đặt trên thiết bị của bạn, chẳng hạn như YTDLnis. Giả mạo phiên bản ứng dụng @@ -494,6 +495,13 @@ Nhấn và giữ để mở cài đặt RVX." Tắt bảng tự động bật lên khi phát Bảng tự động bật lên khi phát video (Danh sách phát, Trò chuyện trực tiếp,...) đã tắt. Bảng tự động bật lên khi phát video (Danh sách phát, Trò chuyện trực tiếp,...) đã bật. + Tắt chuyển đổi danh sách phát kết hợp + Tự động chuyển sang danh sách phát kết hợp đã bị vô hiệu hóa. + "Tự động chuyển sang danh sách phát kết hợp đã được kích hoạt khi bật tính năng Tự động phát. + +Tính năng Tự động phát có thể thay đổi trong Cài đặt YouTube: +Cài đặt → Tự động phát → Tự động phát video tiếp theo" + Việc bật tính năng này sẽ vô hiệu hóa việc tự động chuyển sang YouTube Mix khi phát nhạc đồng thời chế độ phát tự động cũng được bật. Tắt nhấn và giữ để phát nhanh 2x "Tắt tính năng Nhấn và giữ trong trình phát để xem ở tốc độ nhanh gấp 2 lần. @@ -675,6 +683,9 @@ Cài đặt → Tự động phát → Tự động phát video tiếp theo."Mục Báo vi phạm được hiển thị. Cài đặt bổ sung + Ẩn mục Chế độ môi trường xung quanh + Mục Chế độ môi trường xung quanh đã ẩn. + Mục Chế độ môi trường xung quanh được hiển thị. Ẩn Trợ giúp & Phản hồi Trợ giúp & Phản hồi đã ẩn. Trợ giúp & Phản hồi được hiển thị. @@ -962,9 +973,9 @@ Hạn chế: Tiêu đề chính thức trong kết quả tìm kiếm sẽ đư Ẩn trong kết quả tìm kiếm Ẩn trong kết quả tìm kiếm. Hiển thị trong kết quả tìm kiếm. - Ẩn trong phần Lịch sử xem - Ẩn trong phần Lịch sử xem. - Hiển thị trong phần Lịch sử xem. + Ẩn trong phần Nhật ký xem + Ẩn trong phần Nhật ký xem. + Hiển thị trong phần Nhật ký xem. Thay đổi trạng thái lặp lại của trình phát Shorts Tự động phát @@ -1169,6 +1180,11 @@ Hạn chế: Khôi phục mục chất lượng video kiểu cũ Mục chất lượng video kiểu cũ được hiển thị. Mục chất lượng video kiểu cũ không được hiển thị. + Tắt tùy chọn tốc độ phát khi phát nhạc + "Tốc độ phát mặc định đã bị vô hiệu hoá khi phát nhạc. + +Hạn chế: Cài đặt này có thể sẽ không áp dụng cho các video không bao gồm biểu ngữ 'Nghe nhạc trên YouTube Music'." + Tốc độ phát mặc định đã được kích hoạt khi phát nhạc. Tốc độ phát mặc định cho video ngắn Đang áp dụng tốc độ phát mặc định (bạn đã đặt) khi xem Shorts. Tốc độ phát mặc định không áp dụng cho Shorts. @@ -1504,19 +1520,19 @@ AVC (H.264) có độ phân giải tối đa 1080p, và phát video sẽ dùng n Máy khách được sử dụng để lấy dữ liệu truyền trực tuyến sẽ được hiển thị trong Thống kê chi tiết. Máy khách được sử dụng để lấy dữ liệu phát trực tiếp sẽ bị ẩn trong Thống kê chi tiết. - Lịch sử xem - Thay đổi cài đặt liên quan đến Lịch sử xem. + Nhật ký xem + Thay đổi cài đặt liên quan đến Nhật ký xem. Quản lý toàn bộ lịch sử - Nhấn để mở mục quản lý Lịch sử xem trên YouTube. - Kiểu Lịch sử xem + Nhấn để mở mục quản lý Nhật ký xem trên YouTube. + Kiểu Nhật ký xem Gốc Thay thế miền - Chặn Lịch sử xem - Trạng thái của Lịch sử xem - • Lịch sử xem bị chặn. - • Tuân theo cài đặt Lịch sử xem của tài khoản Google. - "• Tuân theo cài đặt lịch sử xem của tài khoản Google. -• Lịch sử xem có thể không hoạt động do DNS hoặc VPN." + Chặn Nhật ký xem + Trạng thái + • Nhật ký xem bị chặn. + • Tuân theo cài đặt Nhật ký xem của tài khoản Google. + "• Tuân theo cài đặt Nhật ký xem của tài khoản Google. +• Nhật ký xem có thể không hoạt động do DNS hoặc VPN." Thông tin bản vá diff --git a/src/main/resources/youtube/translations/zh-rTW/strings.xml b/src/main/resources/youtube/translations/zh-rTW/strings.xml index 8c06dd3aad..4a47ca7233 100644 --- a/src/main/resources/youtube/translations/zh-rTW/strings.xml +++ b/src/main/resources/youtube/translations/zh-rTW/strings.xml @@ -39,6 +39,9 @@ 隱藏付費推廣標籤 付費推廣標籤已隱藏 付費推廣標籤已顯示 + 隱藏促銷警報橫幅 + 促銷警報橫幅已隱藏。 + 顯示促銷警報橫幅。 隱藏自我推廣卡片 自我推廣卡片已隱藏 自我推廣卡片已顯示 @@ -489,6 +492,13 @@ 停用播放器彈出面板 自動播放器彈出面板已啟用 自動播放器彈出面板已停用 + 停用切換混合播放列表 + 自動切換混合播放清單已停用。 + "自動播放開啟時會啟用自動切換混合播放清單。 + +可以在 YouTube 設定中變更自動播放: +設定 → 自動播放 → 自動播放下一個影片" + 啟用此功能將禁止在自動播放開啟時播放音樂時自動切換到 YouTube Mix。 停用速度疊加 "停用「按住即可將播放速度設為 2 倍」功能 @@ -671,6 +681,9 @@ 舉報選單已顯示 其他設定 + 隱藏微光模式選單 + 微光模式選單已隱藏。 + 微光模式選單已顯示。 隱藏幫助與反饋選單 幫助與反饋選單已隱藏 幫助與反饋選單已顯示 @@ -1160,6 +1173,11 @@ 恢復舊的影片畫質選單 顯示舊的影片畫質選單 不顯示舊的影片畫質選單 + 停用音樂的播放速度 + "音樂的預設播放速度被停用。 + +限制:此設定可能不適用於不包含「在 YouTube 音樂上收聽」橫幅影片。" + 音樂的預設播放速度已啟用。 啟用短片預設播放速度 預設播放速度適用於短片 預設播放速度不適用於短片 From 019a252e3242c0ab2377975ddd5795cef3585fcd Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sat, 7 Sep 2024 03:40:14 +0900 Subject: [PATCH 51/53] bump 4.13.1-dev.5 --- README.md | 2 +- gradle.properties | 2 +- patches.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b8a6b4fee5..fce9448e00 100644 --- a/README.md +++ b/README.md @@ -84,9 +84,9 @@ ReVanced Extended Patches. | `Custom branding icon for YouTube Music` | Changes the YouTube Music app icon to the icon specified in options.json. | 6.29.58 ~ 7.17.51 | | `Custom branding name for YouTube Music` | Renames the YouTube Music app to the name specified in options.json. | 6.29.58 ~ 7.17.51 | | `Custom header for YouTube Music` | Applies a custom header in the top left corner within the app. | 6.29.58 ~ 7.17.51 | +| `Disable Cairo splash animation` | Adds an option to disable Cairo splash animation. | 7.06.54 ~ 7.17.51 | | `Disable auto captions` | Adds an option to disable captions from being automatically enabled. | 6.29.58 ~ 7.17.51 | | `Disable dislike redirection` | Adds an option to disable redirection to the next track when clicking the Dislike button. | 6.29.58 ~ 7.17.51 | -| `Enable Cairo splash animation` | Adds an option to enable Cairo splash animation. | 7.08.54 ~ 7.17.51 | | `Enable OPUS codec` | Adds an options to enable the OPUS audio codec if the player response includes. | 6.29.58 ~ 7.17.51 | | `Enable debug logging` | Adds an option to enable debug logging. | 6.29.58 ~ 7.17.51 | | `Enable landscape mode` | Adds an option to enable landscape mode when rotating the screen on phones. | 6.29.58 ~ 7.17.51 | diff --git a/gradle.properties b/gradle.properties index cebdc4644b..8c7349f542 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.13.1-dev.4 +version = 4.13.1-dev.5 diff --git a/patches.json b/patches.json index 9c010e9018..9f570ddc01 100644 --- a/patches.json +++ b/patches.json @@ -1 +1 @@ -[{"name":"Alternative thumbnails","description":"Adds options to replace video thumbnails using the DeArrow API or image captures from the video.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Ambient mode control","description":"Adds options to disable Ambient mode and to bypass Ambient mode restrictions.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Amoled","description":"Applies a pure black theme to some components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bitrate default value","description":"Sets the audio quality to \u0027Always High\u0027 when you first install the app.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bypass image region restrictions","description":"Adds an option to use a different host for static images, so that images blocked in some countries can be received.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bypass image region restrictions","description":"Adds an option to use a different host for static images, so that images blocked in some countries can be received.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Certificate spoof","description":"Enables YouTube Music to work with Android Auto by spoofing the YouTube Music certificate.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change package name","description":"Changes the package name for Reddit to the name specified in options.json.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"PackageNameReddit","default":"com.reddit.frontpage","values":{"Clone":"com.reddit.frontpage.revanced","Default":"com.reddit.frontpage.rvx","Original":"com.reddit.frontpage"},"title":"Package name of Reddit","description":"The name of the package to rename the app to.","required":true}]},{"name":"Change player flyout menu toggles","description":"Adds an option to use text toggles instead of switch toggles within the additional settings menu.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change share sheet","description":"Add option to change from in-app share sheet to system share sheet.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change share sheet","description":"Add option to change from in-app share sheet to system share sheet.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change start page","description":"Adds an option to set which page the app opens in instead of the homepage.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change start page","description":"Adds an option to set which page the app opens in instead of the homepage.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change version code","description":"Changes the version code of the app to the value specified in options.json. Except when mounting, this can prevent app stores from updating the app and allow the app to be installed over an existing installation that has a higher version code. By default, the highest version code is set.","compatiblePackages":null,"use":false,"requiresIntegrations":false,"options":[{"key":"ChangeVersionCode","default":false,"values":null,"title":"Change version code","description":"Changes the version code of the app.","required":true},{"key":"VersionCode","default":"2147483647","values":null,"title":"Version code","description":"The version code to use. (1 ~ 2147483647)","required":true}]},{"name":"Custom Shorts action buttons","description":"Changes, at compile time, the icon of the action buttons of the Shorts player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"IconType","default":"youtubeoutline","values":{"Outline":"outline","OutlineCircle":"outlinecircle","Round":"round","YoutubeOutline":"youtubeoutline","YouTube":"youtube"},"title":"Shorts icon style ","description":"The style of the icons for the action buttons in the Shorts player.","required":true}]},{"name":"Custom branding icon for YouTube","description":"Changes the YouTube app icon to the icon specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppIcon","default":"revancify_blue","values":{"AFN Blue":"afn_blue","AFN Red":"afn_red","MMT":"mmt","Revancify Blue":"revancify_blue","Revancify Red":"revancify_red","YouTube":"youtube"},"title":"App icon","description":"The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_background_color_108.png\n- adaptiveproduct_youtube_foreground_color_108.png\n- ic_launcher.png\n- ic_launcher_round.png","required":true},{"key":"ChangeSplashIcon","default":true,"values":null,"title":"Change splash icons","description":"Apply the custom branding icon to the splash screen.","required":true},{"key":"RestoreOldSplashAnimation","default":true,"values":null,"title":"Restore old splash animation","description":"Restore the old style splash animation.","required":true}]},{"name":"Custom branding icon for YouTube Music","description":"Changes the YouTube Music app icon to the icon specified in options.json.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppIcon","default":"revancify_blue","values":{"AFN Blue":"afn_blue","AFN Red":"afn_red","MMT":"mmt","Revancify Blue":"revancify_blue","Revancify Red":"revancify_red","YouTube Music":"youtube_music"},"title":"App icon","description":"The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_music_background_color_108.png\n- adaptiveproduct_youtube_music_foreground_color_108.png\n- ic_launcher_release.png","required":true},{"key":"ChangeSplashIcon","default":true,"values":null,"title":"Change splash icons","description":"Apply the custom branding icon to the splash screen.","required":true}]},{"name":"Custom branding name for Reddit","description":"Renames the Reddit app to the name specified in options.json.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"AppName","default":"Reddit","values":{"Default":"RVX Reddit","Original":"Reddit"},"title":"App name","description":"The name of the app.","required":true}]},{"name":"Custom branding name for YouTube","description":"Renames the YouTube app to the name specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppName","default":"RVX","values":{"ReVanced Extended":"ReVanced Extended","RVX":"RVX","YouTube RVX":"YouTube RVX","YouTube":"YouTube"},"title":"App name","description":"The name of the app.","required":true}]},{"name":"Custom branding name for YouTube Music","description":"Renames the YouTube Music app to the name specified in options.json.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppNameNotification","default":"RVX Music","values":{"ReVanced Extended Music":"ReVanced Extended Music","RVX Music":"RVX Music","YouTube Music":"YouTube Music","YT Music":"YT Music"},"title":"App name in notification panel","description":"The name of the app as it appears in the notification panel.","required":true},{"key":"AppNameLauncher","default":"RVX Music","values":{"ReVanced Extended Music":"ReVanced Extended Music","RVX Music":"RVX Music","YouTube Music":"YouTube Music","YT Music":"YT Music"},"title":"App name in launcher","description":"The name of the app as it appears in the launcher.","required":true}]},{"name":"Custom double tap length","description":"Adds Double-tap to seek values that are specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"DoubleTapLengthArrays","default":"3, 5, 10, 15, 20, 30, 60, 120, 180","values":null,"title":"Double-tap to seek values","description":"A list of custom Double-tap to seek lengths to be added, separated by commas.","required":true}]},{"name":"Custom header for YouTube","description":"Applies a custom header in the top left corner within the app.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"CustomHeader","default":"custom_branding_icon","values":{"Custom branding icon":"custom_branding_icon"},"title":"Custom header","description":"The header to apply to the app.\n\nPatch option \u0027Custom branding icon\u0027 applies only when:\n\n1. Patch \u0027Custom branding icon for YouTube\u0027 is included.\n2. Patch option for \u0027Custom branding icon for YouTube\u0027 is selected from the preset.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n[Generic header]\n\n- yt_wordmark_header_light.png\n- yt_wordmark_header_dark.png\n\nThe image dimensions must be as follows:\n\n- drawable-xxxhdpi: 488px x 192px\n- drawable-xxhdpi: 366px x 144px\n- drawable-xhdpi: 244px x 96px\n- drawable-hdpi: 184px x 72px\n- drawable-mdpi: 122px x 48px\n\n[Premium header]\n\n- yt_premium_wordmark_header_light.png\n- yt_premium_wordmark_header_dark.png\n\nThe image dimensions must be as follows:\n- drawable-xxxhdpi: 516px x 192px\n- drawable-xxhdpi: 387px x 144px\n- drawable-xhdpi: 258px x 96px\n- drawable-hdpi: 194px x 72px\n- drawable-mdpi: 129px x 48px","required":true}]},{"name":"Custom header for YouTube Music","description":"Applies a custom header in the top left corner within the app.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"CustomHeader","default":"custom_branding_icon","values":{"Custom branding icon":"custom_branding_icon"},"title":"Custom header","description":"The header to apply to the app.\n\nPatch option \u0027Custom branding icon\u0027 applies only when:\n\n1. Patch \u0027Custom branding icon for YouTube Music\u0027 is included.\n2. Patch option for \u0027Custom branding icon for YouTube Music\u0027 is selected from the preset.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n- action_bar_logo.png\n- logo_music.png\n- ytm_logo.png\n\nThe image \u0027action_bar_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 320px x 96px\n- drawable-xxhdpi: 240px x 72px\n- drawable-xhdpi: 160px x 48px\n- drawable-hdpi: 121px x 36px\n- drawable-mdpi: 80px x 24px\n\nThe image \u0027logo_music.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 576px x 200px\n- drawable-xxhdpi: 432px x 150px\n- drawable-xhdpi: 288px x 100px\n- drawable-hdpi: 217px x 76px\n- drawable-mdpi: 144px x 50px\n\nThe image \u0027ytm_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 412px x 144px\n- drawable-xxhdpi: 309px x 108px\n- drawable-xhdpi: 206px x 72px\n- drawable-hdpi: 155px x 54px\n- drawable-mdpi: 103px x 36px","required":true}]},{"name":"Description components","description":"Adds options to hide and disable description components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable QUIC protocol","description":"Adds an option to disable CronetEngine\u0027s QUIC protocol.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto audio tracks","description":"Adds an option to disable audio tracks from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto captions","description":"Adds an option to disable captions from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto captions","description":"Adds an option to disable captions from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable dislike redirection","description":"Adds an option to disable redirection to the next track when clicking the Dislike button.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable haptic feedback","description":"Adds options to disable haptic feedback when swiping in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable resuming Shorts on startup","description":"Adds an option to disable the Shorts player from resuming on app startup when Shorts were last being watched.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable screenshot popup","description":"Adds an option to disable the popup that appears when taking a screenshot.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable splash animation","description":"Adds an option to disable the splash animation on app startup.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable Cairo splash animation","description":"Adds an option to enable Cairo splash animation.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["7.08.54","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable OPUS codec","description":"Adds an options to enable the OPUS audio codec if the player response includes.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable OPUS codec","description":"Adds an options to enable the OPUS audio codec if the player response includes.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable debug logging","description":"Adds an option to enable debug logging.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable debug logging","description":"Adds an option to enable debug logging.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable external browser","description":"Adds an option to always open links in your browser instead of in the in-app-browser.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable gradient loading screen","description":"Adds an option to enable the gradient loading screen.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable landscape mode","description":"Adds an option to enable landscape mode when rotating the screen on phones.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable open links directly","description":"Adds an option to skip over redirection URLs in external links.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Flyout menu components","description":"Adds options to hide or change flyout menu components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Force hide player buttons background","description":"Removes, at compile time, the dark background surrounding the video player controls.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Fullscreen components","description":"Adds options to hide or change components related to fullscreen.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"GmsCore support","description":"Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"GmsCoreVendorGroupId","default":"app.revanced","values":{"ReVanced":"app.revanced"},"title":"GmsCore vendor group ID","description":"The vendor\u0027s group ID for GmsCore.","required":true},{"key":"CheckGmsCore","default":true,"values":null,"title":"Check GmsCore","description":"Check if GmsCore is installed on the device and has battery optimizations disabled when the app starts. \n\nIf GmsCore is not installed the app will not work, so disabling this is not recommended.","required":true},{"key":"PackageNameYouTube","default":"app.rvx.android.youtube","values":{"Clone":"com.rvx.android.youtube","Default":"app.rvx.android.youtube"},"title":"Package name of YouTube","description":"The name of the package to use in GmsCore support.","required":true},{"key":"PackageNameYouTubeMusic","default":"app.rvx.android.apps.youtube.music","values":{"Clone":"com.rvx.android.apps.youtube.music","Default":"app.rvx.android.apps.youtube.music"},"title":"Package name of YouTube Music","description":"The name of the package to use in GmsCore support.","required":true}]},{"name":"GmsCore support","description":"Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"GmsCoreVendorGroupId","default":"app.revanced","values":{"ReVanced":"app.revanced"},"title":"GmsCore vendor group ID","description":"The vendor\u0027s group ID for GmsCore.","required":true},{"key":"CheckGmsCore","default":true,"values":null,"title":"Check GmsCore","description":"Check if GmsCore is installed on the device and has battery optimizations disabled when the app starts. \n\nIf GmsCore is not installed the app will not work, so disabling this is not recommended.","required":true},{"key":"PackageNameYouTube","default":"app.rvx.android.youtube","values":{"Clone":"com.rvx.android.youtube","Default":"app.rvx.android.youtube"},"title":"Package name of YouTube","description":"The name of the package to use in GmsCore support.","required":true},{"key":"PackageNameYouTubeMusic","default":"app.rvx.android.apps.youtube.music","values":{"Clone":"com.rvx.android.apps.youtube.music","Default":"app.rvx.android.apps.youtube.music"},"title":"Package name of YouTube Music","description":"The name of the package to use in GmsCore support.","required":true}]},{"name":"Hide Recently Visited shelf","description":"Adds an option to hide the Recently Visited shelf in the sidebar.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide Shorts dimming","description":"Removes, at compile time, the dimming effect at the top and bottom of Shorts videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide account components","description":"Adds options to hide components related to the account menu.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide action bar components","description":"Adds options to hide action bar components and replace the offline download button with an external download button.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide action buttons","description":"Adds options to hide action buttons under videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":true,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide comments components","description":"Adds options to hide components related to comments.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide feed components","description":"Adds options to hide components related to feeds.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide feed flyout menu","description":"Adds the ability to hide feed flyout menu components using a custom filter.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide layout components","description":"Adds options to hide general layout components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide layout components","description":"Adds options to hide general layout components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide navigation buttons","description":"Adds options to hide buttons in the navigation bar.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide overlay filter","description":"Removes, at compile time, the dark overlay that appears when player flyout menus are open.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide player buttons","description":"Adds options to hide buttons in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide player flyout menu","description":"Adds options to hide player flyout menu components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide player overlay filter","description":"Removes, at compile time, the dark overlay that appears when single-tapping in the player.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide recommended communities shelf","description":"Adds an option to hide the recommended communities shelves in subreddits.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hook download actions","description":"Adds support to download videos with an external downloader app using the in-app download button.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Layout switch","description":"Adds an option to spoof the dpi in order to use a tablet or phone layout.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"MaterialYou","description":"Applies the MaterialYou theme for Android 12+ devices.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Miniplayer","description":"Adds options to change the in app minimized player, and if patching target 19.16+ adds options to use modern miniplayers.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Navigation bar components","description":"Adds options to hide or change components related to the navigation bar.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Navigation bar components","description":"Adds options to hide or change components related to the navigation bar.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Open links directly","description":"Adds an option to skip over redirection URLs in external links.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Open links externally","description":"Adds an option to always open links in your browser instead of in the in-app-browser.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Overlay buttons","description":"Adds options to display overlay buttons in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"IconType","default":"bold","values":{"Bold":"bold","Rounded":"rounded","Thin":"thin"},"title":"Icon type","description":"The icon type.","required":true},{"key":"BottomMargin","default":"2.5dip","values":{"Default":"2.5dip","None":"0.0dip","Wider":"5.0dip"},"title":"Bottom margin","description":"The bottom margin for the overlay buttons and timestamp.","required":true},{"key":"ChangeTopButtons","default":false,"values":null,"title":"Change top buttons","description":"Change the icons at the top of the player.","required":true}]},{"name":"Player components","description":"Adds options to hide or change components related to the player.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Player components","description":"Adds options to hide or change components related to the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Premium icon","description":"Unlocks premium app icons.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove background playback restrictions","description":"Removes restrictions on background playback, including for kids videos.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove background playback restrictions","description":"Removes restrictions on background playback, including for music and kids videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove subreddit dialog","description":"Adds options to remove the NSFW community warning and notifications suggestion dialogs by dismissing them automatically.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove viewer discretion dialog","description":"Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove viewer discretion dialog","description":"Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Restore old style library shelf","description":"Adds an option to return the Library tab to the old style.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Return YouTube Dislike","description":"Adds an option to show the dislike count of songs using the Return YouTube Dislike API.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Return YouTube Dislike","description":"Adds an option to show the dislike count of videos using the Return YouTube Dislike API.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Seekbar components","description":"Adds options to hide or change components related to the seekbar.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Settings for Reddit","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Settings for YouTube","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"InsertPosition","default":"@string/about_key","values":{"Parent settings":"@string/parent_tools_key","General":"@string/general_key","Account":"@string/account_switcher_key","Data saving":"@string/data_saving_settings_key","Autoplay":"@string/auto_play_key","Video quality preferences":"@string/video_quality_settings_key","Background":"@string/offline_key","Watch on TV":"@string/pair_with_tv_key","Manage all history":"@string/history_key","Your data in YouTube":"@string/your_data_key","Privacy":"@string/privacy_key","History \u0026 privacy":"@string/privacy_key","Try experimental new features":"@string/premium_early_access_browse_page_key","Purchases and memberships":"@string/subscription_product_setting_key","Billing \u0026 payments":"@string/billing_and_payment_key","Billing and payments":"@string/billing_and_payment_key","Notifications":"@string/notification_key","Connected apps":"@string/connected_accounts_browse_page_key","Live chat":"@string/live_chat_key","Captions":"@string/captions_key","Accessibility":"@string/accessibility_settings_key","About":"@string/about_key"},"title":"Insert position","description":"The settings menu name that the RVX settings menu should be above.","required":true},{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Settings for YouTube Music","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Shorts components","description":"Adds options to hide or change components related to YouTube Shorts.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"SponsorBlock","description":"Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as non-music sections.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"SponsorBlock","description":"Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as sponsored content.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"OutlineIcon","default":false,"values":null,"title":"Outline icons","description":"Apply the outline icon.","required":true}]},{"name":"Spoof app version","description":"Adds options to spoof the YouTube Music client version. This can remove the radio mode restriction in Canadian regions or disable real-time lyrics.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Spoof app version","description":"Adds options to spoof the YouTube client version. This can be used to restore old UI elements and features.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Spoof streaming data","description":"Adds options to spoof the streaming data to allow video playback.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Swipe controls","description":"Adds options for controlling volume and brightness with swiping, and whether to enter fullscreen when swiping down below the player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Theme","description":"Changes the app\u0027s theme to the values specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"DarkThemeBackgroundColor","default":"@android:color/black","values":{"Amoled Black":"@android:color/black","Catppuccin (Mocha)":"#FF181825","Dark Pink":"#FF290025","Dark Blue":"#FF001029","Dark Green":"#FF002905","Dark Yellow":"#FF282900","Dark Orange":"#FF291800","Dark Red":"#FF290000"},"title":"Dark theme background color","description":"Can be a hex color (#AARRGGBB) or a color resource reference.","required":true},{"key":"LightThemeBackgroundColor","default":"@android:color/white","values":{"White":"@android:color/white","Catppuccin (Latte)":"#FFE6E9EF","Light Pink":"#FFFCCFF3","Light Blue":"#FFD1E0FF","Light Green":"#FFCCFFCC","Light Yellow":"#FFFDFFCC","Light Orange":"#FFFFE6CC","Light Red":"#FFFFD6D6"},"title":"Light theme background color","description":"Can be a hex color (#AARRGGBB) or a color resource reference.","required":true}]},{"name":"Toolbar components","description":"Adds options to hide or change components located on the toolbar, such as toolbar buttons, search bar, and header.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Translations for YouTube","description":"Add translations or remove string resources.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"CustomTranslations","default":"","values":null,"title":"Custom translations","description":"The path to the \u0027strings.xml\u0027 file.\nPlease note that applying the \u0027strings.xml\u0027 file will overwrite all existing translations.","required":true},{"key":"SelectedTranslations","default":"ar, bg-rBG, de-rDE, el-rGR, es-rES, fr-rFR, hu-rHU, it-rIT, ja-rJP, ko-rKR, pl-rPL, pt-rBR, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW","values":null,"title":"Translations to add","description":"A list of translations to be added for the RVX settings, separated by commas.","required":true},{"key":"SelectedStringResources","default":"af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu","values":null,"title":"String resources to keep","description":"A list of string resources to be kept, separated by commas.\nString resources not in the list will be removed from the app.\n\nDefault string resource, English, is not removed.","required":true}]},{"name":"Translations for YouTube Music","description":"Add translations or remove string resources.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"CustomTranslations","default":"","values":null,"title":"Custom translations","description":"The path to the \u0027strings.xml\u0027 file.\nPlease note that applying the \u0027strings.xml\u0027 file will overwrite all existing language translations.","required":true},{"key":"SelectedTranslations","default":"bg-rBG, bn, cs-rCZ, el-rGR, es-rES, fr-rFR, hu-rHU, id-rID, in, it-rIT, ja-rJP, ko-rKR, nl-rNL, pl-rPL, pt-rBR, ro-rRO, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW","values":null,"title":"Translations to add","description":"A list of translations to be added for the RVX settings, separated by commas.","required":true},{"key":"SelectedStringResources","default":"af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu","values":null,"title":"String resources to keep","description":"A list of string resources to be kept, separated by commas.\nString resources not in the list will be removed from the app.\n\nDefault string resource, English, is not removed.","required":true}]},{"name":"Video playback","description":"Adds options to customize settings related to video playback, such as default video quality and playback speed.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Video playback","description":"Adds options to customize settings related to video playback, such as default video quality and playback speed.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Visual preferences icons","description":"Adds icons to specific preferences in the settings.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"RVXSettingsMenuIcon","default":"extension","values":{"Custom branding icon":"custom_branding_icon","Extension":"extension","Gear":"gear","ReVanced":"revanced","ReVanced Colored":"revanced_colored"},"title":"RVX settings menu icon","description":"The icon for the RVX settings menu.","required":true}]},{"name":"Watch history","description":"Adds an option to change the domain of the watch history or check its status.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]}] \ No newline at end of file +[{"name":"Alternative thumbnails","description":"Adds options to replace video thumbnails using the DeArrow API or image captures from the video.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Ambient mode control","description":"Adds options to disable Ambient mode and to bypass Ambient mode restrictions.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Amoled","description":"Applies a pure black theme to some components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bitrate default value","description":"Sets the audio quality to \u0027Always High\u0027 when you first install the app.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bypass image region restrictions","description":"Adds an option to use a different host for static images, so that images blocked in some countries can be received.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Bypass image region restrictions","description":"Adds an option to use a different host for static images, so that images blocked in some countries can be received.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Certificate spoof","description":"Enables YouTube Music to work with Android Auto by spoofing the YouTube Music certificate.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change package name","description":"Changes the package name for Reddit to the name specified in options.json.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"PackageNameReddit","default":"com.reddit.frontpage","values":{"Clone":"com.reddit.frontpage.revanced","Default":"com.reddit.frontpage.rvx","Original":"com.reddit.frontpage"},"title":"Package name of Reddit","description":"The name of the package to rename the app to.","required":true}]},{"name":"Change player flyout menu toggles","description":"Adds an option to use text toggles instead of switch toggles within the additional settings menu.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change share sheet","description":"Add option to change from in-app share sheet to system share sheet.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change share sheet","description":"Add option to change from in-app share sheet to system share sheet.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change start page","description":"Adds an option to set which page the app opens in instead of the homepage.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change start page","description":"Adds an option to set which page the app opens in instead of the homepage.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Change version code","description":"Changes the version code of the app to the value specified in options.json. Except when mounting, this can prevent app stores from updating the app and allow the app to be installed over an existing installation that has a higher version code. By default, the highest version code is set.","compatiblePackages":null,"use":false,"requiresIntegrations":false,"options":[{"key":"ChangeVersionCode","default":false,"values":null,"title":"Change version code","description":"Changes the version code of the app.","required":true},{"key":"VersionCode","default":"2147483647","values":null,"title":"Version code","description":"The version code to use. (1 ~ 2147483647)","required":true}]},{"name":"Custom Shorts action buttons","description":"Changes, at compile time, the icon of the action buttons of the Shorts player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"IconType","default":"youtubeoutline","values":{"Outline":"outline","OutlineCircle":"outlinecircle","Round":"round","YoutubeOutline":"youtubeoutline","YouTube":"youtube"},"title":"Shorts icon style ","description":"The style of the icons for the action buttons in the Shorts player.","required":true}]},{"name":"Custom branding icon for YouTube","description":"Changes the YouTube app icon to the icon specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppIcon","default":"revancify_blue","values":{"AFN Blue":"afn_blue","AFN Red":"afn_red","MMT":"mmt","Revancify Blue":"revancify_blue","Revancify Red":"revancify_red","YouTube":"youtube"},"title":"App icon","description":"The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_background_color_108.png\n- adaptiveproduct_youtube_foreground_color_108.png\n- ic_launcher.png\n- ic_launcher_round.png","required":true},{"key":"ChangeSplashIcon","default":true,"values":null,"title":"Change splash icons","description":"Apply the custom branding icon to the splash screen.","required":true},{"key":"RestoreOldSplashAnimation","default":true,"values":null,"title":"Restore old splash animation","description":"Restore the old style splash animation.","required":true}]},{"name":"Custom branding icon for YouTube Music","description":"Changes the YouTube Music app icon to the icon specified in options.json.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppIcon","default":"revancify_blue","values":{"AFN Blue":"afn_blue","AFN Red":"afn_red","MMT":"mmt","Revancify Blue":"revancify_blue","Revancify Red":"revancify_red","YouTube Music":"youtube_music"},"title":"App icon","description":"The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_music_background_color_108.png\n- adaptiveproduct_youtube_music_foreground_color_108.png\n- ic_launcher_release.png","required":true},{"key":"ChangeSplashIcon","default":true,"values":null,"title":"Change splash icons","description":"Apply the custom branding icon to the splash screen.","required":true},{"key":"RestoreOldSplashIcon","default":false,"values":null,"title":"Restore old splash icon","description":"Restore the old style splash icon.\n\nIf you enable both the old style splash icon and the Cairo splash animation,\n\nOld style splash icon will appear first and then the Cairo splash animation will start.","required":true}]},{"name":"Custom branding name for Reddit","description":"Renames the Reddit app to the name specified in options.json.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"AppName","default":"Reddit","values":{"Default":"RVX Reddit","Original":"Reddit"},"title":"App name","description":"The name of the app.","required":true}]},{"name":"Custom branding name for YouTube","description":"Renames the YouTube app to the name specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppName","default":"RVX","values":{"ReVanced Extended":"ReVanced Extended","RVX":"RVX","YouTube RVX":"YouTube RVX","YouTube":"YouTube"},"title":"App name","description":"The name of the app.","required":true}]},{"name":"Custom branding name for YouTube Music","description":"Renames the YouTube Music app to the name specified in options.json.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"AppNameNotification","default":"RVX Music","values":{"ReVanced Extended Music":"ReVanced Extended Music","RVX Music":"RVX Music","YouTube Music":"YouTube Music","YT Music":"YT Music"},"title":"App name in notification panel","description":"The name of the app as it appears in the notification panel.","required":true},{"key":"AppNameLauncher","default":"RVX Music","values":{"ReVanced Extended Music":"ReVanced Extended Music","RVX Music":"RVX Music","YouTube Music":"YouTube Music","YT Music":"YT Music"},"title":"App name in launcher","description":"The name of the app as it appears in the launcher.","required":true}]},{"name":"Custom double tap length","description":"Adds Double-tap to seek values that are specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"DoubleTapLengthArrays","default":"3, 5, 10, 15, 20, 30, 60, 120, 180","values":null,"title":"Double-tap to seek values","description":"A list of custom Double-tap to seek lengths to be added, separated by commas.","required":true}]},{"name":"Custom header for YouTube","description":"Applies a custom header in the top left corner within the app.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"CustomHeader","default":"custom_branding_icon","values":{"Custom branding icon":"custom_branding_icon"},"title":"Custom header","description":"The header to apply to the app.\n\nPatch option \u0027Custom branding icon\u0027 applies only when:\n\n1. Patch \u0027Custom branding icon for YouTube\u0027 is included.\n2. Patch option for \u0027Custom branding icon for YouTube\u0027 is selected from the preset.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n[Generic header]\n\n- yt_wordmark_header_light.png\n- yt_wordmark_header_dark.png\n\nThe image dimensions must be as follows:\n\n- drawable-xxxhdpi: 488px x 192px\n- drawable-xxhdpi: 366px x 144px\n- drawable-xhdpi: 244px x 96px\n- drawable-hdpi: 184px x 72px\n- drawable-mdpi: 122px x 48px\n\n[Premium header]\n\n- yt_premium_wordmark_header_light.png\n- yt_premium_wordmark_header_dark.png\n\nThe image dimensions must be as follows:\n- drawable-xxxhdpi: 516px x 192px\n- drawable-xxhdpi: 387px x 144px\n- drawable-xhdpi: 258px x 96px\n- drawable-hdpi: 194px x 72px\n- drawable-mdpi: 129px x 48px","required":true}]},{"name":"Custom header for YouTube Music","description":"Applies a custom header in the top left corner within the app.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"CustomHeader","default":"custom_branding_icon","values":{"Custom branding icon":"custom_branding_icon"},"title":"Custom header","description":"The header to apply to the app.\n\nPatch option \u0027Custom branding icon\u0027 applies only when:\n\n1. Patch \u0027Custom branding icon for YouTube Music\u0027 is included.\n2. Patch option for \u0027Custom branding icon for YouTube Music\u0027 is selected from the preset.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n- action_bar_logo.png\n- logo_music.png\n- ytm_logo.png\n\nThe image \u0027action_bar_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 320px x 96px\n- drawable-xxhdpi: 240px x 72px\n- drawable-xhdpi: 160px x 48px\n- drawable-hdpi: 121px x 36px\n- drawable-mdpi: 80px x 24px\n\nThe image \u0027logo_music.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 576px x 200px\n- drawable-xxhdpi: 432px x 150px\n- drawable-xhdpi: 288px x 100px\n- drawable-hdpi: 217px x 76px\n- drawable-mdpi: 144px x 50px\n\nThe image \u0027ytm_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 412px x 144px\n- drawable-xxhdpi: 309px x 108px\n- drawable-xhdpi: 206px x 72px\n- drawable-hdpi: 155px x 54px\n- drawable-mdpi: 103px x 36px","required":true}]},{"name":"Description components","description":"Adds options to hide and disable description components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable Cairo splash animation","description":"Adds an option to disable Cairo splash animation.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["7.06.54","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable QUIC protocol","description":"Adds an option to disable CronetEngine\u0027s QUIC protocol.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto audio tracks","description":"Adds an option to disable audio tracks from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto captions","description":"Adds an option to disable captions from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable auto captions","description":"Adds an option to disable captions from being automatically enabled.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable dislike redirection","description":"Adds an option to disable redirection to the next track when clicking the Dislike button.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable haptic feedback","description":"Adds options to disable haptic feedback when swiping in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable resuming Shorts on startup","description":"Adds an option to disable the Shorts player from resuming on app startup when Shorts were last being watched.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable screenshot popup","description":"Adds an option to disable the popup that appears when taking a screenshot.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Disable splash animation","description":"Adds an option to disable the splash animation on app startup.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable OPUS codec","description":"Adds an options to enable the OPUS audio codec if the player response includes.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable OPUS codec","description":"Adds an options to enable the OPUS audio codec if the player response includes.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable debug logging","description":"Adds an option to enable debug logging.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable debug logging","description":"Adds an option to enable debug logging.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable external browser","description":"Adds an option to always open links in your browser instead of in the in-app-browser.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable gradient loading screen","description":"Adds an option to enable the gradient loading screen.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable landscape mode","description":"Adds an option to enable landscape mode when rotating the screen on phones.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Enable open links directly","description":"Adds an option to skip over redirection URLs in external links.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Flyout menu components","description":"Adds options to hide or change flyout menu components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Force hide player buttons background","description":"Removes, at compile time, the dark background surrounding the video player controls.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Fullscreen components","description":"Adds options to hide or change components related to fullscreen.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"GmsCore support","description":"Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"GmsCoreVendorGroupId","default":"app.revanced","values":{"ReVanced":"app.revanced"},"title":"GmsCore vendor group ID","description":"The vendor\u0027s group ID for GmsCore.","required":true},{"key":"CheckGmsCore","default":true,"values":null,"title":"Check GmsCore","description":"Check if GmsCore is installed on the device and has battery optimizations disabled when the app starts. \n\nIf GmsCore is not installed the app will not work, so disabling this is not recommended.","required":true},{"key":"PackageNameYouTube","default":"app.rvx.android.youtube","values":{"Clone":"com.rvx.android.youtube","Default":"app.rvx.android.youtube"},"title":"Package name of YouTube","description":"The name of the package to use in GmsCore support.","required":true},{"key":"PackageNameYouTubeMusic","default":"app.rvx.android.apps.youtube.music","values":{"Clone":"com.rvx.android.apps.youtube.music","Default":"app.rvx.android.apps.youtube.music"},"title":"Package name of YouTube Music","description":"The name of the package to use in GmsCore support.","required":true}]},{"name":"GmsCore support","description":"Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"GmsCoreVendorGroupId","default":"app.revanced","values":{"ReVanced":"app.revanced"},"title":"GmsCore vendor group ID","description":"The vendor\u0027s group ID for GmsCore.","required":true},{"key":"CheckGmsCore","default":true,"values":null,"title":"Check GmsCore","description":"Check if GmsCore is installed on the device and has battery optimizations disabled when the app starts. \n\nIf GmsCore is not installed the app will not work, so disabling this is not recommended.","required":true},{"key":"PackageNameYouTube","default":"app.rvx.android.youtube","values":{"Clone":"com.rvx.android.youtube","Default":"app.rvx.android.youtube"},"title":"Package name of YouTube","description":"The name of the package to use in GmsCore support.","required":true},{"key":"PackageNameYouTubeMusic","default":"app.rvx.android.apps.youtube.music","values":{"Clone":"com.rvx.android.apps.youtube.music","Default":"app.rvx.android.apps.youtube.music"},"title":"Package name of YouTube Music","description":"The name of the package to use in GmsCore support.","required":true}]},{"name":"Hide Recently Visited shelf","description":"Adds an option to hide the Recently Visited shelf in the sidebar.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide Shorts dimming","description":"Removes, at compile time, the dimming effect at the top and bottom of Shorts videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide account components","description":"Adds options to hide components related to the account menu.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide action bar components","description":"Adds options to hide action bar components and replace the offline download button with an external download button.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide action buttons","description":"Adds options to hide action buttons under videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":true,"options":[]},{"name":"Hide ads","description":"Adds options to hide ads.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide comments components","description":"Adds options to hide components related to comments.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide feed components","description":"Adds options to hide components related to feeds.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide feed flyout menu","description":"Adds the ability to hide feed flyout menu components using a custom filter.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide layout components","description":"Adds options to hide general layout components.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide layout components","description":"Adds options to hide general layout components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide navigation buttons","description":"Adds options to hide buttons in the navigation bar.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide overlay filter","description":"Removes, at compile time, the dark overlay that appears when player flyout menus are open.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide player buttons","description":"Adds options to hide buttons in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide player flyout menu","description":"Adds options to hide player flyout menu components.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hide player overlay filter","description":"Removes, at compile time, the dark overlay that appears when single-tapping in the player.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Hide recommended communities shelf","description":"Adds an option to hide the recommended communities shelves in subreddits.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Hook download actions","description":"Adds support to download videos with an external downloader app using the in-app download button.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Layout switch","description":"Adds an option to spoof the dpi in order to use a tablet or phone layout.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"MaterialYou","description":"Applies the MaterialYou theme for Android 12+ devices.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[]},{"name":"Miniplayer","description":"Adds options to change the in app minimized player, and if patching target 19.16+ adds options to use modern miniplayers.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Navigation bar components","description":"Adds options to hide or change components related to the navigation bar.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Navigation bar components","description":"Adds options to hide or change components related to the navigation bar.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Open links directly","description":"Adds an option to skip over redirection URLs in external links.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Open links externally","description":"Adds an option to always open links in your browser instead of in the in-app-browser.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Overlay buttons","description":"Adds options to display overlay buttons in the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"IconType","default":"bold","values":{"Bold":"bold","Rounded":"rounded","Thin":"thin"},"title":"Icon type","description":"The icon type.","required":true},{"key":"BottomMargin","default":"2.5dip","values":{"Default":"2.5dip","None":"0.0dip","Wider":"5.0dip"},"title":"Bottom margin","description":"The bottom margin for the overlay buttons and timestamp.","required":true},{"key":"ChangeTopButtons","default":false,"values":null,"title":"Change top buttons","description":"Change the icons at the top of the player.","required":true}]},{"name":"Player components","description":"Adds options to hide or change components related to the player.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Player components","description":"Adds options to hide or change components related to the video player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Premium icon","description":"Unlocks premium app icons.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove background playback restrictions","description":"Removes restrictions on background playback, including for kids videos.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove background playback restrictions","description":"Removes restrictions on background playback, including for music and kids videos.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove subreddit dialog","description":"Adds options to remove the NSFW community warning and notifications suggestion dialogs by dismissing them automatically.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove viewer discretion dialog","description":"Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Remove viewer discretion dialog","description":"Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Restore old style library shelf","description":"Adds an option to return the Library tab to the old style.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Return YouTube Dislike","description":"Adds an option to show the dislike count of songs using the Return YouTube Dislike API.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Return YouTube Dislike","description":"Adds an option to show the dislike count of videos using the Return YouTube Dislike API.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Sanitize sharing links","description":"Adds an option to remove tracking query parameters from URLs when sharing links.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Seekbar components","description":"Adds options to hide or change components related to the seekbar.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Settings for Reddit","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.reddit.frontpage","versions":["2023.12.0","2024.17.0"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Settings for YouTube","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"InsertPosition","default":"@string/about_key","values":{"Parent settings":"@string/parent_tools_key","General":"@string/general_key","Account":"@string/account_switcher_key","Data saving":"@string/data_saving_settings_key","Autoplay":"@string/auto_play_key","Video quality preferences":"@string/video_quality_settings_key","Background":"@string/offline_key","Watch on TV":"@string/pair_with_tv_key","Manage all history":"@string/history_key","Your data in YouTube":"@string/your_data_key","Privacy":"@string/privacy_key","History \u0026 privacy":"@string/privacy_key","Try experimental new features":"@string/premium_early_access_browse_page_key","Purchases and memberships":"@string/subscription_product_setting_key","Billing \u0026 payments":"@string/billing_and_payment_key","Billing and payments":"@string/billing_and_payment_key","Notifications":"@string/notification_key","Connected apps":"@string/connected_accounts_browse_page_key","Live chat":"@string/live_chat_key","Captions":"@string/captions_key","Accessibility":"@string/accessibility_settings_key","About":"@string/about_key"},"title":"Insert position","description":"The settings menu name that the RVX settings menu should be above.","required":true},{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Settings for YouTube Music","description":"Applies mandatory patches to implement ReVanced Extended settings into the application.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":true,"options":[{"key":"RVXSettingsMenuName","default":"ReVanced Extended","values":null,"title":"RVX settings menu name","description":"The name of the RVX settings menu.","required":true}]},{"name":"Shorts components","description":"Adds options to hide or change components related to YouTube Shorts.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"SponsorBlock","description":"Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as non-music sections.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"SponsorBlock","description":"Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as sponsored content.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"OutlineIcon","default":false,"values":null,"title":"Outline icons","description":"Apply the outline icon.","required":true}]},{"name":"Spoof app version","description":"Adds options to spoof the YouTube Music client version. This can remove the radio mode restriction in Canadian regions or disable real-time lyrics.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Spoof app version","description":"Adds options to spoof the YouTube client version. This can be used to restore old UI elements and features.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Spoof streaming data","description":"Adds options to spoof the streaming data to allow video playback.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Swipe controls","description":"Adds options for controlling volume and brightness with swiping, and whether to enter fullscreen when swiping down below the player.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Theme","description":"Changes the app\u0027s theme to the values specified in options.json.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"DarkThemeBackgroundColor","default":"@android:color/black","values":{"Amoled Black":"@android:color/black","Catppuccin (Mocha)":"#FF181825","Dark Pink":"#FF290025","Dark Blue":"#FF001029","Dark Green":"#FF002905","Dark Yellow":"#FF282900","Dark Orange":"#FF291800","Dark Red":"#FF290000"},"title":"Dark theme background color","description":"Can be a hex color (#AARRGGBB) or a color resource reference.","required":true},{"key":"LightThemeBackgroundColor","default":"@android:color/white","values":{"White":"@android:color/white","Catppuccin (Latte)":"#FFE6E9EF","Light Pink":"#FFFCCFF3","Light Blue":"#FFD1E0FF","Light Green":"#FFCCFFCC","Light Yellow":"#FFFDFFCC","Light Orange":"#FFFFE6CC","Light Red":"#FFFFD6D6"},"title":"Light theme background color","description":"Can be a hex color (#AARRGGBB) or a color resource reference.","required":true}]},{"name":"Toolbar components","description":"Adds options to hide or change components located on the toolbar, such as toolbar buttons, search bar, and header.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Translations for YouTube","description":"Add translations or remove string resources.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"CustomTranslations","default":"","values":null,"title":"Custom translations","description":"The path to the \u0027strings.xml\u0027 file.\nPlease note that applying the \u0027strings.xml\u0027 file will overwrite all existing translations.","required":true},{"key":"SelectedTranslations","default":"ar, bg-rBG, de-rDE, el-rGR, es-rES, fr-rFR, hu-rHU, it-rIT, ja-rJP, ko-rKR, pl-rPL, pt-rBR, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW","values":null,"title":"Translations to add","description":"A list of translations to be added for the RVX settings, separated by commas.","required":true},{"key":"SelectedStringResources","default":"af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu","values":null,"title":"String resources to keep","description":"A list of string resources to be kept, separated by commas.\nString resources not in the list will be removed from the app.\n\nDefault string resource, English, is not removed.","required":true}]},{"name":"Translations for YouTube Music","description":"Add translations or remove string resources.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[{"key":"CustomTranslations","default":"","values":null,"title":"Custom translations","description":"The path to the \u0027strings.xml\u0027 file.\nPlease note that applying the \u0027strings.xml\u0027 file will overwrite all existing language translations.","required":true},{"key":"SelectedTranslations","default":"bg-rBG, bn, cs-rCZ, el-rGR, es-rES, fr-rFR, hu-rHU, id-rID, in, it-rIT, ja-rJP, ko-rKR, nl-rNL, pl-rPL, pt-rBR, ro-rRO, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW","values":null,"title":"Translations to add","description":"A list of translations to be added for the RVX settings, separated by commas.","required":true},{"key":"SelectedStringResources","default":"af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu","values":null,"title":"String resources to keep","description":"A list of string resources to be kept, separated by commas.\nString resources not in the list will be removed from the app.\n\nDefault string resource, English, is not removed.","required":true}]},{"name":"Video playback","description":"Adds options to customize settings related to video playback, such as default video quality and playback speed.","compatiblePackages":[{"name":"com.google.android.apps.youtube.music","versions":["6.29.58","6.33.52","6.42.55","6.51.53","7.16.53","7.17.51"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Video playback","description":"Adds options to customize settings related to video playback, such as default video quality and playback speed.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]},{"name":"Visual preferences icons","description":"Adds icons to specific preferences in the settings.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":false,"requiresIntegrations":false,"options":[{"key":"RVXSettingsMenuIcon","default":"extension","values":{"Custom branding icon":"custom_branding_icon","Extension":"extension","Gear":"gear","ReVanced":"revanced","ReVanced Colored":"revanced_colored"},"title":"RVX settings menu icon","description":"The icon for the RVX settings menu.","required":true}]},{"name":"Watch history","description":"Adds an option to change the domain of the watch history or check its status.","compatiblePackages":[{"name":"com.google.android.youtube","versions":["18.29.38","18.33.40","18.38.44","18.48.39","19.05.36","19.16.39"]}],"use":true,"requiresIntegrations":false,"options":[]}] \ No newline at end of file From b79372aac48e18b1729d25f1270fd7827370e052 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sat, 7 Sep 2024 09:23:11 +0900 Subject: [PATCH 52/53] feat(Translations): update translation --- .../music/translations/vi-rVN/strings.xml | 2 ++ .../youtube/translations/fr-rFR/strings.xml | 4 ++-- .../youtube/translations/rename_translate.bat | 20 ------------------- .../youtube/translations/vi-rVN/strings.xml | 2 +- 4 files changed, 5 insertions(+), 23 deletions(-) delete mode 100644 src/main/resources/youtube/translations/rename_translate.bat diff --git a/src/main/resources/music/translations/vi-rVN/strings.xml b/src/main/resources/music/translations/vi-rVN/strings.xml index 086ac17469..02edd88bf9 100644 --- a/src/main/resources/music/translations/vi-rVN/strings.xml +++ b/src/main/resources/music/translations/vi-rVN/strings.xml @@ -340,6 +340,8 @@ Lưu ý:\n- Tuỳ chọn này sẽ thay đổi giao diện ứng dụng, tuy nhi Thay thế miền bị chặn ở một số khu vực để có thể thu được được ảnh bìa video của danh sách phát, ảnh đại diện kênh, v. v. Thay đổi giao diện chia sẻ Chuyển giao diện chia sẻ trong ứng dụng sang của hệ thống. + Vô hiệu hóa hoạt ảnh Cairo + Vô hiệu hóa hoạt ảnh Cairo khi ứng dụng khởi chạy. Nhật ký gỡ lỗi Bật ghi nhật ký gỡ lỗi. Bật nhật ký gỡ lỗi bộ đệm diff --git a/src/main/resources/youtube/translations/fr-rFR/strings.xml b/src/main/resources/youtube/translations/fr-rFR/strings.xml index 7ae77aaafe..aae6383d65 100644 --- a/src/main/resources/youtube/translations/fr-rFR/strings.xml +++ b/src/main/resources/youtube/translations/fr-rFR/strings.xml @@ -325,7 +325,7 @@ Cela ne contourne pas la restriction d'âge, mais le confirme automatiquement."< Le bouton \"Télécharger\" natif ouvre votre téléchargeur externe. Le bouton \"Télécharger\" natif ouvre le téléchargeur de l\'appli. Remplacer le bouton de téléchargement de la playlist - Le bouton de téléchargement natif de la playlist est toujours affiché, et dans les playlists publiques, il ouvre votre téléchargeur externe. + Le bouton de téléchargement natif de la playlist est toujours affiché, tandis que les playlists publiques utilisera votre téléchargeur externe. Si affiché, le bouton \"Télécharger\" natif de la playlist ouvre le téléchargeur natif de l\'appli. Nom du paquet du téléchargeur de la playlist Nom de package du téléchargeur externe installé, telle que YTDLnis. @@ -501,7 +501,7 @@ Appuyez longuement pour ouvrir les paramètres RVX." La lecture automatique peut être modifiée dans les paramètres de YouTube : Paramètres → Lecture automatique → Lecture automatique de la vidéo suivante" - Activer cette fonction désactive le passage automatique à YouTube Mix lors de la lecture de musique lorsque la lecture automatique est activée. + Activer cette fonction désactivera le passage automatique à YouTube Mix lors de la lecture de musique lorsque la lecture automatique est activée. Désactiver le contrôle de la vitesse "Désactive '2x>>' en appuyant longuement. diff --git a/src/main/resources/youtube/translations/rename_translate.bat b/src/main/resources/youtube/translations/rename_translate.bat deleted file mode 100644 index 256b3c1d64..0000000000 --- a/src/main/resources/youtube/translations/rename_translate.bat +++ /dev/null @@ -1,20 +0,0 @@ -rename ar ar -rename bg bg-rBG -rename de de-rDE -rename fr fr-rFR -rename el el-rGR -rename es-ES es-rES -rename hu hu-rHU -rename it it-rIT -rename ja ja-rJP -rename ko ko-rKR -rename pl pl-rPL -rename pt-BR pt-rBR -rename ru ru-rRU -rename tr tr-rTR -rename uk uk-rUA -rename vi vi-rVN -rename zh-CN zh-rCN -rename zh-TW zh-rTW - -::RD /S /Q bg diff --git a/src/main/resources/youtube/translations/vi-rVN/strings.xml b/src/main/resources/youtube/translations/vi-rVN/strings.xml index 05e77ee138..3bbeef61a8 100644 --- a/src/main/resources/youtube/translations/vi-rVN/strings.xml +++ b/src/main/resources/youtube/translations/vi-rVN/strings.xml @@ -1524,7 +1524,7 @@ AVC (H.264) có độ phân giải tối đa 1080p, và phát video sẽ dùng n Thay đổi cài đặt liên quan đến Nhật ký xem. Quản lý toàn bộ lịch sử Nhấn để mở mục quản lý Nhật ký xem trên YouTube. - Kiểu Nhật ký xem + Kiểu nhật ký Gốc Thay thế miền Chặn Nhật ký xem From 20b7721e6ad203fda0ad10357dfa4277b341b819 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sat, 7 Sep 2024 09:31:49 +0900 Subject: [PATCH 53/53] bump 4.13.1 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 8c7349f542..45ef12a923 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel = true org.gradle.caching = true kotlin.code.style = official -version = 4.13.1-dev.5 +version = 4.13.1