From a84a3e275f49b6e34c3cad1be9c39b0385a9a70b Mon Sep 17 00:00:00 2001 From: nicki <72807749+curche@users.noreply.github.com> Date: Sat, 22 Jan 2022 00:43:43 +0530 Subject: [PATCH] MangaDex: Add Slug to Share url, Prefer `jp-ro` titles and Verify host link intents (#10539) * Add slug to Share URL cleans up the title and adds it as a slug to the end of the url that can then be shared without any issues Co-authored-by: Henrik <22085664+henrik9999@users.noreply.github.com> * Check for Japanese Romanized titles ko-ro and zh-ro also exist but arent that readable compared to ja-ro personally. And those have a confirmed en title (or fallbacks) anyways * Increment mangadex.extversioncode * Linting by Android Studio build process * Actually use the correct lang code it's `ja-ro` not `jp-ro` * Support verified deeplinks (A12+) * Replace intent host to wildcard hosts helps with A12 link verify Ref https://github.com/tachiyomiorg/tachiyomi-extensions/pull/9993 Co-authored-by: funkyhippo <52957110+funkyhippo@users.noreply.github.com> * Make `titleToSlug` more idiomatic perhaps java.text.Normalizer could have helped but didnt want to add an import just for that :d Co-authored-by: Henrik <22085664+henrik9999@users.noreply.github.com> Co-authored-by: funkyhippo <52957110+funkyhippo@users.noreply.github.com> --- src/all/mangadex/AndroidManifest.xml | 25 +++---------------- src/all/mangadex/build.gradle | 2 +- .../extension/all/mangadex/MangaDex.kt | 5 +++- .../extension/all/mangadex/MangaDexHelper.kt | 15 +++++++++++ 4 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/all/mangadex/AndroidManifest.xml b/src/all/mangadex/AndroidManifest.xml index 5adfe1d82..8ab5cd68f 100644 --- a/src/all/mangadex/AndroidManifest.xml +++ b/src/all/mangadex/AndroidManifest.xml @@ -8,42 +8,25 @@ android:excludeFromRecents="true" android:exported="true" android:theme="@android:style/Theme.NoDisplay"> - + + + + - - - - diff --git a/src/all/mangadex/build.gradle b/src/all/mangadex/build.gradle index 4807b1cfe..265424192 100644 --- a/src/all/mangadex/build.gradle +++ b/src/all/mangadex/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'MangaDex' pkgNameSuffix = 'all.mangadex' extClass = '.MangaDexFactory' - extVersionCode = 152 + extVersionCode = 153 isNsfw = true } diff --git a/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangaDex.kt b/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangaDex.kt index 807c220fd..7436206fc 100644 --- a/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangaDex.kt +++ b/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangaDex.kt @@ -272,7 +272,10 @@ abstract class MangaDex(override val lang: String, val dexLang: String) : override fun mangaDetailsRequest(manga: SManga): Request { // remove once redirect for /manga is fixed - return GET("${baseUrl}${manga.url.replace("manga", "title")}", headers) + val title = manga.title + val url = "${baseUrl}${manga.url.replace("manga", "title")}" + val shareUrl = "$url/" + helper.titleToSlug(title) + return GET(shareUrl, headers) } /** diff --git a/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangaDexHelper.kt b/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangaDexHelper.kt index 41ecf24c2..a85afa7d6 100644 --- a/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangaDexHelper.kt +++ b/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangaDexHelper.kt @@ -190,6 +190,7 @@ class MangaDexHelper() { val titleMap = mangaDataDto.attributes.title.asMdMap() val dirtyTitle = titleMap[lang] ?: titleMap["en"] + ?: titleMap["ja-ro"] ?: mangaDataDto.attributes.altTitles.jsonArray .find { val altTitle = it.asMdMap() @@ -348,4 +349,18 @@ class MangaDexHelper() { throw(e) } } + + fun titleToSlug(title: String) = title.trim() + .toLowerCase(Locale.US) + .replace("[^a-z0-9]+".toRegex(), "-") + .replace("-+$".toRegex(), "") + .split("-") + .reduce { accumulator, element -> + val currentSlug = "$accumulator-$element" + if (currentSlug.length > 100) { + accumulator + } else { + currentSlug + } + } }