Compare commits

..

13 Commits

Author SHA1 Message Date
Imran
78e20984ed Merge pull request #1778 from ImranR98/dev
Yet another APKPure bugfix (last one)
2024-08-06 16:48:37 -04:00
Imran Remtulla
f963996a19 Version increment 2024-08-06 16:48:02 -04:00
Imran Remtulla
1ddf2869a6 Yet another APKPure bugfix (last one) 2024-08-06 16:47:38 -04:00
Imran
f9b97b4469 Merge pull request #1777 from ImranR98/dev
APKPure bugfix: Correctly extract APKs that are multi-arch but not universal
2024-08-06 15:52:31 -04:00
Imran Remtulla
6f706ab493 Update Flutter version + update packages, increment version 2024-08-06 15:51:54 -04:00
Imran Remtulla
ed2e6e2e9e APKPure bugfix: Correctly extract APKs that are multi-arch but not universal 2024-08-06 15:49:44 -04:00
Imran
f00758cd83 Merge pull request #1774 from ImranR98/dev
- Fix bug introduced in v1.1.16: APKPure fails to find universal APKs
- Fix bugs found in APKPure URL matching
2024-08-06 11:47:56 -04:00
Imran
25bd61f289 Merge pull request #1773 from Kevinr99089/main
Updating certain words (French File)
2024-08-06 11:46:46 -04:00
Imran Remtulla
25d19d22cf Increment version 2024-08-06 11:46:25 -04:00
Imran Remtulla
9ffb91266f Re-order some sources 2024-08-06 11:45:49 -04:00
Imran Remtulla
8d921cfbf1 Fix bugs in APKPure URL matching 2024-08-06 11:45:01 -04:00
Imran Remtulla
3ed6b168e1 Fix bug from previous version: APKPure fails to find universal APKs 2024-08-06 11:36:39 -04:00
Kévin
4a45c900c3 Some minor corrections
- A job well done is the key (of I don't know what, but it's the key...)
2024-08-06 01:50:03 +02:00
7 changed files with 52 additions and 44 deletions

View File

