From 1211b2c86a183d64ffa665028456d3ec47e2fce0 Mon Sep 17 00:00:00 2001 From: Mike <51273546+SnakeDoc83@users.noreply.github.com> Date: Sun, 9 Aug 2020 20:00:49 -0400 Subject: [PATCH] Fix Hitomi chapters (#75) --- .../tachiyomi/source/online/all/Hitomi.kt | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/Hitomi.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/Hitomi.kt index 6e58c8615..3627d3f9c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/Hitomi.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/Hitomi.kt @@ -372,7 +372,6 @@ class Hitomi(val context: Context) : HttpSource(), LewdSource<HitomiSearchMetada * @param response the response from the site. */ override fun pageListParse(response: Response): List<Page> { - val hlId = response.request.url.pathSegments.last().removeSuffix(".js").toLong() val str = response.body!!.string() val json = JsonParser.parseString(str.removePrefix("var galleryinfo = ")) return json["files"].array.mapIndexed { index, jsonElement -> @@ -384,13 +383,24 @@ class Hitomi(val context: Context) : HttpSource(), LewdSource<HitomiSearchMetada Page( index, "", - "https://${subdomainFromGalleryId(hlId)}a.hitomi.la/$path/$hashPath1/$hashPath2/$hash.$ext" + "https://${subdomainFromGalleryId(hashPath2)}a.hitomi.la/$path/$hashPath1/$hashPath2/$hash.$ext" ) } } - private fun subdomainFromGalleryId(id: Long): Char { - return (97 + id.rem(NUMBER_OF_FRONTENDS)).toChar() + // https://ltn.hitomi.la/common.js + private fun subdomainFromGalleryId(pathSegment: String): Char { + var numberOfFrontends = 3 + val b = 16 + var g = Integer.parseInt(pathSegment, b) + if (g < 0x30) { + numberOfFrontends = 2 + } + if (g < 0x09) { + g = 1 + } + + return (97 + g.rem(numberOfFrontends)).toChar() } /** @@ -431,7 +441,6 @@ class Hitomi(val context: Context) : HttpSource(), LewdSource<HitomiSearchMetada companion object { private val INDEX_VERSION_CACHE_TIME_MS = 1000 * 60 * 10 private val PAGE_SIZE = 25 - private val NUMBER_OF_FRONTENDS = 2 private val DATE_FORMAT by lazy { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {