NineManga: use SourceFactory
This commit is contained in:
parent
b81d7ad2aa
commit
c547da3714
@ -4,8 +4,8 @@ apply plugin: 'kotlin-android'
|
||||
ext {
|
||||
appName = 'Tachiyomi: NineManga'
|
||||
pkgNameSuffix = "all.ninemanga"
|
||||
extClass = '.NineMangaEs; .NineMangaBr; .NineMangaEn; .NineMangaRu; .NineMangaDe; .NineMangaIt; .NineMangaFr'
|
||||
extVersionCode = 6
|
||||
extClass = '.NineMangaFactory'
|
||||
extVersionCode = 7
|
||||
libVersion = '1.2'
|
||||
}
|
||||
|
||||
|
@ -1,27 +1,32 @@
|
||||
package eu.kanade.tachiyomi.extension.all.ninemanga
|
||||
|
||||
import eu.kanade.tachiyomi.source.model.*
|
||||
import okhttp3.Request
|
||||
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.HttpUrl
|
||||
import okhttp3.Request
|
||||
import org.jsoup.nodes.Document
|
||||
import org.jsoup.nodes.Element
|
||||
import java.text.ParseException
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
import java.util.Calendar
|
||||
import java.util.Locale
|
||||
|
||||
open class NineManga(override val name: String, override val baseUrl: String, override val lang: String) : ParsedHttpSource() {
|
||||
|
||||
override val supportsLatest: Boolean = true
|
||||
|
||||
private fun newHeaders() = super.headersBuilder()
|
||||
.add("Accept-Language", "es-ES,es;q=0.9,en;q=0.8,gl;q=0.7")
|
||||
.add("Host", baseUrl.substringAfterLast("/")) // like: es.ninemanga.com
|
||||
.add("Connection", "keep-alive")
|
||||
.add("Upgrade-Insecure-Requests", "1")
|
||||
.add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) Gecko/20100101 Firefox/60")
|
||||
.build()
|
||||
.add("Accept-Language", "es-ES,es;q=0.9,en;q=0.8,gl;q=0.7")
|
||||
.add("Host", baseUrl.substringAfterLast("/")) // like: es.ninemanga.com
|
||||
.add("Connection", "keep-alive")
|
||||
.add("Upgrade-Insecure-Requests", "1")
|
||||
.add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) Gecko/20100101 Firefox/60")
|
||||
.build()
|
||||
|
||||
override fun latestUpdatesRequest(page: Int) = GET("$baseUrl/list/New-Update/", headers) // "$baseUrl/category/updated_$page.html"
|
||||
|
||||
@ -45,7 +50,7 @@ open class NineManga(override val name: String, override val baseUrl: String, ov
|
||||
|
||||
override fun popularMangaNextPageSelector() = latestUpdatesNextPageSelector()
|
||||
|
||||
override fun mangaDetailsParse(document: Document) = SManga.create().apply {
|
||||
override fun mangaDetailsParse(document: Document) = SManga.create().apply {
|
||||
document.select("div.bookintro").let {
|
||||
title = it.select("li > span:not([class])").text()
|
||||
genre = it.select("li[itemprop=genre] a").joinToString { e -> e.text() }
|
||||
@ -80,13 +85,13 @@ open class NineManga(override val name: String, override val baseUrl: String, ov
|
||||
val dateWords = date.split(" ")
|
||||
|
||||
if (dateWords.size == 3) {
|
||||
if(dateWords[1].contains(",")){
|
||||
try {
|
||||
return SimpleDateFormat("MMM d, yyyy", Locale.ENGLISH).parse(date).time
|
||||
if (dateWords[1].contains(",")) {
|
||||
return try {
|
||||
SimpleDateFormat("MMM d, yyyy", Locale.ENGLISH).parse(date).time
|
||||
} catch (e: ParseException) {
|
||||
return 0L
|
||||
0L
|
||||
}
|
||||
}else {
|
||||
} else {
|
||||
val timeAgo = Integer.parseInt(dateWords[0])
|
||||
return Calendar.getInstance().apply {
|
||||
when (dateWords[1]) {
|
||||
@ -128,8 +133,8 @@ open class NineManga(override val name: String, override val baseUrl: String, ov
|
||||
when (filter) {
|
||||
is GenreList -> {
|
||||
filter.state
|
||||
.filter { genre -> genre.state }
|
||||
.forEach { genre -> url.addQueryParameter("category_id", genre.id) }
|
||||
.filter { genre -> genre.state }
|
||||
.forEach { genre -> url.addQueryParameter("category_id", genre.id) }
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -147,76 +152,76 @@ open class NineManga(override val name: String, override val baseUrl: String, ov
|
||||
open class GenreList(genres: List<Genre>) : Filter.Group<Genre>("Genre", genres)
|
||||
|
||||
override fun getFilterList() = FilterList(
|
||||
GenreList(getGenreList())
|
||||
GenreList(getGenreList())
|
||||
)
|
||||
|
||||
// $(document.querySelectorAll('.optionbox .typelist:nth-child(3) ul li.cate_list')).map((i, el)=>`Genre("${$(el).first().text().trim()}","${$(el).attr("cate_id")}")`).get().sort().join(",\n")
|
||||
// $(document.querySelectorAll('.optionbox .typelist:nth-child(3) ul li.cate_list')).map((i, el)=>`Genre("${$(el).first().text().trim()}", "${$(el).attr("cate_id")}")`).get().sort().join(",\n")
|
||||
// http://en.ninemanga.com/search/?type=high
|
||||
open fun getGenreList() = listOf(
|
||||
Genre("4-Koma","56"),
|
||||
Genre("Action","1"),
|
||||
Genre("Adventure","2"),
|
||||
Genre("Anime","3"),
|
||||
Genre("Award Winning","59"),
|
||||
Genre("Bara","84"),
|
||||
Genre("Comedy","4"),
|
||||
Genre("Cooking","5"),
|
||||
Genre("Crime","132"),
|
||||
Genre("Demons","49"),
|
||||
Genre("Doujinshi","45"),
|
||||
Genre("Drama","6"),
|
||||
Genre("Fantasy","8"),
|
||||
Genre("Game","126"),
|
||||
Genre("Gender Bender","9"),
|
||||
Genre("Historical","11"),
|
||||
Genre("Horror","12"),
|
||||
Genre("Isekai","127"),
|
||||
Genre("Josei","13"),
|
||||
Genre("Live Action","14"),
|
||||
Genre("Magic","47"),
|
||||
Genre("Magical Girls","130"),
|
||||
Genre("Manhua","15"),
|
||||
Genre("Manhwa","16"),
|
||||
Genre("Martial Arts","17"),
|
||||
Genre("Matsumoto Tomokicomedy","37"),
|
||||
Genre("Mecha","18"),
|
||||
Genre("Medical","19"),
|
||||
Genre("Military","51"),
|
||||
Genre("Music","20"),
|
||||
Genre("Mystery","21"),
|
||||
Genre("N/A","54"),
|
||||
Genre("None","64"),
|
||||
Genre("One Shot","22"),
|
||||
Genre("Oneshot","57"),
|
||||
Genre("Philosophical","133"),
|
||||
Genre("Psychological","23"),
|
||||
Genre("Reverse Harem","55"),
|
||||
Genre("Romance Shoujo","38"),
|
||||
Genre("Romance","24"),
|
||||
Genre("School Life","25"),
|
||||
Genre("Sci-Fi","26"),
|
||||
Genre("Seinen","27"),
|
||||
Genre("Shoujo Ai","44"),
|
||||
Genre("Shoujo","28"),
|
||||
Genre("Shoujo-Ai","29"),
|
||||
Genre("Shoujoai","48"),
|
||||
Genre("Shounen Ai","42"),
|
||||
Genre("Shounen","30"),
|
||||
Genre("Shounen-Ai","31"),
|
||||
Genre("Shounenai","46"),
|
||||
Genre("Slice Of Life","32"),
|
||||
Genre("Sports","33"),
|
||||
Genre("Staff Pick","60"),
|
||||
Genre("Super Power","62"),
|
||||
Genre("Superhero","131"),
|
||||
Genre("Supernatural","34"),
|
||||
Genre("Suspense","53"),
|
||||
Genre("Thriller","129"),
|
||||
Genre("Tragedy","35"),
|
||||
Genre("Vampire","52"),
|
||||
Genre("Webtoon","58"),
|
||||
Genre("Webtoons","50"),
|
||||
Genre("Wuxia","128"),
|
||||
Genre("[No Chapters]","61")
|
||||
Genre("4-Koma", "56"),
|
||||
Genre("Action", "1"),
|
||||
Genre("Adventure", "2"),
|
||||
Genre("Anime", "3"),
|
||||
Genre("Award Winning", "59"),
|
||||
Genre("Bara", "84"),
|
||||
Genre("Comedy", "4"),
|
||||
Genre("Cooking", "5"),
|
||||
Genre("Crime", "132"),
|
||||
Genre("Demons", "49"),
|
||||
Genre("Doujinshi", "45"),
|
||||
Genre("Drama", "6"),
|
||||
Genre("Fantasy", "8"),
|
||||
Genre("Game", "126"),
|
||||
Genre("Gender Bender", "9"),
|
||||
Genre("Historical", "11"),
|
||||
Genre("Horror", "12"),
|
||||
Genre("Isekai", "127"),
|
||||
Genre("Josei", "13"),
|
||||
Genre("Live Action", "14"),
|
||||
Genre("Magic", "47"),
|
||||
Genre("Magical Girls", "130"),
|
||||
Genre("Manhua", "15"),
|
||||
Genre("Manhwa", "16"),
|
||||
Genre("Martial Arts", "17"),
|
||||
Genre("Matsumoto Tomokicomedy", "37"),
|
||||
Genre("Mecha", "18"),
|
||||
Genre("Medical", "19"),
|
||||
Genre("Military", "51"),
|
||||
Genre("Music", "20"),
|
||||
Genre("Mystery", "21"),
|
||||
Genre("N/A", "54"),
|
||||
Genre("None", "64"),
|
||||
Genre("One Shot", "22"),
|
||||
Genre("Oneshot", "57"),
|
||||
Genre("Philosophical", "133"),
|
||||
Genre("Psychological", "23"),
|
||||
Genre("Reverse Harem", "55"),
|
||||
Genre("Romance Shoujo", "38"),
|
||||
Genre("Romance", "24"),
|
||||
Genre("School Life", "25"),
|
||||
Genre("Sci-Fi", "26"),
|
||||
Genre("Seinen", "27"),
|
||||
Genre("Shoujo Ai", "44"),
|
||||
Genre("Shoujo", "28"),
|
||||
Genre("Shoujo-Ai", "29"),
|
||||
Genre("Shoujoai", "48"),
|
||||
Genre("Shounen Ai", "42"),
|
||||
Genre("Shounen", "30"),
|
||||
Genre("Shounen-Ai", "31"),
|
||||
Genre("Shounenai", "46"),
|
||||
Genre("Slice Of Life", "32"),
|
||||
Genre("Sports", "33"),
|
||||
Genre("Staff Pick", "60"),
|
||||
Genre("Super Power", "62"),
|
||||
Genre("Superhero", "131"),
|
||||
Genre("Supernatural", "34"),
|
||||
Genre("Suspense", "53"),
|
||||
Genre("Thriller", "129"),
|
||||
Genre("Tragedy", "35"),
|
||||
Genre("Vampire", "52"),
|
||||
Genre("Webtoon", "58"),
|
||||
Genre("Webtoons", "50"),
|
||||
Genre("Wuxia", "128"),
|
||||
Genre("[No Chapters]", "61")
|
||||
)
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user