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