mirror of
				https://github.com/commons-app/apps-android-commons.git
				synced 2025-10-31 06:43:56 +01:00 
			
		
		
		
	Update allowed recent years to include 2020s (#5761)
* document regex due to #47
* also count 2020s as "recent years"
* clarify that not all years are ignored
* clarify "year" is current year
* original logic fix
from https://github.com/commons-app/apps-android-commons/pull/5761#pullrequestreview-2144120347
* better variale name for ".*0s.*"
as that regex will match e.g. `1920s` and `80s` too, so the original `is20xxsYear` would be confusing name for it
* consolidate duplicated code to spammyCategory
* clarify regexes via variables
* spammyCategory should always be skipped
* return is simple now, so we can get rid of extra val oldDecade
* fix curYearInString
* some clarification comments
* refactor: rename containsYear to isSpammyCategory
This is done as the name containsYear is ambiguous.
It not just checks for year to identify spammy categories.
* refactor: rename containsYear to isSpammyCategory (take 2)
 A continuation of fe74c77ab (refactor: rename containsYear
 to isSpammyCategory, 2024-07-17)
---------
Co-authored-by: Kaartic Sivaraam <kaartic.sivaraam@gmail.com>
			
			
This commit is contained in:
		
							parent
							
								
									34addbe33a
								
							
						
					
					
						commit
						7f6b45aeb6
					
				
					 5 changed files with 36 additions and 25 deletions
				
			
		|  | @ -27,30 +27,42 @@ class CategoriesModel @Inject constructor( | |||
|     private var selectedExistingCategories: MutableList<String> = mutableListOf() | ||||
| 
 | ||||
|     /** | ||||
|      * Returns if the item contains an year | ||||
|      * @param item | ||||
|      * Returns true if an item is considered to be a spammy category which should be ignored | ||||
|      * | ||||
|      * @param item a category item that needs to be validated to know if it is spammy or not | ||||
|      * @return | ||||
|      */ | ||||
|     fun containsYear(item: String): Boolean { | ||||
|     fun isSpammyCategory(item: String): Boolean { | ||||
|         //Check for current and previous year to exclude these categories from removal | ||||
|         val now = Calendar.getInstance() | ||||
|         val year = now[Calendar.YEAR] | ||||
|         val yearInString = year.toString() | ||||
|         val prevYear = year - 1 | ||||
|         val curYear = now[Calendar.YEAR] | ||||
|         val curYearInString = curYear.toString() | ||||
|         val prevYear = curYear - 1 | ||||
|         val prevYearInString = prevYear.toString() | ||||
|         Timber.d("Previous year: %s", prevYearInString) | ||||
| 
 | ||||
|         //Check if item contains a 4-digit word anywhere within the string (.* is wildcard) | ||||
|         //And that item does not equal the current year or previous year | ||||
|         //And if it is an irrelevant category such as Media_needing_categories_as_of_16_June_2017(Issue #750) | ||||
|         //Check if the year in the form of XX(X)0s is relevant, i.e. in the 2000s or 2010s as stated in Issue #1029 | ||||
|         return item.matches(".*(19|20)\\d{2}.*".toRegex()) | ||||
|                 && !item.contains(yearInString) | ||||
|                 && !item.contains(prevYearInString) | ||||
|                 || item.matches("(.*)needing(.*)".toRegex()) | ||||
|                 || item.matches("(.*)taken on(.*)".toRegex()) | ||||
|                 || item.matches(".*0s.*".toRegex()) | ||||
|                 && !item.matches(".*(200|201)0s.*".toRegex()) | ||||
|         val mentionsDecade = item.matches(".*0s.*".toRegex()) | ||||
|         val recentDecade = item.matches(".*20[0-2]0s.*".toRegex()) | ||||
|         val spammyCategory = item.matches("(.*)needing(.*)".toRegex()) | ||||
|                           || item.matches("(.*)taken on(.*)".toRegex()) | ||||
| 
 | ||||
|         // always skip irrelevant categories such as Media_needing_categories_as_of_16_June_2017(Issue #750) | ||||
|         if (spammyCategory) { | ||||
|             return true | ||||
|         } | ||||
| 
 | ||||
|         if (mentionsDecade) { | ||||
|             // Check if the year in the form of XX(X)0s is recent/relevant, i.e. in the 2000s or 2010s/2020s as stated in Issue #1029 | ||||
|             // Example: "2020s" is OK, but "1920s" is not (and should be skipped) | ||||
|             return !recentDecade | ||||
|         } else { | ||||
|             // If it is not an year in decade form (e.g. 19xxs/20xxs), then check if item contains a 4-digit year | ||||
|             // anywhere within the string (.* is wildcard) (Issue #47) | ||||
|             // And that item does not equal the current year or previous year | ||||
|             return item.matches(".*(19|20)\\d{2}.*".toRegex()) | ||||
|                     && !item.contains(curYearInString) | ||||
|                     && !item.contains(prevYearInString) | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  |  | |||
|  | @ -148,8 +148,8 @@ public class UploadRepository { | |||
|      * @param name | ||||
|      * @return | ||||
|      */ | ||||
|     public boolean containsYear(String name) { | ||||
|         return categoriesModel.containsYear(name); | ||||
|     public boolean isSpammyCategory(String name) { | ||||
|         return categoriesModel.isSpammyCategory(name); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  |  | |||
|  | @ -89,7 +89,7 @@ class CategoriesPresenter @Inject constructor( | |||
|         if (media == null) { | ||||
|             return repository.searchAll(term, getImageTitleList(), repository.selectedDepictions) | ||||
|                 .subscribeOn(ioScheduler) | ||||
|                 .map { it.filter { categoryItem -> !repository.containsYear(categoryItem.name) | ||||
|                 .map { it.filter { categoryItem -> !repository.isSpammyCategory(categoryItem.name) | ||||
|                         || categoryItem.name==term } } | ||||
|         } else { | ||||
|             return Observable.zip( | ||||
|  | @ -103,7 +103,7 @@ class CategoriesPresenter @Inject constructor( | |||
|                 it1 + it2 | ||||
|             } | ||||
|                 .subscribeOn(ioScheduler) | ||||
|                 .map { it.filter { categoryItem -> !repository.containsYear(categoryItem.name) | ||||
|                 .map { it.filter { categoryItem -> !repository.isSpammyCategory(categoryItem.name) | ||||
|                         || categoryItem.name==term } } | ||||
|                 .map { it.filterNot { categoryItem -> categoryItem.thumbnail == "hidden" } } | ||||
|         } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Matija Nalis
						Matija Nalis