diff --git a/src/en/mangadog/AndroidManifest.xml b/src/en/mangadog/AndroidManifest.xml
deleted file mode 100644
index 30deb7f79..000000000
--- a/src/en/mangadog/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/src/en/mangadog/build.gradle b/src/en/mangadog/build.gradle
deleted file mode 100644
index a1cc0ef09..000000000
--- a/src/en/mangadog/build.gradle
+++ /dev/null
@@ -1,13 +0,0 @@
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-apply plugin: 'kotlinx-serialization'
-
-ext {
- extName = 'MangaDog'
- pkgNameSuffix = 'en.mangadog'
- extClass = '.Mangadog'
- extVersionCode = 2
- libVersion = '1.2'
-}
-
-apply from: "$rootDir/common.gradle"
diff --git a/src/en/mangadog/res/mipmap-hdpi/ic_launcher.png b/src/en/mangadog/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index f7e97b120..000000000
Binary files a/src/en/mangadog/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/src/en/mangadog/res/mipmap-mdpi/ic_launcher.png b/src/en/mangadog/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index 7b00cb1b6..000000000
Binary files a/src/en/mangadog/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/src/en/mangadog/res/mipmap-xhdpi/ic_launcher.png b/src/en/mangadog/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index af39b2e1d..000000000
Binary files a/src/en/mangadog/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/src/en/mangadog/res/mipmap-xxhdpi/ic_launcher.png b/src/en/mangadog/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index b2e799868..000000000
Binary files a/src/en/mangadog/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/src/en/mangadog/res/mipmap-xxxhdpi/ic_launcher.png b/src/en/mangadog/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index 77c429953..000000000
Binary files a/src/en/mangadog/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/src/en/mangadog/res/web_hi_res_512.png b/src/en/mangadog/res/web_hi_res_512.png
deleted file mode 100644
index 7aec497e9..000000000
Binary files a/src/en/mangadog/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/en/mangadog/src/eu/kanade/tachiyomi/extension/en/mangadog/Mangadog.kt b/src/en/mangadog/src/eu/kanade/tachiyomi/extension/en/mangadog/Mangadog.kt
deleted file mode 100644
index 36adb7630..000000000
--- a/src/en/mangadog/src/eu/kanade/tachiyomi/extension/en/mangadog/Mangadog.kt
+++ /dev/null
@@ -1,150 +0,0 @@
-package eu.kanade.tachiyomi.extension.en.mangadog
-
-import android.net.Uri
-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 kotlinx.serialization.json.Json
-import kotlinx.serialization.json.JsonObject
-import kotlinx.serialization.json.float
-import kotlinx.serialization.json.jsonArray
-import kotlinx.serialization.json.jsonObject
-import kotlinx.serialization.json.jsonPrimitive
-import okhttp3.OkHttpClient
-import okhttp3.Request
-import okhttp3.Response
-import uy.kohesive.injekt.injectLazy
-import java.text.SimpleDateFormat
-import java.util.Locale
-
-class Mangadog : HttpSource() {
-
- override val name = "MangaDog"
-
- override val baseUrl = "https://mangadog.club"
-
- private val cdn = "https://cdn.mangadog.club"
-
- override val lang = "en"
-
- override val supportsLatest = true
-
- override val client: OkHttpClient = network.cloudflareClient
-
- private val json: Json by injectLazy()
-
- override fun popularMangaRequest(page: Int) = GET("$baseUrl/index/classification/search_test?page=$page&state=all&demographic=all&genre=all", headers)
-
- override fun latestUpdatesRequest(page: Int) = GET("$baseUrl/index/latestupdate/getUpdateResult?page=$page", headers)
-
- override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
- val uri = Uri.parse("$baseUrl/index/keywordsearch/index").buildUpon()
- .appendQueryParameter("query", query)
- return GET(uri.toString(), headers)
- }
-
- override fun popularMangaParse(response: Response): MangasPage {
- val jsonResult = json.parseToJsonElement(response.body!!.string()).jsonObject
-
- val mangaList = jsonResult["data"]!!.jsonObject["data"]!!.jsonArray.map { jsonEl ->
- popularMangaFromJson(jsonEl.jsonObject)
- }
-
- return MangasPage(mangaList, hasNextPage = true)
- }
-
- private fun popularMangaFromJson(jsonObj: JsonObject): SManga = SManga.create().apply {
- title = jsonObj["name"]!!.jsonPrimitive.content.trim()
- thumbnail_url = cdn + jsonObj["image"]!!.jsonPrimitive.content.replace("\\/", "/")
-
- val searchName = jsonObj["search_name"]!!.jsonPrimitive.content
- val id = jsonObj["id"]!!.jsonPrimitive.content
- url = "/detail/$searchName/$id.html"
- }
-
- override fun latestUpdatesParse(response: Response): MangasPage {
- val jsonResult = json.parseToJsonElement(response.body!!.string()).jsonObject
-
- val mangaList = jsonResult["data"]!!.jsonArray.map { jsonEl ->
- popularMangaFromJson(jsonEl.jsonObject)
- }
-
- return MangasPage(mangaList, hasNextPage = true)
- }
-
- override fun searchMangaParse(response: Response): MangasPage {
- val jsonResult = json.parseToJsonElement(response.body!!.string()).jsonObject
-
- val mangaList = jsonResult["suggestions"]!!.jsonArray.map { jsonEl ->
- searchMangaFromJson(jsonEl.jsonObject)
- }
-
- return MangasPage(mangaList, hasNextPage = false)
- }
-
- private fun searchMangaFromJson(jsonObj: JsonObject): SManga = SManga.create().apply {
- title = jsonObj["value"]!!.jsonPrimitive.content.trim()
-
- val dataValue = jsonObj["data"]!!.jsonPrimitive.content.replace("\\/", "/")
- url = "/detail/$dataValue.html"
- }
-
- override fun chapterListRequest(manga: SManga): Request {
- val id = manga.url.substringAfterLast("/").substringBefore(".html")
- return GET("$baseUrl/index/detail/getChapterList?comic_id=$id&page=1", headers)
- }
-
- override fun chapterListParse(response: Response): List {
- val jsonResult = json.parseToJsonElement(response.body!!.string()).jsonObject
-
- return jsonResult["data"]!!.jsonObject["data"]!!.jsonArray.map { jsonEl ->
- chapterFromJson(jsonEl.jsonObject)
- }
- }
-
- private fun chapterFromJson(jsonObj: JsonObject): SChapter = SChapter.create().apply {
- // The url should include the manga name but it doesn't seem to matter
- val searchname = jsonObj["search_name"]!!.jsonPrimitive.content
- val id = jsonObj["comic_id"]!!.jsonPrimitive.content
- url = "/read/read/$searchname/$id.html"
-
- name = jsonObj["name"]!!.jsonPrimitive.content.trim()
- chapter_number = jsonObj["obj_id"]!!.jsonPrimitive.float
- date_upload = parseDate(jsonObj["create_date"]!!.jsonPrimitive.content)
- }
-
- private fun parseDate(date: String): Long {
- return SimpleDateFormat("yyyy-MM-dd", Locale.US).parse(date)?.time ?: 0L
- }
-
- override fun mangaDetailsParse(response: Response): SManga = SManga.create().apply {
- val document = response.asJsoup()
-
- thumbnail_url = document.select("img.detail-post-img").attr("abs:src")
- description = document.select("h2.fs15 + p").text().trim()
- author = document.select("a[href*=artist]").text()
- artist = document.select("a[href*=artist]").text()
- genre = document.select("div.col-sm-10.col-xs-9.text-left.toe.mlr0.text-left-m a[href*=genre]")
- .joinToString { it.text().substringAfter(",").capitalize(Locale.ROOT) }
- status = when (document.select("span.label.label-success").first().text()) {
- "update" -> SManga.ONGOING
- "finished" -> SManga.COMPLETED
- else -> SManga.UNKNOWN
- }
- }
-
- override fun pageListParse(response: Response): List {
- val document = response.asJsoup()
-
- return document.select("img[data-src]").mapIndexed { i, el ->
- Page(i, "", el.select("img").attr("data-src"))
- }
- }
-
- override fun imageUrlParse(response: Response) = ""
-}