From 16568d94442fa8fc1224ae93f12c32d0beb6d39f Mon Sep 17 00:00:00 2001 From: tom79 Date: Fri, 13 Sep 2019 18:10:34 +0200 Subject: [PATCH] Detects Twitter URLs (test1) + improve invidous detection with residual parameters --- .../app/fedilab/android/client/Entities/Status.java | 13 ++++++++++++- .../java/app/fedilab/android/helper/Helper.java | 8 ++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/client/Entities/Status.java b/app/src/main/java/app/fedilab/android/client/Entities/Status.java index 014d9bce7..04d91693c 100644 --- a/app/src/main/java/app/fedilab/android/client/Entities/Status.java +++ b/app/src/main/java/app/fedilab/android/client/Entities/Status.java @@ -629,13 +629,24 @@ public class Status implements Parcelable { boolean invidious = sharedpreferences.getBoolean(Helper.SET_INVIDIOUS, false); if (invidious) { while (matcher.find()) { - final String youtubeId = matcher.group(3); + final String youtubeId = matcher.group(4); String invidiousHost = sharedpreferences.getString(Helper.SET_INVIDIOUS_HOST, Helper.DEFAULT_INVIDIOUS_HOST).toLowerCase(); content = content.replaceAll("https://"+Pattern.quote(matcher.group()), Matcher.quoteReplacement("https://"+invidiousHost + "/watch?v=" + youtubeId+"&local=true")); content = content.replaceAll(">"+Pattern.quote(matcher.group()), Matcher.quoteReplacement(">"+invidiousHost + "/watch?v=" + youtubeId+"&local=true")); } } + matcher = Helper.nitterPattern.matcher(content); + boolean nitter = sharedpreferences.getBoolean(Helper.SET_NITTER, false); + if (nitter) { + while (matcher.find()) { + final String nitter_directory = matcher.group(2); + String nitterHost = sharedpreferences.getString(Helper.SET_NITTER_HOST, Helper.DEFAULT_NITTER_HOST).toLowerCase(); + content = content.replaceAll("https://"+Pattern.quote(matcher.group()), Matcher.quoteReplacement("https://"+nitterHost + nitter_directory)); + content = content.replaceAll(">"+Pattern.quote(matcher.group()), Matcher.quoteReplacement(">"+nitterHost + nitter_directory)); + } + } + Pattern aLink = Pattern.compile("]*(((?!<\\/a).)*)<\\/a>"); Matcher matcherALink = aLink.matcher(content); int count = 0; diff --git a/app/src/main/java/app/fedilab/android/helper/Helper.java b/app/src/main/java/app/fedilab/android/helper/Helper.java index e2d1e9649..79f5c0c02 100644 --- a/app/src/main/java/app/fedilab/android/helper/Helper.java +++ b/app/src/main/java/app/fedilab/android/helper/Helper.java @@ -437,9 +437,12 @@ public class Helper { public static final String SET_INVIDIOUS = "set_invidious"; public static final String SET_INVIDIOUS_HOST = "set_invidious_host"; + public static final String DEFAULT_INVIDIOUS_HOST = "invidio.us"; + public static final String SET_NITTER = "set_nitter"; public static final String SET_NITTER_HOST = "set_nitter_host"; - public static final String DEFAULT_INVIDIOUS_HOST = "invidio.us"; + public static final String DEFAULT_NITTER_HOST = "nitter.net"; + public static final String SET_NOTIF_VALIDATION = "set_share_validation"; public static final String SET_NOTIF_VALIDATION_FAV = "set_share_validation_fav"; public static final String SET_WIFI_ONLY = "set_wifi_only"; @@ -525,7 +528,8 @@ public class Helper { public static final Pattern hashtagPattern = Pattern.compile("(#[\\w_A-zÀ-ÿ]+)"); public static final Pattern groupPattern = Pattern.compile("(\\![\\w_]+(\\s|$))"); public static final Pattern twitterPattern = Pattern.compile("((@[\\w]+)@twitter\\.com)"); - public static final Pattern youtubePattern = Pattern.compile("(m\\.|www\\.)?youtu(\\.be/|be\\.com/watch\\?v=)([\\w-]+)"); + public static final Pattern youtubePattern = Pattern.compile("(m\\.|www\\.)?youtu(\\.be/|be\\.com/watch\\?((?!v=).)*v=)([\\w-]+)"); + public static final Pattern nitterPattern = Pattern.compile("(mobile\\.|www\\.)?twitter.com([\\w-/]+)"); public static final Pattern youtubeOembedPattern = Pattern.compile("(www\\.)?youtube\\.com\\/embed\\/(\\w+)\\?feature=oembed"); private static final Pattern mentionPattern = Pattern.compile("(@[\\w_]+(\\s|$))"); private static final Pattern mentionLongPattern = Pattern.compile("(@[\\w_-]+@[a-z0-9.\\-]+[.][a-z]{2,10})");