From 31c0888972ae95a94dcfd9a9dbc873cd1bcbd47b Mon Sep 17 00:00:00 2001 From: Mike <51273546+SnakeDoc83@users.noreply.github.com> Date: Tue, 28 Apr 2020 08:22:29 -0400 Subject: [PATCH] FMReader - add Epik Manga (#2895) FMReader - add Epik Manga --- src/all/fmreader/build.gradle | 2 +- .../extension/all/fmreader/FMReader.kt | 2 +- .../extension/all/fmreader/FMReaderFactory.kt | 43 ++++++++++++++++++- 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/src/all/fmreader/build.gradle b/src/all/fmreader/build.gradle index 429c35efb..36b438780 100644 --- a/src/all/fmreader/build.gradle +++ b/src/all/fmreader/build.gradle @@ -5,7 +5,7 @@ ext { appName = 'Tachiyomi: FMReader (multiple aggregators)' pkgNameSuffix = 'all.fmreader' extClass = '.FMReaderFactory' - extVersionCode = 10 + extVersionCode = 11 libVersion = '1.2' } 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 index dd101bac4..c6b264944 100644 --- 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 @@ -37,7 +37,7 @@ abstract class FMReader( add("Referer", baseUrl) } - private fun Elements.imgAttr(): String? = getImgAttr(this.firstOrNull()) + protected fun Elements.imgAttr(): String? = getImgAttr(this.firstOrNull()) private fun Element.imgAttr(): String? = getImgAttr(this) 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 index b97674f81..d4970ea1b 100644 --- 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 @@ -40,7 +40,8 @@ class FMReaderFactory : SourceFactory { Manhwa18Net(), Manhwa18NetRaw(), MangaBorn(), - SayTruyen() + SayTruyen(), + EpikManga() ) } @@ -324,3 +325,43 @@ class SayTruyen : FMReader("Say Truyen", "https://saytruyen.com", "vi") { } override fun pageListParse(document: Document): List = super.pageListParse(document).onEach { it.imageUrl!!.trim() } } + +class EpikManga : FMReader("Epik Manga", "https://www.epikmanga.com", "tr") { + override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/seri-listesi?sorting=views&sorting-type=DESC&Sayfa=$page", headers) + override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/seri-listesi?sorting=lastUpdate&sorting-type=DESC&Sayfa=$page", headers) + override fun popularMangaNextPageSelector() = "ul.pagination li.active + li:not(.disabled)" + // search wasn't working on source's website + override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable { + return client.newCall(searchMangaRequest(page, query, filters)) + .asObservableSuccess() + .map { response -> + searchMangaParse(response, query) + } + } + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request = GET("$baseUrl/seri-listesi?type=text", headers) + private fun searchMangaParse(response: Response, query: String): MangasPage { + val mangas = response.asJsoup().select("div.char.col-lg-4 a") + .filter { it.text().contains(query, ignoreCase = true) } + .map { + SManga.create().apply { + setUrlWithoutDomain(it.attr("href")) + title = it.text() + } + } + return MangasPage(mangas, false) + } + override fun mangaDetailsParse(document: Document): SManga { + val infoElement = document.select("div.col-md-9 div.row").first() + + return SManga.create().apply { + status = parseStatus(infoElement.select("h4:contains(Durum:)").firstOrNull()?.ownText()) + author = infoElement.select("h4:contains(Yazar:)").firstOrNull()?.ownText() + artist = infoElement.select("h4:contains(Çizer:)").firstOrNull()?.ownText() + genre = infoElement.select("h4:contains(Türler:) a").joinToString { it.text() } + thumbnail_url = infoElement.select("img.thumbnail").imgAttr() + description = document.select("div.col-md-12 p").text() + } + } + override fun chapterListSelector() = "table.table tbody tr" + override fun getFilterList(): FilterList = FilterList() +}