mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-07-13 13:26:43 +02:00
Enable arch-based auto-filter for intermediate HTML links (#2162)
This commit is contained in:
@ -212,6 +212,10 @@ class HTML extends AppSource {
|
|||||||
required: true,
|
required: true,
|
||||||
additionalValidators: [(value) => regExValidator(value)])
|
additionalValidators: [(value) => regExValidator(value)])
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
GeneratedFormSwitch('autoApkFilterByArch',
|
||||||
|
label: tr('autoApkFilterByArch'), defaultValue: false)
|
||||||
|
],
|
||||||
];
|
];
|
||||||
HTML() {
|
HTML() {
|
||||||
additionalSourceAppSpecificSettingFormItems = [
|
additionalSourceAppSpecificSettingFormItems = [
|
||||||
@ -315,6 +319,10 @@ class HTML extends AppSource {
|
|||||||
if (intLinks.isEmpty) {
|
if (intLinks.isEmpty) {
|
||||||
throw NoReleasesError(note: currentUrl);
|
throw NoReleasesError(note: currentUrl);
|
||||||
} else {
|
} else {
|
||||||
|
if (additionalSettings['intermediateLink'][i]['autoApkFilterByArch'] ==
|
||||||
|
true) {
|
||||||
|
intLinks = await filterApksByArch(intLinks);
|
||||||
|
}
|
||||||
currentUrl = intLinks.last.key;
|
currentUrl = intLinks.last.key;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -474,6 +474,23 @@ List<MapEntry<String, String>> getApkUrlsFromUrls(List<String> urls) =>
|
|||||||
return MapEntry(apkSegs.isNotEmpty ? apkSegs.last : segments.last, e);
|
return MapEntry(apkSegs.isNotEmpty ? apkSegs.last : segments.last, e);
|
||||||
}).toList();
|
}).toList();
|
||||||
|
|
||||||
|
Future<List<MapEntry<String, String>>> filterApksByArch(
|
||||||
|
List<MapEntry<String, String>> apkUrls) async {
|
||||||
|
if (apkUrls.length > 1) {
|
||||||
|
var abis = (await DeviceInfoPlugin().androidInfo).supportedAbis;
|
||||||
|
for (var abi in abis) {
|
||||||
|
var urls2 = apkUrls
|
||||||
|
.where((element) => RegExp('.*$abi.*').hasMatch(element.key))
|
||||||
|
.toList();
|
||||||
|
if (urls2.isNotEmpty && urls2.length < apkUrls.length) {
|
||||||
|
apkUrls = urls2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return apkUrls;
|
||||||
|
}
|
||||||
|
|
||||||
getSourceRegex(List<String> hosts) {
|
getSourceRegex(List<String> hosts) {
|
||||||
return '(${hosts.join('|').replaceAll('.', '\\.')})';
|
return '(${hosts.join('|').replaceAll('.', '\\.')})';
|
||||||
}
|
}
|
||||||
@ -984,18 +1001,8 @@ class SourceProvider {
|
|||||||
if (apk.apkUrls.isEmpty && !trackOnly) {
|
if (apk.apkUrls.isEmpty && !trackOnly) {
|
||||||
throw NoAPKError();
|
throw NoAPKError();
|
||||||
}
|
}
|
||||||
if (apk.apkUrls.length > 1 &&
|
if (additionalSettings['autoApkFilterByArch'] == true) {
|
||||||
additionalSettings['autoApkFilterByArch'] == true) {
|
apk.apkUrls = await filterApksByArch(apk.apkUrls);
|
||||||
var abis = (await DeviceInfoPlugin().androidInfo).supportedAbis;
|
|
||||||
for (var abi in abis) {
|
|
||||||
var urls2 = apk.apkUrls
|
|
||||||
.where((element) => RegExp('.*$abi.*').hasMatch(element.key))
|
|
||||||
.toList();
|
|
||||||
if (urls2.isNotEmpty && urls2.length < apk.apkUrls.length) {
|
|
||||||
apk.apkUrls = urls2;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
var name = currentApp != null ? currentApp.name.trim() : '';
|
var name = currentApp != null ? currentApp.name.trim() : '';
|
||||||
name = name.isNotEmpty ? name : apk.names.name;
|
name = name.isNotEmpty ? name : apk.names.name;
|
||||||
|
Reference in New Issue
Block a user