parent
9db6152418
commit
2805da863a
|
@ -1,21 +1,41 @@
|
||||||
package eu.kanade.tachiyomi.extension.ja.manga1000
|
package eu.kanade.tachiyomi.extension.ja.manga1000
|
||||||
|
|
||||||
import eu.kanade.tachiyomi.multisrc.fmreader.FMReader
|
import eu.kanade.tachiyomi.multisrc.fmreader.FMReader
|
||||||
|
import eu.kanade.tachiyomi.network.GET
|
||||||
|
import eu.kanade.tachiyomi.network.asObservableSuccess
|
||||||
|
import eu.kanade.tachiyomi.source.model.Page
|
||||||
import eu.kanade.tachiyomi.source.model.SChapter
|
import eu.kanade.tachiyomi.source.model.SChapter
|
||||||
import org.jsoup.nodes.Element
|
import eu.kanade.tachiyomi.source.model.SManga
|
||||||
|
import eu.kanade.tachiyomi.util.asJsoup
|
||||||
|
import okhttp3.Request
|
||||||
|
import org.jsoup.nodes.Document
|
||||||
|
import rx.Observable
|
||||||
import java.util.Calendar
|
import java.util.Calendar
|
||||||
|
|
||||||
class Manga1000 : FMReader("Manga1000", "https://manga1000.top", "ja") {
|
class Manga1000 : FMReader("Manga1000", "https://manga1000.top", "ja") {
|
||||||
override fun chapterFromElement(element: Element, mangaTitle: String): SChapter {
|
// source is picky about URL format
|
||||||
return SChapter.create().apply {
|
private fun mangaRequest(sortBy: String, page: Int): Request {
|
||||||
element.let {
|
return GET("$baseUrl/manga-list.html?listType=pagination&page=$page&artist=&author=&group=&m_status=&name=&genre=&ungenre=&magazine=&sort=$sortBy&sort_type=DESC", headers)
|
||||||
setUrlWithoutDomain(it.attr("abs:href"))
|
}
|
||||||
name = it.attr("title")
|
|
||||||
}
|
|
||||||
|
|
||||||
date_upload = element.select(chapterTimeSelector)
|
override fun popularMangaRequest(page: Int): Request = mangaRequest("views", page)
|
||||||
.let { if (it.hasText()) parseChapterDate(it.text()) else 0 }
|
|
||||||
}
|
override fun latestUpdatesRequest(page: Int): Request = mangaRequest("last_update", page)
|
||||||
|
|
||||||
|
override fun fetchChapterList(manga: SManga): Observable<List<SChapter>> {
|
||||||
|
val slug = manga.url.substringAfter("manga-").substringBefore(".html")
|
||||||
|
|
||||||
|
return client.newCall(GET("$baseUrl/app/manga/controllers/cont.Listchapterapi.php?slug=$slug", headers))
|
||||||
|
.asObservableSuccess()
|
||||||
|
.map { res ->
|
||||||
|
res.asJsoup().select(".at-series a").map {
|
||||||
|
SChapter.create().apply {
|
||||||
|
name = it.select(".chapter-name").text()
|
||||||
|
url = it.attr("abs:href").substringAfter("controllers")
|
||||||
|
date_upload = parseChapterDate(it.select(".chapter-time").text())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun parseChapterDate(date: String): Long {
|
private fun parseChapterDate(date: String): Long {
|
||||||
|
@ -37,4 +57,18 @@ class Manga1000 : FMReader("Manga1000", "https://manga1000.top", "ja") {
|
||||||
|
|
||||||
return chapterDate.timeInMillis
|
return chapterDate.timeInMillis
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun pageListParse(document: Document): List<Page> {
|
||||||
|
return document.select("script:containsData(imgsListchap)")
|
||||||
|
.html()
|
||||||
|
.substringAfter("(")
|
||||||
|
.substringBefore(",")
|
||||||
|
.let { cid ->
|
||||||
|
client.newCall(GET("$baseUrl/app/manga/controllers/cont.imgsList.php?cid=$cid", headers)).execute().asJsoup()
|
||||||
|
}
|
||||||
|
.select(".lazyload")
|
||||||
|
.mapIndexed { i, e ->
|
||||||
|
Page(i, "", e.attr("abs:data-src"))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,6 +53,7 @@ abstract class FMReader(
|
||||||
element.hasAttr("data-src") -> element.attr("abs:data-src")
|
element.hasAttr("data-src") -> element.attr("abs:data-src")
|
||||||
element.hasAttr("data-bg") -> element.attr("abs:data-bg")
|
element.hasAttr("data-bg") -> element.attr("abs:data-bg")
|
||||||
element.hasAttr("data-srcset") -> element.attr("abs:data-srcset")
|
element.hasAttr("data-srcset") -> element.attr("abs:data-srcset")
|
||||||
|
element.hasAttr("style") -> element.attr("style").substringAfter("(").substringBefore(")")
|
||||||
else -> element.attr("abs:src")
|
else -> element.attr("abs:src")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ class FMReaderGenerator : ThemeSourceGenerator {
|
||||||
|
|
||||||
override val themeClass = "FMReader"
|
override val themeClass = "FMReader"
|
||||||
|
|
||||||
override val baseVersionCode: Int = 8
|
override val baseVersionCode: Int = 9
|
||||||
|
|
||||||
override val sources = listOf(
|
override val sources = listOf(
|
||||||
SingleLang("KissLove", "https://klz9.com", "ja", isNsfw = true, overrideVersionCode = 4),
|
SingleLang("KissLove", "https://klz9.com", "ja", isNsfw = true, overrideVersionCode = 4),
|
||||||
|
|
Loading…
Reference in New Issue