Comment #26 - Apply first settings

This commit is contained in:
Thomas 2020-05-30 15:03:15 +02:00
parent d9cc8fc2c4
commit 6e7723e58a
7 changed files with 188 additions and 34 deletions

View File

@ -216,9 +216,7 @@ public class TransformActivity extends Activity {
if (host != null && host.compareTo(invidiousHost) != 0) {
transformedURL = url.replace(host, invidiousHost);
}
if (!transformedURL.contains("local=true")) {
transformedURL += "&local=true";
}
transformedURL = Utils.replaceInvidiousParams(TransformActivity.this, transformedURL);
intent.setData(Uri.parse(transformedURL));
forwardToBrowser(TransformActivity.this, intent);
} else {
@ -408,9 +406,9 @@ public class TransformActivity extends Activity {
final String youtubeId = matcher.group(3);
String invidiousHost = sharedpreferences.getString(MainActivity.SET_INVIDIOUS_HOST, MainActivity.DEFAULT_INVIDIOUS_HOST).toLowerCase();
if (Objects.requireNonNull(matcher.group(2)).compareTo("youtu.be") == 0) {
newUrl = scheme + invidiousHost + "/watch?v=" + youtubeId + "&local=true";
newUrl = scheme + invidiousHost + "/watch?v=" + youtubeId;
} else {
newUrl = scheme + invidiousHost + "/" + youtubeId + "&local=true";
newUrl = scheme + invidiousHost + "/" + youtubeId;
}
}
}

View File

