From f931e157e1c4688e93315e490a07e65d2890d254 Mon Sep 17 00:00:00 2001 From: Thomas Date: Mon, 25 Oct 2021 14:50:06 +0200 Subject: [PATCH] Support scribe.rip #63 --- app/src/fullLinks/AndroidManifest.xml | 20 +++ app/src/main/AndroidManifest.xml | 21 +++ .../activities/CheckAppActivity.java | 5 +- .../nitterizeme/activities/MainActivity.java | 65 ++++++++ .../fedilab/nitterizeme/helpers/Utils.java | 25 ++- app/src/main/res/layout/content_main.xml | 144 +++++++++++++++++- app/src/main/res/values/strings.xml | 2 + 7 files changed, 279 insertions(+), 3 deletions(-) diff --git a/app/src/fullLinks/AndroidManifest.xml b/app/src/fullLinks/AndroidManifest.xml index 64c3440..ef39f10 100644 --- a/app/src/fullLinks/AndroidManifest.xml +++ b/app/src/fullLinks/AndroidManifest.xml @@ -179,7 +179,27 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fbf98e8..cb4c314 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -93,6 +93,27 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/java/app/fedilab/nitterizeme/activities/CheckAppActivity.java b/app/src/main/java/app/fedilab/nitterizeme/activities/CheckAppActivity.java index e891316..db36e25 100644 --- a/app/src/main/java/app/fedilab/nitterizeme/activities/CheckAppActivity.java +++ b/app/src/main/java/app/fedilab/nitterizeme/activities/CheckAppActivity.java @@ -70,7 +70,10 @@ public class CheckAppActivity extends AppCompatActivity { "i.redd.it", "preview.redd.it" }; - + public static String[] medium_domains = { + "medium.com", + "www.medium.com" + }; public static String[] shortener_domains = { "t.co", "nyti.ms", diff --git a/app/src/main/java/app/fedilab/nitterizeme/activities/MainActivity.java b/app/src/main/java/app/fedilab/nitterizeme/activities/MainActivity.java index 43d6b11..ea93341 100644 --- a/app/src/main/java/app/fedilab/nitterizeme/activities/MainActivity.java +++ b/app/src/main/java/app/fedilab/nitterizeme/activities/MainActivity.java @@ -50,6 +50,7 @@ public class MainActivity extends AppCompatActivity { public static final String SET_TEDDIT_HOST = "set_teddit_host"; public static final String SET_OSM_HOST = "set_osm_host"; public static final String SET_BIBLIOGRAM_HOST = "set_bibliogram_host"; + public static final String SET_SCRIBERIP_HOST = "set_scriberip_host"; @SuppressWarnings({"unused", "RedundantSuppression"}) public static String TAG = "UntrackMe"; public static String DEFAULT_NITTER_HOST = "nitter.net"; @@ -57,10 +58,12 @@ public class MainActivity extends AppCompatActivity { public static String SET_INVIDIOUS_ENABLED = "set_invidious_enabled"; public static String SET_TEDDIT_ENABLED = "set_teddit_enabled"; public static String SET_NITTER_ENABLED = "set_nitter_enabled"; + public static String SET_SCRIBERIP_ENABLED = "set_scriberip_enabled"; public static String SET_OSM_ENABLED = "set_osm_enabled"; public static String DEFAULT_OSM_HOST = "www.openstreetmap.org"; public static String SET_BIBLIOGRAM_ENABLED = "set_bibliogram_enabled"; public static String DEFAULT_BIBLIOGRAM_HOST = "bibliogram.art"; + public static String DEFAULT_SCRIBERIP_HOST = "scribe.rip"; public static String DEFAULT_TEDDIT_HOST = "teddit.net"; public static String SET_GEO_URIS = "set_geo_uris"; public static String SET_EMBEDDED_PLAYER = "set_embedded_player"; @@ -79,6 +82,7 @@ public class MainActivity extends AppCompatActivity { private String invidiousHost; private String bibliogramHost; private String tedditHost; + private String scriberipHost; private String osmHost; private ContentMainBinding binding; @@ -101,6 +105,7 @@ public class MainActivity extends AppCompatActivity { boolean osm_enabled = sharedpreferences.getBoolean(SET_OSM_ENABLED, true); boolean bibliogram_enabled = sharedpreferences.getBoolean(SET_BIBLIOGRAM_ENABLED, true); boolean teddit_enabled = sharedpreferences.getBoolean(SET_TEDDIT_ENABLED, true); + boolean scriberip_enabled = sharedpreferences.getBoolean(SET_SCRIBERIP_ENABLED, true); boolean geouri_enabled = sharedpreferences.getBoolean(SET_GEO_URIS, false); boolean embedded_player = sharedpreferences.getBoolean(SET_EMBEDDED_PLAYER, false); @@ -108,19 +113,23 @@ public class MainActivity extends AppCompatActivity { binding.enableInvidious.setChecked(invidious_enabled); binding.enableBibliogram.setChecked(bibliogram_enabled); binding.enableTeddit.setChecked(teddit_enabled); + binding.enableScriberip.setChecked(scriberip_enabled); binding.enableOsm.setChecked(osm_enabled); + nitterHost = sharedpreferences.getString(SET_NITTER_HOST, null); invidiousHost = sharedpreferences.getString(SET_INVIDIOUS_HOST, null); bibliogramHost = sharedpreferences.getString(SET_BIBLIOGRAM_HOST, null); tedditHost = sharedpreferences.getString(SET_TEDDIT_HOST, null); + scriberipHost = sharedpreferences.getString(SET_SCRIBERIP_HOST, null); osmHost = sharedpreferences.getString(SET_OSM_HOST, null); binding.groupCurrentInvidious.setVisibility(invidious_enabled ? View.VISIBLE : View.GONE); binding.groupCurrentNitter.setVisibility(nitter_enabled ? View.VISIBLE : View.GONE); binding.groupCurrentBibliogram.setVisibility(bibliogram_enabled ? View.VISIBLE : View.GONE); binding.groupCurrentTeddit.setVisibility(bibliogram_enabled ? View.VISIBLE : View.GONE); + binding.groupCurrentScriberip.setVisibility(scriberip_enabled ? View.VISIBLE : View.GONE); binding.groupCurrentOsm.setVisibility((osm_enabled && geouri_enabled) ? View.VISIBLE : View.GONE); binding.enableGeoUris.setVisibility(osm_enabled ? View.VISIBLE : View.GONE); binding.enableEmbedPlayer.setVisibility(invidious_enabled ? View.VISIBLE : View.GONE); @@ -158,6 +167,14 @@ public class MainActivity extends AppCompatActivity { binding.groupCustomTeddit.setVisibility(View.GONE); binding.buttonExpandInstanceTeddit.setRotation(0); }); + binding.enableScriberip.setOnCheckedChangeListener((buttonView, isChecked) -> { + SharedPreferences.Editor editor = sharedpreferences.edit(); + editor.putBoolean(SET_SCRIBERIP_ENABLED, isChecked); + editor.apply(); + binding.groupCurrentScriberip.setVisibility(isChecked ? View.VISIBLE : View.GONE); + binding.groupCustomScriberip.setVisibility(View.GONE); + binding.buttonExpandInstanceScriberip.setRotation(0); + }); binding.enableOsm.setOnCheckedChangeListener((buttonView, isChecked) -> { SharedPreferences.Editor editor = sharedpreferences.edit(); editor.putBoolean(SET_OSM_ENABLED, isChecked); @@ -243,6 +260,22 @@ public class MainActivity extends AppCompatActivity { binding.tedditInstance.setText(""); } }); + binding.buttonExpandInstanceScriberip.setOnClickListener(v -> { + boolean custom_instance_visibility = binding.groupCustomScriberip.getVisibility() == View.VISIBLE; + if (custom_instance_visibility) { + binding.buttonExpandInstanceScriberip.setRotation(0f); + binding.groupCustomScriberip.setVisibility(View.GONE); + } else { + binding.buttonExpandInstanceScriberip.setRotation(180f); + binding.groupCustomScriberip.setVisibility(View.VISIBLE); + } + + if (scriberipHost != null) { + binding.scriberipInstance.setText(scriberipHost); + } else { + binding.scriberipInstance.setText(""); + } + }); binding.buttonExpandInstanceOsm.setOnClickListener(v -> { boolean custom_instance_visibility = binding.groupCustomOsm.getVisibility() == View.VISIBLE; if (custom_instance_visibility) { @@ -285,6 +318,12 @@ public class MainActivity extends AppCompatActivity { } else { binding.currentInstanceTeddit.setText(DEFAULT_TEDDIT_HOST); } + if (scriberipHost != null) { + binding.scriberipInstance.setText(scriberipHost); + binding.currentInstanceScriberip.setText(scriberipHost); + } else { + binding.currentInstanceScriberip.setText(DEFAULT_SCRIBERIP_HOST); + } if (osmHost != null) { binding.osmInstance.setText(osmHost); binding.currentInstanceOsm.setText(osmHost); @@ -350,6 +389,18 @@ public class MainActivity extends AppCompatActivity { } editor.apply(); }); + binding.buttonSaveInstanceScriberip.setOnClickListener(v -> { + SharedPreferences.Editor editor = sharedpreferences.edit(); + if (binding.scriberipInstance.getText() != null && binding.scriberipInstance.getText().toString().trim().length() > 0) { + String custom_instance = binding.scriberipInstance.getText().toString().toLowerCase().trim(); + editor.putString(SET_SCRIBERIP_HOST, custom_instance); + binding.currentInstanceScriberip.setText(custom_instance); + } else { + editor.putString(SET_SCRIBERIP_HOST, null); + binding.currentInstanceScriberip.setText(DEFAULT_SCRIBERIP_HOST); + } + editor.apply(); + }); binding.buttonSaveInstanceOsm.setOnClickListener(v -> { SharedPreferences.Editor editor = sharedpreferences.edit(); if (binding.osmInstance.getText() != null && binding.osmInstance.getText().toString().trim().length() > 0) { @@ -439,6 +490,15 @@ public class MainActivity extends AppCompatActivity { binding.currentInstanceTeddit.setText(DEFAULT_TEDDIT_HOST); binding.buttonExpandInstanceTeddit.setRotation(0f); break; + case SET_SCRIBERIP_HOST: + scriberipHost = sharedpreferences.getString(SET_SCRIBERIP_HOST, null); + binding.groupCustomScriberip.setVisibility(View.GONE); + if (scriberipHost != null && scriberipHost.trim().length() > 0) + binding.currentInstanceScriberip.setText(scriberipHost); + else + binding.currentInstanceScriberip.setText(DEFAULT_SCRIBERIP_HOST); + binding.buttonExpandInstanceScriberip.setRotation(0f); + break; case SET_OSM_HOST: osmHost = sharedpreferences.getString(SET_OSM_HOST, null); binding.groupCustomOsm.setVisibility(View.GONE); @@ -512,6 +572,7 @@ public class MainActivity extends AppCompatActivity { String invidiousHost = sharedpreferences.getString(SET_INVIDIOUS_HOST, null); String bibliogramHost = sharedpreferences.getString(SET_BIBLIOGRAM_HOST, null); String tedditHost = sharedpreferences.getString(SET_TEDDIT_HOST, null); + String scriberipHost = sharedpreferences.getString(SET_SCRIBERIP_HOST, null); if (nitterHost != null) { binding.nitterInstance.setText(nitterHost); binding.currentInstanceNitter.setText(nitterHost); @@ -528,6 +589,10 @@ public class MainActivity extends AppCompatActivity { binding.tedditInstance.setText(tedditHost); binding.currentInstanceTeddit.setText(tedditHost); } + if (scriberipHost != null) { + binding.scriberipInstance.setText(scriberipHost); + binding.currentInstanceScriberip.setText(scriberipHost); + } if (BuildConfig.fullLinks) { List resolveInfos = getPackageManager().queryIntentActivities(new Intent(Intent.ACTION_VIEW, Uri.parse("https://fedilab.app")), PackageManager.MATCH_DEFAULT_ONLY); String thisPackageName = getApplicationContext().getPackageName(); diff --git a/app/src/main/java/app/fedilab/nitterizeme/helpers/Utils.java b/app/src/main/java/app/fedilab/nitterizeme/helpers/Utils.java index adf42e7..624ba5d 100644 --- a/app/src/main/java/app/fedilab/nitterizeme/helpers/Utils.java +++ b/app/src/main/java/app/fedilab/nitterizeme/helpers/Utils.java @@ -82,6 +82,7 @@ import static android.content.Context.DOWNLOAD_SERVICE; import static app.fedilab.nitterizeme.activities.CheckAppActivity.bibliogram_instances; import static app.fedilab.nitterizeme.activities.CheckAppActivity.instagram_domains; import static app.fedilab.nitterizeme.activities.CheckAppActivity.invidious_instances; +import static app.fedilab.nitterizeme.activities.CheckAppActivity.medium_domains; import static app.fedilab.nitterizeme.activities.CheckAppActivity.nitter_instances; import static app.fedilab.nitterizeme.activities.CheckAppActivity.outlook_safe_domain; import static app.fedilab.nitterizeme.activities.CheckAppActivity.reddit_domains; @@ -92,6 +93,7 @@ import static app.fedilab.nitterizeme.activities.MainActivity.SET_BIBLIOGRAM_ENA import static app.fedilab.nitterizeme.activities.MainActivity.SET_EMBEDDED_PLAYER; import static app.fedilab.nitterizeme.activities.MainActivity.SET_INVIDIOUS_ENABLED; import static app.fedilab.nitterizeme.activities.MainActivity.SET_NITTER_ENABLED; +import static app.fedilab.nitterizeme.activities.MainActivity.SET_SCRIBERIP_ENABLED; import static app.fedilab.nitterizeme.activities.MainActivity.SET_TEDDIT_ENABLED; import static app.fedilab.nitterizeme.activities.MainActivity.SET_TEDDIT_HOST; @@ -105,6 +107,7 @@ public class Utils { public static final Pattern redditPattern = Pattern.compile("(www\\.|m\\.)?(reddit\\.com|preview\\.redd\\.it|i\\.redd\\.it)/(((?!([\"'<])).)*)"); public static final Pattern nitterPattern = Pattern.compile("(mobile\\.|www\\.)?twitter.com([\\w-/]+)"); public static final Pattern bibliogramPostPattern = Pattern.compile("(m\\.|www\\.)?instagram.com(/p/[\\w-/]+)"); + public static final Pattern scriberipPattern = Pattern.compile("(www\\.)?medium.com/([\\w-/@]+)"); public static final Pattern bibliogramAccountPattern = Pattern.compile("(m\\.|www\\.)?instagram.com(((?!/p/).)+)"); public static final Pattern maps = Pattern.compile("/maps/place/([^@]+@)?([\\d.,z]+).*"); @@ -307,6 +310,24 @@ public class Utils { } else { return url; } + } else if (Arrays.asList(medium_domains).contains(host)) { + boolean scriberip_enabled = sharedpreferences.getBoolean(MainActivity.SET_SCRIBERIP_ENABLED, true); + if (scriberip_enabled) { + String scriberipHost = sharedpreferences.getString(MainActivity.SET_SCRIBERIP_HOST, MainActivity.DEFAULT_SCRIBERIP_HOST); + assert scriberipHost != null; + scriberipHost = scriberipHost.toLowerCase(); + if (scriberipHost.startsWith("http")) { + scheme = ""; + } + Matcher matcher = scriberipPattern.matcher(url); + while (matcher.find()) { + final String scriberip_directory = matcher.group(2); + newUrl = scheme + scriberipHost + "/" + scriberip_directory; + } + return newUrl; + } else { + return url; + } } else if (url.contains("/maps/place")) { boolean osm_enabled = sharedpreferences.getBoolean(MainActivity.SET_OSM_ENABLED, true); if (osm_enabled) { @@ -1197,7 +1218,7 @@ public class Utils { return Arrays.asList(twitter_domains).contains(host) || Arrays.asList(nitter_instances).contains(host) || Arrays.asList(reddit_domains).contains(host) || Arrays.asList(instagram_domains).contains(host) || Arrays.asList(bibliogram_instances).contains(host) || url.contains("/maps/place") || url.contains("/amp/s/") || (host != null && host.contains(outlook_safe_domain)) - || Arrays.asList(youtube_domains).contains(host) || Arrays.asList(invidious_instances).contains(host); + || Arrays.asList(youtube_domains).contains(host) || Arrays.asList(invidious_instances).contains(host) || Arrays.asList(medium_domains).contains(host); } public static boolean routerEnabledForHost(Context context, String url) { @@ -1221,6 +1242,8 @@ public class Utils { return sharedpreferences.getBoolean(SET_INVIDIOUS_ENABLED, true); } else if (Arrays.asList(reddit_domains).contains(host)) { return sharedpreferences.getBoolean(SET_TEDDIT_ENABLED, true); + } else if (Arrays.asList(medium_domains).contains(host)) { + return sharedpreferences.getBoolean(SET_SCRIBERIP_ENABLED, true); } else return url.contains("/amp/s/") || (host != null && host.contains(outlook_safe_domain)); } diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml index a54b7ce..cb0dcbc 100644 --- a/app/src/main/res/layout/content_main.xml +++ b/app/src/main/res/layout/content_main.xml @@ -489,7 +489,7 @@ style="@style/containerCard" android:layout_width="match_parent" android:layout_height="wrap_content" - app:layout_constraintBottom_toTopOf="@id/osm_container" + app:layout_constraintBottom_toTopOf="@id/scriberip_container" app:layout_constraintTop_toBottomOf="@id/bibliogram_container"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Redirect Twitter to Nitter Redirect Instagram to Bibliogram Redirect Reddit to Teddit + Redirect Medium to Scribe.rip Custom Bibliogram instance + Custom Scribe.rip instance Custom Teddit instance Redirect Google Map to Geo URI Configure