Ninemanga fixes (#1619)
* NineManga - special characters fix * Change searches with an apostrophe
This commit is contained in:
parent
e5b4c01cd2
commit
d4014338fe
|
@ -5,7 +5,7 @@ ext {
|
||||||
appName = 'Tachiyomi: NineManga'
|
appName = 'Tachiyomi: NineManga'
|
||||||
pkgNameSuffix = "all.ninemanga"
|
pkgNameSuffix = "all.ninemanga"
|
||||||
extClass = '.NineMangaEs; .NineMangaBr; .NineMangaEn; .NineMangaRu; .NineMangaDe; .NineMangaIt; .NineMangaFr'
|
extClass = '.NineMangaEs; .NineMangaBr; .NineMangaEn; .NineMangaRu; .NineMangaDe; .NineMangaIt; .NineMangaFr'
|
||||||
extVersionCode = 5
|
extVersionCode = 6
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,14 +25,14 @@ open class NineManga(override val name: String, override val baseUrl: String, ov
|
||||||
|
|
||||||
override fun latestUpdatesRequest(page: Int) = GET("$baseUrl/list/New-Update/", headers) // "$baseUrl/category/updated_$page.html"
|
override fun latestUpdatesRequest(page: Int) = GET("$baseUrl/list/New-Update/", headers) // "$baseUrl/category/updated_$page.html"
|
||||||
|
|
||||||
override fun latestUpdatesSelector() = "ul.direlist > li"
|
override fun latestUpdatesSelector() = "dl.bookinfo"
|
||||||
|
|
||||||
override fun latestUpdatesFromElement(element: Element) = SManga.create().apply {
|
override fun latestUpdatesFromElement(element: Element) = SManga.create().apply {
|
||||||
element.select("dl.bookinfo").let {
|
element.select("a.bookname").let {
|
||||||
setUrlWithoutDomain(it.select("dd > a.bookname").attr("href") + "?waring=1") // To removes warning message and shows chapter list.
|
url = it.attr("href").substringAfter(baseUrl)
|
||||||
title = it.select("dd > a.bookname").first().text()
|
title = it.text()
|
||||||
thumbnail_url = it.select("dt > a > img").attr("src")
|
|
||||||
}
|
}
|
||||||
|
thumbnail_url = element.select("img").attr("abs:src")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun latestUpdatesNextPageSelector() = "ul.pageList > li:last-child > a.l"
|
override fun latestUpdatesNextPageSelector() = "ul.pageList > li:last-child > a.l"
|
||||||
|
@ -47,14 +47,12 @@ open class NineManga(override val name: String, override val baseUrl: String, ov
|
||||||
|
|
||||||
override fun mangaDetailsParse(document: Document) = SManga.create().apply {
|
override fun mangaDetailsParse(document: Document) = SManga.create().apply {
|
||||||
document.select("div.bookintro").let {
|
document.select("div.bookintro").let {
|
||||||
thumbnail_url = document.select("a.bookface > img").attr("src")
|
title = it.select("li > span:not([class])").text()
|
||||||
genre = document.select("li[itemprop=genre] > a").joinToString(", ") {
|
genre = it.select("li[itemprop=genre] a").joinToString { e -> e.text() }
|
||||||
it.text()
|
author = it.select("li a[itemprop=author]").text()
|
||||||
}
|
status = parseStatus(it.select("li a.red").first().text())
|
||||||
author = it.select("a[itemprop=author]").text()
|
description = it.select("p[itemprop=description]").text()
|
||||||
artist = ""
|
thumbnail_url = it.select("img[itemprop=image]").attr("abs:src")
|
||||||
description = it.select("p[itemprop=description]").text().orEmpty()
|
|
||||||
status = parseStatus(it.select("a.red").first().text().orEmpty())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,12 +62,16 @@ open class NineManga(override val name: String, override val baseUrl: String, ov
|
||||||
else -> SManga.UNKNOWN
|
else -> SManga.UNKNOWN
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun chapterListRequest(manga: SManga): Request {
|
||||||
|
return GET(baseUrl + manga.url + "?waring=1", headers) // Bypasses adult content warning
|
||||||
|
}
|
||||||
|
|
||||||
override fun chapterListSelector() = "ul.sub_vol_ul > li"
|
override fun chapterListSelector() = "ul.sub_vol_ul > li"
|
||||||
|
|
||||||
override fun chapterFromElement(element: Element) = SChapter.create().apply {
|
override fun chapterFromElement(element: Element) = SChapter.create().apply {
|
||||||
element.select("a.chapter_list_a").let {
|
element.select("a.chapter_list_a").let {
|
||||||
name = it.text()
|
name = it.text()
|
||||||
setUrlWithoutDomain(it.attr("href"))
|
url = it.attr("href").substringAfter(baseUrl).replace("%20", " ")
|
||||||
}
|
}
|
||||||
date_upload = parseChapterDate(element.select("span").text())
|
date_upload = parseChapterDate(element.select("span").text())
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,9 @@ package eu.kanade.tachiyomi.extension.all.ninemanga
|
||||||
|
|
||||||
import eu.kanade.tachiyomi.source.Source
|
import eu.kanade.tachiyomi.source.Source
|
||||||
import eu.kanade.tachiyomi.source.SourceFactory
|
import eu.kanade.tachiyomi.source.SourceFactory
|
||||||
|
import eu.kanade.tachiyomi.source.model.FilterList
|
||||||
import eu.kanade.tachiyomi.source.model.SManga
|
import eu.kanade.tachiyomi.source.model.SManga
|
||||||
|
import okhttp3.Request
|
||||||
import java.text.ParseException
|
import java.text.ParseException
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
@ -26,6 +28,11 @@ fun getAllNineManga(): List<Source> {
|
||||||
class NineMangaEn : NineManga("NineMangaEn", "http://en.ninemanga.com", "en")
|
class NineMangaEn : NineManga("NineMangaEn", "http://en.ninemanga.com", "en")
|
||||||
|
|
||||||
class NineMangaEs : NineManga("NineMangaEs", "http://es.ninemanga.com", "es") {
|
class NineMangaEs : NineManga("NineMangaEs", "http://es.ninemanga.com", "es") {
|
||||||
|
// ES, FR, RU don't return results for searches with an apostrophe
|
||||||
|
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
||||||
|
return super.searchMangaRequest(page, query.substringBefore("\'"), filters)
|
||||||
|
}
|
||||||
|
|
||||||
override fun parseStatus(status: String) = when {
|
override fun parseStatus(status: String) = when {
|
||||||
status.contains("En curso") -> SManga.ONGOING
|
status.contains("En curso") -> SManga.ONGOING
|
||||||
status.contains("Completado") -> SManga.COMPLETED
|
status.contains("Completado") -> SManga.COMPLETED
|
||||||
|
@ -248,6 +255,11 @@ class NineMangaBr : NineManga("NineMangaBr", "http://br.ninemanga.com", "pt") {
|
||||||
}
|
}
|
||||||
|
|
||||||
class NineMangaRu : NineManga("NineMangaRu", "http://ru.ninemanga.com", "ru") {
|
class NineMangaRu : NineManga("NineMangaRu", "http://ru.ninemanga.com", "ru") {
|
||||||
|
// ES, FR, RU don't return results for searches with an apostrophe
|
||||||
|
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
||||||
|
return super.searchMangaRequest(page, query.substringBefore("\'"), filters)
|
||||||
|
}
|
||||||
|
|
||||||
override fun parseStatus(status: String) = when {
|
override fun parseStatus(status: String) = when {
|
||||||
// No Ongoing status
|
// No Ongoing status
|
||||||
status.contains("завершенный") -> SManga.COMPLETED
|
status.contains("завершенный") -> SManga.COMPLETED
|
||||||
|
@ -430,6 +442,11 @@ class NineMangaIt : NineManga("NineMangaIt", "http://it.ninemanga.com", "it") {
|
||||||
}
|
}
|
||||||
|
|
||||||
class NineMangaFr : NineManga("NineMangaFr", "http://fr.ninemanga.com", "fr") {
|
class NineMangaFr : NineManga("NineMangaFr", "http://fr.ninemanga.com", "fr") {
|
||||||
|
// ES, FR, RU don't return results for searches with an apostrophe
|
||||||
|
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
||||||
|
return super.searchMangaRequest(page, query.substringBefore("\'"), filters)
|
||||||
|
}
|
||||||
|
|
||||||
override fun parseStatus(status: String) = when {
|
override fun parseStatus(status: String) = when {
|
||||||
status.contains("En cours") -> SManga.ONGOING
|
status.contains("En cours") -> SManga.ONGOING
|
||||||
status.contains("Complété") -> SManga.COMPLETED
|
status.contains("Complété") -> SManga.COMPLETED
|
||||||
|
|
Loading…
Reference in New Issue