From 24f1b6f96ed8f96cc69723baf83183458af8206b Mon Sep 17 00:00:00 2001
From: funkyhippo <52957110+funkyhippo@users.noreply.github.com>
Date: Sat, 27 Mar 2021 11:53:17 -0700
Subject: [PATCH] Cubari extension. (#6311)

---
 src/all/cubari/AndroidManifest.xml            |  57 +++
 src/all/cubari/build.gradle                   |  12 +
 .../cubari/res/mipmap-hdpi/ic_launcher.png    | Bin 0 -> 4241 bytes
 .../cubari/res/mipmap-mdpi/ic_launcher.png    | Bin 0 -> 2352 bytes
 .../cubari/res/mipmap-xhdpi/ic_launcher.png   | Bin 0 -> 5664 bytes
 .../cubari/res/mipmap-xxhdpi/ic_launcher.png  | Bin 0 -> 10382 bytes
 .../cubari/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 14952 bytes
 src/all/cubari/res/web_hi_res_512.png         | Bin 0 -> 29301 bytes
 .../tachiyomi/extension/all/cubari/Cubari.kt  | 353 ++++++++++++++++++
 .../extension/all/cubari/CubariUrlActivity.kt |  64 ++++
 .../all/cubari/RemoteStorageUtils.kt          | 147 ++++++++
 11 files changed, 633 insertions(+)
 create mode 100644 src/all/cubari/AndroidManifest.xml
 create mode 100644 src/all/cubari/build.gradle
 create mode 100644 src/all/cubari/res/mipmap-hdpi/ic_launcher.png
 create mode 100644 src/all/cubari/res/mipmap-mdpi/ic_launcher.png
 create mode 100644 src/all/cubari/res/mipmap-xhdpi/ic_launcher.png
 create mode 100644 src/all/cubari/res/mipmap-xxhdpi/ic_launcher.png
 create mode 100644 src/all/cubari/res/mipmap-xxxhdpi/ic_launcher.png
 create mode 100644 src/all/cubari/res/web_hi_res_512.png
 create mode 100644 src/all/cubari/src/eu/kanade/tachiyomi/extension/all/cubari/Cubari.kt
 create mode 100644 src/all/cubari/src/eu/kanade/tachiyomi/extension/all/cubari/CubariUrlActivity.kt
 create mode 100644 src/all/cubari/src/eu/kanade/tachiyomi/extension/all/cubari/RemoteStorageUtils.kt

diff --git a/src/all/cubari/AndroidManifest.xml b/src/all/cubari/AndroidManifest.xml
new file mode 100644
index 000000000..a28e3cbe3
--- /dev/null
+++ b/src/all/cubari/AndroidManifest.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="eu.kanade.tachiyomi.extension">
+
+    <application>
+        <activity
+            android:name=".all.cubari.CubariUrlActivity"
+            android:excludeFromRecents="true"
+            android:theme="@android:style/Theme.NoDisplay">
+            <!-- We need another intent filter so the /a/..* shortcut -->
+            <!-- doesn't pollute the cubari one, since they work in any combination -->
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW" />
+
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.BROWSABLE" />
+
+                <data
+                    android:host="*cubari.moe"
+                    android:pathPattern="/read/..*"
+                    android:scheme="https" />
+
+                <data
+                    android:host="*cubari.moe"
+                    android:pathPattern="/proxy/..*"
+                    android:scheme="https" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW" />
+
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.BROWSABLE" />
+
+                <data
+                    android:host="*guya.moe"
+                    android:pathPattern="/proxy/..*"
+                    android:scheme="https" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW" />
+
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.BROWSABLE" />
+
+                <data
+                    android:host="*imgur.com"
+                    android:pathPattern="/a/..*"
+                    android:scheme="https" />
+
+                <data
+                    android:host="*imgur.com"
+                    android:pathPattern="/gallery/..*"
+                    android:scheme="https" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
\ No newline at end of file
diff --git a/src/all/cubari/build.gradle b/src/all/cubari/build.gradle
new file mode 100644
index 000000000..afc7c9fd6
--- /dev/null
+++ b/src/all/cubari/build.gradle
@@ -0,0 +1,12 @@
+apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android'
+
+ext {
+    extName = 'Cubari'
+    pkgNameSuffix = "all.cubari"
+    extClass = '.Cubari'
+    extVersionCode = 1
+    libVersion = '1.2'
+}
+
+apply from: "$rootDir/common.gradle"
diff --git a/src/all/cubari/res/mipmap-hdpi/ic_launcher.png b/src/all/cubari/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..a43b765ef06f687be1c7acdec6f41c7bd5ebfc6a
GIT binary patch
literal 4241
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

literal 0
HcmV?d00001

diff --git a/src/all/cubari/res/mipmap-mdpi/ic_launcher.png b/src/all/cubari/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..d2a531cfc999e0e3fcab789ce1a51256f7640554
GIT binary patch
literal 2352
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
WO;xD_YUM!y0000<MNUMnLSTY``B?4%

literal 0
HcmV?d00001

diff --git a/src/all/cubari/res/mipmap-xhdpi/ic_launcher.png b/src/all/cubari/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..b8ce2733bd8e99f5919d06e97087af13fc47b6f0
GIT binary patch
literal 5664
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
GLSTYQ2ks33

literal 0
HcmV?d00001

diff --git a/src/all/cubari/res/mipmap-xxhdpi/ic_launcher.png b/src/all/cubari/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..804782509e078ade41f7045f8297d72d002df9c6
GIT binary patch
literal 10382
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

literal 0
HcmV?d00001

diff --git a/src/all/cubari/res/mipmap-xxxhdpi/ic_launcher.png b/src/all/cubari/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..84438c81a77b46c912c3a6a4a8e2edf428d54885
GIT binary patch
literal 14952
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

literal 0
HcmV?d00001

diff --git a/src/all/cubari/res/web_hi_res_512.png b/src/all/cubari/res/web_hi_res_512.png
new file mode 100644
index 0000000000000000000000000000000000000000..1dfd0c08c6ba294fdb7ca6765214cb7dde922176
GIT binary patch
literal 29301
zcmbTd2{_d4+de)R`%aW3TiN%0A3{nbdm{UU?E5~$P+Ca{*^07e4`mx8OO`0fl5K3s
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

literal 0
HcmV?d00001

diff --git a/src/all/cubari/src/eu/kanade/tachiyomi/extension/all/cubari/Cubari.kt b/src/all/cubari/src/eu/kanade/tachiyomi/extension/all/cubari/Cubari.kt
new file mode 100644
index 000000000..d8e0c4f03
--- /dev/null
+++ b/src/all/cubari/src/eu/kanade/tachiyomi/extension/all/cubari/Cubari.kt
@@ -0,0 +1,353 @@
+package eu.kanade.tachiyomi.extension.all.cubari
+
+import android.os.Build
+import eu.kanade.tachiyomi.extension.BuildConfig
+import eu.kanade.tachiyomi.network.GET
+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 okhttp3.Headers
+import okhttp3.Request
+import okhttp3.Response
+import org.json.JSONArray
+import org.json.JSONObject
+import rx.Observable
+
+open class Cubari : HttpSource() {
+
+    final override val name = "Cubari"
+    final override val baseUrl = "https://cubari.moe"
+    final override val supportsLatest = true
+    final override val lang = "all"
+
+    override fun headersBuilder() = Headers.Builder().apply {
+        add(
+            "User-Agent",
+            "(Android ${Build.VERSION.RELEASE}; " +
+                "${Build.MANUFACTURER} ${Build.MODEL}) " +
+                "Tachiyomi/${BuildConfig.VERSION_NAME} " +
+                Build.ID
+        )
+    }
+
+    override fun latestUpdatesRequest(page: Int): Request {
+        return GET("$baseUrl/", headers)
+    }
+
+    override fun fetchLatestUpdates(page: Int): Observable<MangasPage> {
+        return client.newBuilder()
+            .addInterceptor(RemoteStorageUtils.HomeInterceptor())
+            .build()!!
+            .newCall(latestUpdatesRequest(page))
+            .asObservableSuccess()
+            .map { response -> latestUpdatesParse(response) }
+    }
+
+    override fun latestUpdatesParse(response: Response): MangasPage {
+        return parseMangaList(JSONArray(response.body()!!.string()), SortType.UNPINNED)
+    }
+
+    override fun popularMangaRequest(page: Int): Request {
+        return GET("$baseUrl/", headers)
+    }
+
+    override fun fetchPopularManga(page: Int): Observable<MangasPage> {
+        return client.newBuilder()
+            .addInterceptor(RemoteStorageUtils.HomeInterceptor())
+            .build()!!
+            .newCall(popularMangaRequest(page))
+            .asObservableSuccess()
+            .map { response -> popularMangaParse(response) }
+    }
+
+    override fun popularMangaParse(response: Response): MangasPage {
+        return parseMangaList(JSONArray(response.body()!!.string()), SortType.PINNED)
+    }
+
+    override fun fetchMangaDetails(manga: SManga): Observable<SManga> {
+        return client.newCall(chapterListRequest(manga))
+            .asObservableSuccess()
+            .map { response -> mangaDetailsParse(response, manga) }
+    }
+
+    // Called when the series is loaded, or when opening in browser
+    override fun mangaDetailsRequest(manga: SManga): Request {
+        return GET("$baseUrl${manga.url}", headers)
+    }
+
+    override fun mangaDetailsParse(response: Response): SManga {
+        throw Exception("Unused")
+    }
+
+    private fun mangaDetailsParse(response: Response, manga: SManga): SManga {
+        return parseMangaFromApi(JSONObject(response.body()!!.string()), manga)
+    }
+
+    override fun fetchChapterList(manga: SManga): Observable<List<SChapter>> {
+        return client.newCall(chapterListRequest(manga))
+            .asObservableSuccess()
+            .map { response -> chapterListParse(response, manga) }
+    }
+
+    // Gets the chapter list based on the series being viewed
+    override fun chapterListRequest(manga: SManga): Request {
+        val urlComponents = manga.url.split("/")
+        val source = urlComponents[2]
+        val slug = urlComponents[3]
+
+        return GET("$baseUrl/read/api/$source/series/$slug/", headers)
+    }
+
+    override fun chapterListParse(response: Response): List<SChapter> {
+        throw Exception("Unused")
+    }
+
+    // Called after the request
+    private fun chapterListParse(response: Response, manga: SManga): List<SChapter> {
+        val res = response.body()!!.string()
+        return parseChapterList(res, manga)
+    }
+
+    override fun fetchPageList(chapter: SChapter): Observable<List<Page>> {
+        return when {
+            chapter.url.contains("/chapter/") -> {
+                client.newCall(pageListRequest(chapter))
+                    .asObservableSuccess()
+                    .map { response ->
+                        directPageListParse(response)
+                    }
+            }
+            else -> {
+                client.newCall(pageListRequest(chapter))
+                    .asObservableSuccess()
+                    .map { response ->
+                        seriesJsonPageListParse(response, chapter)
+                    }
+            }
+        }
+    }
+
+    override fun pageListRequest(chapter: SChapter): Request {
+        return when {
+            chapter.url.contains("/chapter/") -> {
+                GET("$baseUrl${chapter.url}", headers)
+            }
+            else -> {
+                var url = chapter.url.split("/")
+                val source = url[2]
+                val slug = url[3]
+
+                GET("$baseUrl/read/api/$source/series/$slug/", headers)
+            }
+        }
+    }
+
+    private fun directPageListParse(response: Response): List<Page> {
+        val res = response.body()!!.string()
+        val pages = JSONArray(res)
+        val pageArray = ArrayList<Page>()
+
+        for (i in 0 until pages.length()) {
+            val page = if (pages.optJSONObject(i) != null) {
+                pages.getJSONObject(i).getString("src")
+            } else {
+                pages[i]
+            }
+            pageArray.add(Page(i + 1, "", page.toString()))
+        }
+        return pageArray
+    }
+
+    private fun seriesJsonPageListParse(response: Response, chapter: SChapter): List<Page> {
+        val res = response.body()!!.string()
+        val json = JSONObject(res)
+        val groups = json.getJSONObject("groups")
+        val groupIter = groups.keys()
+        val groupMap = HashMap<String, String>()
+
+        while (groupIter.hasNext()) {
+            val groupKey = groupIter.next()
+            groupMap[groups.getString(groupKey)] = groupKey
+        }
+
+        val chapters = json.getJSONObject("chapters")
+
+        val pages = if (chapters.has(chapter.chapter_number.toString())) {
+            chapters
+                .getJSONObject(chapter.chapter_number.toString())
+                .getJSONObject("groups")
+                .getJSONArray(groupMap[chapter.scanlator])
+        } else {
+            chapters
+                .getJSONObject(chapter.chapter_number.toInt().toString())
+                .getJSONObject("groups")
+                .getJSONArray(groupMap[chapter.scanlator])
+        }
+        val pageArray = ArrayList<Page>()
+        for (i in 0 until pages.length()) {
+            val page = if (pages.optJSONObject(i) != null) {
+                pages.getJSONObject(i).getString("src")
+            } else {
+                pages[i]
+            }
+            pageArray.add(Page(i + 1, "", page.toString()))
+        }
+        return pageArray
+    }
+
+    // Stub
+    override fun pageListParse(response: Response): List<Page> {
+        throw Exception("Unused")
+    }
+
+    override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> {
+        return when {
+            query.startsWith(PROXY_PREFIX) -> {
+                val trimmedQuery = query.removePrefix(PROXY_PREFIX)
+                // Only tag for recently read on search
+                client.newBuilder()
+                    .addInterceptor(RemoteStorageUtils.TagInterceptor())
+                    .build()!!
+                    .newCall(searchMangaRequest(page, trimmedQuery, filters))
+                    .asObservableSuccess()
+                    .map { response ->
+                        searchMangaParse(response, trimmedQuery)
+                    }
+            }
+            else -> Observable.just(MangasPage(ArrayList(), false))
+        }
+    }
+
+    override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
+        try {
+            val queryFragments = query.split("/")
+            val source = queryFragments[0]
+            val slug = queryFragments[1]
+
+            return GET("$baseUrl/read/api/$source/series/$slug/", headers)
+        } catch (e: Exception) {
+            throw Exception("Unable to parse. Is your query in the format of ${Cubari.PROXY_PREFIX}<source>/<slug>?")
+        }
+    }
+
+    override fun searchMangaParse(response: Response): MangasPage {
+        throw Exception("Unused")
+    }
+
+    private fun searchMangaParse(response: Response, query: String): MangasPage {
+        return parseSearchList(JSONObject(response.body()!!.string()), query)
+    }
+
+    // ------------- Helpers and whatnot ---------------
+
+    private fun parseChapterList(payload: String, manga: SManga): List<SChapter> {
+        val json = JSONObject(payload)
+        val groups = json.getJSONObject("groups")
+        val chapters = json.getJSONObject("chapters")
+
+        val chapterList = ArrayList<SChapter>()
+
+        val iter = chapters.keys()
+
+        while (iter.hasNext()) {
+            val chapterNum = iter.next()
+            val chapterObj = chapters.getJSONObject(chapterNum)
+            val chapterGroups = chapterObj.getJSONObject("groups")
+            val groupsIter = chapterGroups.keys()
+
+            while (groupsIter.hasNext()) {
+                val groupNum = groupsIter.next()
+                val chapter = SChapter.create()
+
+                chapter.scanlator = groups.getString(groupNum)
+                if (chapterObj.has("release_date")) {
+                    chapter.date_upload =
+                        chapterObj.getJSONObject("release_date").getLong(groupNum) * 1000
+                }
+                chapter.name = chapterNum + " - " + chapterObj.getString("title")
+                chapter.chapter_number = chapterNum.toFloat()
+                chapter.url =
+                    if (chapterGroups.optJSONArray(groupNum) != null) {
+                        "${manga.url}/$chapterNum/$groupNum"
+                    } else {
+                        chapterGroups.getString(groupNum)
+                    }
+                chapterList.add(chapter)
+            }
+        }
+
+        return chapterList.reversed()
+    }
+
+    private fun parseMangaList(payload: JSONArray, sortType: SortType): MangasPage {
+        val mangas = ArrayList<SManga>()
+
+        for (i in 0 until payload.length()) {
+            val json = payload.getJSONObject(i)
+            val pinned = json.getBoolean("pinned")
+
+            if (sortType == SortType.PINNED && pinned) {
+                mangas.add(parseMangaFromRemoteStorage(json))
+            } else if (sortType == SortType.UNPINNED && !pinned) {
+                mangas.add(parseMangaFromRemoteStorage(json))
+            }
+        }
+
+        return MangasPage(mangas, false)
+    }
+
+    private fun parseSearchList(payload: JSONObject, query: String): MangasPage {
+        val mangas = ArrayList<SManga>()
+        val tempManga = SManga.create()
+        tempManga.url = "/read/$query"
+        mangas.add(parseMangaFromApi(payload, tempManga))
+        return MangasPage(mangas, false)
+    }
+
+    private fun parseMangaFromRemoteStorage(json: JSONObject): SManga {
+        val manga = SManga.create()
+        manga.title = json.getString("title")
+        manga.artist = json.optString("artist", ARTIST_FALLBACK)
+        manga.author = json.optString("author", AUTHOR_FALLBACK)
+        manga.description = json.optString("description", DESCRIPTION_FALLBACK)
+        manga.url = json.getString("url")
+        manga.thumbnail_url = json.getString("coverUrl")
+
+        return manga
+    }
+
+    private fun parseMangaFromApi(json: JSONObject, mangaReference: SManga): SManga {
+        val manga = SManga.create()
+        manga.title = json.getString("title")
+        manga.artist = json.optString("artist", ARTIST_FALLBACK)
+        manga.author = json.optString("author", AUTHOR_FALLBACK)
+        manga.description = json.optString("description", DESCRIPTION_FALLBACK)
+        manga.url = mangaReference.url
+        manga.thumbnail_url = json.optString("cover", "")
+
+        return manga
+    }
+
+    // ----------------- Things we aren't supporting -----------------
+
+    override fun imageUrlParse(response: Response): String {
+        throw Exception("imageUrlParse not supported.")
+    }
+
+    companion object {
+        const val PROXY_PREFIX = "cubari:"
+
+        const val AUTHOR_FALLBACK = "Unknown"
+        const val ARTIST_FALLBACK = "Unknown"
+        const val DESCRIPTION_FALLBACK = "No description."
+
+        enum class SortType {
+            PINNED,
+            UNPINNED
+        }
+    }
+}
diff --git a/src/all/cubari/src/eu/kanade/tachiyomi/extension/all/cubari/CubariUrlActivity.kt b/src/all/cubari/src/eu/kanade/tachiyomi/extension/all/cubari/CubariUrlActivity.kt
new file mode 100644
index 000000000..4d06f04e9
--- /dev/null
+++ b/src/all/cubari/src/eu/kanade/tachiyomi/extension/all/cubari/CubariUrlActivity.kt
@@ -0,0 +1,64 @@
+package eu.kanade.tachiyomi.extension.all.cubari
+
+import android.app.Activity
+import android.content.ActivityNotFoundException
+import android.content.Intent
+import android.os.Bundle
+import android.util.Log
+import kotlin.system.exitProcess
+
+class CubariUrlActivity : Activity() {
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        val host = intent?.data?.host
+        val pathSegments = intent?.data?.pathSegments
+
+        if (host != null && pathSegments != null) {
+            val query = when (host) {
+                "m.imgur.com", "imgur.com" -> fromImgur(pathSegments)
+                else -> fromCubari(pathSegments)
+            }
+
+            if (query == null) {
+                Log.e("CubariUrlActivity", "Unable to parse URI from intent $intent")
+                finish()
+                exitProcess(1)
+            }
+
+            val mainIntent = Intent().apply {
+                action = "eu.kanade.tachiyomi.SEARCH"
+                putExtra("query", query)
+                putExtra("filter", packageName)
+            }
+
+            try {
+                startActivity(mainIntent)
+            } catch (e: ActivityNotFoundException) {
+                Log.e("CubariUrlActivity", e.toString())
+            }
+        }
+
+        finish()
+        exitProcess(0)
+    }
+
+    private fun fromImgur(pathSegments: List<String>): String? {
+        if (pathSegments.size >= 2) {
+            val id = pathSegments[1]
+
+            return "${Cubari.PROXY_PREFIX}imgur/$id"
+        }
+        return null
+    }
+
+    private fun fromCubari(pathSegments: MutableList<String>): String? {
+        return if (pathSegments.size >= 3) {
+            val source = pathSegments[1]
+            val slug = pathSegments[2]
+            "${Cubari.PROXY_PREFIX}$source/$slug"
+        } else {
+            null
+        }
+    }
+}
diff --git a/src/all/cubari/src/eu/kanade/tachiyomi/extension/all/cubari/RemoteStorageUtils.kt b/src/all/cubari/src/eu/kanade/tachiyomi/extension/all/cubari/RemoteStorageUtils.kt
new file mode 100644
index 000000000..3e4fbd060
--- /dev/null
+++ b/src/all/cubari/src/eu/kanade/tachiyomi/extension/all/cubari/RemoteStorageUtils.kt
@@ -0,0 +1,147 @@
+package eu.kanade.tachiyomi.extension.all.cubari
+
+import android.annotation.SuppressLint
+import android.app.Application
+import android.os.Handler
+import android.os.Looper
+import android.webkit.JavascriptInterface
+import android.webkit.WebView
+import android.webkit.WebViewClient
+import okhttp3.Interceptor
+import okhttp3.Request
+import okhttp3.Response
+import okhttp3.ResponseBody
+import uy.kohesive.injekt.Injekt
+import uy.kohesive.injekt.api.get
+import java.io.IOException
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+
+class RemoteStorageUtils {
+    abstract class GenericInterceptor(private val transparent: Boolean) : Interceptor {
+        private val handler = Handler(Looper.getMainLooper())
+
+        abstract val jsScript: String
+
+        abstract fun urlModifier(originalUrl: String): String
+
+        internal class JsInterface(private val latch: CountDownLatch, var payload: String = "") {
+            @JavascriptInterface
+            fun passPayload(passedPayload: String) {
+                payload = passedPayload
+                latch.countDown()
+            }
+        }
+
+        @Synchronized
+        override fun intercept(chain: Interceptor.Chain): Response {
+            try {
+                val originalRequest = chain.request()
+                val originalResponse = chain.proceed(originalRequest)
+                return proceedWithWebView(originalRequest, originalResponse)
+            } catch (e: Exception) {
+                throw IOException(e)
+            }
+        }
+
+        @SuppressLint("SetJavaScriptEnabled", "AddJavascriptInterface")
+        private fun proceedWithWebView(request: Request, response: Response): Response {
+            val latch = CountDownLatch(1)
+
+            var webView: WebView? = null
+
+            val origRequestUrl = request.url().toString()
+            val headers = request.headers().toMultimap().mapValues {
+                it.value.getOrNull(0) ?: ""
+            }.toMutableMap()
+            val jsInterface = JsInterface(latch)
+
+            handler.post {
+                val webview = WebView(Injekt.get<Application>())
+                webView = webview
+                with(webview.settings) {
+                    javaScriptEnabled = true
+                    domStorageEnabled = true
+                    databaseEnabled = true
+                    useWideViewPort = false
+                    loadWithOverviewMode = false
+                    userAgentString = request.header("User-Agent")
+                }
+
+                webview.addJavascriptInterface(jsInterface, "android")
+
+                webview.webViewClient = object : WebViewClient() {
+                    override fun onPageFinished(view: WebView, url: String) {
+                        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
+                            view.evaluateJavascript(jsScript) {}
+                        }
+                        if (transparent) {
+                            latch.countDown()
+                        }
+                    }
+                }
+
+                webview.loadUrl(urlModifier(origRequestUrl), headers)
+            }
+
+            latch.await(TIMEOUT_SEC, TimeUnit.SECONDS)
+
+            handler.postDelayed(
+                { webView?.destroy() },
+                DELAY_MILLIS * (if (transparent) 2 else 1)
+            )
+
+            return if (transparent) {
+                response
+            } else {
+                response.newBuilder().body(ResponseBody.create(response.body()?.contentType(), jsInterface.payload)).build()
+            }
+        }
+    }
+
+    class TagInterceptor : GenericInterceptor(true) {
+        override val jsScript: String = """
+           let dispatched = false;
+           window.addEventListener('history-ready', function () {
+             if (!dispatched) {
+               dispatched = true;
+               Promise.all(
+                 [globalHistoryHandler.getAllPinnedSeries(), globalHistoryHandler.getAllUnpinnedSeries()]
+               ).then(e => {
+                 window.android.passPayload(JSON.stringify(e.flatMap(e => e)))
+               });
+             }
+           });
+           tag();
+        """
+
+        override fun urlModifier(originalUrl: String): String {
+            return originalUrl.replace("/api/", "/").replace("/series/", "/")
+        }
+    }
+
+    class HomeInterceptor : GenericInterceptor(false) {
+        override val jsScript: String = """
+           let dispatched = false;
+           (function () {
+             if (!dispatched) {
+               dispatched = true;
+               Promise.all(
+                 [globalHistoryHandler.getAllPinnedSeries(), globalHistoryHandler.getAllUnpinnedSeries()]
+               ).then(e => {
+                 window.android.passPayload(JSON.stringify(e.flatMap(e => e) ) )
+               });
+             }
+           })();
+        """
+
+        override fun urlModifier(originalUrl: String): String {
+            return originalUrl
+        }
+    }
+
+    companion object {
+        const val TIMEOUT_SEC: Long = 10
+        const val DELAY_MILLIS: Long = 10000
+    }
+}