From b91d75fac3bd4534bf78320335255eac6adc99b1 Mon Sep 17 00:00:00 2001 From: Alessandro Jean Date: Tue, 17 Aug 2021 18:46:49 -0300 Subject: [PATCH] Add INKR again. (#8606) --- src/en/inkr/AndroidManifest.xml | 2 + src/en/inkr/build.gradle | 19 + src/en/inkr/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3258 bytes src/en/inkr/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1854 bytes src/en/inkr/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4410 bytes src/en/inkr/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 8059 bytes .../inkr/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 11413 bytes src/en/inkr/res/web_hi_res_512.png | Bin 0 -> 45491 bytes .../tachiyomi/extension/en/inkr/Inkr.kt | 335 ++++++++++++++++++ .../tachiyomi/extension/en/inkr/InkrDto.kt | 61 ++++ 10 files changed, 417 insertions(+) create mode 100644 src/en/inkr/AndroidManifest.xml create mode 100644 src/en/inkr/build.gradle create mode 100644 src/en/inkr/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/en/inkr/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/en/inkr/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/en/inkr/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/en/inkr/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/en/inkr/res/web_hi_res_512.png create mode 100644 src/en/inkr/src/eu/kanade/tachiyomi/extension/en/inkr/Inkr.kt create mode 100644 src/en/inkr/src/eu/kanade/tachiyomi/extension/en/inkr/InkrDto.kt diff --git a/src/en/inkr/AndroidManifest.xml b/src/en/inkr/AndroidManifest.xml new file mode 100644 index 000000000..b4571bfa8 --- /dev/null +++ b/src/en/inkr/AndroidManifest.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/en/inkr/build.gradle b/src/en/inkr/build.gradle new file mode 100644 index 000000000..da62c2ac2 --- /dev/null +++ b/src/en/inkr/build.gradle @@ -0,0 +1,19 @@ +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply plugin: 'kotlinx-serialization' + +ext { + extName = 'INKR' + pkgNameSuffix = 'en.inkr' + extClass = '.Inkr' + extVersionCode = 3 + libVersion = '1.2' + containsNsfw = true +} + +dependencies { + implementation project(':lib-ratelimit') +} + +apply from: "$rootDir/common.gradle" + diff --git a/src/en/inkr/res/mipmap-hdpi/ic_launcher.png b/src/en/inkr/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..161a7729c2e1672e114908244085e3848c48fee1 GIT binary patch literal 3258 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 literal 0 HcmV?d00001 diff --git a/src/en/inkr/res/mipmap-xhdpi/ic_launcher.png b/src/en/inkr/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..0bd16ca94008d771be108a7c64f3b6941bc5f5d1 GIT binary patch literal 4410 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�RR=+0mB$$sy(RC#kD_aR!tKl+xCe|FF~WBY zu#;4I?GkhiJKND(*B$FLXTy4^YabB0pl%d=xiSH_q`sJ$kXhx$#rLv5r=a2|(dV#H z_T5!SpL&b{FVBe8)$N8BF{3tscXOwS<6r!9B@KFjdXn zC(N4sR(d&!;G4=>xFY=-^e489Jy}vdkvgz4ycw$_ zTagaH@{JA^g#ceBz{wo$Hvo|dQ$U8DfylsWXsIMpEpgzZ4N&$pfS9i5dV$YNqk(t` zsX)Ct0+ZB}Fql+i7TcPo4s4R+cqg1)Aszl zAX{kpen9n;w2U&hK$;sa zlJ|J9dUKzGCSbtu;ln@9zRZD1x(JAVLFdVhNO~b&oA0@V5T&`fc@%&nK|MXae@#uz zD}<2og?3t$C|*8ZdcNQVbY4SKQ`1FR0_cT>yx$){*K_I9F!~J{GGswnS=oHQ4fG2X zFF!BcZ~KaoUs06ht*x!}**EkJ8lErm;mxd!cgR#mB9T+8tE-=tW!bdG%Wl43kVNu} z$JvhvzU zBr-D;3XROZ=E_%pM6FpgpRdY;&zvTN>`tfCFLiWutW*?*?vtd_L-%2NzCnpLh35fA z9^-9FbdxF8hkzXAczoPCV>J@ zfu|qp74))}@mAH|1x;yML&2r`PGyDyPD!92s{35jSX#WLawLBcP9f9!8*ttMBuGJ_33efgY~@f7vsKBwXA)TL1t607*qoM6N<$g8HvU AD*ylh literal 0 HcmV?d00001 diff --git a/src/en/inkr/res/mipmap-xxhdpi/ic_launcher.png b/src/en/inkr/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..9ec914d7f66b1f7a37bf69212a9bf4cb8a10ed2d GIT binary patch literal 8059 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%0AX&)PI{jvtOAg8D>a|M%4^p_${- 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 literal 0 HcmV?d00001 diff --git a/src/en/inkr/res/web_hi_res_512.png b/src/en/inkr/res/web_hi_res_512.png new file mode 100644 index 0000000000000000000000000000000000000000..611839749b9a318f2198f2d29376fc0e503a6b5a GIT binary patch literal 45491 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 Vdp_ycE{q`Hk(XAMs*p4Z{y)TUkrV&` literal 0 HcmV?d00001 diff --git a/src/en/inkr/src/eu/kanade/tachiyomi/extension/en/inkr/Inkr.kt b/src/en/inkr/src/eu/kanade/tachiyomi/extension/en/inkr/Inkr.kt new file mode 100644 index 000000000..32a5d4b8d --- /dev/null +++ b/src/en/inkr/src/eu/kanade/tachiyomi/extension/en/inkr/Inkr.kt @@ -0,0 +1,335 @@ +package eu.kanade.tachiyomi.extension.en.inkr + +import eu.kanade.tachiyomi.annotations.Nsfw +import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.POST +import eu.kanade.tachiyomi.network.asObservableSuccess +import eu.kanade.tachiyomi.source.model.FilterList +import eu.kanade.tachiyomi.source.model.MangasPage +import eu.kanade.tachiyomi.source.model.Page +import eu.kanade.tachiyomi.source.model.SChapter +import eu.kanade.tachiyomi.source.model.SManga +import eu.kanade.tachiyomi.source.online.HttpSource +import eu.kanade.tachiyomi.util.asJsoup +import kotlinx.serialization.decodeFromString +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.add +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.encodeToJsonElement +import kotlinx.serialization.json.jsonArray +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive +import kotlinx.serialization.json.put +import kotlinx.serialization.json.putJsonArray +import okhttp3.Headers +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.Interceptor +import okhttp3.MediaType.Companion.toMediaType +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.RequestBody.Companion.toRequestBody +import okhttp3.Response +import rx.Observable +import uy.kohesive.injekt.injectLazy +import java.io.IOException +import java.text.SimpleDateFormat +import java.util.Locale +import java.util.concurrent.TimeUnit + +@Nsfw +class Inkr : HttpSource() { + + override val name = "INKR" + + override val baseUrl = "https://inkr.com" + + override val lang = "en" + + override val supportsLatest = true + + override val client: OkHttpClient = network.cloudflareClient.newBuilder() + .addInterceptor(::buildIdIntercept) + .addInterceptor(RateLimitInterceptor(2, 1, TimeUnit.SECONDS)) + .build() + + private val json: Json by injectLazy() + + private var buildId: String? = null + + override fun headersBuilder(): Headers.Builder = Headers.Builder() + .add("Origin", baseUrl) + .add("Referer", "$baseUrl/") + + override fun popularMangaRequest(page: Int): Request { + val newHeaders = headersBuilder() + .add("Accept", ACCEPT_JSON) + .build() + + return GET("$baseUrl/_next/data/buildId/index.json", newHeaders) + } + + override fun popularMangaParse(response: Response): MangasPage { + val result = json.decodeFromString>(response.body!!.string()) + + if (result.pageProps == null) { + return MangasPage(emptyList(), hasNextPage = false) + } + + val comicList = result.pageProps.topCharts!!.topTrending.map(::popularMangaFromObject) + + return MangasPage(comicList, hasNextPage = false) + } + + private fun popularMangaFromObject(comic: InkrComic) = SManga.create().apply { + title = comic.name + thumbnail_url = comic.thumbnailURL + url = "/${comic.oid}" + } + + override fun latestUpdatesRequest(page: Int): Request = popularMangaRequest(page) + + override fun latestUpdatesParse(response: Response): MangasPage { + val result = json.decodeFromString>(response.body!!.string()) + + if (result.pageProps == null) { + return MangasPage(emptyList(), hasNextPage = false) + } + + val comicList = result.pageProps.latestUpdateDetails.map(::latestMangaFromObject) + + return MangasPage(comicList, hasNextPage = false) + } + + private fun latestMangaFromObject(comic: InkrComic) = popularMangaFromObject(comic) + + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + val payload = buildJsonObject { put("query", query) } + + val requestBody = payload.toString().toRequestBody(JSON_MEDIA_TYPE) + + val newHeaders = headersBuilder() + .add("Accept", ACCEPT_JSON) + .add("Cf-Ipcountry", "VN") + .add("Content-Length", requestBody.contentLength().toString()) + .add("Content-Type", requestBody.contentType().toString()) + .add("Ikc-Platform", "android") + .build() + + return POST("$ICQ_API_URL/title/search", newHeaders, requestBody) + } + + private fun searchDetailsRequest(oids: List): Request { + val payload = buildJsonObject { + putJsonArray("fields") { + add("oid") + add("name") + add("thumbnailURL") + } + put("oids", json.encodeToJsonElement(oids)) + put("url", "$ICD_API_URL/content_json") + } + + val requestBody = payload.toString().toRequestBody(JSON_MEDIA_TYPE) + + val newHeaders = headersBuilder() + .add("Accept", ACCEPT_JSON) + .add("Cf-Ipcountry", "VN") + .add("Content-Length", requestBody.contentLength().toString()) + .add("Content-Type", requestBody.contentType().toString()) + .add("Ikc-Platform", "android") + .build() + + return POST("$ICD_API_URL/content_json", newHeaders, requestBody) + } + + override fun searchMangaParse(response: Response): MangasPage { + val result = json.decodeFromString>(response.body!!.string()) + + if (result.data == null) { + return MangasPage(emptyList(), hasNextPage = false) + } + + val searchResults = result.data.title.take(SEARCH_LIMIT) + + val detailsRequest = searchDetailsRequest(searchResults) + val detailsResponse = client.newCall(detailsRequest).execute() + val detailsJson = detailsResponse.body!!.string() + val detailsResult = json.decodeFromString>>(detailsJson) + + if (detailsResult.data == null) { + return MangasPage(emptyList(), hasNextPage = false) + } + + // Use the searchResults to iterate to keep the result order. + val comicList = searchResults.map { oid -> + searchMangaFromObject(detailsResult.data[oid]!!) + } + + return MangasPage(comicList, hasNextPage = false) + } + + private fun searchMangaFromObject(comic: InkrComic) = popularMangaFromObject(comic) + + // Workaround to allow "Open in browser" use the real URL. + override fun fetchMangaDetails(manga: SManga): Observable { + return client.newCall(mangaDetailsApiRequest(manga.url)) + .asObservableSuccess() + .map { response -> + mangaDetailsParse(response).apply { initialized = true } + } + } + + private fun mangaDetailsApiRequest(mangaUrl: String): Request { + val newHeaders = headersBuilder() + .add("Accept", ACCEPT_JSON) + .build() + + val comicId = mangaUrl.substringAfterLast("/") + + return GET("$baseUrl/_next/data/buildId/$comicId.json", newHeaders) + } + + override fun mangaDetailsRequest(manga: SManga): Request { + val newHeaders = headersBuilder() + .removeAll("Accept") + .build() + + return GET(baseUrl + manga.url, newHeaders) + } + + override fun mangaDetailsParse(response: Response): SManga = SManga.create().apply { + val result = json.decodeFromString>(response.body!!.string()) + + if (result.pageProps == null) { + throw Exception(COULD_NOT_PARSE_RESPONSE) + } + + val comic = result.pageProps.titleInfo!! + + title = comic.name + author = comic.creators + .filter { it.role == "story" } + .joinToString(", ") { it.name } + artist = comic.creators + .filter { it.role == "art" } + .joinToString(", ") { it.name } + description = comic.summary.joinToString("\n\n") + .plus(if (comic.extras?.containsKey("Copyright") == true) "\n\n${comic.extras["Copyright"]}" else "") + genre = comic.listGenre?.jsonArray?.joinToString(", ") { it.jsonPrimitive.content } + status = comic.releaseStatus.toStatus() + thumbnail_url = comic.thumbnailURL + } + + override fun chapterListRequest(manga: SManga): Request = mangaDetailsApiRequest(manga.url) + + override fun chapterListParse(response: Response): List { + val result = json.decodeFromString>(response.body!!.string()) + + if (result.pageProps == null) { + throw Exception(COULD_NOT_PARSE_RESPONSE) + } + + val comic = result.pageProps.titleInfo!! + + if (comic.webPreviewingPages.isEmpty()) { + return emptyList() + } + + val previewChapter = SChapter.create().apply { + name = "Preview" + scanlator = comic.creators.firstOrNull { it.role == "publisher" }?.name + date_upload = comic.firstChapterFirstPublishedDate.toDate() + url = "/${comic.oid}" + } + + return listOf(previewChapter) + } + + override fun pageListRequest(chapter: SChapter): Request = mangaDetailsApiRequest(chapter.url) + + override fun pageListParse(response: Response): List { + val result = json.decodeFromString>(response.body!!.string()) + + if (result.pageProps == null) { + throw Exception(COULD_NOT_PARSE_RESPONSE) + } + + val comic = result.pageProps.titleInfo!! + val referer = "$baseUrl/" + + return comic.webPreviewingPages + .mapIndexed { i, page -> Page(i, referer, page.url) } + } + + override fun fetchImageUrl(page: Page): Observable = Observable.just(page.imageUrl!!) + + override fun imageUrlParse(response: Response): String = "" + + override fun imageRequest(page: Page): Request { + val newHeaders = headersBuilder() + .set("Accept", ACCEPT_IMAGE) + .set("Referer", page.url) + .build() + + return GET(page.imageUrl!!, newHeaders) + } + + private fun buildIdIntercept(chain: Interceptor.Chain): Response { + if (chain.request().url.toString().contains("/buildId/").not()) { + return chain.proceed(chain.request()) + } + + if (buildId == null) { + val buildIdRequest = GET(baseUrl, headers) + val buildIdResponse = chain.proceed(buildIdRequest) + val document = buildIdResponse.asJsoup() + + val nextData = document.select("script#__NEXT_DATA__") + .firstOrNull()?.data() ?: throw IOException(COULD_NOT_FIND_BUILD_ID) + val nextJson = json.parseToJsonElement(nextData).jsonObject + + buildId = nextJson["buildId"]!!.jsonPrimitive.content + + buildIdResponse.close() + } + + val newRequestUrl = chain.request().url.toString() + .replace("buildId", buildId!!) + .toHttpUrl() + + val newRequest = chain.request().newBuilder() + .url(newRequestUrl) + .build() + + return chain.proceed(newRequest) + } + + private fun String.toDate(): Long { + return runCatching { DATE_FORMATTER.parse(substringBefore("T"))?.time } + .getOrNull() ?: 0L + } + + private fun String.toStatus(): Int = when (this) { + "ongoing", "hold" -> SManga.ONGOING + "completed" -> SManga.COMPLETED + else -> SManga.UNKNOWN + } + + companion object { + private const val ICQ_API_URL = "https://icq-api.inkr.com/v1" + private const val ICD_API_URL = "https://icd-api.inkr.com/v1" + + private const val ACCEPT_JSON = "application/json, text/plain, */*" + private const val ACCEPT_IMAGE = "image/avif,image/webp,image/apng,image/*,*/*;q=0.8" + + private val JSON_MEDIA_TYPE = "application/json; charset=UTF-8".toMediaType() + + private const val COULD_NOT_FIND_BUILD_ID = "Could not find the API token." + private const val COULD_NOT_PARSE_RESPONSE = "Could not parse the API response." + + private const val SEARCH_LIMIT = 30 + + private val DATE_FORMATTER by lazy { SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH) } + } +} diff --git a/src/en/inkr/src/eu/kanade/tachiyomi/extension/en/inkr/InkrDto.kt b/src/en/inkr/src/eu/kanade/tachiyomi/extension/en/inkr/InkrDto.kt new file mode 100644 index 000000000..88ccac24a --- /dev/null +++ b/src/en/inkr/src/eu/kanade/tachiyomi/extension/en/inkr/InkrDto.kt @@ -0,0 +1,61 @@ +package eu.kanade.tachiyomi.extension.en.inkr + +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonElement + +@Serializable +data class NextJsWrapper( + val pageProps: T? = null +) + +@Serializable +data class InkrResult( + val code: Int = -1, + val data: T? = null +) + +@Serializable +data class InkrHome( + val latestUpdateDetails: List = emptyList(), + val topCharts: InkrHomeCharts? = null +) + +@Serializable +data class InkrHomeCharts( + val topTrending: List = emptyList() +) + +@Serializable +data class InkrSearch( + val title: List = emptyList() +) + +@Serializable +data class InkrTitleInfo( + val titleInfo: InkrComic? = null +) + +@Serializable +data class InkrComic( + val creators: List = emptyList(), + val extras: Map? = emptyMap(), + val firstChapterFirstPublishedDate: String = "", + val listGenre: JsonElement? = null, + val name: String = "", + val oid: String = "", + val releaseStatus: String = "", + val summary: List = emptyList(), + val thumbnailURL: String = "", + val webPreviewingPages: List = emptyList() +) + +@Serializable +data class InkrPerson( + val name: String = "", + val role: String = "" +) + +@Serializable +data class InkrPage( + val url: String = "" +)