diff --git a/src/ru/onlinecomics/AndroidManifest.xml b/src/ru/onlinecomics/AndroidManifest.xml
deleted file mode 100644
index 30deb7f79..000000000
--- a/src/ru/onlinecomics/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/src/ru/onlinecomics/build.gradle b/src/ru/onlinecomics/build.gradle
deleted file mode 100644
index 6bda3da88..000000000
--- a/src/ru/onlinecomics/build.gradle
+++ /dev/null
@@ -1,12 +0,0 @@
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-
-ext {
- extName = 'Onlinecomics'
- pkgNameSuffix = 'ru.onlinecomics'
- extClass = '.Onlinecomics'
- extVersionCode = 1
- libVersion = '1.2'
-}
-
-apply from: "$rootDir/common.gradle"
diff --git a/src/ru/onlinecomics/src/eu/kanade/tachiyomi/extension/ru/onlinecomics/Onlinecomics.kt b/src/ru/onlinecomics/src/eu/kanade/tachiyomi/extension/ru/onlinecomics/Onlinecomics.kt
deleted file mode 100644
index 3234a822b..000000000
--- a/src/ru/onlinecomics/src/eu/kanade/tachiyomi/extension/ru/onlinecomics/Onlinecomics.kt
+++ /dev/null
@@ -1,227 +0,0 @@
-package eu.kanade.tachiyomi.extension.ru.onlinecomics
-
-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.Headers
-import okhttp3.Request
-import okhttp3.Response
-import org.jsoup.Jsoup
-import org.jsoup.nodes.Document
-import org.jsoup.nodes.Element
-import java.text.SimpleDateFormat
-import java.util.Locale
-
-class Onlinecomics : ParsedHttpSource() {
- override fun searchMangaFromElement(element: Element): SManga {
- throw Exception("Not used")
- }
-
- override fun searchMangaNextPageSelector(): String? {
- throw Exception("Not used")
- }
-
- override fun latestUpdatesSelector(): String {
- throw Exception("Not used")
- }
-
- override fun latestUpdatesFromElement(element: Element): SManga {
- throw Exception("Not used")
- }
-
- override fun latestUpdatesNextPageSelector(): String? {
- throw Exception("Not used")
- }
-
- override fun latestUpdatesRequest(page: Int): Request {
- throw Exception("Not used")
- }
-
- override val name = "Onlinecomics"
-
- override val baseUrl = "http://onlinecomics.su"
-
- override val lang = "ru"
-
- override val supportsLatest = false
-
- override fun popularMangaRequest(page: Int): Request =
- GET("$baseUrl/online-reading/comicsonline/$page")
-
- override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
- val url = "https://yandex.ru/search/site/?html=1&topdoc=http://jurnalu.ru/?searchid=2158851&" +
- "text=$query&web=0&encoding=&tld=ru&htmlcss=1.x&updatehash=true&searchid=2158851&" +
- "clid=&text=batman&web=0&p=&surl=&constraintid=&date=&within=&from_day=&" +
- "from_month=&from_year=&to_day=&to_month=&to_year=&available=&priceLow=&priceHigh=&" +
- "categoryId=&l10n=ru&callback=jQuery"
- return GET(url, headers)
- }
-
- override fun popularMangaParse(response: Response): MangasPage {
- val document = response.asJsoup()
-
- val mangas = document.select(popularMangaSelector()).map { element ->
- popularMangaFromElement(element)
- }
-
- val hasNextPage = popularMangaNextPageSelector().let { selector ->
- document.select(selector).first()
- } != null
-
- return MangasPage(mangas.distinctBy { it.url }, hasNextPage)
- }
-
- override fun popularMangaSelector() = "div.PrewLine"
-
- override fun searchMangaSelector() = ""
-
- override fun popularMangaFromElement(element: Element): SManga {
- val manga = SManga.create()
- manga.thumbnail_url = baseUrl + element.select("a img").first()?.attr("src")
- element.select("div.Gname a").first().let {
- manga.setUrlWithoutDomain(it.attr("href"))
- manga.title = it.text()
- }
- return manga
- }
-
- override fun popularMangaNextPageSelector() = "a.RRL"
-
- override fun searchMangaParse(response: Response): MangasPage {
- val body = response.body()!!.string()
- .replace("\\/", "/")
- .replace("\\-", "-")
- .removePrefix("jQuery(Ya.Site.Results.triggerResultsDelivered('")
- .removeSuffix("'))")
- val document = Jsoup.parse(body)
-
- val mangaList = mutableListOf()
- document.select(".b-serp-item__title-link").forEach { element ->
- val manga = SManga.create()
- val url = element.select("a.b-serp-item__title-link").first()
- .attr("href").removePrefix("http://www.jurnalu.ru")
- if (url.contains("/manga/")) return@forEach
- val splits = url.split('/')
- val newUrl = splits
- .joinToString("/", limit = 4, truncated = "")
- .removeSuffix("/")
- manga.setUrlWithoutDomain(newUrl)
- manga.title = element.select("yass-span").text().split('/')[0]
- mangaList.add(manga)
- }
-
- val result = mangaList.filter { it.url.isNotEmpty() }.distinctBy { it.url }
- return MangasPage(result, false)
- }
-
- override fun mangaDetailsParse(document: Document): SManga {
- val infoElement = document.select("div.ops").first()
-
- val manga = SManga.create()
- if (infoElement.select("strong").size > 5) {
- manga.author = (
- infoElement.select("strong")[6].text() +
- infoElement.select("strong")[7].text()
- )
- .removePrefix("Издательство: ")
- .split(" /")[0]
-
- val text = (document.select("p[align]")[0].parentNode() as Element).text()
- val begin = if (text.contains("Жанр:")) {
- "Жанр:"
- } else {
- "Жанры:"
- }
- val end = "Тип:"
- val tempString = text.removeRange(0, text.indexOf(begin) + begin.length)
- manga.genre = tempString.removeRange(tempString.indexOf(end), tempString.length).trim()
-
- manga.status = parseStatus(infoElement.text())
- manga.description = infoElement.select("div").last().text()
- .split("Только у нас на сайте вы можете ")[0]
-
- manga.thumbnail_url = baseUrl + infoElement.select("div img")[1].attr("src")
- } else {
- manga.description = document.select(".remark").text()
- }
- return manga
- }
-
- private fun parseStatus(element: String): Int = when {
- element.contains("завершен") -> SManga.COMPLETED
- element.contains("продолжается") -> SManga.ONGOING
- else -> SManga.UNKNOWN
- }
-
- override fun chapterListParse(response: Response): List {
- val document = response.asJsoup()
- val chapterList = mutableListOf()
- chapterList.addAll(document.select(chapterListSelector()).map { chapterFromElement(it) })
-
- val lastPage: String? = document.select("div.navigationG .C").last()?.text()
- if (lastPage != null) {
- (2..lastPage.toInt()).forEach { i ->
- val get = GET(
- "${response.request().url()}/$i",
- headers = headers
- )
- chapterList.addAll(
- client.newCall(get).execute().asJsoup().select(chapterListSelector()).map {
- chapterFromElement(it)
- }
- )
- }
- }
- return chapterList
- }
-
- override fun chapterListSelector() = "div.MagListLine"
-
- override fun chapterFromElement(element: Element): SChapter {
- val urlElement = element.select("a").first()
-
- val chapter = SChapter.create()
- chapter.setUrlWithoutDomain(urlElement.attr("href"))
- chapter.name = urlElement.text()
- chapter.date_upload = element.select("div.date").first()?.text()?.let {
- SimpleDateFormat("dd.MM.yyyy", Locale.US).parse(it)?.time ?: 0L
- } ?: 0
- return chapter
- }
-
- override fun prepareNewChapter(chapter: SChapter, manga: SManga) {
- val basic = Regex("""#\s([0-9]+)""")
- when {
- basic.containsMatchIn(chapter.name) -> {
- basic.find(chapter.name)?.let {
- chapter.chapter_number = it.groups[1]?.value!!.toFloat()
- }
- }
- }
- }
-
- override fun pageListParse(document: Document): List {
- val navDocument = document.select(".navigation").first()
- val url = document.location()
- val pages = mutableListOf()
- navDocument.select("option").forEachIndexed { index, element ->
- pages.add(Page(index, "$url/${element.attr("value")}"))
- }
- return pages
- }
-
- override fun imageUrlParse(document: Document): String = document.select("img").first().attr("src")
-
- override fun imageRequest(page: Page): Request {
- val imgHeader = Headers.Builder().apply {
- add("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64)")
- add("Referer", baseUrl)
- }.build()
- return GET(page.imageUrl!!, imgHeader)
- }
-}