diff --git a/src/all/ciayo/AndroidManifest.xml b/src/all/ciayo/AndroidManifest.xml
deleted file mode 100644
index 30deb7f79..000000000
--- a/src/all/ciayo/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/src/all/ciayo/build.gradle b/src/all/ciayo/build.gradle
deleted file mode 100644
index 005e4f89c..000000000
--- a/src/all/ciayo/build.gradle
+++ /dev/null
@@ -1,12 +0,0 @@
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-
-ext {
- extName = 'Ciayo Comics'
- pkgNameSuffix = 'all.ciayo'
- extClass = '.CiayoFactory'
- extVersionCode = 1
- libVersion = '1.2'
-}
-
-apply from: "$rootDir/common.gradle"
diff --git a/src/all/ciayo/res/mipmap-hdpi/ic_launcher.png b/src/all/ciayo/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index c04c55feb..000000000
Binary files a/src/all/ciayo/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/src/all/ciayo/res/mipmap-mdpi/ic_launcher.png b/src/all/ciayo/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index 2b083069a..000000000
Binary files a/src/all/ciayo/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/src/all/ciayo/res/mipmap-xhdpi/ic_launcher.png b/src/all/ciayo/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index a03528bc4..000000000
Binary files a/src/all/ciayo/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/src/all/ciayo/res/mipmap-xxhdpi/ic_launcher.png b/src/all/ciayo/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index 727a7ddb7..000000000
Binary files a/src/all/ciayo/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/src/all/ciayo/res/mipmap-xxxhdpi/ic_launcher.png b/src/all/ciayo/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index 556893b56..000000000
Binary files a/src/all/ciayo/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/src/all/ciayo/res/web_hi_res_512.png b/src/all/ciayo/res/web_hi_res_512.png
deleted file mode 100644
index 3f9c9904c..000000000
Binary files a/src/all/ciayo/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/all/ciayo/src/eu/kanade/tachiyomi/extension/all/ciayo/Ciayo.kt b/src/all/ciayo/src/eu/kanade/tachiyomi/extension/all/ciayo/Ciayo.kt
deleted file mode 100644
index 873d4cf75..000000000
--- a/src/all/ciayo/src/eu/kanade/tachiyomi/extension/all/ciayo/Ciayo.kt
+++ /dev/null
@@ -1,182 +0,0 @@
-package eu.kanade.tachiyomi.extension.all.ciayo
-
-import com.github.salomonbrys.kotson.get
-import com.github.salomonbrys.kotson.long
-import com.github.salomonbrys.kotson.nullString
-import com.github.salomonbrys.kotson.string
-import com.google.gson.JsonElement
-import com.google.gson.JsonParser
-import eu.kanade.tachiyomi.network.GET
-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 okhttp3.Request
-import okhttp3.Response
-import org.jsoup.nodes.Element
-
-abstract class Ciayo(override val lang: String) : HttpSource() {
-
- // Info
- override val name: String = "Ciayo Comics"
- override val baseUrl: String = "https://www.ciayo.com"
- private val apiUrl = "https://vueserion.ciayo.com/3.3/comics"
- override val supportsLatest: Boolean = true
-
- // Page Helpers
- private var next: String? = ""
- private var previous: String? = ""
-
- // Popular
- override fun popularMangaParse(response: Response): MangasPage {
- val body = response.body()!!.string()
- val json = JsonParser().parse(body)["c"]
- val data = json["data"].asJsonArray
-
- val mangas = data.map { jsonObject ->
- popularMangaFromJson(jsonObject)
- }
-
- previous = next
- next = json["meta"]["cursor"]["next"].nullString
-
- val hasNextPage = json["meta"]["more"].string == "true"
-
- return MangasPage(mangas, hasNextPage)
- }
-
- override fun popularMangaRequest(page: Int): Request {
- when (page) {
- 1 -> {
- previous = ""
- next = ""
- }
- 2 -> previous = "null"
- }
- val url =
- "$apiUrl/?current=$next&previous=$previous&app=desktop&type=comic&count=15&language=$lang&with=image,genres"
- return GET(url)
- }
-
- private fun popularMangaFromJson(json: JsonElement): SManga = SManga.create().apply {
- title = json["title"].string
- setUrlWithoutDomain(json["share_url"].string)
- thumbnail_url = json["image"]["cover"].string
- }
-
- // Latest
-
- override fun latestUpdatesParse(response: Response): MangasPage {
- val body = response.body()!!.string()
- val json = JsonParser().parse(body)["c"]
- val data = json["data"].asJsonArray
-
- val mangas = data.map { jsonObject ->
- latestUpdatesFromJson(jsonObject)
- }
-
- previous = next
- next = json["meta"]["cursor"]["next"].nullString
-
- val hasNextPage = json["meta"]["more"].string == "true"
-
- return MangasPage(mangas, hasNextPage)
- }
-
- override fun latestUpdatesRequest(page: Int): Request {
- when (page) {
- 1 -> {
- previous = ""
- next = ""
- }
- 2 -> previous = "null"
- }
- val url =
- "$apiUrl/new-release?app=desktop&language=$lang¤t=$next&previous=$previous&count=10&with=image,genres&type=comic"
- return GET(url)
- }
-
- private fun latestUpdatesFromJson(json: JsonElement): SManga = popularMangaFromJson(json)
-
- // Search
-
- override fun searchMangaParse(response: Response): MangasPage {
- val document = response.asJsoup()
-
- val mangas = document.select(searchMangaSelector()).map { element ->
- searchMangaFromElement(element)
- }
-
- val hasNextPage = searchMangaNextPageSelector().let { selector ->
- document.select(selector).first()
- } != null
-
- return MangasPage(mangas, hasNextPage)
- }
-
- private fun searchMangaSelector() = "div.ais-Hits li.ais-Hits-item"
- private fun searchMangaNextPageSelector() = "a[aria-label=Next page]"
- private fun searchMangaFromElement(element: Element): SManga = SManga.create().apply {
- thumbnail_url = element.select("img").attr("abs:src")
- element.select("a.comic-link").apply {
- title = this.text().trim()
- url = this.attr("href")
- }
- }
-
- override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
- return GET("$baseUrl/$lang/search?query=$query&page=$page")
- }
-
- // Details
-
- override fun mangaDetailsParse(response: Response): SManga {
- val document = response.asJsoup()
- val script = document.select("script:containsdata(NEXT_DATA)").html()
- val data = script.substringAfter("__NEXT_DATA__ =").substringBefore("};").trim() + "}"
- val json = JsonParser().parse(data)["props"]["pageProps"]["comicProfile"]
- return SManga.create().apply {
- title = json["title"].string
- author = json["author"].string
- artist = author
- description = json["description"].string
- genre = json["genres"].asJsonArray.joinToString(", ") { it["name"].string }
- thumbnail_url = json["image"]["cover"].string
- }
- }
-
- // Chapters
-
- override fun chapterListRequest(manga: SManga): Request {
- val slug = manga.url.substringAfterLast("/")
- return GET("$apiUrl/$slug/chapters?current=&count=999&app=desktop&language=$lang&with=image,comic&sort=desc")
- }
-
- override fun chapterListParse(response: Response): List {
- val body = response.body()!!.string()
- val json = JsonParser().parse(body)["c"]
- val data = json["data"].asJsonArray
- return data.filterNot { it["status"].string == "coming-soon" }.map {
- SChapter.create().apply {
- name = "${it["episode"].string} - ${it["name"].string}"
- scanlator = "[${it["status"].string}]"
- setUrlWithoutDomain(it["share_url"].string)
- date_upload = it["release_date"].long * 1000
- }
- }
- }
-
- // Pages
-
- override fun pageListParse(response: Response): List = mutableListOf().apply {
- val document = response.asJsoup()
- document.select("div.chapterViewer img").forEach {
- add(Page(size, "", it.attr("abs:src")))
- }
- }
-
- override fun imageUrlParse(response: Response): String = throw Exception("ImgParse Not Used")
-}
diff --git a/src/all/ciayo/src/eu/kanade/tachiyomi/extension/all/ciayo/CiayoFactory.kt b/src/all/ciayo/src/eu/kanade/tachiyomi/extension/all/ciayo/CiayoFactory.kt
deleted file mode 100644
index 03eb9e22e..000000000
--- a/src/all/ciayo/src/eu/kanade/tachiyomi/extension/all/ciayo/CiayoFactory.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-package eu.kanade.tachiyomi.extension.all.ciayo
-
-import eu.kanade.tachiyomi.source.Source
-import eu.kanade.tachiyomi.source.SourceFactory
-
-class CiayoFactory : SourceFactory {
- override fun createSources(): List = listOf(
- CiayoID(),
- CiayoEN()
- )
-}
-
-class CiayoID : Ciayo("id")
-
-class CiayoEN : Ciayo("en")