diff --git a/app/src/fullLinks/AndroidManifest.xml b/app/src/fullLinks/AndroidManifest.xml
index a6da9fb..62ae3bd 100644
--- a/app/src/fullLinks/AndroidManifest.xml
+++ b/app/src/fullLinks/AndroidManifest.xml
@@ -63,13 +63,13 @@
+
-
@@ -84,7 +84,6 @@
-
@@ -92,6 +91,11 @@
+
+
+
+
+
@@ -118,6 +122,9 @@
+
+
+
@@ -160,6 +167,7 @@
+
@@ -197,6 +205,11 @@
+
+
+
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c213664..ab52ee8 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -63,6 +63,7 @@
+
@@ -84,7 +85,6 @@
-
@@ -92,6 +92,11 @@
+
+
+
+
+
@@ -131,6 +136,7 @@
+
@@ -150,7 +156,6 @@
-
@@ -158,6 +163,11 @@
+
+
+
+
+
diff --git a/app/src/main/assets/rules.json b/app/src/main/assets/rules.json
index 7cbe6ef..c81f89a 100644
--- a/app/src/main/assets/rules.json
+++ b/app/src/main/assets/rules.json
@@ -214,7 +214,8 @@
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(twitter)(\\.[a-zA-Z]{2,})(.*\\?.*)",
"completeProvider": false,
"rules": [
- "(ref_)?src=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
+ "src=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
+ "ref_[a-z_]+=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
@@ -239,6 +240,22 @@
"exceptions": [],
"redirections": []
},
+ "tiktok": {
+ "urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(tiktok)(\\.[a-zA-Z]{2,})(.*\\?.*)",
+ "completeProvider": false,
+ "rules": [
+ "_[a-z]=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
+ "(sec_)?(u|user_)id=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
+ "share_[a-z_]+=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
+ "source=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
+ "timestamp=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
+ "u_code=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
+ "ugbiz_name=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
+ "utm_[a-z_]+=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
+ ],
+ "exceptions": [],
+ "redirections": []
+ },
"techcrunch": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?([\\.]?techcrunch\\.com)(.*\\?.*)",
"completeProvider": false,
diff --git a/app/src/main/java/app/fedilab/nitterizeme/activities/AppsPickerActivity.java b/app/src/main/java/app/fedilab/nitterizeme/activities/AppsPickerActivity.java
index 0e3d7e7..8cb5080 100644
--- a/app/src/main/java/app/fedilab/nitterizeme/activities/AppsPickerActivity.java
+++ b/app/src/main/java/app/fedilab/nitterizeme/activities/AppsPickerActivity.java
@@ -179,7 +179,7 @@ public class AppsPickerActivity extends Activity {
long val = -1;
if (isPresent) {
ArrayList oldConcurrent = new DefaultAppDAO(AppsPickerActivity.this, db).getConcurrent(appToUse);
- ArrayList newConcurrent = Utils.union(oldConcurrent, packages);
+ ArrayList newConcurrent = oldConcurrent != null ? Utils.union(oldConcurrent, packages) : packages;
newConcurrent.remove(appToUse);
new DefaultAppDAO(AppsPickerActivity.this, db).update(appToUse, newConcurrent);
} else {
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 1048230..57aef7e 100644
--- a/app/src/main/java/app/fedilab/nitterizeme/activities/CheckAppActivity.java
+++ b/app/src/main/java/app/fedilab/nitterizeme/activities/CheckAppActivity.java
@@ -80,6 +80,12 @@ public class CheckAppActivity extends AppCompatActivity {
"www.wikipedia.org"
};
+ public static String[] tiktok_domains = {
+ "tiktok.com",
+ "www.tiktok.com",
+ "us.tiktok.com"
+ };
+
public static String[] shortener_domains = {
"t.co",
"nyti.ms",
@@ -98,11 +104,11 @@ public class CheckAppActivity extends AppCompatActivity {
"ow.ly",
"bl.ink",
"buff.ly",
- "maps.app.goo.gl"
+ "maps.app.goo.gl",
+ "vm.tiktok.com"
};
//Supported instances to redirect one instance to another faster for the user
public static String[] invidious_instances = {
- "invidio.us",
"invidious.snopyta.org",
"invidiou.sh",
"invidious.toot.koeln",
@@ -127,6 +133,10 @@ public class CheckAppActivity extends AppCompatActivity {
"bibliogram.dsrev.ru",
"bibliogram.pussthecat.org"
};
+ public static String[] proxitok_instances = {
+ "proxitok.herokuapp.com",
+ "proxitok.pussthecat.org"
+ };
public static String outlook_safe_domain = "safelinks.protection.outlook.com";
@@ -153,23 +163,26 @@ public class CheckAppActivity extends AppCompatActivity {
twitter_domains.length
+ youtube_domains.length
+ reddit_domains.length
- + shortener_domains.length
+ instagram_domains.length
+ + wikipedia_domains.length
+ + medium_domains.length
+ + tiktok_domains.length
+ + shortener_domains.length
+ invidious_instances.length
+ nitter_instances.length
+ bibliogram_instances.length
- + wikipedia_domains.length
- + medium_domains.length
+ + proxitok_instances.length
];
} else {
domains = new String[
twitter_domains.length
+ youtube_domains.length
+ reddit_domains.length
- + shortener_domains.length
+ instagram_domains.length
+ wikipedia_domains.length
- + medium_domains.length];
+ + medium_domains.length
+ + tiktok_domains.length
+ + shortener_domains.length];
}
int i = 0;
for (String host : twitter_domains) {
@@ -196,6 +209,10 @@ public class CheckAppActivity extends AppCompatActivity {
domains[i] = host;
i++;
}
+ for (String host : tiktok_domains) {
+ domains[i] = host;
+ i++;
+ }
for (String host : shortener_domains) {
domains[i] = host;
i++;
@@ -213,6 +230,10 @@ public class CheckAppActivity extends AppCompatActivity {
domains[i] = host;
i++;
}
+ for (String host : proxitok_instances) {
+ domains[i] = host;
+ i++;
+ }
}
final LinearLayoutManager mLayoutManager;
@@ -291,6 +312,10 @@ public class CheckAppActivity extends AppCompatActivity {
AppInfo appInfo = new AppInfo();
appInfo.setTitle("Wikipedia");
appInfos.add(appInfo);
+ } else if (Arrays.asList(tiktok_domains).contains(domain)) {
+ AppInfo appInfo = new AppInfo();
+ appInfo.setTitle("TikTok");
+ appInfos.add(appInfo);
} else if (Arrays.asList(shortener_domains).contains(domain)) {
AppInfo appInfo = new AppInfo();
appInfo.setTitle(getString(R.string.shortener_services));
@@ -307,6 +332,10 @@ public class CheckAppActivity extends AppCompatActivity {
AppInfo appInfo = new AppInfo();
appInfo.setTitle(getString(R.string.bibliogram_instances));
appInfos.add(appInfo);
+ } else if (Arrays.asList(proxitok_instances).contains(domain)) {
+ AppInfo appInfo = new AppInfo();
+ appInfo.setTitle(getString(R.string.proxitok_instances));
+ appInfos.add(appInfo);
}
AppInfo appInfo = new AppInfo();
appInfo.setDomain(domain);
diff --git a/app/src/main/java/app/fedilab/nitterizeme/activities/InstanceActivity.java b/app/src/main/java/app/fedilab/nitterizeme/activities/InstanceActivity.java
index 56f3827..5d41947 100644
--- a/app/src/main/java/app/fedilab/nitterizeme/activities/InstanceActivity.java
+++ b/app/src/main/java/app/fedilab/nitterizeme/activities/InstanceActivity.java
@@ -67,6 +67,7 @@ public class InstanceActivity extends AppCompatActivity {
String tedditHost = sharedpreferences.getString(MainActivity.SET_TEDDIT_HOST, MainActivity.DEFAULT_TEDDIT_HOST);
String scribeHost = sharedpreferences.getString(MainActivity.SET_SCRIBERIP_HOST, MainActivity.DEFAULT_SCRIBERIP_HOST);
String wikilessHost = sharedpreferences.getString(MainActivity.SET_WIKILESS_HOST, MainActivity.DEFAULT_WIKILESS_HOST);
+ String proxitokHost = sharedpreferences.getString(MainActivity.SET_PROXITOK_HOST, MainActivity.DEFAULT_PROXITOK_HOST);
ArrayList invidiousInstances = new ArrayList<>();
ArrayList nitterInstances = new ArrayList<>();
@@ -74,6 +75,7 @@ public class InstanceActivity extends AppCompatActivity {
ArrayList tedditInstances = new ArrayList<>();
ArrayList scribeInstances = new ArrayList<>();
ArrayList wikilessInstances = new ArrayList<>();
+ ArrayList proxitokInstances = new ArrayList<>();
boolean customInvidiousInstance = true;
boolean customNitterInstance = true;
@@ -81,6 +83,7 @@ public class InstanceActivity extends AppCompatActivity {
boolean customTedditInstance = true;
boolean customScribeInstance = true;
boolean customWikilessInstance = true;
+ boolean customProxitokInstance = true;
for (Instance instance : result) {
if (instance.getInstanceType() == Instance.instanceType.YOUTUBE) {
@@ -113,6 +116,11 @@ public class InstanceActivity extends AppCompatActivity {
if (wikilessHost != null && wikilessHost.trim().toLowerCase().compareTo(instance.getDomain()) == 0) {
customWikilessInstance = false;
}
+ } else if (instance.getInstanceType() == Instance.instanceType.PROXITOK) {
+ proxitokInstances.add(instance);
+ if (proxitokHost != null && proxitokHost.trim().toLowerCase().compareTo(instance.getDomain()) == 0) {
+ customProxitokInstance = false;
+ }
}
}
List defaultLocales = new ArrayList<>();
@@ -160,6 +168,13 @@ public class InstanceActivity extends AppCompatActivity {
instance.setLocales(defaultLocales);
wikilessInstances.add(0, instance);
}
+ if (customProxitokInstance) {
+ Instance instance = new Instance();
+ instance.setChecked(true);
+ instance.setDomain(proxitokHost);
+ instance.setLocales(defaultLocales);
+ proxitokInstances.add(0, instance);
+ }
binding.instanceContainer.setVisibility(View.VISIBLE);
binding.loader.setVisibility(View.GONE);
@@ -202,11 +217,20 @@ public class InstanceActivity extends AppCompatActivity {
binding.wikilessInstances.setLayoutManager(wLayoutManager);
binding.wikilessInstances.setNestedScrollingEnabled(false);
+ final LinearLayoutManager pLayoutManager = new LinearLayoutManager(this);
+ InstanceAdapter proxitokAdapter = new InstanceAdapter(proxitokInstances);
+ binding.proxitokInstances.setAdapter(proxitokAdapter);
+ binding.proxitokInstances.setLayoutManager(pLayoutManager);
+ binding.proxitokInstances.setNestedScrollingEnabled(false);
+
binding.latencyTest.setOnClickListener(v -> {
invidiousAdapter.evalLatency();
nitterAdapter.evalLatency();
bibliogramAdapter.evalLatency();
tedditAdapter.evalLatency();
+ scribeAdapter.evalLatency();
+ wikilessAdapter.evalLatency();
+ proxitokAdapter.evalLatency();
}
);
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 6dea25e..85dad23 100644
--- a/app/src/main/java/app/fedilab/nitterizeme/activities/MainActivity.java
+++ b/app/src/main/java/app/fedilab/nitterizeme/activities/MainActivity.java
@@ -52,6 +52,7 @@ public class MainActivity extends AppCompatActivity {
public static final String SET_BIBLIOGRAM_HOST = "set_bibliogram_host";
public static final String SET_SCRIBERIP_HOST = "set_scriberip_host";
public static final String SET_WIKILESS_HOST = "set_wikiless_host";
+ public static final String SET_PROXITOK_HOST = "set_proxitok_host";
@SuppressWarnings({"unused", "RedundantSuppression"})
public static String TAG = "UntrackMe";
public static String DEFAULT_NITTER_HOST = "nitter.net";
@@ -62,12 +63,14 @@ public class MainActivity extends AppCompatActivity {
public static String SET_SCRIBERIP_ENABLED = "set_scriberip_enabled";
public static String SET_WIKILESS_ENABLED = "set_wikiless_enabled";
public static String SET_OSM_ENABLED = "set_osm_enabled";
+ public static String SET_PROXITOK_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_WIKILESS_HOST = "wikiless.org";
public static String DEFAULT_TEDDIT_HOST = "teddit.net";
+ public static String DEFAULT_PROXITOK_HOST = "proxitok.herokuapp.com";
public static String SET_GEO_URIS = "set_geo_uris";
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@@ -87,6 +90,7 @@ public class MainActivity extends AppCompatActivity {
private String scriberipHost;
private String wikilessHost;
private String osmHost;
+ private String proxitokHost;
private ContentMainBinding binding;
@Override
@@ -110,6 +114,7 @@ public class MainActivity extends AppCompatActivity {
boolean teddit_enabled = sharedpreferences.getBoolean(SET_TEDDIT_ENABLED, true);
boolean scriberip_enabled = sharedpreferences.getBoolean(SET_SCRIBERIP_ENABLED, true);
boolean wikiless_enabled = sharedpreferences.getBoolean(SET_WIKILESS_ENABLED, true);
+ boolean proxitok_enabled = sharedpreferences.getBoolean(SET_PROXITOK_ENABLED, true);
boolean geouri_enabled = sharedpreferences.getBoolean(SET_GEO_URIS, false);
@@ -120,6 +125,7 @@ public class MainActivity extends AppCompatActivity {
binding.enableScriberip.setChecked(scriberip_enabled);
binding.enableWikiless.setChecked(wikiless_enabled);
binding.enableOsm.setChecked(osm_enabled);
+ binding.enableProxitok.setChecked(proxitok_enabled);
nitterHost = sharedpreferences.getString(SET_NITTER_HOST, null);
@@ -129,6 +135,7 @@ public class MainActivity extends AppCompatActivity {
scriberipHost = sharedpreferences.getString(SET_SCRIBERIP_HOST, null);
wikilessHost = sharedpreferences.getString(SET_WIKILESS_HOST, null);
osmHost = sharedpreferences.getString(SET_OSM_HOST, null);
+ proxitokHost = sharedpreferences.getString(SET_PROXITOK_HOST, null);
binding.groupCurrentInvidious.setVisibility(invidious_enabled ? View.VISIBLE : View.GONE);
binding.groupCurrentNitter.setVisibility(nitter_enabled ? View.VISIBLE : View.GONE);
@@ -137,6 +144,7 @@ public class MainActivity extends AppCompatActivity {
binding.groupCurrentScriberip.setVisibility(scriberip_enabled ? View.VISIBLE : View.GONE);
binding.groupCurrentWikiless.setVisibility(wikiless_enabled ? View.VISIBLE : View.GONE);
binding.groupCurrentOsm.setVisibility((osm_enabled && geouri_enabled) ? View.VISIBLE : View.GONE);
+ binding.groupCurrentProxitok.setVisibility(proxitok_enabled ? View.VISIBLE : View.GONE);
binding.enableGeoUris.setVisibility(osm_enabled ? View.VISIBLE : View.GONE);
binding.enableInvidious.setOnCheckedChangeListener((buttonView, isChecked) -> {
@@ -206,6 +214,14 @@ public class MainActivity extends AppCompatActivity {
binding.groupCurrentOsm.setVisibility(View.GONE);
}
});
+ binding.enableProxitok.setOnCheckedChangeListener((buttonView, isChecked) -> {
+ SharedPreferences.Editor editor = sharedpreferences.edit();
+ editor.putBoolean(SET_PROXITOK_ENABLED, isChecked);
+ editor.apply();
+ binding.groupCurrentProxitok.setVisibility(isChecked ? View.VISIBLE : View.GONE);
+ binding.groupCustomProxitok.setVisibility(View.GONE);
+ binding.buttonExpandInstanceProxitok.setRotation(0);
+ });
binding.buttonExpandInstanceNitter.setOnClickListener(v -> {
@@ -319,6 +335,22 @@ public class MainActivity extends AppCompatActivity {
binding.osmInstance.setText("");
}
});
+ binding.buttonExpandInstanceProxitok.setOnClickListener(v -> {
+ boolean custom_instance_visibility = binding.groupCustomProxitok.getVisibility() == View.VISIBLE;
+ if (custom_instance_visibility) {
+ binding.buttonExpandInstanceProxitok.setRotation(0f);
+ binding.groupCustomProxitok.setVisibility(View.GONE);
+ } else {
+ binding.buttonExpandInstanceProxitok.setRotation(180f);
+ binding.groupCustomProxitok.setVisibility(View.VISIBLE);
+ }
+
+ if (proxitokHost != null) {
+ binding.proxitokInstance.setText(proxitokHost);
+ } else {
+ binding.proxitokInstance.setText("");
+ }
+ });
if (nitterHost != null) {
@@ -372,6 +404,12 @@ public class MainActivity extends AppCompatActivity {
} else {
binding.groupCustomOsm.setVisibility(View.GONE);
}
+ if (proxitokHost != null) {
+ binding.proxitokInstance.setText(proxitokHost);
+ binding.currentInstanceProxitok.setText(proxitokHost);
+ } else {
+ binding.currentInstanceProxitok.setText(DEFAULT_PROXITOK_HOST);
+ }
binding.buttonSaveInstanceNitter.setOnClickListener(v -> {
SharedPreferences.Editor editor = sharedpreferences.edit();
@@ -456,6 +494,18 @@ public class MainActivity extends AppCompatActivity {
}
editor.apply();
});
+ binding.buttonSaveInstanceProxitok.setOnClickListener(v -> {
+ SharedPreferences.Editor editor = sharedpreferences.edit();
+ if (binding.proxitokInstance.getText() != null && binding.proxitokInstance.getText().toString().trim().length() > 0) {
+ String custom_instance = binding.proxitokInstance.getText().toString().toLowerCase().trim();
+ editor.putString(SET_PROXITOK_HOST, custom_instance);
+ binding.currentInstanceProxitok.setText(custom_instance);
+ } else {
+ editor.putString(SET_PROXITOK_HOST, null);
+ binding.currentInstanceProxitok.setText(DEFAULT_PROXITOK_HOST);
+ }
+ editor.apply();
+ });
binding.configure.setOnClickListener(v -> {
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
@@ -556,9 +606,18 @@ public class MainActivity extends AppCompatActivity {
binding.currentInstanceOsm.setText(DEFAULT_OSM_HOST);
binding.buttonExpandInstanceOsm.setRotation(0f);
break;
+ case SET_PROXITOK_HOST:
+ proxitokHost = sharedpreferences.getString(SET_PROXITOK_HOST, null);
+ binding.groupCustomProxitok.setVisibility(View.GONE);
+ if (proxitokHost != null && proxitokHost.trim().length() > 0)
+ binding.currentInstanceProxitok.setText(proxitokHost);
+ else
+ binding.currentInstanceProxitok.setText(DEFAULT_PROXITOK_HOST);
+ binding.buttonExpandInstanceProxitok.setRotation(0f);
+ break;
}
- if (key.equals(SET_NITTER_HOST) || key.equals(SET_INVIDIOUS_HOST) || key.equals(SET_BIBLIOGRAM_HOST) || key.equals(SET_TEDDIT_HOST) || key.equals(SET_OSM_HOST)) {
+ if (key.equals(SET_NITTER_HOST) || key.equals(SET_INVIDIOUS_HOST) || key.equals(SET_BIBLIOGRAM_HOST) || key.equals(SET_TEDDIT_HOST) || key.equals(SET_OSM_HOST) || key.equals(SET_PROXITOK_HOST)) {
View parentLayout = findViewById(android.R.id.content);
Snackbar.make(parentLayout, R.string.instances_saved, Snackbar.LENGTH_LONG).show();
}
@@ -622,6 +681,7 @@ public class MainActivity extends AppCompatActivity {
String tedditHost = sharedpreferences.getString(SET_TEDDIT_HOST, null);
String scriberipHost = sharedpreferences.getString(SET_SCRIBERIP_HOST, null);
String wikilessHost = sharedpreferences.getString(SET_WIKILESS_HOST, null);
+ String proxitokHost = sharedpreferences.getString(SET_PROXITOK_HOST, null);
if (nitterHost != null) {
binding.nitterInstance.setText(nitterHost);
binding.currentInstanceNitter.setText(nitterHost);
@@ -646,6 +706,10 @@ public class MainActivity extends AppCompatActivity {
binding.wikilessInstance.setText(wikilessHost);
binding.currentInstanceWikiless.setText(wikilessHost);
}
+ if (proxitokHost != null) {
+ binding.proxitokInstance.setText(proxitokHost);
+ binding.currentInstanceProxitok.setText(proxitokHost);
+ }
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/adapters/InstanceAdapter.java b/app/src/main/java/app/fedilab/nitterizeme/adapters/InstanceAdapter.java
index d622722..d78caa3 100644
--- a/app/src/main/java/app/fedilab/nitterizeme/adapters/InstanceAdapter.java
+++ b/app/src/main/java/app/fedilab/nitterizeme/adapters/InstanceAdapter.java
@@ -18,6 +18,7 @@ import static app.fedilab.nitterizeme.activities.MainActivity.APP_PREFS;
import static app.fedilab.nitterizeme.activities.MainActivity.SET_BIBLIOGRAM_HOST;
import static app.fedilab.nitterizeme.activities.MainActivity.SET_INVIDIOUS_HOST;
import static app.fedilab.nitterizeme.activities.MainActivity.SET_NITTER_HOST;
+import static app.fedilab.nitterizeme.activities.MainActivity.SET_PROXITOK_HOST;
import static app.fedilab.nitterizeme.activities.MainActivity.SET_SCRIBERIP_HOST;
import static app.fedilab.nitterizeme.activities.MainActivity.SET_TEDDIT_HOST;
import static app.fedilab.nitterizeme.activities.MainActivity.SET_WIKILESS_HOST;
@@ -165,6 +166,14 @@ public class InstanceAdapter extends RecyclerView.Adapter. */
+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;
+import static app.fedilab.nitterizeme.activities.CheckAppActivity.shortener_domains;
+import static app.fedilab.nitterizeme.activities.CheckAppActivity.tiktok_domains;
+import static app.fedilab.nitterizeme.activities.CheckAppActivity.twitter_domains;
+import static app.fedilab.nitterizeme.activities.CheckAppActivity.wikipedia_domains;
+import static app.fedilab.nitterizeme.activities.CheckAppActivity.youtube_domains;
+import static app.fedilab.nitterizeme.activities.MainActivity.SET_BIBLIOGRAM_ENABLED;
+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_PROXITOK_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;
+import static app.fedilab.nitterizeme.activities.MainActivity.SET_WIKILESS_ENABLED;
+
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;
@@ -102,7 +125,7 @@ public class Utils {
public static final Pattern scriberipPattern = Pattern.compile("(www\\.)?medium.com/(((?!([\"'<])).)*)");
public static final Pattern scriberipSubdomainPattern = Pattern.compile("([\\w_-]+)\\.medium.com/(((?!([\"'<])).)*)");
-
+ public static final Pattern tiktokPattern = Pattern.compile("(www\\.|us\\.)?tiktok.com/(((?!([\"'<])).)*)");
public static final Pattern wikilessPattern = Pattern.compile("([\\w_-]+)\\.(?:m\\.)?wikipedia.org/(((?!([\"'<])).)*)");
public static final Pattern bibliogramAccountPattern = Pattern.compile("(m\\.|www\\.)?instagram.com(((?!/p/).)+)");
@@ -455,6 +478,26 @@ public class Utils {
} else {
return url;
}
+ } else if (host != null && Arrays.asList(tiktok_domains).contains(host)) {
+ boolean proxitok_enabled = sharedpreferences.getBoolean(SET_PROXITOK_ENABLED, true);
+ if (proxitok_enabled) {
+ String proxitokHost = sharedpreferences.getString(MainActivity.SET_PROXITOK_HOST, MainActivity.DEFAULT_PROXITOK_HOST);
+ assert proxitokHost != null;
+ proxitokHost = proxitokHost.toLowerCase();
+ Matcher matcher = tiktokPattern.matcher(url);
+ while (matcher.find()) {
+ String path = matcher.group(2);
+ if (path == null || path.trim().equals("") || path.startsWith("@") || path.startsWith("music") || path.startsWith("tag")) {
+ newUrl = url.replace(host, proxitokHost);
+ }
+ }
+ if (newUrl == null) {
+ newUrl = url;
+ }
+ return newUrl;
+ } else {
+ return url;
+ }
} else if (Arrays.asList(invidious_instances).contains(host)) {
boolean invidious_enabled = sharedpreferences.getBoolean(SET_INVIDIOUS_ENABLED, true);
newUrl = url;
@@ -1197,7 +1240,8 @@ public class Utils {
|| 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)
- || (host != null && host.endsWith(medium_domains[0]) || (host != null && host.endsWith(wikipedia_domains[0])));
+ || Arrays.asList(tiktok_domains).contains(host) || (host != null && host.endsWith(medium_domains[0])
+ || (host != null && host.endsWith(wikipedia_domains[0])));
}
public static boolean routerEnabledForHost(Context context, String url) {
@@ -1221,6 +1265,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(tiktok_domains).contains(host)) {
+ return sharedpreferences.getBoolean(SET_PROXITOK_ENABLED, true);
} else if (host != null && host.endsWith(medium_domains[0])) {
return sharedpreferences.getBoolean(SET_SCRIBERIP_ENABLED, true);
} else if (host != null && host.endsWith(wikipedia_domains[0])) {
diff --git a/app/src/main/res/layout/activity_popup_instance.xml b/app/src/main/res/layout/activity_popup_instance.xml
index a071080..3adf8bf 100644
--- a/app/src/main/res/layout/activity_popup_instance.xml
+++ b/app/src/main/res/layout/activity_popup_instance.xml
@@ -102,6 +102,19 @@
android:layout_width="match_parent"
android:layout_height="wrap_content" />
+
+
+
+
diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml
index 00a3865..f693e51 100644
--- a/app/src/main/res/layout/content_main.xml
+++ b/app/src/main/res/layout/content_main.xml
@@ -907,7 +907,7 @@
style="@style/containerCard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- app:layout_constraintBottom_toTopOf="@id/buttons_container"
+ app:layout_constraintBottom_toTopOf="@id/proxitok_container"
app:layout_constraintTop_toBottomOf="@id/teddit_container">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@id/proxitok_container">
Redirect YouTube to Invidious
Redirect Twitter to Nitter
+ Redirect TikTok to ProxiTok
Redirect Instagram to Bibliogram
Redirect Reddit to Teddit
Redirect Medium to Scribe.rip
@@ -52,6 +53,7 @@
Custom Scribe.rip instance
Custom Wikiless instance
Custom Teddit instance
+ Custom ProxiTok instance
Redirect Google Map to Geo URI
Configure
Display supported links
@@ -71,6 +73,7 @@
Teddit instances
Scribe instances
Wikiless instances
+ ProxiTok instances
Latency
Check your Internet connection
Instance: