mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-07-16 06:36:44 +02:00
Add release notes filter for GitHub/Codeberg(#719)
This commit is contained in:
@ -245,6 +245,7 @@
|
|||||||
"githubSourceNote": "GitHub rate limiting can be avoided using an API key.",
|
"githubSourceNote": "GitHub rate limiting can be avoided using an API key.",
|
||||||
"gitlabSourceNote": "GitLab APK extraction may not work without an API key.",
|
"gitlabSourceNote": "GitLab APK extraction may not work without an API key.",
|
||||||
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
||||||
|
"filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "Želite li ukloniti aplikaciju?",
|
"one": "Želite li ukloniti aplikaciju?",
|
||||||
"other": "Želite li ukloniti aplikacije?"
|
"other": "Želite li ukloniti aplikacije?"
|
||||||
|
@ -245,6 +245,7 @@
|
|||||||
"githubSourceNote": "Die GitHub-Ratenbegrenzung kann mit einem API-Schlüssel umgangen werden.",
|
"githubSourceNote": "Die GitHub-Ratenbegrenzung kann mit einem API-Schlüssel umgangen werden.",
|
||||||
"gitlabSourceNote": "GitLab APK-Extraktion funktioniert möglicherweise nicht ohne API-Schlüssel",
|
"gitlabSourceNote": "GitLab APK-Extraktion funktioniert möglicherweise nicht ohne API-Schlüssel",
|
||||||
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
||||||
|
"filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "App entfernen?",
|
"one": "App entfernen?",
|
||||||
"other": "Apps entfernen?"
|
"other": "Apps entfernen?"
|
||||||
|
@ -245,6 +245,7 @@
|
|||||||
"githubSourceNote": "GitHub rate limiting can be avoided using an API key.",
|
"githubSourceNote": "GitHub rate limiting can be avoided using an API key.",
|
||||||
"gitlabSourceNote": "GitLab APK extraction may not work without an API key.",
|
"gitlabSourceNote": "GitLab APK extraction may not work without an API key.",
|
||||||
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
||||||
|
"filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "Remove App?",
|
"one": "Remove App?",
|
||||||
"other": "Remove Apps?"
|
"other": "Remove Apps?"
|
||||||
|
@ -245,6 +245,7 @@
|
|||||||
"githubSourceNote": "GitHub rate limiting can be avoided using an API key.",
|
"githubSourceNote": "GitHub rate limiting can be avoided using an API key.",
|
||||||
"gitlabSourceNote": "GitLab APK extraction may not work without an API key.",
|
"gitlabSourceNote": "GitLab APK extraction may not work without an API key.",
|
||||||
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
||||||
|
"filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "¿Eliminar Aplicación?",
|
"one": "¿Eliminar Aplicación?",
|
||||||
"other": "¿Eliminar Aplicaciones?"
|
"other": "¿Eliminar Aplicaciones?"
|
||||||
|
@ -245,6 +245,7 @@
|
|||||||
"githubSourceNote": "GitHub rate limiting can be avoided using an API key.",
|
"githubSourceNote": "GitHub rate limiting can be avoided using an API key.",
|
||||||
"gitlabSourceNote": "GitLab APK extraction may not work without an API key.",
|
"gitlabSourceNote": "GitLab APK extraction may not work without an API key.",
|
||||||
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
||||||
|
"filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "برنامه حذف شود؟",
|
"one": "برنامه حذف شود؟",
|
||||||
"other": "برنامه ها حذف شوند؟"
|
"other": "برنامه ها حذف شوند؟"
|
||||||
|
@ -245,6 +245,7 @@
|
|||||||
"githubSourceNote": "GitHub rate limiting can be avoided using an API key.",
|
"githubSourceNote": "GitHub rate limiting can be avoided using an API key.",
|
||||||
"gitlabSourceNote": "GitLab APK extraction may not work without an API key.",
|
"gitlabSourceNote": "GitLab APK extraction may not work without an API key.",
|
||||||
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
||||||
|
"filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "Supprimer l'application ?",
|
"one": "Supprimer l'application ?",
|
||||||
"other": "Supprimer les applications ?"
|
"other": "Supprimer les applications ?"
|
||||||
|
@ -244,6 +244,7 @@
|
|||||||
"githubSourceNote": "A GitHub értékelési korlátozása elkerülhető API-kulcs használatával.",
|
"githubSourceNote": "A GitHub értékelési korlátozása elkerülhető API-kulcs használatával.",
|
||||||
"gitlabSourceNote": "Előfordulhat, hogy a GitLab APK kibontása nem működik API-kulcs nélkül.",
|
"gitlabSourceNote": "Előfordulhat, hogy a GitLab APK kibontása nem működik API-kulcs nélkül.",
|
||||||
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
||||||
|
"filterReleaseNotesByRegEx": "Filter Release Notes by 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?"
|
||||||
|
@ -245,6 +245,7 @@
|
|||||||
"githubSourceNote": "GitHub rate limiting can be avoided using an API key.",
|
"githubSourceNote": "GitHub rate limiting can be avoided using an API key.",
|
||||||
"gitlabSourceNote": "GitLab APK extraction may not work without an API key.",
|
"gitlabSourceNote": "GitLab APK extraction may not work without an API key.",
|
||||||
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
||||||
|
"filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "Rimuovere l'app?",
|
"one": "Rimuovere l'app?",
|
||||||
"other": "Rimuovere le app?"
|
"other": "Rimuovere le app?"
|
||||||
|
@ -245,6 +245,7 @@
|
|||||||
"githubSourceNote": "GitHubのレート制限はAPIキーを使うことで回避できます。",
|
"githubSourceNote": "GitHubのレート制限はAPIキーを使うことで回避できます。",
|
||||||
"gitlabSourceNote": "GitLabのAPK抽出はAPIキーがないと動作しない場合があります。",
|
"gitlabSourceNote": "GitLabのAPK抽出はAPIキーがないと動作しない場合があります。",
|
||||||
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
||||||
|
"filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "アプリを削除しますか?",
|
"one": "アプリを削除しますか?",
|
||||||
"other": "アプリを削除しますか?"
|
"other": "アプリを削除しますか?"
|
||||||
|
@ -249,6 +249,7 @@
|
|||||||
"githubSourceNote": "Limit żądań GitHub można ominąć za pomocą klucza API.",
|
"githubSourceNote": "Limit żądań GitHub można ominąć za pomocą klucza API.",
|
||||||
"gitlabSourceNote": "Pozyskiwanie pliku APK z GitLab może nie działać bez klucza API.",
|
"gitlabSourceNote": "Pozyskiwanie pliku APK z GitLab może nie działać bez klucza API.",
|
||||||
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
||||||
|
"filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "Usunąć aplikację?",
|
"one": "Usunąć aplikację?",
|
||||||
"other": "Usunąć aplikacje?"
|
"other": "Usunąć aplikacje?"
|
||||||
|
@ -245,6 +245,7 @@
|
|||||||
"githubSourceNote": "Лимит запросов GitHub можно обойти, используя ключ API.",
|
"githubSourceNote": "Лимит запросов GitHub можно обойти, используя ключ API.",
|
||||||
"gitlabSourceNote": "Извлечение APK из GitLab может не работать без ключа API.",
|
"gitlabSourceNote": "Извлечение APK из GitLab может не работать без ключа API.",
|
||||||
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
||||||
|
"filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "Удалить приложение?",
|
"one": "Удалить приложение?",
|
||||||
"other": "Удалить приложения?"
|
"other": "Удалить приложения?"
|
||||||
|
@ -245,6 +245,7 @@
|
|||||||
"githubSourceNote": "使用访问令牌可避免触发 GitHub 的 API 请求限制。",
|
"githubSourceNote": "使用访问令牌可避免触发 GitHub 的 API 请求限制。",
|
||||||
"gitlabSourceNote": "未使用访问令牌时可能无法从 GitLab 获取 APK 文件。",
|
"gitlabSourceNote": "未使用访问令牌时可能无法从 GitLab 获取 APK 文件。",
|
||||||
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
"sortByFileNamesNotLinks": "Sort by file names instead of full links",
|
||||||
|
"filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "是否删除应用?",
|
"one": "是否删除应用?",
|
||||||
"other": "是否删除应用?"
|
"other": "是否删除应用?"
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
import 'package:easy_localization/easy_localization.dart';
|
|
||||||
import 'package:obtainium/app_sources/github.dart';
|
import 'package:obtainium/app_sources/github.dart';
|
||||||
import 'package:obtainium/components/generated_form.dart';
|
|
||||||
import 'package:obtainium/custom_errors.dart';
|
import 'package:obtainium/custom_errors.dart';
|
||||||
import 'package:obtainium/providers/source_provider.dart';
|
import 'package:obtainium/providers/source_provider.dart';
|
||||||
|
|
||||||
@ -9,26 +7,8 @@ class Codeberg extends AppSource {
|
|||||||
Codeberg() {
|
Codeberg() {
|
||||||
host = 'codeberg.org';
|
host = 'codeberg.org';
|
||||||
|
|
||||||
additionalSourceAppSpecificSettingFormItems = [
|
additionalSourceAppSpecificSettingFormItems =
|
||||||
[
|
gh.additionalSourceAppSpecificSettingFormItems;
|
||||||
GeneratedFormSwitch('includePrereleases',
|
|
||||||
label: tr('includePrereleases'), defaultValue: false)
|
|
||||||
],
|
|
||||||
[
|
|
||||||
GeneratedFormSwitch('fallbackToOlderReleases',
|
|
||||||
label: tr('fallbackToOlderReleases'), defaultValue: true)
|
|
||||||
],
|
|
||||||
[
|
|
||||||
GeneratedFormTextField('filterReleaseTitlesByRegEx',
|
|
||||||
label: tr('filterReleaseTitlesByRegEx'),
|
|
||||||
required: false,
|
|
||||||
additionalValidators: [
|
|
||||||
(value) {
|
|
||||||
return regExValidator(value);
|
|
||||||
}
|
|
||||||
])
|
|
||||||
]
|
|
||||||
];
|
|
||||||
|
|
||||||
canSearch = true;
|
canSearch = true;
|
||||||
searchQuerySettingFormItems = gh.searchQuerySettingFormItems;
|
searchQuerySettingFormItems = gh.searchQuerySettingFormItems;
|
||||||
|
@ -75,6 +75,16 @@ class GitHub extends AppSource {
|
|||||||
return regExValidator(value);
|
return regExValidator(value);
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
|
],
|
||||||
|
[
|
||||||
|
GeneratedFormTextField('filterReleaseNotesByRegEx',
|
||||||
|
label: tr('filterReleaseNotesByRegEx'),
|
||||||
|
required: false,
|
||||||
|
additionalValidators: [
|
||||||
|
(value) {
|
||||||
|
return regExValidator(value);
|
||||||
|
}
|
||||||
|
])
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -196,6 +206,12 @@ class GitHub extends AppSource {
|
|||||||
true
|
true
|
||||||
? additionalSettings['filterReleaseTitlesByRegEx']
|
? additionalSettings['filterReleaseTitlesByRegEx']
|
||||||
: null;
|
: null;
|
||||||
|
String? regexNotesFilter =
|
||||||
|
(additionalSettings['filterReleaseNotesByRegEx'] as String?)
|
||||||
|
?.isNotEmpty ==
|
||||||
|
true
|
||||||
|
? additionalSettings['filterReleaseNotesByRegEx']
|
||||||
|
: null;
|
||||||
Response res = await sourceRequest(requestUrl);
|
Response res = await sourceRequest(requestUrl);
|
||||||
if (res.statusCode == 200) {
|
if (res.statusCode == 200) {
|
||||||
var releases = jsonDecode(res.body) as List<dynamic>;
|
var releases = jsonDecode(res.body) as List<dynamic>;
|
||||||
@ -264,6 +280,11 @@ class GitHub extends AppSource {
|
|||||||
!RegExp(regexFilter).hasMatch(nameToFilter.trim())) {
|
!RegExp(regexFilter).hasMatch(nameToFilter.trim())) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (regexNotesFilter != null &&
|
||||||
|
!RegExp(regexNotesFilter)
|
||||||
|
.hasMatch(((releases[i]['body'] as String?) ?? '').trim())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
var apkUrls = getReleaseAPKUrls(releases[i]);
|
var apkUrls = getReleaseAPKUrls(releases[i]);
|
||||||
if (apkUrls.isEmpty && additionalSettings['trackOnly'] != true) {
|
if (apkUrls.isEmpty && additionalSettings['trackOnly'] != true) {
|
||||||
continue;
|
continue;
|
||||||
|
Reference in New Issue
Block a user