This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
name: Build Futon with Niadd patch
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- ".gitea/workflows/build.yml"
|
||||
- "patches/**"
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
FUTON_REPOSITORY: "https://github.com/AppFuton/Futon.git"
|
||||
FUTON_REF: "devel"
|
||||
PARSERS_REPOSITORY: "https://github.com/Kotatsu-Redo/kotatsu-parsers-redo.git"
|
||||
PARSERS_REF: "master"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build debug APK
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout CI repository
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
|
||||
- name: Set up JDK 17
|
||||
uses: https://github.com/actions/setup-java@v4
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: "17"
|
||||
|
||||
- name: Set up Android SDK
|
||||
uses: https://github.com/android-actions/setup-android@v3
|
||||
|
||||
- name: Install Android SDK 36
|
||||
shell: bash
|
||||
run: |
|
||||
set -euxo pipefail
|
||||
sdkmanager "platform-tools" "platforms;android-36" "build-tools;36.0.0"
|
||||
|
||||
- name: Clone upstream repositories
|
||||
shell: bash
|
||||
run: |
|
||||
set -euxo pipefail
|
||||
|
||||
rm -rf work
|
||||
mkdir -p work
|
||||
|
||||
git clone \
|
||||
--depth 1 \
|
||||
--branch "${FUTON_REF}" \
|
||||
"${FUTON_REPOSITORY}" \
|
||||
work/Futon
|
||||
|
||||
git clone \
|
||||
--depth 1 \
|
||||
--branch "${PARSERS_REF}" \
|
||||
"${PARSERS_REPOSITORY}" \
|
||||
work/kotatsu-parsers-redo
|
||||
|
||||
git -C work/Futon rev-parse HEAD
|
||||
git -C work/kotatsu-parsers-redo rev-parse HEAD
|
||||
|
||||
- name: Check and apply Niadd parser patch
|
||||
shell: bash
|
||||
run: |
|
||||
set -euxo pipefail
|
||||
|
||||
PATCH_FILE="${PWD}/patches/ninemanga-niadd.patch"
|
||||
|
||||
git -C work/kotatsu-parsers-redo apply --check "${PATCH_FILE}"
|
||||
git -C work/kotatsu-parsers-redo apply "${PATCH_FILE}"
|
||||
|
||||
grep -F '"ru.niadd.com"' \
|
||||
work/kotatsu-parsers-redo/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineMangaParser.kt
|
||||
|
||||
grep -F '@MangaSourceParser("NINEMANGA_RU", "Niadd Русский", "ru")' \
|
||||
work/kotatsu-parsers-redo/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineMangaParser.kt
|
||||
|
||||
- name: Connect Futon to patched local parsers
|
||||
shell: bash
|
||||
run: |
|
||||
set -euxo pipefail
|
||||
|
||||
cat >> work/Futon/settings.gradle <<'EOF'
|
||||
|
||||
// Added by futon-niadd-gitea-ci.
|
||||
// Replace the JitPack kotatsu-parsers-redo dependency with the
|
||||
// patched source tree cloned next to Futon.
|
||||
includeBuild('../kotatsu-parsers-redo') {
|
||||
dependencySubstitution {
|
||||
substitute module('com.github.clquwu:kotatsu-parsers-redo') using project(':')
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
tail -n 12 work/Futon/settings.gradle
|
||||
|
||||
- name: Build Futon debug APK
|
||||
shell: bash
|
||||
working-directory: work/Futon
|
||||
env:
|
||||
GRADLE_OPTS: "-Dorg.gradle.daemon=false -Dorg.gradle.jvmargs=-Xmx4g"
|
||||
run: |
|
||||
set -euxo pipefail
|
||||
|
||||
chmod +x gradlew
|
||||
./gradlew \
|
||||
--no-daemon \
|
||||
--stacktrace \
|
||||
:app:assembleDebug
|
||||
|
||||
- name: Prepare build artifacts
|
||||
shell: bash
|
||||
run: |
|
||||
set -euxo pipefail
|
||||
|
||||
APK="work/Futon/app/build/outputs/apk/debug/app-debug.apk"
|
||||
test -s "${APK}"
|
||||
|
||||
mkdir -p dist
|
||||
cp "${APK}" dist/Futon-Niadd-debug.apk
|
||||
|
||||
FUTON_SHA="$(git -C work/Futon rev-parse HEAD)"
|
||||
PARSERS_SHA="$(git -C work/kotatsu-parsers-redo rev-parse HEAD)"
|
||||
|
||||
{
|
||||
echo "Futon repository: ${FUTON_REPOSITORY}"
|
||||
echo "Futon ref: ${FUTON_REF}"
|
||||
echo "Futon commit: ${FUTON_SHA}"
|
||||
echo
|
||||
echo "Parsers repository: ${PARSERS_REPOSITORY}"
|
||||
echo "Parsers ref: ${PARSERS_REF}"
|
||||
echo "Parsers commit: ${PARSERS_SHA}"
|
||||
echo
|
||||
java -version 2>&1
|
||||
} > dist/build-info.txt
|
||||
|
||||
(
|
||||
cd dist
|
||||
sha256sum Futon-Niadd-debug.apk > SHA256SUMS
|
||||
)
|
||||
|
||||
ls -lh dist
|
||||
cat dist/SHA256SUMS
|
||||
cat dist/build-info.txt
|
||||
|
||||
- name: Upload APK
|
||||
uses: https://github.com/actions/upload-artifact@v3
|
||||
with:
|
||||
name: Futon-Niadd-debug
|
||||
path: dist/
|
||||
if-no-files-found: error
|
||||
retention-days: 30
|
||||
@@ -0,0 +1,4 @@
|
||||
work/
|
||||
dist/
|
||||
.gradle/
|
||||
*.apk
|
||||
@@ -0,0 +1,26 @@
|
||||
# Futon Niadd — Gitea Actions build
|
||||
|
||||
Этот репозиторий не хранит копии Futon и kotatsu-parsers-redo.
|
||||
|
||||
При каждом запуске Gitea Actions:
|
||||
|
||||
1. Клонируется `AppFuton/Futon`, ветка `devel`.
|
||||
2. Клонируется `Kotatsu-Redo/kotatsu-parsers-redo`, ветка `master`.
|
||||
3. На `NineMangaParser.kt` накладывается `patches/ninemanga-niadd.patch`.
|
||||
4. Futon через Gradle composite build подключается к локальному пропатченному parser-проекту.
|
||||
5. Собирается debug APK.
|
||||
6. В артефакт `Futon-Niadd-debug` складываются:
|
||||
- `Futon-Niadd-debug.apk`
|
||||
- `SHA256SUMS`
|
||||
- `build-info.txt`
|
||||
|
||||
## Что исправляет patch
|
||||
|
||||
Для русского источника сохранён внутренний ID `NINEMANGA_RU`, но:
|
||||
|
||||
- домен изменён с `ru.ninemanga.com` на `ru.niadd.com`;
|
||||
- снят `@Broken`;
|
||||
- отображаемое имя изменено на `Niadd Русский`;
|
||||
- первая страница каталога использует `/category/`;
|
||||
- следующие страницы используют `/category/index_N.html`;
|
||||
- русские статусы разбираются без учёта регистра.
|
||||
@@ -0,0 +1,39 @@
|
||||
diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineMangaParser.kt
|
||||
--- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineMangaParser.kt
|
||||
+++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineMangaParser.kt
|
||||
@@ -89,6 +89,14 @@
|
||||
}
|
||||
- } else {
|
||||
- append("/category/index_")
|
||||
- append(page.toString())
|
||||
- }
|
||||
+ } else if (domain.endsWith("niadd.com")) {
|
||||
+ if (page == 1) {
|
||||
+ append("/category/")
|
||||
+ } else {
|
||||
+ append("/category/index_")
|
||||
+ append(page.toString())
|
||||
+ append(".html")
|
||||
+ }
|
||||
+ } else {
|
||||
+ append("/category/index_")
|
||||
+ append(page.toString())
|
||||
+ }
|
||||
}
|
||||
@@ -199,4 +199,4 @@
|
||||
//ru
|
||||
- status.contains("постоянный") -> MangaState.ONGOING
|
||||
- status.contains("завершенный") -> MangaState.FINISHED
|
||||
+ status.contains("постоянный", ignoreCase = true) -> MangaState.ONGOING
|
||||
+ status.contains("завершенный", ignoreCase = true) -> MangaState.FINISHED
|
||||
//de
|
||||
@@ -265,7 +265,6 @@
|
||||
- @Broken
|
||||
- @MangaSourceParser("NINEMANGA_RU", "NineManga Русский", "ru")
|
||||
+ @MangaSourceParser("NINEMANGA_RU", "Niadd Русский", "ru")
|
||||
class Russian(context: MangaLoaderContext) : NineMangaParser(
|
||||
context,
|
||||
MangaParserSource.NINEMANGA_RU,
|
||||
- "ru.ninemanga.com",
|
||||
+ "ru.niadd.com",
|
||||
)
|
||||
Reference in New Issue
Block a user