From a27ea45025f2c7e83a6a8ee172bbe613692f9fe9 Mon Sep 17 00:00:00 2001 From: Mike <51273546+SnakeDoc83@users.noreply.github.com> Date: Wed, 9 Oct 2019 18:58:55 -0400 Subject: [PATCH] FMReader - new factory extension (#1561) * LHReader - new factory extension * progress * progress 2 * Update LHReader.kt * Rename, last changes before review --- src/all/fmreader/build.gradle | 12 + .../fmreader/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3703 bytes .../fmreader/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2026 bytes .../fmreader/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 5212 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 9685 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 14171 bytes src/all/fmreader/res/web_hi_res_512.png | Bin 0 -> 74029 bytes .../extension/all/fmreader/FMReader.kt | 392 ++++++++++++++++++ .../extension/all/fmreader/FMReaderFactory.kt | 242 +++++++++++ 9 files changed, 646 insertions(+) create mode 100644 src/all/fmreader/build.gradle create mode 100644 src/all/fmreader/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/all/fmreader/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/all/fmreader/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/all/fmreader/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/all/fmreader/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/all/fmreader/res/web_hi_res_512.png create mode 100644 src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReader.kt create mode 100644 src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReaderFactory.kt diff --git a/src/all/fmreader/build.gradle b/src/all/fmreader/build.gradle new file mode 100644 index 000000000..fe7301115 --- /dev/null +++ b/src/all/fmreader/build.gradle @@ -0,0 +1,12 @@ +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' + +ext { + appName = 'Tachiyomi: FMReader (multiple aggregators)' + pkgNameSuffix = 'all.fmreader' + extClass = '.FMReaderFactory' + extVersionCode = 1 + libVersion = '1.2' +} + +apply from: "$rootDir/common.gradle" diff --git a/src/all/fmreader/res/mipmap-hdpi/ic_launcher.png b/src/all/fmreader/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..902faf434ab7873bbb167e29e258b6b436874e79 GIT binary patch literal 3703 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 IM6N<$g0-yLqyPW_ literal 0 HcmV?d00001 diff --git a/src/all/fmreader/res/mipmap-xhdpi/ic_launcher.png b/src/all/fmreader/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a5b3eb677f17be4bc9f72ab859e9da7a14bec84d GIT binary patch literal 5212 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 W0?#B#>Fa#}0000J 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 GfBYZbMyYB5 literal 0 HcmV?d00001 diff --git a/src/all/fmreader/res/mipmap-xxxhdpi/ic_launcher.png b/src/all/fmreader/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..208aeca45fe9a5f329428c382b2e3b40bf043b1a GIT binary patch literal 14171 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 MRMS<(Dcgkp4-d&}A^-pY literal 0 HcmV?d00001 diff --git a/src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReader.kt b/src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReader.kt new file mode 100644 index 000000000..bc7f6f131 --- /dev/null +++ b/src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReader.kt @@ -0,0 +1,392 @@ +package eu.kanade.tachiyomi.extension.all.fmreader + +// For sites based on the Flat-Manga CMS + +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.source.model.* +import eu.kanade.tachiyomi.source.online.ParsedHttpSource +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element +import eu.kanade.tachiyomi.util.asJsoup +import okhttp3.* +import java.util.* + +abstract class FMReader ( + override val name: String, + override val baseUrl: String, + override val lang: String +) : ParsedHttpSource() { + + override val supportsLatest = true + + override val client: OkHttpClient = network.cloudflareClient + + override fun headersBuilder() = Headers.Builder().apply { + add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64) Gecko/20100101 Firefox/69.0") + add("Referer", baseUrl) + } + + open val requestPath = "manga-list.html" + + override fun popularMangaRequest(page: Int): Request = + GET("$baseUrl/$requestPath?listType=pagination&page=$page&sort=views&sort_type=DESC", headers) + + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + val url = HttpUrl.parse("$baseUrl/$requestPath?")!!.newBuilder() + .addQueryParameter("name", query) + .addQueryParameter("page", page.toString()) + (if (filters.isEmpty()) getFilterList() else filters).forEach { filter -> + when (filter) { + is Status -> { + val status = arrayOf("", "1", "2")[filter.state] + url.addQueryParameter("m_status", status) + } + is TextField -> url.addQueryParameter(filter.key, filter.state) + is GenreList -> { + + var genre = String() + var ungenre = String() + + filter.state.forEach { + if (it.isIncluded()) genre += ",${it.name}" + if (it.isExcluded()) ungenre += ",${it.name}" + } + url.addQueryParameter("genre", genre) + url.addQueryParameter("ungenre", ungenre) + } + is SortBy -> { + url.addQueryParameter("sort", when { + filter.state?.index == 0 -> "name" + filter.state?.index == 1 -> "views" + else -> "last_update" + }) + if (filter.state?.ascending == true) + url.addQueryParameter("sort_type", "ASC") + } + } + } + return GET(url.toString(), headers) + } + + override fun latestUpdatesRequest(page: Int): Request = + GET("$baseUrl/$requestPath?listType=pagination&page=$page&sort=last_update&sort_type=DESC") + + // for sources that don't have the "page x of y" element + fun defaultMangaParse(response: Response): MangasPage = super.popularMangaParse(response) + + override fun popularMangaParse(response: Response): MangasPage { + val document = response.asJsoup() + val mangas = mutableListOf() + var hasNextPage = true + + document.select(popularMangaSelector()).map{ mangas.add(popularMangaFromElement(it)) } + + // check if there's a next page + document.select(popularMangaNextPageSelector()).first().text().split(" ").let { + val currentPage = it[1] + val lastPage = it[3] + if (currentPage == lastPage) hasNextPage = false + } + + return MangasPage(mangas, hasNextPage) + } + + override fun latestUpdatesParse(response: Response) = popularMangaParse(response) + + override fun searchMangaParse(response: Response) = popularMangaParse(response) + + override fun popularMangaSelector() = "div.media" + + override fun latestUpdatesSelector() = popularMangaSelector() + + override fun searchMangaSelector() = popularMangaSelector() + + override fun popularMangaFromElement(element: Element): SManga { + val manga = SManga.create() + + element.select("h3 a").let { + manga.setUrlWithoutDomain(it.attr("abs:href")) + manga.title = it.text() + } + manga.thumbnail_url = element.select("img").let{ + if (it.hasAttr("src")) { + it.attr("abs:src") + } else { + it.attr("abs:data-original") + } + } + + return manga + } + + override fun latestUpdatesFromElement(element: Element): SManga = + popularMangaFromElement(element) + + override fun searchMangaFromElement(element: Element): SManga = popularMangaFromElement(element) + + // selects an element with text "x of y pages", must be first element if multiple elements are selected + override fun popularMangaNextPageSelector() = "div.col-lg-9 button.btn-info" + + override fun latestUpdatesNextPageSelector() = popularMangaNextPageSelector() + + override fun searchMangaNextPageSelector() = popularMangaNextPageSelector() + + override fun mangaDetailsParse(document: Document): SManga { + val manga = SManga.create() + val infoElement = document.select("div.row").first() + + manga.author = infoElement.select("li a.btn-info").text() + manga.genre = infoElement.select("li a.btn-danger").joinToString { it.text() } + manga.status = parseStatus(infoElement.select("li a.btn-success").first().text().toLowerCase()) + manga.description = document.select("div.row ~ div.row p").text().trim() + manga.thumbnail_url = infoElement.select("img.thumbnail").attr("abs:src") + + return manga + } + + // languages: en, vi, tr + fun parseStatus(element: String): Int = when (element) { + "completed", "complete", "incomplete", "đã hoàn thành", "tamamlandı" -> SManga.COMPLETED + "ongoing", "on going", "updating", "chưa hoàn thành", "đang cập nhật", "devam ediyor" -> SManga.ONGOING + else -> SManga.UNKNOWN + } + + override fun chapterListSelector() = "div#list-chapters p, table.table tr" + + open val chapterUrlSelector = "a" + + open val chapterTimeSelector = "time" + + override fun chapterFromElement(element: Element): SChapter { + val chapter = SChapter.create() + + element.select(chapterUrlSelector).first().let{ + chapter.setUrlWithoutDomain(it.attr("abs:href")) + chapter.name = it.text() + } + chapter.date_upload = element.select(chapterTimeSelector).let{ if(it.hasText()) parseChapterDate(it.text()) else 0 } + + return chapter + } + + // gets the number from "1 day ago" + open val dateValueIndex = 0 + + // gets the unit of time (day, week hour) from "1 day ago" + open val dateWordIndex = 1 + + private fun parseChapterDate(date: String): Long { + val value = date.split(' ')[dateValueIndex].toInt() + val dateWord = date.split(' ')[dateWordIndex].let{ + if (it.contains("(")) { + it.substringBefore("(") + } else { + it.substringBefore("s") + } + } + + // languages: en, vi, es, tr + return when (dateWord) { + "min", "minute", "phút", "minuto", "dakika" -> Calendar.getInstance().apply { + add(Calendar.MINUTE, value * -1) + set(Calendar.SECOND, 0) + set(Calendar.MILLISECOND, 0) + }.timeInMillis + "hour", "giờ", "hora", "saat" -> Calendar.getInstance().apply { + add(Calendar.HOUR_OF_DAY, value * -1) + set(Calendar.SECOND, 0) + set(Calendar.MILLISECOND, 0) + }.timeInMillis + "day", "ngày", "día", "gün" -> Calendar.getInstance().apply { + add(Calendar.DATE, value * -1) + set(Calendar.SECOND, 0) + set(Calendar.MILLISECOND, 0) + }.timeInMillis + "week", "tuần", "semana", "hafta" -> Calendar.getInstance().apply { + add(Calendar.DATE, value * 7 * -1) + set(Calendar.SECOND, 0) + set(Calendar.MILLISECOND, 0) + }.timeInMillis + "month", "tháng", "mes", "ay" -> Calendar.getInstance().apply { + add(Calendar.MONTH, value * -1) + set(Calendar.SECOND, 0) + set(Calendar.MILLISECOND, 0) + }.timeInMillis + "year", "năm", "año", "yıl" -> Calendar.getInstance().apply { + add(Calendar.YEAR, value * -1) + set(Calendar.SECOND, 0) + set(Calendar.MILLISECOND, 0) + }.timeInMillis + else -> { + return 0 + } + } + } + + override fun pageListParse(document: Document): List { + val pages = mutableListOf() + + document.select("img.chapter-img").forEachIndexed { i, img -> + pages.add(Page(i, "", img.attr("abs:data-src").let{ if (it.isNotEmpty()) it else img.attr("abs:src") })) + } + return pages + } + + override fun imageUrlParse(document: Document): String = throw UnsupportedOperationException("Not used") + + private class TextField(name: String, val key: String) : Filter.Text(name) + private class Status : Filter.Select("Status", arrayOf("Any", "Completed", "Ongoing")) + private class GenreList(genres: List) : Filter.Group("Genre", genres) + class Genre(name: String, val id: String = name.replace(' ', '+')) : Filter.TriState(name) + private class SortBy : Filter.Sort("Sorted By", arrayOf("A-Z", "Most vỉews", "Last updated"), Selection(1, false)) + + // TODO: Country (leftover from original LHTranslation) + override fun getFilterList() = FilterList( + TextField("Author", "author"), + TextField("Group", "group"), + Status(), + SortBy(), + GenreList(getGenreList()) + ) + + // [...document.querySelectorAll("div.panel-body a")].map((el,i) => `Genre("${el.innerText.trim()}")`).join(',\n') + // on https://lhtranslation.net/search + open fun getGenreList() = listOf( + Genre("Action"), + Genre("18+"), + Genre("Adult"), + Genre("Anime"), + Genre("Comedy"), + Genre("Comic"), + Genre("Doujinshi"), + Genre("Drama"), + Genre("Ecchi"), + Genre("Fantasy"), + Genre("Gender Bender"), + Genre("Harem"), + Genre("Historical"), + Genre("Horror"), + Genre("Josei"), + Genre("Live action"), + Genre("Manhua"), + Genre("Manhwa"), + Genre("Martial Art"), + Genre("Mature"), + Genre("Mecha"), + Genre("Mystery"), + Genre("One shot"), + Genre("Psychological"), + Genre("Romance"), + Genre("School Life"), + Genre("Sci-fi"), + Genre("Seinen"), + Genre("Shoujo"), + Genre("Shojou Ai"), + Genre("Shounen"), + Genre("Shounen Ai"), + Genre("Slice of Life"), + Genre("Smut"), + Genre("Sports"), + Genre("Supernatural"), + Genre("Tragedy"), + Genre("Adventure"), + Genre("Yaoi") + ) + + // from manhwa18.com/search, removed a few that didn't return results/wouldn't be terribly useful + fun getAdultGenreList() = listOf( + Genre("18"), + Genre("Action"), + Genre("Adult"), + Genre("Adventure"), + Genre("Anime"), + Genre("Comedy"), + Genre("Comic"), + Genre("Doujinshi"), + Genre("Drama"), + Genre("Ecchi"), + Genre("Fantasy"), + Genre("Gender Bender"), + Genre("Harem"), + Genre("Historical"), + Genre("Horror"), + Genre("Josei"), + Genre("Live action"), + Genre("Magic"), + Genre("Manhua"), + Genre("Manhwa"), + Genre("Martial Arts"), + Genre("Mature"), + Genre("Mecha"), + Genre("Mystery"), + Genre("Oneshot"), + Genre("Psychological"), + Genre("Romance"), + Genre("School Life"), + Genre("Sci-fi"), + Genre("Seinen"), + Genre("Shoujo"), + Genre("Shoujo Ai"), + Genre("Shounen"), + Genre("Shounen Ai"), + Genre("Slice of life"), + Genre("Smut"), + Genre("Soft Yaoi"), + Genre("Soft Yuri"), + Genre("Sports"), + Genre("Supernatural"), + Genre("Tragedy"), + Genre("VnComic"), + Genre("Webtoon") + ) + + // taken from readcomiconline.org/search + fun getComicsGenreList() = listOf( + Genre("Action"), + Genre("Adventure"), + Genre("Anthology"), + Genre("Anthropomorphic"), + Genre("Biography"), + Genre("Children"), + Genre("Comedy"), + Genre("Crime"), + Genre("Drama"), + Genre("Family"), + Genre("Fantasy"), + Genre("Fighting"), + Genre("GraphicNovels"), + Genre("Historical"), + Genre("Horror"), + Genre("LeadingLadies"), + Genre("LGBTQ"), + Genre("Literature"), + Genre("Manga"), + Genre("MartialArts"), + Genre("Mature"), + Genre("Military"), + Genre("Mystery"), + Genre("Mythology"), + Genre("Personal"), + Genre("Political"), + Genre("Post-Apocalyptic"), + Genre("Psychological"), + Genre("Pulp"), + Genre("Religious"), + Genre("Robots"), + Genre("Romance"), + Genre("Schoollife"), + Genre("Sci-Fi"), + Genre("Sliceoflife"), + Genre("Sport"), + Genre("Spy"), + Genre("Superhero"), + Genre("Supernatural"), + Genre("Suspense"), + Genre("Thriller"), + Genre("Vampires"), + Genre("VideoGames"), + Genre("War"), + Genre("Western"), + Genre("Zombies") + ) +} diff --git a/src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReaderFactory.kt b/src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReaderFactory.kt new file mode 100644 index 000000000..30ba21472 --- /dev/null +++ b/src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReaderFactory.kt @@ -0,0 +1,242 @@ +package eu.kanade.tachiyomi.extension.all.fmreader + +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.POST +import eu.kanade.tachiyomi.network.asObservableSuccess +import eu.kanade.tachiyomi.source.Source +import eu.kanade.tachiyomi.source.SourceFactory +import eu.kanade.tachiyomi.source.model.* +import eu.kanade.tachiyomi.util.asJsoup +import okhttp3.* +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element +import rx.Observable + +class FMReaderFactory : SourceFactory { + override fun createSources(): List = listOf( + LHTranslation(), + MangaHato(), + ManhwaScan(), + MangaTiki(), + MangaBone(), + YoloManga(), + MangaLeer(), + AiLoveManga(), + ReadComicOnlineOrg(), + MangaWeek(), + HanaScan(), + RawLH(), + Manhwa18(), + TruyenTranhLH(), + EighteenLHPlus(), + MangaTR(), + Comicastle() + ) +} + +/** For future sources: when testing and popularMangaRequest() returns a Jsoup error instead of results + * most likely the fix is to override popularMangaNextPageSelector() */ + +class LHTranslation : FMReader("LHTranslation", "https://lhtranslation.net", "en") +class MangaHato : FMReader("MangaHato", "https://mangahato.com", "ja") +class ManhwaScan : FMReader("ManhwaScan", "https://manhwascan.com", "en") +class MangaTiki : FMReader("MangaTiki", "https://mangatiki.com", "ja") +class MangaBone : FMReader("MangaBone", "https://mangabone.com", "en") +class YoloManga : FMReader("Yolo Manga", "https://yolomanga.ca", "es") { + override fun chapterListSelector() = "div#tab-chapper ~ div#tab-chapper table tr" +} +class MangaLeer : FMReader("MangaLeer", "https://mangaleer.com", "es") { + override val dateValueIndex = 1 + override val dateWordIndex = 2 +} +class AiLoveManga : FMReader("AiLoveManga", "https://ailovemanga.com", "vi") { + override val requestPath = "danh-sach-truyen.html" + // TODO: could add a genre search (different URL paths for genres) + override fun getFilterList() = FilterList() + // I don't know why, but I have to override searchMangaRequest to make it work for this source + override fun searchMangaRequest(page: Int, query: String, filters: FilterList) = GET("$baseUrl/$requestPath?name=$query&page=$page") + override fun chapterListSelector() = "div#tab-chapper table tr" + override fun mangaDetailsParse(document: Document): SManga { + val manga = SManga.create() + val infoElement = document.select("div.container:has(img)").first() + + manga.author = infoElement.select("a.btn-info").first().text() + manga.artist = infoElement.select("a.btn-info + a").text() + manga.genre = infoElement.select("a.btn-danger").joinToString { it.text() } + manga.status = parseStatus(infoElement.select("a.btn-success").text().toLowerCase()) + manga.description = document.select("div.col-sm-8 p").text().trim() + manga.thumbnail_url = infoElement.select("img").attr("abs:src") + + return manga + } +} +class ReadComicOnlineOrg : FMReader("ReadComicOnline.org", "https://readcomiconline.org", "en") { + override val client: OkHttpClient = network.cloudflareClient.newBuilder() + .addInterceptor { requestIntercept(it) } + .build() + private fun requestIntercept(chain: Interceptor.Chain): Response { + val request = chain.request() + val response = chain.proceed(request) + + return if (response.headers("set-cookie").isNotEmpty()) { + val body = FormBody.Builder() + .add("dqh_firewall", "%2F") + .build() + val cookie = mutableListOf() + response.headers("set-cookie").map{ cookie.add(it.substringBefore(" ")) } + headers.newBuilder().add("Cookie", cookie.joinToString { " " }).build() + client.newCall(POST(request.url().toString(), headers, body)).execute() + } else { + response + } + } + override val requestPath = "comic-list.html" + override fun pageListParse(document: Document): List { + val pages = mutableListOf() + + document.select("div#divImage > select:first-of-type option").forEachIndexed{ i, imgPage -> + pages.add(Page(i, imgPage.attr("value"), "")) + } + return pages.dropLast(1) // last page is a comments page + } + override fun imageUrlRequest(page: Page): Request = GET(baseUrl + page.url, headers) + override fun imageUrlParse(document: Document): String = document.select("img.chapter-img").attr("abs:src").trim() + override fun getGenreList() = getComicsGenreList() +} +class MangaWeek : FMReader("MangaWeek", "https://mangaweek.com", "en") +class HanaScan : FMReader("HanaScan (RawQQ)", "http://rawqq.com", "ja") { + override fun popularMangaNextPageSelector() = "div.col-md-8 button" +} +class RawLH : FMReader("RawLH", "https://lhscan.net", "ja") { + override fun popularMangaNextPageSelector() = "div.col-md-8 button" +} +class Manhwa18 : FMReader("Manhwa18", "https://manhwa18.com", "en") { + override fun getGenreList() = getAdultGenreList() +} +class TruyenTranhLH : FMReader("TruyenTranhLH", "https://truyentranhlh.net", "vi") { + override val requestPath = "danh-sach-truyen.html" +} +class EighteenLHPlus : FMReader("18LHPlus", "https://18lhplus.com", "en") { + override fun getGenreList() = getAdultGenreList() +} +class MangaTR : FMReader("Manga-TR", "https://manga-tr.com", "tr") { + override fun popularMangaNextPageSelector() = "div.btn-group:not(div.btn-block) button.btn-info" + // TODO: genre search possible but a bit of a pain + override fun getFilterList() = FilterList() + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request = GET("$baseUrl/arama.html?icerik=$query", headers) + override fun searchMangaParse(response: Response): MangasPage { + val mangas = mutableListOf() + + response.asJsoup().select("div.row a[data-toggle]") + .filterNot { it.siblingElements().text().contains("Novel") } + .map { mangas.add(searchMangaFromElement(it)) } + + return MangasPage(mangas, false) + } + override fun searchMangaFromElement(element: Element): SManga { + val manga = SManga.create() + + manga.setUrlWithoutDomain(element.attr("abs:href")) + manga.title = element.text() + + return manga + } + override fun mangaDetailsParse(document: Document): SManga { + val manga = SManga.create() + val infoElement = document.select("div#tab1").first() + + manga.author = infoElement.select("table + table tr + tr td a").first()?.text() + manga.artist = infoElement.select("table + table tr + tr td + td a").first()?.text() + manga.genre = infoElement.select("div#tab1 table + table tr + tr td + td + td").text() + manga.status = parseStatus(infoElement.select("div#tab1 table tr + tr td a").first().text().toLowerCase()) + manga.description = infoElement.select("div.well").text().trim() + manga.thumbnail_url = document.select("img.thumbnail").attr("abs:src") + + return manga + } + override fun chapterListSelector() = "tr.table-bordered" + override val chapterUrlSelector = "td[align=left] > a" + override val chapterTimeSelector = "td[align=right]" + private val chapterListHeaders = headers.newBuilder().add("X-Requested-With", "XMLHttpRequest").build() + override fun fetchChapterList(manga: SManga): Observable> { + return if (manga.status != SManga.LICENSED) { + val requestUrl = "$baseUrl/cek/fetch_pages_manga.php?manga_cek=${manga.url.substringAfter("manga-").substringBefore(".")}" + client.newCall(GET(requestUrl, chapterListHeaders)) + .asObservableSuccess() + .map { response -> + chapterListParse(response, requestUrl) + } + } else { + Observable.error(Exception("Licensed - No chapters to show")) + } + } + private fun chapterListParse(response: Response, requestUrl: String): List { + val chapters = mutableListOf() + var document = response.asJsoup() + var moreChapters = true + var nextPage = 2 + + // chapters are paginated + while (moreChapters) { + document.select(chapterListSelector()).map{ chapters.add(chapterFromElement(it)) } + if (document.select("a[data-page=$nextPage]").isNotEmpty()) { + val body = FormBody.Builder() + .add("page", nextPage.toString()) + .build() + document = client.newCall(POST(requestUrl, chapterListHeaders, body)).execute().asJsoup() + nextPage++ + } else { + moreChapters = false + } + } + return chapters + } + override fun pageListRequest(chapter: SChapter): Request = GET("$baseUrl/${chapter.url.substringAfter("cek/")}", headers) + override fun pageListParse(document: Document): List { + val pages = mutableListOf() + + document.select("div.chapter-content select:first-of-type option").forEachIndexed{ i, imgPage -> + pages.add(Page(i, "$baseUrl/${imgPage.attr("value")}", "")) + } + return pages.dropLast(1) // last page is a comments page + } + override fun imageUrlParse(document: Document): String = document.select("img.chapter-img").attr("abs:src").trim() +} +class Comicastle : FMReader("Comicastle", "https://www.comicastle.org", "en") { + override val requestPath = "comic-dir" + // this source doesn't have the "page x of y" element + override fun popularMangaNextPageSelector() = "li:contains(»)" + override fun popularMangaParse(response: Response) = defaultMangaParse(response) + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request = GET("$baseUrl/comic-dir?q=$query", headers) + override fun searchMangaParse(response: Response): MangasPage = defaultMangaParse(response) + override fun getFilterList() = FilterList() + override fun mangaDetailsParse(document: Document): SManga { + val manga = SManga.create() + val infoElement = document.select("div.col-md-9").first() + + manga.author = infoElement.select("tr + tr td a").first().text() + manga.artist = infoElement.select("tr + tr td + td a").text() + manga.genre = infoElement.select("tr + tr td + td + td").text() + manga.description = infoElement.select("p").text().trim() + manga.thumbnail_url = document.select("img.manga-cover").attr("abs:src") + + return manga + } + override fun chapterListSelector() = "div.col-md-9 table:last-of-type tr" + override fun chapterListParse(response: Response): List = super.chapterListParse(response).reversed() + override fun pageListParse(document: Document): List { + val pages = mutableListOf() + + document.select("div.text-center select option").forEachIndexed{ i, imgPage -> + pages.add(Page(i, imgPage.attr("value"), "")) + } + return pages + } + override fun imageUrlParse(document: Document): String = document.select("img.chapter-img").attr("abs:src").trim() + override fun getGenreList() = getComicsGenreList() +} + + + + +