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