mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-07-16 22:56:44 +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",
|
||||
"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