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) {