@ -91,7 +91,6 @@ public class Utils {
public static final Pattern maps = Pattern.compile("/maps/place/([^@]+@)?([\\d.,z]+).*");
public static final Pattern ampExtract = Pattern.compile("amp/s/(.*)");
public static final String RECEIVE_STREAMING_URL = "receive_streaming_url";
public static final String INVIDIOUS_DARK_MODE = "invidious_dark_mode";
private static final Pattern extractPlace = Pattern.compile("/maps/place/(((?!/data).)*)");
private static final Pattern googleRedirect = Pattern.compile("https?://(www\\.)?google(\\.\\w{2,})?(\\.\\w{2,})/url\\?q=(.*)");
private static final String[] G_TRACKING = {
@ -328,12 +327,12 @@ public class Utils {
if (youtubeId != null && youtubeId.contains("?t=")) {
youtubeId = youtubeId.replace("?t=", "&t=");
}
newUrl = scheme + invidiousHost + "/watch?v=" + youtubeId + "&local=true";
newUrl = scheme + invidiousHost + "/watch?v=" + youtubeId;
newUrl = replaceInvidiousParams(context, newUrl);
} else {
newUrl = scheme + invidiousHost + "/" + youtubeId;
if (!url.contains("/channel/")) {
newUrl = scheme + invidiousHost + "/" + youtubeId + "&local=true";
} else {
newUrl = scheme + invidiousHost + "/" + youtubeId;
newUrl = replaceInvidiousParams(context, newUrl);
}
}
}
@ -345,6 +344,44 @@ public class Utils {
return url;
}
/**
* Replace params with those defined in Invidious settings from the app
*
* @param context Context
* @param url String incoming URL
* @return String transformed URL
*/
public static String replaceInvidiousParams(Context context, String url) {
String newUrl = url;
SharedPreferences sharedpreferences = context.getSharedPreferences(MainActivity.APP_PREFS, Context.MODE_PRIVATE);
//Theme
String theme = sharedpreferences.getString(context.getString(R.string.invidious_dark_mode), "0");
if (theme.compareTo("-1") == 0) { //Remove value
newUrl = url.replaceAll("&?dark_mode=(true|false)", "");
} else if (theme.compareTo("0") != 0) { //Change value
newUrl = url.replaceAll("dark_mode=(true|false)", theme);
}
//Tint mode
String tint = sharedpreferences.getString(context.getString(R.string.invidious_tint_mode), "0");
if (tint.compareTo("-1") == 0) { //Remove value
newUrl = url.replaceAll("&?thin_mode=(true|false)", "");
} else if (tint.compareTo("0") != 0) { //Change value
newUrl = url.replaceAll("thin_mode=(true|false)", theme);
}
//Language
String language = sharedpreferences.getString(context.getString(R.string.invidious_language_mode), "0");
if (language.compareTo("-1") == 0) { //Remove value
newUrl = url.replaceAll("&?hl=\\w{2}(-\\w{2})?", "");
} else if (language.compareTo("0") != 0) { //Change value
newUrl = url.replaceAll("hl=\\w{2}(-\\w{2})?", language);
}
return newUrl;
}
/**
* Get time for reaching a domain
*
@ -644,10 +681,11 @@ public class Utils {
final String youtubeId = matcher.group(3);
String invidiousHost = sharedpreferences.getString(MainActivity.SET_INVIDIOUS_HOST, MainActivity.DEFAULT_INVIDIOUS_HOST).toLowerCase();
if (Objects.requireNonNull(matcher.group(2)).compareTo("youtu.be") == 0) {
newUrlFinal = scheme + invidiousHost + "/watch?v=" + youtubeId + "&local=true";
newUrlFinal = scheme + invidiousHost + "/watch?v=" + youtubeId;
} else {
newUrlFinal = scheme + invidiousHost + "/" + youtubeId + "&local=true";
newUrlFinal = scheme + invidiousHost + "/" + youtubeId;
}
newUrlFinal = replaceInvidiousParams(context, newUrlFinal);
}
String newExtraText = extraText.replaceAll(Pattern.quote(url), Matcher.quoteReplacement(newUrlFinal));
Intent sendIntent = new Intent();

View File

@ -25,7 +25,7 @@
<FrameLayout
android:id="@+id/settings_container"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>

View File

@ -2,18 +2,21 @@
<resources>
<string-array name="invidious_theme_values">
<item>0</item>
<item>-1</item>
<item>dark_mode=true</item>
<item>dark_mode=false</item>
</string-array>
<string-array name="invidious_tint_values">
<item>0</item>
<item>-1</item>
<item>thin_mode=true</item>
<item>thin_mode=false</item>
</string-array>
<string-array name="invidious_language_values">
<item>0</item>
<item>-1</item>
<item>hl=ar</item>
<item>hl=de</item>
<item>hl=el</item>
@ -35,8 +38,54 @@
<string-array name="invidious_annotations_values">
<item>0</item>
<item>-1</item>
<item>iv_load_policy=1</item>
<item>iv_load_policy=3</item>
</string-array>
<string-array name="invidious_autoplay_values">
<item>0</item>
<item>-1</item>
<item>autoplay=1</item>
<item>autoplay=0</item>
</string-array>
<string-array name="invidious_continue_values">
<item>0</item>
<item>-1</item>
<item>continue=1</item>
<item>continue=0</item>
</string-array>
<string-array name="invidious_listen_values">
<item>0</item>
<item>-1</item>
<item>listen=true</item>
<item>listen=false</item>
</string-array>
<string-array name="invidious_local_values">
<item>0</item>
<item>-1</item>
<item>local=true</item>
<item>local=false</item>
</string-array>
<string-array name="invidious_subtitles_values">
<item>0</item>
<item>-1</item>
<item>subtitles=en</item>
</string-array>
<string-array name="invidious_quality_values">
<item>0</item>
<item>-1</item>
<item>quality=dash</item>
<item>quality=hd720</item>
<item>quality=medium</item>
</string-array>
</resources>

View File

@ -79,33 +79,43 @@
<string name="no_apps_set_as_default">No apps set as default!</string>
<string name="custom_settings_for_invidious">Custom settings for Invidious</string>
<string name="invidious_settings">Invidious settings</string>
<string name="invidious_dark_theme">Theme</string>
<string name="invidious_dark_theme_indication">Configure default theme without setting cookies</string>
<string name="invidious_thin_mode">Thin mode</string>
<string name="invidious_dark_mode_title">Theme</string>
<string name="invidious_dark_mode_indication">Configure default theme without setting cookies</string>
<string name="invidious_thin_mode_title">Thin mode</string>
<string name="invidious_thin_mode_indication">Load HTML, CSS, JS and video elements (disables images)</string>
<string name="invidious_language_mode_indication">Available locales</string>
<string name="invidious_language_mode">UI Language</string>
<string name="invidious_language_mode_title">UI Language</string>
<string name="pref_invidious_head1">Site-wide parameters</string>
<string name="pref_invidious_head2">Player parameters</string>
<string name="invidious_annotations_mode">Annotations</string>
<string name="invidious_annotations_mode_title">Annotations</string>
<string name="invidious_annotations_mode_indication">Show legacy annotations, provided by the Internet Archive</string>
<string name="invidious_autoplay_mode_indication">Automatically play video on load</string>
<string name="invidious_autoplay_mode_title">Autoplay</string>
<string name="invidious_continue_mode_title">Continue</string>
<string name="invidious_continue_mode_indication">When video is done, automatically go to the next related video (similar to YouTubes Autoplay feature)</string>
<string name="invidious_listen_mode_title">Listen</string>
<string name="invidious_listen_mode_indication">Play only audio portion of video</string>
<string name="invidious_local_mode_title">Local</string>
<string name="invidious_local_mode_indication">Proxy video streams</string>
<string-array name="invidious_theme">
<item>Default</item>
<item>Ignore</item>
<item>Remove</item>
<item>Dark theme</item>
<item>Light theme</item>
</string-array>
<string-array name="invidious_tint">
<item>Default</item>
<string-array name="invidious_enable">
<item>Ignore</item>
<item>Remove</item>
<item>Enabled</item>
<item>Disabled</item>
</string-array>
<string-array name="invidious_language">
<item>Default</item>
<item>Ignore</item>
<item>Remove</item>
<item>Arabic</item>
<item>German</item>
<item>Greek</item>
@ -126,9 +136,30 @@
<string-array name="invidious_annotations">
<item>Default</item>
<item>Ignore</item>
<item>Remove</item>
<item>Show annotations</item>
<item>Hide annotations</item>
</string-array>
<string-array name="invidious_subtitles">
<item>Ignore</item>
<item>Remove</item>
<item>English</item>
</string-array>
<!-- Some local values -->
<string name="invidious_dark_mode" translatable="false">invidious_dark_mode</string>
<string name="invidious_tint_mode" translatable="false">invidious_tint_mode</string>
<string name="invidious_language_mode" translatable="false">invidious_language_mode</string>
<string name="invidious_annotations_mode" translatable="false">invidious_annotations_mode</string>
<string name="invidious_autoplay_mode" translatable="false">invidious_autoplay_mode</string>
<string name="invidious_continue_mode" translatable="false">invidious_continue_mode</string>
<string name="invidious_listen_mode" translatable="false">invidious_listen_mode</string>
<string name="invidious_local_mode" translatable="false">invidious_local_mode</string>
<string name="invidious_subtitles_mode" translatable="false">invidious_subtitles_mode</string>
<string name="invidious_quality_mode" translatable="false">invidious_quality_mode</string>
</resources>

View File

@ -9,6 +9,7 @@
<item name="android:windowBackground">@color/colorPrimaryDark</item>
<item name="android:colorBackground">@color/colorPrimaryDark</item>
<item name="android:textColor">@color/textColor</item>
<item name="alertDialogTheme">@style/AppThemeDialog</item>
</style>
<!-- Base application theme. -->

View File

@ -7,28 +7,28 @@
app:iconSpaceReserved="false">
<ListPreference
app:iconSpaceReserved="false"
app:key="invidious_dark_mode"
app:summary="@string/invidious_dark_theme_indication"
app:title="@string/invidious_dark_theme"
app:key="@string/invidious_dark_mode"
app:summary="@string/invidious_dark_mode_indication"
app:title="@string/invidious_dark_mode_title"
android:defaultValue="0"
android:entries="@array/invidious_theme"
android:entryValues="@array/invidious_theme_values" />
<ListPreference
app:iconSpaceReserved="false"
app:key="invidious_tint_mode"
app:key="@string/invidious_tint_mode"
app:summary="@string/invidious_thin_mode_indication"
app:title="@string/invidious_thin_mode"
app:title="@string/invidious_thin_mode_title"
android:defaultValue="0"
android:entries="@array/invidious_tint"
android:entries="@array/invidious_enable"
android:entryValues="@array/invidious_tint_values" />
<ListPreference
android:defaultValue="0"
app:iconSpaceReserved="false"
app:key="invidious_language_mode"
app:key="@string/invidious_language_mode"
app:summary="@string/invidious_language_mode_indication"
app:title="@string/invidious_language_mode"
app:title="@string/invidious_language_mode_title"
android:entries="@array/invidious_language"
android:entryValues="@array/invidious_language_values" />
</PreferenceCategory>
@ -39,12 +39,49 @@
app:iconSpaceReserved="false">
<ListPreference
app:iconSpaceReserved="false"
app:key="invidious_annotations_mode"
app:key="@string/invidious_annotations_mode"
app:summary="@string/invidious_annotations_mode_indication"
app:title="@string/invidious_annotations_mode"
app:title="@string/invidious_annotations_mode_title"
android:defaultValue="0"
android:entries="@array/invidious_annotations"
android:entryValues="@array/invidious_annotations_values" />
<ListPreference
app:iconSpaceReserved="false"
app:key="@string/invidious_autoplay_mode"
app:summary="@string/invidious_autoplay_mode_indication"
app:title="@string/invidious_autoplay_mode_title"
android:defaultValue="0"
android:entries="@array/invidious_enable"
android:entryValues="@array/invidious_autoplay_values" />
<ListPreference
app:iconSpaceReserved="false"
app:key="@string/invidious_continue_mode"
app:summary="@string/invidious_continue_mode_indication"
app:title="@string/invidious_continue_mode_title"
android:defaultValue="0"
android:entries="@array/invidious_enable"
android:entryValues="@array/invidious_continue_values" />
<ListPreference
app:iconSpaceReserved="false"
app:key="@string/invidious_listen_mode"
app:summary="@string/invidious_listen_mode_indication"
app:title="@string/invidious_listen_mode_title"
android:defaultValue="0"
android:entries="@array/invidious_enable"
android:entryValues="@array/invidious_listen_values" />
<ListPreference
app:iconSpaceReserved="false"
app:key="@string/invidious_local_mode"
app:summary="@string/invidious_local_mode_indication"
app:title="@string/invidious_local_mode_title"
android:defaultValue="0"
android:entries="@array/invidious_enable"
android:entryValues="@array/invidious_local_values" />
</PreferenceCategory>
</PreferenceScreen>