diff --git a/.flutter b/.flutter index edada7c..05db968 160000 --- a/.flutter +++ b/.flutter @@ -1 +1 @@ -Subproject commit edada7c56edf4a183c1735310e123c7f923584f1 +Subproject commit 05db9689081f091050f01aed79f04dce0c750154 diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 0bd0614..3331999 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -74,7 +74,6 @@ - ", "intermediateLinkNotFound": "لم يتم العثور على رابط وسيط", "intermediateLink": "رابط وسيط", "exemptFromBackgroundUpdates": "إعفاء من التحديثات في الخلفية (إذا تم تمكينها)", diff --git a/assets/translations/bs.json b/assets/translations/bs.json index 74b7a2a..2a6143b 100644 --- a/assets/translations/bs.json +++ b/assets/translations/bs.json @@ -254,6 +254,7 @@ "verifyLatestTag": "Provjerite 'posljednu' ('latest') oznaku", "intermediateLinkRegex": "Filter za 'srednju' vezu za posjetu", "filterByLinkText": "Filtriraj linkove prema tekstu linka", + "matchLinksOutsideATags": "Match links outside tags", "intermediateLinkNotFound": "Intermediate veza nije nađena", "intermediateLink": "Intermediate veza", "exemptFromBackgroundUpdates": "Izuzmi iz ažuriranja u pozadini (ako su uključeni)", diff --git a/assets/translations/ca.json b/assets/translations/ca.json index 0968043..d640ba6 100644 --- a/assets/translations/ca.json +++ b/assets/translations/ca.json @@ -254,6 +254,7 @@ "verifyLatestTag": "Comprova l'etiqueta 'Latest' (última versió)", "intermediateLinkRegex": "Filtra per un enllaç 'intermediari' per anar-hi", "filterByLinkText": "Filtra els enllaços pel text de l'enllaç", + "matchLinksOutsideATags": "Match links outside tags", "intermediateLinkNotFound": "No s'ha trobat l'enllaç intermediari", "intermediateLink": "Enllaç intermediari", "exemptFromBackgroundUpdates": "Exempta d'actualitzacions en segon pla (si han estat habilitades)", diff --git a/assets/translations/cs.json b/assets/translations/cs.json index 27d4aa9..684e8c2 100644 --- a/assets/translations/cs.json +++ b/assets/translations/cs.json @@ -254,6 +254,7 @@ "verifyLatestTag": "Ověřit značku „latest“", "intermediateLinkRegex": "Filtr pro návštěvu „prostředního“ odkazu", "filterByLinkText": "Filtrovat odkazy podle textu odkazu", + "matchLinksOutsideATags": "Shoda odkazů mimo značky ", "intermediateLinkNotFound": "Připojený odkaz nenalezen", "intermediateLink": "Připojený odkaz", "exemptFromBackgroundUpdates": "Vyloučit z aktualizací na pozadí (je-li povoleno)", diff --git a/assets/translations/da.json b/assets/translations/da.json index 83f9f99..b106a87 100644 --- a/assets/translations/da.json +++ b/assets/translations/da.json @@ -254,6 +254,7 @@ "verifyLatestTag": "Verificer 'seneste'-tagget", "intermediateLinkRegex": "Filtrer efter et 'mellemliggende' link at besøge", "filterByLinkText": "Filtrer links efter linktekst", + "matchLinksOutsideATags": "Match links uden for -tags", "intermediateLinkNotFound": "Mellemliggende link ikke fundet", "intermediateLink": "Mellemliggende link", "exemptFromBackgroundUpdates": "Undtag fra baggrundsopdateringer (hvis aktiveret)", diff --git a/assets/translations/de.json b/assets/translations/de.json index bc6bbbe..26cdda9 100644 --- a/assets/translations/de.json +++ b/assets/translations/de.json @@ -254,6 +254,7 @@ "verifyLatestTag": "„Latest“-Tag überprüfen", "intermediateLinkRegex": "Filter für einen „Zwischen“-Link, der zuerst besucht werden soll", "filterByLinkText": "Links durch Linktext filtern", + "matchLinksOutsideATags": "Links außerhalb von -Tags anpassen", "intermediateLinkNotFound": "„Zwischen“-Link nicht gefunden", "intermediateLink": "„Zwischen“-Link", "exemptFromBackgroundUpdates": "Von Hintergrundaktualisierungen (falls aktiviert) ausschließen", diff --git a/assets/translations/en-EO.json b/assets/translations/en-EO.json index 695fb25..17702dc 100644 --- a/assets/translations/en-EO.json +++ b/assets/translations/en-EO.json @@ -254,6 +254,7 @@ "verifyLatestTag": "Inspekti la etikedon 'latest'", "intermediateLinkRegex": "Filtri por 'pera' vizitota ligilo", "filterByLinkText": "Filtri ligilojn laŭ ligiloteksto", + "matchLinksOutsideATags": "Match links outside tags", "intermediateLinkNotFound": "Netrovebla pera ligilo", "intermediateLink": "Pera ligilo", "exemptFromBackgroundUpdates": "Escepti el la fonaj ĝisdatigoj (se aktiva)", diff --git a/assets/translations/en.json b/assets/translations/en.json index 07549a6..5d58f96 100644 --- a/assets/translations/en.json +++ b/assets/translations/en.json @@ -254,6 +254,7 @@ "verifyLatestTag": "Verify the 'latest' tag", "intermediateLinkRegex": "Filter for an 'intermediate' link to visit", "filterByLinkText": "Filter links by link text", + "matchLinksOutsideATags": "Match links outside tags", "intermediateLinkNotFound": "Intermediate link not found", "intermediateLink": "Intermediate link", "exemptFromBackgroundUpdates": "Exempt from background updates (if enabled)", diff --git a/assets/translations/es.json b/assets/translations/es.json index b8c9fe0..9136a67 100644 --- a/assets/translations/es.json +++ b/assets/translations/es.json @@ -254,6 +254,7 @@ "verifyLatestTag": "Comprobar etiqueta 'Latest'", "intermediateLinkRegex": "Filtrar por enlace 'intermedio' para visitar primero", "filterByLinkText": "Filtrar enlaces por texto del enlace", + "matchLinksOutsideATags": "Enlaces coincidentes fuera de las etiquetas ", "intermediateLinkNotFound": "Enlace intermedio no encontrado", "intermediateLink": "Enlace intermedio", "exemptFromBackgroundUpdates": "No actualizar en segundo plano (si está habilitado)", diff --git a/assets/translations/fa.json b/assets/translations/fa.json index 48a4c69..7a46917 100644 --- a/assets/translations/fa.json +++ b/assets/translations/fa.json @@ -254,6 +254,7 @@ "verifyLatestTag": "برچسب \"آخرین\" را تأیید کنید", "intermediateLinkRegex": "برای بازدید از پیوند «میانگین» فیلتر کنید", "filterByLinkText": "لینک ها را بر اساس متن پیوند فیلتر کنید", + "matchLinksOutsideATags": "Match links outside tags", "intermediateLinkNotFound": "لینک میانی پیدا نشد", "intermediateLink": "پیوند میانی", "exemptFromBackgroundUpdates": "معاف از به‌روزرسانی‌های پس‌زمینه (در صورت فعال بودن)", diff --git a/assets/translations/fr.json b/assets/translations/fr.json index 826e7c9..f3675c5 100644 --- a/assets/translations/fr.json +++ b/assets/translations/fr.json @@ -254,6 +254,7 @@ "verifyLatestTag": "Vérifier la balise 'latest'", "intermediateLinkRegex": "Filtrer un lien 'intermédiaire' à visiter", "filterByLinkText": "Filtrer les liens par texte du lien", + "matchLinksOutsideATags": "Liens en dehors des balises ", "intermediateLinkNotFound": "Lien intermédiaire introuvable", "intermediateLink": "Lien intermédiaire", "exemptFromBackgroundUpdates": "Exclure des mises à jour en arrière-plan (si activées)", diff --git a/assets/translations/hu.json b/assets/translations/hu.json index fd27459..440af8a 100644 --- a/assets/translations/hu.json +++ b/assets/translations/hu.json @@ -254,6 +254,7 @@ "verifyLatestTag": "Ellenőrizze a „legújabb” címkét", "intermediateLinkRegex": "Szűrő egy „köztes” hivatkozás felkereséséhez", "filterByLinkText": "Hivatkozások szűrése hivatkozásszöveg alapján", + "matchLinksOutsideATags": " címkéken kívüli linkek megfeleltetése", "intermediateLinkNotFound": "Köztes hivatkozás nem található", "intermediateLink": "Köztes hivatkozás", "exemptFromBackgroundUpdates": "Mentes a háttérben történő frissítések alól (ha engedélyezett)", diff --git a/assets/translations/id.json b/assets/translations/id.json index 4258754..c85da4c 100644 --- a/assets/translations/id.json +++ b/assets/translations/id.json @@ -254,6 +254,7 @@ "verifyLatestTag": "Verifikasi label 'terbaru'", "intermediateLinkRegex": "Filter tautan 'perantara' untuk dikunjungi", "filterByLinkText": "Filter tautan berdasarkan teks tautan", + "matchLinksOutsideATags": "Mencocokkan tautan di luar tag ", "intermediateLinkNotFound": "Tautan perantara tidak ditemukan", "intermediateLink": "Tautan perantara", "exemptFromBackgroundUpdates": "Dikecualikan dari pembaruan latar belakang (jika diaktifkan)", diff --git a/assets/translations/it.json b/assets/translations/it.json index d060e66..02afc03 100644 --- a/assets/translations/it.json +++ b/assets/translations/it.json @@ -254,6 +254,7 @@ "verifyLatestTag": "Verifica l'etichetta 'Latest'", "intermediateLinkRegex": "Filtro per un collegamento 'intermedio' da visitare", "filterByLinkText": "Filtra i collegamenti in base al testo del collegamento", + "matchLinksOutsideATags": "Corrispondenza dei collegamenti al di fuori dei tag ", "intermediateLinkNotFound": "Link intermedio non trovato", "intermediateLink": "Collegamento intermedio", "exemptFromBackgroundUpdates": "Esente da aggiornamenti in secondo piano (se attivo)", diff --git a/assets/translations/ja.json b/assets/translations/ja.json index 4ffc54e..abe3020 100644 --- a/assets/translations/ja.json +++ b/assets/translations/ja.json @@ -254,6 +254,7 @@ "verifyLatestTag": "'latest'タグを確認する", "intermediateLinkRegex": "訪問する「中間」リンクのフィルター", "filterByLinkText": "テキストでリンクをフィルタリングする", + "matchLinksOutsideATags": "タグの外にあるリンクに一致させる", "intermediateLinkNotFound": "中間リンクが見つかりませんでした", "intermediateLink": "中間リンク", "exemptFromBackgroundUpdates": "バックグラウンドアップデートを行わない (有効な場合)", diff --git a/assets/translations/ko.json b/assets/translations/ko.json index 678df6c..f7e6b3d 100644 --- a/assets/translations/ko.json +++ b/assets/translations/ko.json @@ -254,6 +254,7 @@ "verifyLatestTag": "'최신' 태그 확인", "intermediateLinkRegex": "'중간' 링크 방문 필터", "filterByLinkText": "링크 텍스트로 링크 필터링", + "matchLinksOutsideATags": "<> 태그 외부의 링크 일치", "intermediateLinkNotFound": "중간 링크를 찾을 수 없습니다", "intermediateLink": "중간 링크", "exemptFromBackgroundUpdates": "백그라운드 업데이트에서 제외 (활성화된 경우)", diff --git a/assets/translations/ml.json b/assets/translations/ml.json index 0f81d1c..932ae23 100644 --- a/assets/translations/ml.json +++ b/assets/translations/ml.json @@ -254,6 +254,7 @@ "verifyLatestTag": "'ഏറ്റവും പുതിയ' ടാഗ് പരിശോധിക്കുക", "intermediateLinkRegex": "സന്ദർശിക്കാൻ ഒരു 'ഇന്റർമീഡിയറ്റ്' ലിങ്കിനായി ഫിൽട്ടർ ചെയ്യുക", "filterByLinkText": "ലിങ്ക് ടെക്സ്റ്റ് ഉപയോഗിച്ച് ലിങ്കുകൾ ഫിൽട്ടർ ചെയ്യുക", + "matchLinksOutsideATags": "Match links outside tags", "intermediateLinkNotFound": "ഇന്റർമീഡിയറ്റ് ലിങ്ക് കണ്ടെത്തിയില്ല", "intermediateLink": "ഇന്റർമീഡിയറ്റ് ലിങ്ക്", "exemptFromBackgroundUpdates": "ബാക്ക്ഗ്രൗണ്ട് അപ്‌ഡേറ്റുകളിൽ നിന്ന് ഒഴിവാക്കുക (പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടെങ്കിൽ)", diff --git a/assets/translations/nl.json b/assets/translations/nl.json index a9846fd..ea88d61 100644 --- a/assets/translations/nl.json +++ b/assets/translations/nl.json @@ -254,6 +254,7 @@ "verifyLatestTag": "Het label 'Laatste' verifiëren", "intermediateLinkRegex": "Filteren op een 'Intermediaire' link om te bezoeken", "filterByLinkText": "Links filteren op linktekst", + "matchLinksOutsideATags": "Koppelingen buiten -tags matchen", "intermediateLinkNotFound": "Intermediaire link niet gevonden", "intermediateLink": "Intermediaire link", "exemptFromBackgroundUpdates": "Vrijgesteld van achtergrond-updates (indien ingeschakeld)", diff --git a/assets/translations/pl.json b/assets/translations/pl.json index 0c84a29..f792638 100644 --- a/assets/translations/pl.json +++ b/assets/translations/pl.json @@ -254,6 +254,7 @@ "verifyLatestTag": "Zweryfikuj najnowszy tag", "intermediateLinkRegex": "Filtr linków \"pośrednich\" do odwiedzenia w pierwszej kolejności", "filterByLinkText": "Filtruj linki według tekstu linku", + "matchLinksOutsideATags": "Dopasowywanie linków poza znacznikami ", "intermediateLinkNotFound": "Nie znaleziono linku pośredniego", "intermediateLink": "Link pośredni", "exemptFromBackgroundUpdates": "Wyklucz z uaktualnień w tle (jeśli są włączone)", diff --git a/assets/translations/pt-BR.json b/assets/translations/pt-BR.json index d9c89ef..19b01a5 100644 --- a/assets/translations/pt-BR.json +++ b/assets/translations/pt-BR.json @@ -254,6 +254,7 @@ "verifyLatestTag": "Verificar a tag 'mais recente'", "intermediateLinkRegex": "Filtrar por um link 'intermediário' para visitar", "filterByLinkText": "Filtrar links por texto do link", + "matchLinksOutsideATags": "Corresponder links fora das tags ", "intermediateLinkNotFound": "Link intermediário não encontrado", "intermediateLink": "Link intermediário", "exemptFromBackgroundUpdates": "Isento de atualizações em segundo plano (caso ativadas)", diff --git a/assets/translations/pt.json b/assets/translations/pt.json index a479a98..89ecbfe 100644 --- a/assets/translations/pt.json +++ b/assets/translations/pt.json @@ -254,6 +254,7 @@ "verifyLatestTag": "Verifique a 'última' etiqueta", "intermediateLinkRegex": "Filtrar um link 'intermediário' para visitar", "filterByLinkText": "Filtrar links pelo texto do link", + "matchLinksOutsideATags": "Corresponder ligações fora das etiquetas ", "intermediateLinkNotFound": "Link intermediário não encontrado", "intermediateLink": "Link intermediário", "exemptFromBackgroundUpdates": "Isento de atualizações em segundo-plano (se ativadas)", diff --git a/assets/translations/ru.json b/assets/translations/ru.json index bcb4bf9..ad86b05 100644 --- a/assets/translations/ru.json +++ b/assets/translations/ru.json @@ -254,6 +254,7 @@ "verifyLatestTag": "Проверять метку «latest»", "intermediateLinkRegex": "Фильтр для «промежуточной» ссылки для посещения", "filterByLinkText": "Фильтрация ссылок по тексту ссылки", + "matchLinksOutsideATags": "Сопоставляйте ссылки вне тегов ", "intermediateLinkNotFound": "Промежуточная ссылка не найдена", "intermediateLink": "Промежуточная ссылка", "exemptFromBackgroundUpdates": "Исключить из фоновых обновлений (если включено)", diff --git a/assets/translations/standardize.js b/assets/translations/standardize.js index ab56236..bb83e90 100644 --- a/assets/translations/standardize.js +++ b/assets/translations/standardize.js @@ -21,6 +21,7 @@ const neverAutoTranslate = { obtainiumImport: ['nl'], appLogs: ['nl'], apks: ['vi'], + minute: ['fr'], tencentAppStore: ['*'] } diff --git a/assets/translations/sv.json b/assets/translations/sv.json index 5672f1e..a51ed1a 100644 --- a/assets/translations/sv.json +++ b/assets/translations/sv.json @@ -254,6 +254,7 @@ "verifyLatestTag": "Verifiera 'senaste'-taggen", "intermediateLinkRegex": "Filtrera för en \"mellanliggande\" länk att besöka", "filterByLinkText": "Filtrera länkar efter länktext", + "matchLinksOutsideATags": "Matcha länkar utanför -taggar", "intermediateLinkNotFound": "Mellanlänk hittades inte", "intermediateLink": "Mellanlänk", "exemptFromBackgroundUpdates": "Undta från bakgrundsuppdateringar (om aktiverad)", diff --git a/assets/translations/tr.json b/assets/translations/tr.json index 30511a0..b33bb18 100644 --- a/assets/translations/tr.json +++ b/assets/translations/tr.json @@ -254,6 +254,7 @@ "verifyLatestTag": "'latest' etiketini doğrula", "intermediateLinkRegex": "Ziyaret Edilecek 'Orta Düzey' Bağlantıyı Filtrele", "filterByLinkText": "Bağlantıları bağlantı metnine göre filtrele", + "matchLinksOutsideATags": " etiketleri dışındaki bağlantıları eşleştirin", "intermediateLinkNotFound": "Ara bağlantı bulunamadı", "intermediateLink": "Ara bağlantı", "exemptFromBackgroundUpdates": "Arka plan güncellemelerinden muaf tut (etkinse)", diff --git a/assets/translations/uk.json b/assets/translations/uk.json index f2053a2..4199541 100644 --- a/assets/translations/uk.json +++ b/assets/translations/uk.json @@ -254,6 +254,7 @@ "verifyLatestTag": "Перевірити тег 'latest'", "intermediateLinkRegex": "Фільтр для 'Проміжного' Посилання для Відвідування", "filterByLinkText": "Фільтрувати посилання за текстом посилання", + "matchLinksOutsideATags": "Зіставлення посилань поза тегами ", "intermediateLinkNotFound": "Проміжне посилання не знайдено", "intermediateLink": "Проміжне посилання", "exemptFromBackgroundUpdates": "Виключено з фонових оновлень (якщо ввімкнено)", diff --git a/assets/translations/vi.json b/assets/translations/vi.json index 90a6def..270cc72 100644 --- a/assets/translations/vi.json +++ b/assets/translations/vi.json @@ -254,6 +254,7 @@ "verifyLatestTag": "Xác minh thẻ 'mới nhất'", "intermediateLinkRegex": "Lọc tìm liên kết 'Trung cấp' để truy cập", "filterByLinkText": "Lọc liên kết theo văn bản liên kết", + "matchLinksOutsideATags": "Khớp các liên kết bên ngoài thẻ ", "intermediateLinkNotFound": "Không tìm thấy liên kết trung gian", "intermediateLink": "Liên kết trung gian", "exemptFromBackgroundUpdates": "Miễn cập nhật nền (nếu được bật)", diff --git a/assets/translations/zh-Hant-TW.json b/assets/translations/zh-Hant-TW.json index b926867..a8eb1d1 100644 --- a/assets/translations/zh-Hant-TW.json +++ b/assets/translations/zh-Hant-TW.json @@ -254,6 +254,7 @@ "verifyLatestTag": "驗證「最新」標籤", "intermediateLinkRegex": "過濾要存取的「中間」連結", "filterByLinkText": "按連結文字過濾連結", + "matchLinksOutsideATags": "匹配 標籤外的連結", "intermediateLinkNotFound": "沒有找到中間連結", "intermediateLink": "中間連結", "exemptFromBackgroundUpdates": "免除背景更新(若已啟用)", diff --git a/assets/translations/zh.json b/assets/translations/zh.json index 120d879..296e9c7 100644 --- a/assets/translations/zh.json +++ b/assets/translations/zh.json @@ -254,6 +254,7 @@ "verifyLatestTag": "验证“Latest”标签", "intermediateLinkRegex": "筛选中转链接的正则表达式", "filterByLinkText": "根据链接文本进行筛选", + "matchLinksOutsideATags": "匹配 标签外的链接", "intermediateLinkNotFound": "未找到中转链接", "intermediateLink": "中转链接", "exemptFromBackgroundUpdates": "禁用后台更新(仅此应用生效,即使已启用全局后台更新)", diff --git a/lib/app_sources/html.dart b/lib/app_sources/html.dart index 08c070e..22f5f3d 100644 --- a/lib/app_sources/html.dart +++ b/lib/app_sources/html.dart @@ -129,6 +129,8 @@ Future>> grabLinksCommon( Uri reqUrl, Map additionalSettings, ) async { + bool matchLinksOutsideATags = + additionalSettings['matchLinksOutsideATags'] == true; var html = parse(rawBody); List> allLinks = html .querySelectorAll('a') @@ -143,7 +145,7 @@ Future>> grabLinksCommon( .where((element) => element.key.isNotEmpty) .map((e) => MapEntry(ensureAbsoluteUrl(e.key, reqUrl), e.value)) .toList(); - if (allLinks.isEmpty) { + if (allLinks.isEmpty || matchLinksOutsideATags) { allLinks = getLinksInLines(rawBody); } if (allLinks.isEmpty) { @@ -247,6 +249,12 @@ class HTML extends AppSource { ]; var commonFormItems = [ [GeneratedFormSwitch('filterByLinkText', label: tr('filterByLinkText'))], + [ + GeneratedFormSwitch( + 'matchLinksOutsideATags', + label: tr('matchLinksOutsideATags') + ), + ], [GeneratedFormSwitch('skipSort', label: tr('skipSort'))], [GeneratedFormSwitch('reverseSort', label: tr('takeFirstLink'))], [ diff --git a/lib/app_sources/liteapks.dart b/lib/app_sources/liteapks.dart new file mode 100644 index 0000000..ff07fbb --- /dev/null +++ b/lib/app_sources/liteapks.dart @@ -0,0 +1,87 @@ +import 'dart:convert'; + +import 'package:http/http.dart'; +import 'package:obtainium/custom_errors.dart'; +import 'package:obtainium/providers/source_provider.dart'; + +class LiteAPKs extends AppSource { + LiteAPKs() { + hosts = ['liteapks.com']; + name = 'LiteAPKs'; + } + + @override + String sourceSpecificStandardizeURL(String url, {bool forSelection = false}) { + RegExp standardUrlRegEx = RegExp( + '^https?://(www\\.)?${getSourceRegex(hosts)}/+[^/]+', + caseSensitive: false, + ); + RegExpMatch? match = standardUrlRegEx.firstMatch(url); + if (match == null) { + throw InvalidURLError(name); + } + return match.group(0)!; + } + + @override + Future getLatestAPKDetails( + String standardUrl, + Map additionalSettings, + ) async { + var standardUri = Uri.parse(standardUrl); + var slug = standardUri.path + .split('.') + .reversed + .toList() + .sublist(1) + .reversed + .join('.'); + Response res1 = await sourceRequest( + '${standardUri.origin}/wp-json/wp/v2/posts?slug=$slug', + additionalSettings, + ); + if (res1.statusCode != 200) { + throw getObtainiumHttpError(res1); + } + + var liteAppId = jsonDecode(res1.body)[0]['id']; + if (liteAppId == null) { + throw NoReleasesError(); + } + + Response res2 = await sourceRequest( + '${standardUri.origin}/wp-json/v2/posts/$liteAppId', + additionalSettings, + ); + if (res2.statusCode != 200) { + throw getObtainiumHttpError(res2); + } + var json = jsonDecode(res2.body); + + var appName = json['data']?['title'] as String?; + var author = json['data']?['publisher'] as String?; + var version = json['data']?['versions']?[0]?['version'] as String?; + if (version == null) { + throw NoVersionError(); + } + var apkUrls = + ((json['data']?['versions']?[0]?['version_downloads'] as List?) + ?.map((l) => l['version_download_link']) ?? + []) + .map( + (l) => MapEntry( + Uri.decodeComponent(Uri.parse(l).pathSegments.last), + l, + ), + ) + .toList(); + return APKDetails( + version, + apkUrls, + AppNames( + author ?? Uri.parse(standardUrl).host, + appName ?? standardUrl.split('/').last, + ), + ); + } +} diff --git a/lib/providers/source_provider.dart b/lib/providers/source_provider.dart index 54dcab9..aa338f3 100644 --- a/lib/providers/source_provider.dart +++ b/lib/providers/source_provider.dart @@ -25,6 +25,7 @@ import 'package:obtainium/app_sources/huaweiappgallery.dart'; import 'package:obtainium/app_sources/izzyondroid.dart'; import 'package:obtainium/app_sources/html.dart'; import 'package:obtainium/app_sources/jenkins.dart'; +import 'package:obtainium/app_sources/liteapks.dart'; import 'package:obtainium/app_sources/neutroncode.dart'; import 'package:obtainium/app_sources/rustore.dart'; import 'package:obtainium/app_sources/sourceforge.dart'; @@ -1076,6 +1077,7 @@ class SourceProvider { HuaweiAppGallery(), Tencent(), CoolApk(), + LiteAPKs(), VivoAppStore(), Jenkins(), APKMirror(), diff --git a/pubspec.lock b/pubspec.lock index 065f369..b687398 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,10 +5,10 @@ packages: dependency: "direct main" description: name: android_intent_plus - sha256: dfc1fd3a577205ae8f11e990fb4ece8c90cceabbee56fcf48e463ecf0bd6aae3 + sha256: "2329378af63f49b985cb2e110ac784d08374f1e2b1984be77ba9325b1c8cce11" url: "https://pub.dev" source: hosted - version: "5.3.0" + version: "5.3.1" android_package_installer: dependency: "direct main" description: @@ -48,10 +48,10 @@ packages: dependency: "direct main" description: name: app_links - sha256: "85ed8fc1d25a76475914fff28cc994653bd900bc2c26e4b57a49e097febb54ba" + sha256: "5f88447519add627fe1cbcab4fd1da3d4fed15b9baf29f28b22535c95ecee3e8" url: "https://pub.dev" source: hosted - version: "6.4.0" + version: "6.4.1" app_links_linux: dependency: transitive description: @@ -104,10 +104,10 @@ packages: dependency: "direct main" description: name: battery_plus - sha256: fb794c34cee2e4ea31005fb17ff15e1d904951ec7f15eedead741021870ee834 + sha256: "03d5a6bb36db9d2b977c548f6b0262d5a84c4d5a4cfee2edac4a91d57011b365" url: "https://pub.dev" source: hosted - version: "6.2.2" + version: "6.2.3" battery_plus_platform_interface: dependency: transitive description: @@ -160,10 +160,10 @@ packages: dependency: "direct main" description: name: connectivity_plus - sha256: "051849e2bd7c7b3bc5844ea0d096609ddc3a859890ec3a9ac4a65a2620cc1f99" + sha256: b5e72753cf63becce2c61fd04dfe0f1c430cc5278b53a1342dc5ad839eab29ec url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "6.1.5" connectivity_plus_platform_interface: dependency: transitive description: @@ -288,10 +288,10 @@ packages: dependency: "direct main" description: name: file_picker - sha256: "13ba4e627ef24503a465d1d61b32596ce10eb6b8903678d362a528f9939b4aa8" + sha256: e7e16c9d15c36330b94ca0e2ad8cb61f93cd5282d0158c09805aed13b5452f22 url: "https://pub.dev" source: hosted - version: "10.2.1" + version: "10.3.2" fixnum: dependency: transitive description: @@ -482,10 +482,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: f948e346c12f8d5480d2825e03de228d0eb8c3a737e4cdaa122267b89c022b5e + sha256: b0694b7fb1689b0e6cc193b3f1fcac6423c4f93c74fb20b806c6b6f196db0c31 url: "https://pub.dev" source: hosted - version: "2.0.28" + version: "2.0.30" flutter_test: dependency: transitive description: flutter @@ -548,10 +548,10 @@ packages: dependency: "direct main" description: name: http - sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b" + sha256: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007 url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.5.0" http_parser: dependency: transitive description: @@ -572,26 +572,26 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" + sha256: "8dcda04c3fc16c14f48a7bb586d4be1f0d1572731b6d81d51772ef47c02081e0" url: "https://pub.dev" source: hosted - version: "10.0.9" + version: "11.0.1" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" url: "https://pub.dev" source: hosted - version: "3.0.9" + version: "3.0.10" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" lints: dependency: transitive description: @@ -676,18 +676,18 @@ packages: dependency: transitive description: name: path_provider_android - sha256: d0d310befe2c8ab9e7f393288ccbb11b60c019c6b5afc21973eeee4dda2b35e9 + sha256: "993381400e94d18469750e5b9dcb8206f15bc09f9da86b9e44a9b0092a0066db" url: "https://pub.dev" source: hosted - version: "2.2.17" + version: "2.2.18" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "4843174df4d288f5e29185bd6e72a6fbdf5a4a4602717eed565497429f179942" + sha256: "16eef174aacb07e09c351502740fa6254c165757638eba1e9116b0a781201bbd" url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2" path_provider_linux: dependency: transitive description: @@ -820,26 +820,26 @@ packages: dependency: "direct main" description: name: provider - sha256: "4abbd070a04e9ddc287673bf5a030c7ca8b685ff70218720abab8b092f53dd84" + sha256: "4e82183fa20e5ca25703ead7e05de9e4cceed1fbd1eadc1ac3cb6f565a09f272" url: "https://pub.dev" source: hosted - version: "6.1.5" + version: "6.1.5+1" share_plus: dependency: "direct main" description: name: share_plus - sha256: b2961506569e28948d75ec346c28775bb111986bb69dc6a20754a457e3d97fa0 + sha256: d7dc0630a923883c6328ca31b89aa682bacbf2f8304162d29f7c6aaff03a27a1 url: "https://pub.dev" source: hosted - version: "11.0.0" + version: "11.1.0" share_plus_platform_interface: dependency: transitive description: name: share_plus_platform_interface - sha256: "1032d392bc5d2095a77447a805aa3f804d2ae6a4d5eef5e6ebb3bd94c1bc19ef" + sha256: "88023e53a13429bd65d8e85e11a9b484f49d4c190abbd96c7932b74d6927cc9a" url: "https://pub.dev" source: hosted - version: "6.0.0" + version: "6.1.0" shared_preferences: dependency: "direct main" description: @@ -852,10 +852,10 @@ packages: dependency: transitive description: name: shared_preferences_android - sha256: "20cbd561f743a342c76c151d6ddb93a9ce6005751e7aa458baad3858bfbfb6ac" + sha256: a2608114b1ffdcbc9c120eb71a0e207c71da56202852d4aab8a5e30a82269e74 url: "https://pub.dev" source: hosted - version: "2.4.10" + version: "2.4.12" shared_preferences_foundation: dependency: transitive description: @@ -947,10 +947,10 @@ packages: dependency: transitive description: name: sqflite_android - sha256: "2b3070c5fa881839f8b402ee4a39c1b4d561704d4ebbbcfb808a119bc2a1701b" + sha256: ecd684501ebc2ae9a83536e8b15731642b9570dc8623e0073d227d0ee2bfea88 url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2+2" sqflite_common: dependency: transitive description: @@ -1019,10 +1019,10 @@ packages: dependency: transitive description: name: test_api - sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" url: "https://pub.dev" source: hosted - version: "0.7.4" + version: "0.7.6" timezone: dependency: transitive description: @@ -1059,18 +1059,18 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: "8582d7f6fe14d2652b4c45c9b6c14c0b678c2af2d083a11b604caeba51930d79" + sha256: "69ee86740f2847b9a4ba6cffa74ed12ce500bbe2b07f3dc1e643439da60637b7" url: "https://pub.dev" source: hosted - version: "6.3.16" + version: "6.3.18" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "7f2022359d4c099eea7df3fdf739f7d3d3b9faf3166fb1dd390775176e0b76cb" + sha256: d80b3f567a617cb923546034cc94bfe44eb15f989fe670b37f26abdb9d939cb7 url: "https://pub.dev" source: hosted - version: "6.3.3" + version: "6.3.4" url_launcher_linux: dependency: transitive description: @@ -1083,10 +1083,10 @@ packages: dependency: transitive description: name: url_launcher_macos - sha256: "17ba2000b847f334f16626a574c702b196723af2a289e7a93ffcb79acff855c2" + sha256: c043a77d6600ac9c38300567f33ef12b0ef4f4783a2c1f00231d2b1941fea13f url: "https://pub.dev" source: hosted - version: "3.2.2" + version: "3.2.3" url_launcher_platform_interface: dependency: transitive description: @@ -1123,18 +1123,18 @@ packages: dependency: transitive description: name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.2.0" vm_service: dependency: transitive description: name: vm_service - sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 + sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60" url: "https://pub.dev" source: hosted - version: "15.0.0" + version: "15.0.2" web: dependency: transitive description: @@ -1155,10 +1155,10 @@ packages: dependency: transitive description: name: webview_flutter_android - sha256: "9573ad97890d199ac3ab32399aa33a5412163b37feb573eb5b0a76b35e9ffe41" + sha256: "9a25f6b4313978ba1c2cda03a242eea17848174912cfb4d2d8ee84a556f248e3" url: "https://pub.dev" source: hosted - version: "4.8.2" + version: "4.10.1" webview_flutter_platform_interface: dependency: transitive description: @@ -1171,10 +1171,10 @@ packages: dependency: transitive description: name: webview_flutter_wkwebview - sha256: "71523b9048cf510cfa1fd4e0a3fa5e476a66e0884d5df51d59d5023dba237107" + sha256: fb46db8216131a3e55bcf44040ca808423539bc6732e7ed34fb6d8044e3d512f url: "https://pub.dev" source: hosted - version: "3.22.1" + version: "3.23.0" win32: dependency: transitive description: @@ -1208,5 +1208,5 @@ packages: source: hosted version: "6.3.0" sdks: - dart: ">=3.8.1 <4.0.0" + dart: ">=3.9.0 <4.0.0" flutter: ">=3.29.0" diff --git a/pubspec.yaml b/pubspec.yaml index 653ed2c..fedb6b0 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,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.2.3+2319 +version: 1.2.4+2320 environment: sdk: ^3.8.1