diff --git a/src/id/kiryuu/build.gradle b/src/id/kiryuu/build.gradle deleted file mode 100644 index 2f93cfb31..000000000 --- a/src/id/kiryuu/build.gradle +++ /dev/null @@ -1,12 +0,0 @@ -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' - -ext { - extName = 'Kiryuu' - pkgNameSuffix = 'id.kiryuu' - extClass = '.Kiryuu' - extVersionCode = 2 - libVersion = '1.2' -} - -apply from: "$rootDir/common.gradle" diff --git a/src/id/kiryuu/res/mipmap-hdpi/ic_launcher.png b/src/id/kiryuu/res/mipmap-hdpi/ic_launcher.png deleted file mode 100755 index 939f40aeb..000000000 Binary files a/src/id/kiryuu/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/src/id/kiryuu/res/mipmap-mdpi/ic_launcher.png b/src/id/kiryuu/res/mipmap-mdpi/ic_launcher.png deleted file mode 100755 index cf2069a7e..000000000 Binary files a/src/id/kiryuu/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/src/id/kiryuu/res/mipmap-xhdpi/ic_launcher.png b/src/id/kiryuu/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100755 index efec0b150..000000000 Binary files a/src/id/kiryuu/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/src/id/kiryuu/res/mipmap-xxhdpi/ic_launcher.png b/src/id/kiryuu/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100755 index 13f3a088a..000000000 Binary files a/src/id/kiryuu/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/id/kiryuu/res/mipmap-xxxhdpi/ic_launcher.png b/src/id/kiryuu/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100755 index ed8e74f1d..000000000 Binary files a/src/id/kiryuu/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/id/kiryuu/res/web_hi_res_512.png b/src/id/kiryuu/res/web_hi_res_512.png deleted file mode 100755 index 19ba20253..000000000 Binary files a/src/id/kiryuu/res/web_hi_res_512.png and /dev/null differ diff --git a/src/id/kiryuu/src/eu/kanade/tachiyomi/extension/id/kiryuu/Kiryuu.kt b/src/id/kiryuu/src/eu/kanade/tachiyomi/extension/id/kiryuu/Kiryuu.kt deleted file mode 100644 index 0d80ca1c8..000000000 --- a/src/id/kiryuu/src/eu/kanade/tachiyomi/extension/id/kiryuu/Kiryuu.kt +++ /dev/null @@ -1,288 +0,0 @@ -package eu.kanade.tachiyomi.extension.id.kiryuu - -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.source.model.Filter -import eu.kanade.tachiyomi.source.model.FilterList -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 okhttp3.Headers -import okhttp3.HttpUrl -import okhttp3.OkHttpClient -import okhttp3.Request -import org.jsoup.nodes.Document -import org.jsoup.nodes.Element - -class Kiryuu : ParsedHttpSource() { - - override val name = "Kiryuu" - override val baseUrl = "https://kiryuu.co" - override val lang = "id" - override val supportsLatest = true - override val client: OkHttpClient = network.cloudflareClient - - override fun popularMangaRequest(page: Int): Request { - return GET("$baseUrl/manga/?order=popular&page=$page", headers) - } - - override fun latestUpdatesRequest(page: Int): Request { - return GET("$baseUrl/manga/?order=update&page=$page", headers) - } - - override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val builtUrl = if (page == 1) "$baseUrl/manga/" else "$baseUrl/manga/?page=$page" - val url = HttpUrl.parse(builtUrl)!!.newBuilder() - url.addQueryParameter("title", query) - url.addQueryParameter("page", page.toString()) - filters.forEach { filter -> - when (filter) { - is AuthorFilter -> { - url.addQueryParameter("author", filter.state) - } - is YearFilter -> { - url.addQueryParameter("yearx", filter.state) - } - is StatusFilter -> { - val status = when (filter.state) { - Filter.TriState.STATE_INCLUDE -> "completed" - Filter.TriState.STATE_EXCLUDE -> "ongoing" - else -> "" - } - url.addQueryParameter("status", status) - } - is TypeFilter -> { - url.addQueryParameter("type", filter.toUriPart()) - } - is SortByFilter -> { - url.addQueryParameter("order", filter.toUriPart()) - } - is GenreListFilter -> { - filter.state - .filter { it.state != Filter.TriState.STATE_IGNORE } - .forEach { url.addQueryParameter("genre[]", it.id) } - } - } - } - return GET(url.build().toString(), headers) - } - - override fun popularMangaSelector() = "div.bs" - override fun latestUpdatesSelector() = popularMangaSelector() - override fun searchMangaSelector() = popularMangaSelector() - - override fun popularMangaFromElement(element: Element): SManga { - val manga = SManga.create() - manga.thumbnail_url = element.select("div.limit img").attr("src") - element.select("div.bsx > a").first().let { - manga.setUrlWithoutDomain(it.attr("href")) - manga.title = it.attr("title") - } - return manga - } - - override fun searchMangaFromElement(element: Element): SManga = popularMangaFromElement(element) - override fun latestUpdatesFromElement(element: Element): SManga = popularMangaFromElement(element) - - override fun popularMangaNextPageSelector() = "a.r" - override fun latestUpdatesNextPageSelector() = popularMangaNextPageSelector() - override fun searchMangaNextPageSelector() = popularMangaNextPageSelector() - - override fun mangaDetailsParse(document: Document): SManga { - val infoElement = document.select("div.spe").first() - val descElement = document.select(".infox > div.desc").first() - val sepName = infoElement.select(".spe > span:nth-child(3)").last() - val manga = SManga.create() - manga.author = sepName.ownText() - manga.artist = sepName.ownText() - val genres = mutableListOf() - infoElement.select(".spe > span:nth-child(1) > a").forEach { element -> - val genre = element.text() - genres.add(genre) - } - manga.genre = genres.joinToString(", ") - manga.status = parseStatus(infoElement.select(".spe > span:nth-child(2)").text()) - manga.description = descElement.select("p").text() - manga.thumbnail_url = document.select(".thumb > img:nth-child(1)").attr("src") - - return manga - } - - private fun parseStatus(element: String): Int = when { - - element.toLowerCase().contains("ongoing") -> SManga.ONGOING - element.toLowerCase().contains("completed") -> SManga.COMPLETED - else -> SManga.UNKNOWN - } - - override fun chapterListSelector() = "div.bxcl ul li" - - override fun chapterFromElement(element: Element): SChapter { - val urlElement = element.select(".lchx > a").first() - val chapter = SChapter.create() - chapter.setUrlWithoutDomain(urlElement.attr("href")) - chapter.name = urlElement.text() - chapter.date_upload = 0 - return chapter - } - - override fun prepareNewChapter(chapter: SChapter, manga: SManga) { - val basic = Regex("""Chapter\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 pages = mutableListOf() - var i = 0 - document.select("div#readerarea img").forEach { element -> - val url = element.attr("src") - i++ - if (url.isNotEmpty()) { - pages.add(Page(i, "", url)) - } - } - return pages - } - - override fun imageUrlParse(document: Document) = "" - - override fun imageRequest(page: Page): Request { - val imgHeader = Headers.Builder().apply { - add("User-Agent", "Mozilla/5.0 (Linux; U; Android 4.1.1; en-gb; Build/KLP) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30") - add("Referer", baseUrl) - }.build() - return GET(page.imageUrl!!, imgHeader) - } - - private class AuthorFilter : Filter.Text("Author") - - private class YearFilter : Filter.Text("Year") - - private class TypeFilter : UriPartFilter( - "Type", - arrayOf( - Pair("Default", ""), - Pair("Manga", "Manga"), - Pair("Manhwa", "Manhwa"), - Pair("Manhua", "Manhua"), - Pair("Comic", "Comic") - ) - ) - - private class SortByFilter : UriPartFilter( - "Sort By", - arrayOf( - Pair("Default", ""), - Pair("A-Z", "title"), - Pair("Z-A", "titlereverse"), - Pair("Latest Update", "update"), - Pair("Latest Added", "latest"), - Pair("Popular", "popular") - ) - ) - - private class StatusFilter : UriPartFilter( - "Status", - arrayOf( - Pair("All", ""), - Pair("Ongoing", "ongoing"), - Pair("Completed", "completed") - ) - ) - - private class Genre(name: String, val id: String = name) : Filter.TriState(name) - private class GenreListFilter(genres: List) : Filter.Group("Genre", genres) - - override fun getFilterList() = FilterList( - Filter.Header("NOTE: Ignored if using text search!"), - Filter.Separator(), - AuthorFilter(), - YearFilter(), - StatusFilter(), - TypeFilter(), - SortByFilter(), - GenreListFilter(getGenreList()) - ) - - private fun getGenreList() = listOf( - Genre("4 Koma", "4-koma"), - Genre("Action", "action"), - Genre("Adult", "adult"), - Genre("Adventure", "adventure"), - Genre("Comedy", "comedy"), - Genre("Completed", "completed"), - Genre("Cooking", "cooking"), - Genre("Crime", "crime"), - Genre("Demon", "demon"), - Genre("Demons", "demons"), - Genre("Doujinshi", "doujinshi"), - Genre("Drama", "drama"), - Genre("Ecchi", "ecchi"), - Genre("Fantasy", "fantasy"), - Genre("Game", "game"), - Genre("Games", "games"), - Genre("Gender Bender", "gender-bender"), - Genre("Gore", "gore"), - Genre("Harem", "harem"), - Genre("Historical", "historical"), - Genre("Horror", "horror"), - Genre("Isekai", "isekai"), - Genre("Josei", "josei"), - Genre("Magic", "magic"), - Genre("Manga", "manga"), - Genre("Manhua", "manhua"), - Genre("Manhwa", "manhwa"), - Genre("Martial Art", "martial-art"), - Genre("Martial Arts", "martial-arts"), - Genre("Mature", "mature"), - Genre("Mecha", "mecha"), - Genre("Military", "military"), - Genre("Monster", "monster"), - Genre("Monster Girls", "monster-girls"), - Genre("Monsters", "monsters"), - Genre("Music", "music"), - Genre("Mystery", "mystery"), - Genre("One-shot", "one-shot"), - Genre("Oneshot", "oneshot"), - Genre("Police", "police"), - Genre("Pshycological", "pshycological"), - Genre("Psychological", "psychological"), - Genre("Reincarnation", "reincarnation"), - Genre("Reverse Harem", "reverse-harem"), - Genre("Romancce", "romancce"), - Genre("Romance", "romance"), - Genre("Samurai", "samurai"), - Genre("School", "school"), - Genre("School Life", "school-life"), - Genre("Sci-fi", "sci-fi"), - Genre("Seinen", "seinen"), - Genre("Shoujo", "shoujo"), - Genre("Shoujo Ai", "shoujo-ai"), - Genre("Shounen", "shounen"), - Genre("Shounen Ai", "shounen-ai"), - Genre("Slice of Life", "slice-of-life"), - Genre("Sports", "sports"), - Genre("Super Power", "super-power"), - Genre("Supernatural", "supernatural"), - Genre("Thriller", "thriller"), - Genre("Time Travel", "time-travel"), - Genre("Tragedy", "tragedy"), - Genre("Vampire", "vampire"), - Genre("Webtoon", "webtoon"), - Genre("Webtoons", "webtoons"), - Genre("Yaoi", "yaoi"), - Genre("Yuri", "yuri"), - Genre("Zombies", "zombies") - ) - - private open class UriPartFilter(displayName: String, val vals: Array>) : - Filter.Select(displayName, vals.map { it.first }.toTypedArray()) { - fun toUriPart() = vals[state].second - } -}