@@ -25,9 +25,9 @@ Currently supported App sources:
- [APKPure](https://apkpure.net/)
- [Aptoide](https://aptoide.com/)
- [Uptodown](https://uptodown.com/)
- [APKMirror](https://apkmirror.com/) (Track-Only)
- [Huawei AppGallery](https://appgallery.huawei.com/)
- Jenkins Jobs
- [APKMirror](https://apkmirror.com/) (Track-Only)
- Open Source - App-Specific:
- [Signal](https://signal.org/)
- [VLC](https://videolan.org/)

View File

@@ -28,7 +28,7 @@
"githubStarredRepos": "Dépôts étoilés GitHub",
"uname": "Nom d'utilisateur",
"wrongArgNum": "Nombre incorrect des arguments fournis",
"xIsTrackOnly": "{} est en Suivi uniquement",
"xIsTrackOnly": "{} en Suivi uniquement",
"source": "Source",
"app": "Application",
"appsFromSourceAreTrackOnly": "Les applications de cette source sont en 'Suivi uniquement'.",
@@ -61,7 +61,7 @@
"xWillBeRemovedButRemainInstalled": "{} sera supprimée d'Obtainium mais restera installée sur l'appareil.",
"removeSelectedAppsQuestion": "Supprimer les applications sélectionnées ?",
"removeSelectedApps": "Les applications sélectionnées ont étés supprimés",
"updateX": "Mise à jour {}",
"updateX": "Mettre à jour {}",
"installX": "Installer {}",
"markXTrackOnlyAsUpdated": "Marquer {}\n(Suivi uniquement)\ncomme étant à jour",
"changeX": "Changer {}",
@@ -70,7 +70,7 @@
"markXSelectedAppsAsUpdated": "Marquer les {} applications sélectionnées comme étant à jour ?",
"no": "Non",
"yes": "Oui",
"markSelectedAppsUpdated": "Les applications sélectionnées sont marqués comme étant à jour",
"markSelectedAppsUpdated": "Marquer les application sélectionnées comme étant à jour",
"pinToTop": "Épingler en haut",
"unpinFromTop": "Désépingler du haut",
"resetInstallStatusForSelectedAppsQuestion": "Réinitialiser l'état d'installation des applications sélectionnées ?",
@@ -89,7 +89,7 @@
"upToDateApps": "Applications à jour",
"nonInstalledApps": "Applications non installées",
"importExport": "Importer/Exporter",
"settings": "Paramètre",
"settings": "Paramètres",
"exportedTo": "Exporté vers {}",
"obtainiumExport": "Exporter Obtainium",
"invalidInput": "Entrée invalide",
@@ -114,7 +114,7 @@
"light": "Clair",
"followSystem": "Correspondre au système",
"followSystemThemeExplanation": "Correspondre au thème du système est possible en utilisant des applications tierces.",
"useBlackTheme": "Utiliser le thème noir pur",
"useBlackTheme": "Utiliser un thème Noir",
"appSortBy": "Trier les applications par",
"authorName": "Auteur/Nom",
"nameAuthor": "Nom/Auteur",
@@ -125,8 +125,8 @@
"bgUpdateCheckInterval": "Intervalle de recherche de mises à jour en arrière-plan",
"neverManualOnly": "Jamais - Manuellement uniquement",
"appearance": "Apparence",
"showWebInAppView": "Afficher la page Web source dans la vue de l'application",
"pinUpdates": "Épingler les mises à jour en haut de la vue de l'applications",
"showWebInAppView": "Afficher la page Web source dans la vue Applications",
"pinUpdates": "Épingler les mises à jour en haut de la vue Applications",
"updates": "Mises à jour",
"sourceSpecific": "Spécifique à la source",
"appSource": "Source de l'application",
@@ -139,7 +139,7 @@
"pickAnAPK": "Selectionner une APK",
"appHasMoreThanOnePackage": "{} a plus d'un paquet :",
"deviceSupportsXArch": "Votre appareil prend en charge l'architecture CPU {}.",
"deviceSupportsFollowingArchs": "Votre appareil prend en charge les architectures CPU suivantes :",
"deviceSupportsFollowingArchs": "Votre appareil prend en charge les architectures CPU suivants : ",
"warning": "Avertissement",
"sourceIsXButPackageFromYPrompt": "La source de l'application est '{}' mais le paquet de mise à jour provient de '{}'. Continuer ?",
"updatesAvailable": "Mises à jour disponibles",
@@ -171,7 +171,7 @@
"latestVersionX": "Dernière version : {}",
"installedVersionX": "Version installée : {}",
"lastUpdateCheckX": "Dernière recherche de mises à jour : {}",
"remove": "Retirer",
"remove": "Supprimer",
"yesMarkUpdated": "Oui, Marquer comme étant à jour",
"fdroid": "F-Droid Officiel",
"appIdOrName": "ID ou nom de l'application",
@@ -207,7 +207,7 @@
"language": "Langue",
"copiedToClipboard": "Copié dans le presse-papier",
"storagePermissionDenied": "Permission de stockage refusée",
"selectedCategorizeWarning": "Cela remplacera toutes les catégories définies pour les applications sélectionnées.",
"selectedCategorizeWarning": "Cela va remplacer toutes les catégories définies des applications sélectionnées.",
"filterAPKsByRegEx": "Filtrer les APK par expression régulière",
"removeFromObtainium": "Supprimer d'Obtainium",
"uninstallFromDevice": "Désinstaller de l'appareil",
@@ -232,7 +232,7 @@
"requiresCredentialsInSettings": "{} a besoin d'un complément d'information (dans les Paramètres)",
"checkOnStart": "Rechercher les mises à jour au démarrage",
"tryInferAppIdFromCode": "Essayer de déduire l'identifiant de l'application à partir du code source",
"removeOnExternalUninstall": "Supprimer automatiquement les applications désinstallées de l'extérieur",
"removeOnExternalUninstall": "Supprimer automatiquement les applications désinstallées en externe",
"pickHighestVersionCode": "Sélectionner automatiquement la version la plus récente du code APK",
"checkUpdateOnDetailPage": "Rechercher les mises à jour lors de l'ouverture de la page détaillée d'une application",
"disablePageTransitions": "Désactiver les animations de transition de page",
@@ -303,9 +303,9 @@
"partialAPKHash": "Hash partiel de l'APK",
"APKLinkHash": "Hash du lien APK",
"directAPKLink": "Lien direct de l'APK",
"pseudoVersionInUse": "Une version fictive est utilisé",
"pseudoVersionInUse": "Version fictive utilisé",
"installed": "Installée",
"latest": "Latest",
"latest": "Dernière version",
"invertRegEx": "Inverser l'expression régulière",
"note": "Note",
"selfHostedNote": "La liste déroulante \"{}\" peut être utilisé pour accéder à des instances auto-hébergées/personnalisées de n'importe quelle source.",

View File

@@ -31,14 +31,15 @@ class APKPure extends AppSource {
@override
String sourceSpecificStandardizeURL(String url) {
RegExp standardUrlRegExB = RegExp(
'^https?://m.${getSourceRegex(hosts)}/+[^/]+/+[^/]+(/+[^/]+)?',
'^https?://m.${getSourceRegex(hosts)}(/+[^/]{2})?/+[^/]+/+[^/]+',
caseSensitive: false);
RegExpMatch? match = standardUrlRegExB.firstMatch(url);
if (match != null) {
url = 'https://${getSourceRegex(hosts)}${Uri.parse(url).path}';
var uri = Uri.parse(url);
url = 'https://${uri.host.substring(2)}${uri.path}';
}
RegExp standardUrlRegExA = RegExp(
'^https?://(www\\.)?${getSourceRegex(hosts)}/+[^/]+/+[^/]+(/+[^/]+)?',
'^https?://(www\\.)?${getSourceRegex(hosts)}(/+[^/]{2})?/+[^/]+/+[^/]+',
caseSensitive: false);
match = standardUrlRegExA.firstMatch(url);
if (match == null) {
@@ -67,11 +68,6 @@ class APKPure extends AppSource {
'customLinkFilterRegex': '$standardUrl/download/[^/]+\$'
});
// if (versionLinks.length > 7) {
// // Returns up to 30 which is too much - would take too long and possibly get blocked/rate-limited
// versionLinks = versionLinks.sublist(0, 7);
// }
var supportedArchs = (await DeviceInfoPlugin().androidInfo).supportedAbis;
if (additionalSettings['autoApkFilterByArch'] != true) {
@@ -93,7 +89,16 @@ class APKPure extends AppSource {
var apkUrls = apksDiv
?.querySelectorAll('div.group-title')
.map((e) {
String? architecture = e.text.trim();
String architectureString = e.text.trim();
if (architectureString.toLowerCase() == 'unlimited' ||
architectureString.toLowerCase() == 'universal') {
architectureString = '';
}
List<String> architectures = architectureString
.split(',')
.map((e) => e.trim())
.where((e) => e.isNotEmpty)
.toList();
// Only take the first APK for each architecture, ignore others for now, for simplicity
// Unclear why there can even be multiple APKs for the same version and arch
var apkInfo = e.nextElementSibling?.querySelector('div.info');
@@ -116,13 +121,16 @@ class APKPure extends AppSource {
DateTime? releaseDate =
parseDateTimeMMMddCommayyyy(dateString);
if (additionalSettings['autoApkFilterByArch'] == true &&
!supportedArchs.contains(architecture)) {
architectures.isNotEmpty &&
architectures
.where((a) => supportedArchs.contains(a))
.isEmpty) {
return const MapEntry('', '');
}
topReleaseDate ??=
releaseDate; // Just use the release date of the first APK in the list as the release date for this version
return MapEntry(
'$appId-$versionCode-$architecture.${type.toLowerCase()}',
'$appId-$versionCode-$architectureString.${type.toLowerCase()}',
'https://d.${hosts.contains(host) ? 'cdnpure.com' : host}/b/$type/$appId?versionCode=$versionCode');
})
.where((e) => e.key.isNotEmpty)

View File

@@ -763,9 +763,9 @@ class SourceProvider {
APKPure(),
Aptoide(),
Uptodown(),
APKMirror(),
HuaweiAppGallery(),
Jenkins(),
APKMirror(),
Signal(),
VLC(),
WhatsApp(),

View File

@@ -287,10 +287,10 @@ packages:
dependency: "direct main"
description:
name: file_picker
sha256: "824f5b9f389bfc4dddac3dea76cd70c51092d9dff0b2ece7ef4f53db8547d258"
sha256: "825aec673606875c33cd8d3c4083f1a3c3999015a84178b317b7ef396b7384f3"
url: "https://pub.dev"
source: hosted
version: "8.0.6"
version: "8.0.7"
fixnum:
dependency: transitive
description:
@@ -547,18 +547,18 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a"
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
url: "https://pub.dev"
source: hosted
version: "10.0.4"
version: "10.0.5"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8"
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
url: "https://pub.dev"
source: hosted
version: "3.0.3"
version: "3.0.5"
leak_tracker_testing:
dependency: transitive
description:
@@ -595,18 +595,18 @@ packages:
dependency: transitive
description:
name: material_color_utilities
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
url: "https://pub.dev"
source: hosted
version: "0.8.0"
version: "0.11.1"
meta:
dependency: transitive
description:
name: meta
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
url: "https://pub.dev"
source: hosted
version: "1.12.0"
version: "1.15.0"
mime:
dependency: transitive
description:
@@ -969,10 +969,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
url: "https://pub.dev"
source: hosted
version: "0.7.0"
version: "0.7.2"
timezone:
dependency: transitive
description:
@@ -1041,10 +1041,10 @@ packages:
dependency: transitive
description:
name: url_launcher_web
sha256: a36e2d7981122fa185006b216eb6b5b97ede3f9a54b7a511bc966971ab98d049
sha256: "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e"
url: "https://pub.dev"
source: hosted
version: "2.3.2"
version: "2.3.3"
url_launcher_windows:
dependency: transitive
description:
@@ -1073,10 +1073,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec"
sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc
url: "https://pub.dev"
source: hosted
version: "14.2.1"
version: "14.2.4"
web:
dependency: transitive
description:

View File

@@ -17,7 +17,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
version: 1.1.16+2273
version: 1.1.19+2276
environment:
sdk: '>=3.0.0 <4.0.0'