From 95ade723f9a477e05852b2a716d6e3dd32d26636 Mon Sep 17 00:00:00 2001 From: gdlbo <41114720+gdlbo@users.noreply.github.com> Date: Mon, 27 Jun 2022 15:15:42 +0300 Subject: [PATCH] upgraded newsfeed ad posts detection added support for reposts refactored copyright posts detection updated adblock filters --- .../java/ru/vtosters/lite/utils/Newsfeed.java | 61 +++++++++++++------ smali/assets/CopyrightAds.txt | 5 ++ smali/assets/StandartFilter.txt | 27 +++++++- smali/res/xml/preferences_feed.xml | 16 ++--- 4 files changed, 80 insertions(+), 29 deletions(-) create mode 100644 smali/assets/CopyrightAds.txt diff --git a/app/src/main/java/ru/vtosters/lite/utils/Newsfeed.java b/app/src/main/java/ru/vtosters/lite/utils/Newsfeed.java index 3e4a57a95..9213a6414 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/Newsfeed.java +++ b/app/src/main/java/ru/vtosters/lite/utils/Newsfeed.java @@ -45,6 +45,7 @@ import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Objects; public class Newsfeed{ public static List mFilters; @@ -54,36 +55,31 @@ public class Newsfeed{ mFilters = new ArrayList(); mFiltersLinks = new ArrayList(); - getFilter("refsfilter", "Referals.txt"); - getFilter("shortlinkfilter", "LinkShorter.txt"); - getFilter("default_ad_list", "StandartFilter.txt"); - getFilter("shitposting", "IDontWantToReadIt.txt"); - - String customfilters = getPrefsValue("spamfilters"); + getFilter("refsfilter", "Referals.txt", mFilters); + getFilter("shortlinkfilter", "LinkShorter.txt", mFilters); + getFilter("default_ad_list", "StandartFilter.txt", mFilters); + getFilter("shitposting", "IDontWantToReadIt.txt", mFilters); + getFilter("blockcringecopyright", "CopyrightAds.txt", mFiltersLinks); + var customfilters = getPrefsValue("spamfilters"); if(!customfilters.isEmpty()){ mFilters.addAll(Arrays.asList(customfilters.split(", "))); } - String linkfilter = getPrefsValue("linkfilter"); - - if(getBoolValue("blockvkcopyright", false)){ - mFiltersLinks.add("vk.com"); - } - + var linkfilter = getPrefsValue("linkfilter"); if(!linkfilter.isEmpty()){ mFiltersLinks.addAll(Arrays.asList(linkfilter.split(", "))); } } - public static void getFilter(String boolname, String filename){ + public static void getFilter(String boolname, String filename, List list){ if(getBoolValue(boolname, true)){ try { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(getContext().getAssets().open(filename))); while(true) { String readLine = bufferedReader.readLine(); if(readLine != null){ - mFilters.add(readLine); + list.add(readLine); } else { bufferedReader.close(); return; @@ -96,7 +92,7 @@ public class Newsfeed{ } // Get needed filter list from assets public static boolean injectFilters(JSONObject obj) throws JSONException{ - String optString = obj.optString("type", ""); + var optString = obj.optString("type", ""); if(isAds(optString) || isAuthorRecommendations(optString) || isPostRecommendations(optString) || isFriendsRecommendations(optString) || isRecomsGroup(optString) || isMusicBlock(optString) || isNewsBlock(optString)){ return false; } @@ -115,15 +111,40 @@ public class Newsfeed{ if(checkCaption(obj)) return false; - return !isGroupAds(obj); + if(isGroupAds(obj)) return false; + + if(obj.optJSONArray("copy_history") != null){ + return injectFiltersReposts(obj); + } + + return true; + } + + public static boolean injectFiltersReposts(JSONObject obj) throws JSONException{ + var Array = Objects.requireNonNull(obj.optJSONArray("copy_history")).toString(); + + if(Array.isEmpty()) return true; + + if(isAds(Array) || isAuthorRecommendations(Array) || isPostRecommendations(Array) || isFriendsRecommendations(Array) || isRecomsGroup(Array) || isMusicBlock(Array) || isNewsBlock(Array)){ + return false; + } + if(isAds(Array) || isAuthorRecommendations(Array) || isPostRecommendations(Array) || isFriendsRecommendations(Array) || isMusicBlock(Array) || isNewsBlock(Array)){ + return false; + } + + if(isAds(Array) || isAuthorRecommendations(Array) || isPostRecommendations(Array) || isFriendsRecommendations(Array)){ + return false; + } + + return !isBadNew(Array); } private static boolean checkCopyright(JSONObject json) throws JSONException{ - String linkfilter = getPrefsValue("linkfilter"); + var linkfilter = getPrefsValue("linkfilter"); if(json.opt("copyright") != null){ - JSONObject copyright = json.getJSONObject("copyright"); - String copyrightlink = copyright.getString("link"); + var copyright = json.getJSONObject("copyright"); + var copyrightlink = copyright.getString("link"); for(String linkfilters : mFiltersLinks) { if(copyrightlink.toLowerCase().contains(linkfilters.toLowerCase())){ @@ -164,7 +185,7 @@ public class Newsfeed{ public static boolean checkCaption(JSONObject postJson){ try { - JSONObject captionJson = postJson.getJSONObject("caption"); + var captionJson = postJson.getJSONObject("caption"); if(Preferences.captions()) return true; diff --git a/smali/assets/CopyrightAds.txt b/smali/assets/CopyrightAds.txt new file mode 100644 index 000000000..6583bbe12 --- /dev/null +++ b/smali/assets/CopyrightAds.txt @@ -0,0 +1,5 @@ +appcent +//t.me/ +vk.com +crypt +bitcoin \ No newline at end of file diff --git a/smali/assets/StandartFilter.txt b/smali/assets/StandartFilter.txt index ec0a65618..815f41fb1 100644 --- a/smali/assets/StandartFilter.txt +++ b/smali/assets/StandartFilter.txt @@ -56,4 +56,29 @@ cпocоб зaрaбoтать в закрепленном Комментарии В закрепленном комментарии В Закрепленном комментарии -В закрепленном Комментарии \ No newline at end of file +В закрепленном Комментарии +Успей подать заявку +Успей Подать Заявку +Успей подать Заявку +успей Подать Заявку +успей подать заявку +успей Подать заявку +ПОСМОТРЕТЬ ФУЛЛ +ПОСМОТРЕТЬ ИСТОЧНИК +посмотреть фулл +посмотреть источник +ТЫК 👉 +тык 👉 +ТЫК👉 +тык👉 +Успей подписаться +успей подписаться +успей Подписаться +Успей Подписаться +Смотри источник +Смотри Источник +смотри источник +Смотри ист +скорее подписывайся +пиши боту +ПИШИ БОТУ \ No newline at end of file diff --git a/smali/res/xml/preferences_feed.xml b/smali/res/xml/preferences_feed.xml index 191c9edc8..7ecda0b03 100644 --- a/smali/res/xml/preferences_feed.xml +++ b/smali/res/xml/preferences_feed.xml @@ -53,18 +53,18 @@ android:title="@string/shitposting" /> - + android:key="blockcringecopyright" + android:summary="Блокировать посты с источником где есть ссылка на вк/телеграм (группу, страницу или посты) или на другие возможные ресурсы" + android:title="Отключить посты с возможной рекламой" /> +