feat: add full local mode option to instance settings

This commit is contained in:
Bnyro 2025-03-02 12:42:30 +01:00
parent 7db8212c72
commit 676c62a7e0
No known key found for this signature in database
5 changed files with 67 additions and 46 deletions

View File

@ -39,13 +39,11 @@ interface MediaServiceRepository {
suspend fun getPlaylistNextPage(playlistId: String, nextPage: String): Playlist suspend fun getPlaylistNextPage(playlistId: String, nextPage: String): Playlist
companion object { companion object {
val instance by lazy { val instance: MediaServiceRepository
if (PlayerHelper.disablePipedProxy && PlayerHelper.localStreamExtraction) { get() = when {
// TODO: LocalStreamsExtractionPipedMediaServiceRepository() PlayerHelper.fullLocalMode -> NewPipeMediaServiceRepository()
NewPipeMediaServiceRepository() PlayerHelper.localStreamExtraction -> LocalStreamsExtractionPipedMediaServiceRepository()
} else { else -> PipedMediaServiceRepository()
PipedMediaServiceRepository()
} }
}
} }
} }

View File

@ -133,6 +133,7 @@ object PreferenceKeys {
const val MAX_CONCURRENT_DOWNLOADS = "max_parallel_downloads" const val MAX_CONCURRENT_DOWNLOADS = "max_parallel_downloads"
const val EXTERNAL_DOWNLOAD_PROVIDER = "external_download_provider" const val EXTERNAL_DOWNLOAD_PROVIDER = "external_download_provider"
const val DISABLE_VIDEO_IMAGE_PROXY = "disable_video_image_proxy" const val DISABLE_VIDEO_IMAGE_PROXY = "disable_video_image_proxy"
const val FULL_LOCAL_MODE = "full_local_mode"
const val LOCAL_RYD = "local_return_youtube_dislikes" const val LOCAL_RYD = "local_return_youtube_dislikes"
const val LOCAL_STREAM_EXTRACTION = "local_stream_extraction" const val LOCAL_STREAM_EXTRACTION = "local_stream_extraction"

View File

@ -357,6 +357,12 @@ object PlayerHelper {
false false
) )
val fullLocalMode: Boolean
get() = PreferenceHelper.getBoolean(
PreferenceKeys.FULL_LOCAL_MODE,
false
)
val localStreamExtraction: Boolean val localStreamExtraction: Boolean
get() = PreferenceHelper.getBoolean( get() = PreferenceHelper.getBoolean(
PreferenceKeys.LOCAL_STREAM_EXTRACTION, PreferenceKeys.LOCAL_STREAM_EXTRACTION,

View File

@ -472,6 +472,7 @@
<string name="crashlog">Crashlog</string> <string name="crashlog">Crashlog</string>
<string name="never_show_again">Never show this again</string> <string name="never_show_again">Never show this again</string>
<string name="update_information">Update information</string> <string name="update_information">Update information</string>
<string name="mode_of_operation">Mode of operation</string>
<!-- Backup & Restore Settings --> <!-- Backup & Restore Settings -->
<string name="import_subscriptions_from">Import subscriptions from</string> <string name="import_subscriptions_from">Import subscriptions from</string>
@ -532,6 +533,9 @@
<string name="local_feed_extraction_summary">Directly fetch the feed from YouTube. This may be significantly slower.</string> <string name="local_feed_extraction_summary">Directly fetch the feed from YouTube. This may be significantly slower.</string>
<string name="show_upcoming_videos">Show upcoming videos</string> <string name="show_upcoming_videos">Show upcoming videos</string>
<string name="updating_feed">Updating feed …</string> <string name="updating_feed">Updating feed …</string>
<string name="full_local_mode">Full local mode</string>
<string name="full_local_mode_desc">Directly fetch everything from YouTube, without using Piped.</string>
<string name="authentication">Authentication</string>
<!-- Notification channel strings --> <!-- Notification channel strings -->
<string name="download_channel_name">Download Service</string> <string name="download_channel_name">Download Service</string>

View File

@ -2,6 +2,26 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"> xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory app:title="@string/mode_of_operation">
<SwitchPreferenceCompat
android:icon="@drawable/ic_region"
android:defaultValue="false"
android:title="@string/full_local_mode"
android:key="full_local_mode"
android:disableDependentsState="true"
android:summary="@string/full_local_mode_desc" />
<SwitchPreferenceCompat
android:defaultValue="true"
android:icon="@drawable/ic_region"
android:dependency="full_local_mode"
android:summary="@string/local_stream_extraction_summary"
android:title="@string/local_stream_extraction"
app:key="local_stream_extraction" />
</PreferenceCategory>
<PreferenceCategory app:title="@string/instance"> <PreferenceCategory app:title="@string/instance">
<ListPreference <ListPreference
@ -10,19 +30,41 @@
app:entries="@array/instances" app:entries="@array/instances"
app:entryValues="@array/instancesValue" app:entryValues="@array/instancesValue"
app:key="selectInstance" app:key="selectInstance"
android:dependency="full_local_mode"
app:title="@string/instances" /> app:title="@string/instances" />
<Preference <Preference
android:icon="@drawable/ic_add_instance" android:icon="@drawable/ic_add_instance"
app:key="customInstance" app:key="customInstance"
android:dependency="full_local_mode"
app:summary="@string/customInstance_summary" app:summary="@string/customInstance_summary"
app:title="@string/customInstance" /> app:title="@string/customInstance" />
<Preference <Preference
android:icon="@drawable/ic_trash" android:icon="@drawable/ic_trash"
app:key="clearCustomInstances" app:key="clearCustomInstances"
android:dependency="full_local_mode"
app:title="@string/clear_customInstances" /> app:title="@string/clear_customInstances" />
<SwitchPreferenceCompat
android:defaultValue="false"
android:icon="@drawable/ic_server"
android:dependency="full_local_mode"
android:summary="@string/disable_proxy_summary"
android:title="@string/disable_proxy"
app:key="disable_video_image_proxy" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/authentication">
<SwitchPreferenceCompat
android:defaultValue="false"
android:icon="@drawable/ic_region"
android:summary="@string/local_feed_extraction_summary"
android:title="@string/local_feed_extraction"
app:key="local_feed_extraction" />
<SwitchPreferenceCompat <SwitchPreferenceCompat
android:defaultValue="false" android:defaultValue="false"
android:icon="@drawable/ic_auth" android:icon="@drawable/ic_auth"
@ -39,21 +81,6 @@
app:key="selectAuthInstance" app:key="selectAuthInstance"
app:title="@string/auth_instances" /> app:title="@string/auth_instances" />
</PreferenceCategory>
<PreferenceCategory app:title="@string/audio_video">
<SwitchPreferenceCompat
android:defaultValue="false"
android:icon="@drawable/ic_list"
android:summary="@string/hls_instead_of_dash_summary"
android:title="@string/hls_instead_of_dash"
app:key="use_hls" />
</PreferenceCategory>
<PreferenceCategory app:title="@string/account">
<Preference <Preference
android:icon="@drawable/ic_login_filled" android:icon="@drawable/ic_login_filled"
android:summary="@string/notgmail" android:summary="@string/notgmail"
@ -75,42 +102,27 @@
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory app:title="@string/proxy"> <PreferenceCategory app:title="@string/audio_video">
<SwitchPreferenceCompat <SwitchPreferenceCompat
android:defaultValue="false" android:defaultValue="false"
android:icon="@drawable/ic_server" android:icon="@drawable/ic_list"
android:summary="@string/disable_proxy_summary" android:summary="@string/hls_instead_of_dash_summary"
android:title="@string/disable_proxy" android:title="@string/hls_instead_of_dash"
app:key="disable_video_image_proxy" /> app:key="use_hls" />
<SwitchPreferenceCompat </PreferenceCategory>
android:defaultValue="true"
android:icon="@drawable/ic_region" <PreferenceCategory app:title="@string/misc">
android:summary="@string/local_stream_extraction_summary"
android:title="@string/local_stream_extraction"
android:dependency="disable_video_image_proxy"
app:key="local_stream_extraction" />
<SwitchPreferenceCompat <SwitchPreferenceCompat
android:defaultValue="true" android:defaultValue="true"
android:icon="@drawable/ic_dislike" android:icon="@drawable/ic_dislike"
android:dependency="local_stream_extraction"
android:summary="@string/local_ryd_summary" android:summary="@string/local_ryd_summary"
android:title="@string/local_ryd" android:title="@string/local_ryd"
android:dependency="local_stream_extraction"
app:key="local_return_youtube_dislikes" /> app:key="local_return_youtube_dislikes" />
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory app:title="@string/subscriptions">
<SwitchPreferenceCompat
android:defaultValue="false"
android:icon="@drawable/ic_region"
android:summary="@string/local_feed_extraction_summary"
android:title="@string/local_feed_extraction"
app:key="local_feed_extraction" />
</PreferenceCategory>
</PreferenceScreen> </PreferenceScreen>