mirror of
				https://github.com/ImranR98/Obtainium.git
				synced 2025-11-04 07:13:28 +01:00 
			
		
		
		
	Add invert option to apk filter regex
This commit is contained in:
		@@ -299,6 +299,7 @@
 | 
			
		||||
    "pseudoVersionInUse": "A Pseudo-Version is in Use",
 | 
			
		||||
    "installed": "Installed",
 | 
			
		||||
    "latest": "Latest",
 | 
			
		||||
    "invertRegEx": "Invert regular expression",
 | 
			
		||||
    "removeAppQuestion": {
 | 
			
		||||
        "one": "Želite li ukloniti aplikaciju?",
 | 
			
		||||
        "other": "Želite li ukloniti aplikacije?"
 | 
			
		||||
 
 | 
			
		||||
@@ -299,6 +299,7 @@
 | 
			
		||||
    "pseudoVersionInUse": "A Pseudo-Version is in Use",
 | 
			
		||||
    "installed": "Installed",
 | 
			
		||||
    "latest": "Latest",
 | 
			
		||||
    "invertRegEx": "Invert regular expression",
 | 
			
		||||
    "removeAppQuestion": {
 | 
			
		||||
        "one": "Odstranit Apku?",
 | 
			
		||||
        "other": "Odstranit Apky?"
 | 
			
		||||
 
 | 
			
		||||
@@ -301,6 +301,7 @@
 | 
			
		||||
    "pseudoVersionInUse": "A Pseudo-Version is in Use",
 | 
			
		||||
    "installed": "Installed",
 | 
			
		||||
    "latest": "Latest",
 | 
			
		||||
    "invertRegEx": "Invert regular expression",
 | 
			
		||||
    "removeAppQuestion": {
 | 
			
		||||
        "one": "App entfernen?",
 | 
			
		||||
        "other": "Apps entfernen?"
 | 
			
		||||
 
 | 
			
		||||
@@ -301,6 +301,7 @@
 | 
			
		||||
    "pseudoVersionInUse": "A Pseudo-Version is in Use",
 | 
			
		||||
    "installed": "Installed",
 | 
			
		||||
    "latest": "Latest",
 | 
			
		||||
    "invertRegEx": "Invert regular expression",
 | 
			
		||||
    "removeAppQuestion": {
 | 
			
		||||
        "one": "Remove App?",
 | 
			
		||||
        "other": "Remove Apps?"
 | 
			
		||||
 
 | 
			
		||||
@@ -299,6 +299,7 @@
 | 
			
		||||
    "pseudoVersionInUse": "A Pseudo-Version is in Use",
 | 
			
		||||
    "installed": "Installed",
 | 
			
		||||
    "latest": "Latest",
 | 
			
		||||
    "invertRegEx": "Invert regular expression",
 | 
			
		||||
    "removeAppQuestion": {
 | 
			
		||||
        "one": "¿Eliminar Aplicación?",
 | 
			
		||||
        "other": "¿Eliminar Aplicaciones?"
 | 
			
		||||
 
 | 
			
		||||
@@ -299,6 +299,7 @@
 | 
			
		||||
    "pseudoVersionInUse": "A Pseudo-Version is in Use",
 | 
			
		||||
    "installed": "Installed",
 | 
			
		||||
    "latest": "Latest",
 | 
			
		||||
    "invertRegEx": "Invert regular expression",
 | 
			
		||||
    "removeAppQuestion": {
 | 
			
		||||
        "one": "برنامه حذف شود؟",
 | 
			
		||||
        "other": "برنامه ها حذف شوند؟"
 | 
			
		||||
 
 | 
			
		||||
@@ -299,6 +299,7 @@
 | 
			
		||||
    "pseudoVersionInUse": "A Pseudo-Version is in Use",
 | 
			
		||||
    "installed": "Installed",
 | 
			
		||||
    "latest": "Latest",
 | 
			
		||||
    "invertRegEx": "Invert regular expression",
 | 
			
		||||
    "removeAppQuestion": {
 | 
			
		||||
        "one": "Supprimer l'application ?",
 | 
			
		||||
        "other": "Supprimer les applications ?"
 | 
			
		||||
 
 | 
			
		||||
@@ -299,6 +299,7 @@
 | 
			
		||||
    "pseudoVersionInUse": "A Pseudo-Version is in Use",
 | 
			
		||||
    "installed": "Installed",
 | 
			
		||||
    "latest": "Latest",
 | 
			
		||||
    "invertRegEx": "Invert regular expression",
 | 
			
		||||
    "removeAppQuestion": {
 | 
			
		||||
        "one": "Eltávolítja az alkalmazást?",
 | 
			
		||||
        "other": "Eltávolítja az alkalmazást?"
 | 
			
		||||
 
 | 
			
		||||
@@ -299,6 +299,7 @@
 | 
			
		||||
    "pseudoVersionInUse": "A Pseudo-Version is in Use",
 | 
			
		||||
    "installed": "Installed",
 | 
			
		||||
    "latest": "Latest",
 | 
			
		||||
    "invertRegEx": "Invert regular expression",
 | 
			
		||||
    "removeAppQuestion": {
 | 
			
		||||
        "one": "Rimuovere l'app?",
 | 
			
		||||
        "other": "Rimuovere le app?"
 | 
			
		||||
 
 | 
			
		||||
@@ -301,6 +301,7 @@
 | 
			
		||||
    "pseudoVersionInUse": "A Pseudo-Version is in Use",
 | 
			
		||||
    "installed": "Installed",
 | 
			
		||||
    "latest": "Latest",
 | 
			
		||||
    "invertRegEx": "Invert regular expression",
 | 
			
		||||
    "removeAppQuestion": {
 | 
			
		||||
        "one": "アプリを削除しますか?",
 | 
			
		||||
        "other": "アプリを削除しますか?"
 | 
			
		||||
 
 | 
			
		||||
@@ -299,6 +299,7 @@
 | 
			
		||||
    "pseudoVersionInUse": "A Pseudo-Version is in Use",
 | 
			
		||||
    "installed": "Installed",
 | 
			
		||||
    "latest": "Latest",
 | 
			
		||||
    "invertRegEx": "Invert regular expression",
 | 
			
		||||
    "removeAppQuestion": {
 | 
			
		||||
        "one": "App verwijderen?",
 | 
			
		||||
        "other": "Apps verwijderen?"
 | 
			
		||||
 
 | 
			
		||||
@@ -299,6 +299,7 @@
 | 
			
		||||
    "pseudoVersionInUse": "A Pseudo-Version is in Use",
 | 
			
		||||
    "installed": "Installed",
 | 
			
		||||
    "latest": "Latest",
 | 
			
		||||
    "invertRegEx": "Invert regular expression",
 | 
			
		||||
    "removeAppQuestion": {
 | 
			
		||||
        "one": "Usunąć aplikację?",
 | 
			
		||||
        "few": "Usunąć aplikacje?",
 | 
			
		||||
 
 | 
			
		||||
@@ -299,6 +299,7 @@
 | 
			
		||||
    "pseudoVersionInUse": "A Pseudo-Version is in Use",
 | 
			
		||||
    "installed": "Installed",
 | 
			
		||||
    "latest": "Latest",
 | 
			
		||||
    "invertRegEx": "Invert regular expression",
 | 
			
		||||
    "removeAppQuestion": {
 | 
			
		||||
        "one": "Remover aplicativo?",
 | 
			
		||||
        "other": "Remover aplicativos?"
 | 
			
		||||
 
 | 
			
		||||
@@ -301,6 +301,7 @@
 | 
			
		||||
    "pseudoVersionInUse": "A Pseudo-Version is in Use",
 | 
			
		||||
    "installed": "Installed",
 | 
			
		||||
    "latest": "Latest",
 | 
			
		||||
    "invertRegEx": "Invert regular expression",
 | 
			
		||||
    "removeAppQuestion": {
 | 
			
		||||
        "one": "Удалить приложение?",
 | 
			
		||||
        "other": "Удалить приложения?"
 | 
			
		||||
 
 | 
			
		||||
@@ -285,6 +285,7 @@
 | 
			
		||||
    "pseudoVersionInUse": "A Pseudo-Version is in Use",
 | 
			
		||||
    "installed": "Installed",
 | 
			
		||||
    "latest": "Latest",
 | 
			
		||||
    "invertRegEx": "Invert regular expression",
 | 
			
		||||
    "removeAppQuestion": {
 | 
			
		||||
        "one": "Ta Bort App?",
 | 
			
		||||
        "other": "Ta Bort Appar?"
 | 
			
		||||
 
 | 
			
		||||
@@ -299,6 +299,7 @@
 | 
			
		||||
    "pseudoVersionInUse": "A Pseudo-Version is in Use",
 | 
			
		||||
    "installed": "Installed",
 | 
			
		||||
    "latest": "Latest",
 | 
			
		||||
    "invertRegEx": "Invert regular expression",
 | 
			
		||||
    "removeAppQuestion": {
 | 
			
		||||
        "one": "Uygulamayı Kaldır?",
 | 
			
		||||
        "other": "Uygulamaları Kaldır?"
 | 
			
		||||
 
 | 
			
		||||
@@ -297,6 +297,7 @@
 | 
			
		||||
    "pseudoVersionInUse": "A Pseudo-Version is in Use",
 | 
			
		||||
    "installed": "Installed",
 | 
			
		||||
    "latest": "Latest",
 | 
			
		||||
    "invertRegEx": "Invert regular expression",
 | 
			
		||||
    "removeAppQuestion":{
 | 
			
		||||
        "one": "Gỡ ứng dụng?",
 | 
			
		||||
        "other": "Gỡ ứng dụng?"
 | 
			
		||||
 
 | 
			
		||||
@@ -301,6 +301,7 @@
 | 
			
		||||
    "pseudoVersionInUse": "A Pseudo-Version is in Use",
 | 
			
		||||
    "installed": "Installed",
 | 
			
		||||
    "latest": "Latest",
 | 
			
		||||
    "invertRegEx": "Invert regular expression",
 | 
			
		||||
    "removeAppQuestion": {
 | 
			
		||||
        "one": "是否删除应用?",
 | 
			
		||||
        "other": "是否删除应用?"
 | 
			
		||||
 
 | 
			
		||||
@@ -382,11 +382,8 @@ class GitHub extends AppSource {
 | 
			
		||||
          continue;
 | 
			
		||||
        }
 | 
			
		||||
        var apkUrls = getReleaseAPKUrls(releases[i]);
 | 
			
		||||
        if (additionalSettings['apkFilterRegEx'] != null) {
 | 
			
		||||
          var reg = RegExp(additionalSettings['apkFilterRegEx']);
 | 
			
		||||
          apkUrls =
 | 
			
		||||
              apkUrls.where((element) => reg.hasMatch(element.key)).toList();
 | 
			
		||||
        }
 | 
			
		||||
        apkUrls = filterApks(apkUrls, additionalSettings['apkFilterRegEx'],
 | 
			
		||||
            additionalSettings['invertAPKFilter']);
 | 
			
		||||
        if (apkUrls.isEmpty && additionalSettings['trackOnly'] != true) {
 | 
			
		||||
          continue;
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -300,12 +300,8 @@ class HTML extends AppSource {
 | 
			
		||||
      versionExtractionWholePageString =
 | 
			
		||||
          res.body.split('\r\n').join('\n').split('\n').join('\\n');
 | 
			
		||||
      links = await grabLinksCommon(res, additionalSettings);
 | 
			
		||||
 | 
			
		||||
      if ((additionalSettings['apkFilterRegEx'] as String?)?.isNotEmpty ==
 | 
			
		||||
          true) {
 | 
			
		||||
        var reg = RegExp(additionalSettings['apkFilterRegEx']);
 | 
			
		||||
        links = links.where((element) => reg.hasMatch(element.key)).toList();
 | 
			
		||||
      }
 | 
			
		||||
      links = filterApks(links, additionalSettings['apkFilterRegEx'],
 | 
			
		||||
          additionalSettings['invertAPKFilter']);
 | 
			
		||||
      if (links.isEmpty) {
 | 
			
		||||
        throw NoReleasesError();
 | 
			
		||||
      }
 | 
			
		||||
 
 | 
			
		||||
@@ -504,6 +504,11 @@ abstract class AppSource {
 | 
			
		||||
            }
 | 
			
		||||
          ])
 | 
			
		||||
    ],
 | 
			
		||||
    [
 | 
			
		||||
      GeneratedFormSwitch('invertAPKFilter',
 | 
			
		||||
          label: '${tr('invertRegEx')} (${tr('filterAPKsByRegEx')})',
 | 
			
		||||
          defaultValue: false)
 | 
			
		||||
    ],
 | 
			
		||||
    [
 | 
			
		||||
      GeneratedFormSwitch('autoApkFilterByArch',
 | 
			
		||||
          label: tr('autoApkFilterByArch'), defaultValue: true)
 | 
			
		||||
@@ -708,6 +713,20 @@ String? extractVersion(String? versionExtractionRegEx, String? matchGroupString,
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
List<MapEntry<String, String>> filterApks(
 | 
			
		||||
    List<MapEntry<String, String>> apkUrls,
 | 
			
		||||
    String? apkFilterRegEx,
 | 
			
		||||
    bool? invert) {
 | 
			
		||||
  if (apkFilterRegEx?.isNotEmpty == true) {
 | 
			
		||||
    var reg = RegExp(apkFilterRegEx!);
 | 
			
		||||
    apkUrls = apkUrls.where((element) {
 | 
			
		||||
      var hasMatch = reg.hasMatch(element.key);
 | 
			
		||||
      return invert == true ? !hasMatch : hasMatch;
 | 
			
		||||
    }).toList();
 | 
			
		||||
  }
 | 
			
		||||
  return apkUrls;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class SourceProvider {
 | 
			
		||||
  // Add more source classes here so they are available via the service
 | 
			
		||||
  List<AppSource> get sources => [
 | 
			
		||||
@@ -825,11 +844,8 @@ class SourceProvider {
 | 
			
		||||
        apk.releaseDate != null) {
 | 
			
		||||
      apk.version = apk.releaseDate!.microsecondsSinceEpoch.toString();
 | 
			
		||||
    }
 | 
			
		||||
    if (additionalSettings['apkFilterRegEx'] != null) {
 | 
			
		||||
      var reg = RegExp(additionalSettings['apkFilterRegEx']);
 | 
			
		||||
      apk.apkUrls =
 | 
			
		||||
          apk.apkUrls.where((element) => reg.hasMatch(element.key)).toList();
 | 
			
		||||
    }
 | 
			
		||||
    apk.apkUrls = filterApks(apk.apkUrls, additionalSettings['apkFilterRegEx'],
 | 
			
		||||
        additionalSettings['invertAPKFilter']);
 | 
			
		||||
    if (apk.apkUrls.isEmpty && !trackOnly) {
 | 
			
		||||
      throw NoAPKError();
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user