diff --git a/src/en/rawmanga/AndroidManifest.xml b/src/en/rawmanga/AndroidManifest.xml
deleted file mode 100644
index 8072ee00d..000000000
--- a/src/en/rawmanga/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/src/en/rawmanga/build.gradle b/src/en/rawmanga/build.gradle
deleted file mode 100644
index cef161664..000000000
--- a/src/en/rawmanga/build.gradle
+++ /dev/null
@@ -1,7 +0,0 @@
-ext {
- extName = 'Raw-Manga'
- extClass = '.RawManga'
- extVersionCode = 2
-}
-
-apply from: "$rootDir/common.gradle"
diff --git a/src/en/rawmanga/src/eu/kanade/tachiyomi/extension/en/rawmanga/RawManga.kt b/src/en/rawmanga/src/eu/kanade/tachiyomi/extension/en/rawmanga/RawManga.kt
deleted file mode 100644
index afc772e8c..000000000
--- a/src/en/rawmanga/src/eu/kanade/tachiyomi/extension/en/rawmanga/RawManga.kt
+++ /dev/null
@@ -1,152 +0,0 @@
-package eu.kanade.tachiyomi.extension.en.rawmanga
-
-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.ParsedHttpSource
-import eu.kanade.tachiyomi.util.asJsoup
-import okhttp3.Request
-import okhttp3.Response
-import org.jsoup.nodes.Document
-import org.jsoup.nodes.Element
-import java.text.SimpleDateFormat
-import java.util.Locale
-
-class RawManga : ParsedHttpSource() {
-
- override val name = "Raw-Manga"
- override val baseUrl = "https://raw-manga.org"
- override val lang = "en"
- override val supportsLatest = true
-
- // Popular Manga
-
- override fun popularMangaRequest(page: Int): Request {
- return GET("$baseUrl/pieces/pages.php?orderedpage=$page")
- }
-
- override fun popularMangaSelector(): String = ".mangalistcnt"
-
- override fun popularMangaNextPageSelector(): String = "#paginationcontainer a:contains(Last Page)"
-
- override fun popularMangaFromElement(element: Element): SManga {
- return SManga.create().apply {
- url = element.selectFirst("div > a")!!.attr("href")
- title = element.select("div > a > h2").text().trim()
- thumbnail_url = element.select("a > div > img").attr("src")
- }
- }
-
- // Latest Updates
-
- override fun latestUpdatesSelector(): String = ".updatescontainer"
-
- override fun latestUpdatesFromElement(element: Element): SManga {
- return SManga.create().apply {
- url = element.select(".mangatitle").attr("href")
- title = element.select(".mangatitle").text().trim()
- thumbnail_url = element.select("div > a > img").attr("src")
- }
- }
-
- override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/updates.php?page=$page)", headers)
-
- override fun latestUpdatesParse(response: Response): MangasPage {
- val document = response.asJsoup()
-
- val mangas = document.select(latestUpdatesSelector()).map { element ->
- latestUpdatesFromElement(element)
- }
-
- return MangasPage(mangas, mangas.size == 60)
- }
-
- // Manga Details Parse
-
- override fun mangaDetailsParse(document: Document): SManga {
- return SManga.create().apply {
- thumbnail_url = document.select(".img-thumbnail").attr("src")
- title = document.select("#mangaholder h1").text().trim()
- description = document.selectFirst("#info p")!!.text()
- .replace(Regex("^(.*?)This Comic is About"), "").trim() // Removing boilerplate text
- author = document.selectFirst("#titlecompenents dt")!!.text().trim()
- genre = document.select("#titlecompenents li").text().trim()
- status = when (document.select("#titlecompenents dt:nth-of-type(2)").text().trim()) {
- "Ongoing" -> SManga.ONGOING
- "Completed" -> SManga.COMPLETED
- else -> SManga.UNKNOWN
- }
- }
- }
-
- // Chapter List
-
- override fun chapterListSelector(): String = "tbody tr"
-
- override fun chapterListParse(response: Response): List {
- val mangaId = response.asJsoup().selectFirst(".btn-danger")!!.attr("onclick")
- .substringAfter("showAllCHaps(").substringBefore(")")
-
- val chapters = client.newCall(GET("$baseUrl/pieces/chaps.php?mng=$mangaId", headers)).execute()
-
- return chapters.asJsoup().select(chapterListSelector())
- .map {
- SChapter.create().apply {
- url = it.select("a").attr("href").trim()
- name = "Chapter " + it.text().trim().split(" ")[1]
- chapter_number = it.text().trim().split(" ")[1].toFloat()
- date_upload = it.select("td:last-of-type").text().trim()
- .let { DATE_FORMATTER.parse(it)?.time ?: 0L }
- }
- }
- }
-
- // Page
-
- override fun pageListParse(document: Document): List {
- return document.select("#chapcontainer .imgholder").mapIndexed { index, element ->
- Page(index, "", element.attr("src"))
- }
- }
-
- // Search
- // advanced.php supports filters via POST, but has no title search
- override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
- return GET("$baseUrl/search.php?manga=$query", headers)
- }
-
- override fun searchMangaSelector(): String = "a"
-
- override fun searchMangaFromElement(element: Element): SManga {
- return SManga.create().apply {
- url = element.attr("href").trim()
- title = element.select("li").text().trim()
- thumbnail_url = "https://readmanganow.com/images/thumbnails/$title.webp" // Works for most
- }
- }
-
- override fun searchMangaParse(response: Response): MangasPage {
- val document = response.asJsoup()
-
- val mangas = document.select(searchMangaSelector()).map { element ->
- searchMangaFromElement(element)
- }
-
- return MangasPage(mangas, false)
- }
-
- override fun latestUpdatesNextPageSelector() = throw java.lang.UnsupportedOperationException("Not used.")
-
- override fun chapterFromElement(element: Element): SChapter = throw UnsupportedOperationException()
-
- override fun imageUrlParse(document: Document) = throw UnsupportedOperationException()
-
- override fun searchMangaNextPageSelector(): String = throw UnsupportedOperationException()
-
- companion object {
- val DATE_FORMATTER by lazy { SimpleDateFormat("yyyy-MM-dd", Locale.US) }
- }
-}