diff --git a/src/all/hitomi/build.gradle b/src/all/hitomi/build.gradle index 74e886d0a..89b5977e5 100644 --- a/src/all/hitomi/build.gradle +++ b/src/all/hitomi/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'Hitomi.la' pkgNameSuffix = 'all.hitomi' extClass = '.HitomiFactory' - extVersionCode = 7 + extVersionCode = 8 libVersion = '1.2' containsNsfw = true } diff --git a/src/all/hitomi/src/eu/kanade/tachiyomi/extension/all/hitomi/Hitomi.kt b/src/all/hitomi/src/eu/kanade/tachiyomi/extension/all/hitomi/Hitomi.kt index f5f534447..c3ac9f6aa 100644 --- a/src/all/hitomi/src/eu/kanade/tachiyomi/extension/all/hitomi/Hitomi.kt +++ b/src/all/hitomi/src/eu/kanade/tachiyomi/extension/all/hitomi/Hitomi.kt @@ -156,10 +156,7 @@ open class Hitomi(override val lang: String, private val nozomiLang: String) : H override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable { return if (query.startsWith(PREFIX_ID_SEARCH)) { - val id = NOZOMI_ID_SIMP_PATTERN.find( - NOZOMI_ID_PATTERN - .find(query.removePrefix(PREFIX_ID_SEARCH))!!.value - )!!.value.toInt() + val id = NOZOMI_ID_PATTERN.find(query.removePrefix(PREFIX_ID_SEARCH))!!.value.toInt() nozomiIdsToMangas(listOf(id)).map { mangas -> MangasPage(mangas, false) }.toObservable() @@ -370,14 +367,19 @@ open class Hitomi(override val lang: String, private val nozomiLang: String) : H // function subdomain_from_url() // Change g's if statment from !isNaN(g) private fun firstSubdomainFromGalleryId(pathSegment: String): Char { + val source = getScrambler() var numberOfFrontends = 3 var g = pathSegment.toInt(16) - if (g < 0x80) numberOfFrontends = 2 - if (g < 0x59) g = 1 - + if (g < source[0]) numberOfFrontends = 2 + if (g < source[1]) g = 1 return (97 + g.rem(numberOfFrontends)).toChar() } + private fun getScrambler(): List { + val response = client.newCall(GET("$LTN_BASE_URL/common.js")).execute() + return HEXADECIMAL.findAll(response.body!!.string()).map { Integer.decode(it.value) }.toList() + } + override fun imageRequest(page: Page): Request { val request = super.imageRequest(page) val hlId = request.url.pathSegments.let { @@ -395,8 +397,8 @@ open class Hitomi(override val lang: String, private val nozomiLang: String) : H private const val PAGE_SIZE = 25 const val PREFIX_ID_SEARCH = "id:" - val NOZOMI_ID_PATTERN = "[0-9]*.html".toRegex() - val NOZOMI_ID_SIMP_PATTERN = "[0-9]*".toRegex() + val NOZOMI_ID_PATTERN = "[0-9]*(?=.html)".toRegex() + val HEXADECIMAL = "0[xX][0-9a-fA-F]+".toRegex() // Common English words and Japanese particles private val COMMON_WORDS = listOf(