re-manga: Fix latest, chapter parsing (#10630)

* re-manga: Fix latest, chapter parsing

minor refactor

* make SimpleDateFormat static
This commit is contained in:
Vetle Ledaal 2022-01-31 12:10:32 +00:00 committed by GitHub
parent 0a1cd70a45
commit c6e81d778f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 39 additions and 21 deletions

View File

@ -5,7 +5,7 @@ ext {
extName = 'RE Manga' extName = 'RE Manga'
pkgNameSuffix = 'ar.remanga' pkgNameSuffix = 'ar.remanga'
extClass = '.REManga' extClass = '.REManga'
extVersionCode = 1 extVersionCode = 2
} }
apply from: "$rootDir/common.gradle" apply from: "$rootDir/common.gradle"

View File

@ -7,10 +7,12 @@ import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.source.online.ParsedHttpSource
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.Request import okhttp3.Request
import org.jsoup.nodes.Document import org.jsoup.nodes.Document
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
import java.text.SimpleDateFormat
import java.util.Locale
class REManga : ParsedHttpSource() { class REManga : ParsedHttpSource() {
@ -24,19 +26,17 @@ class REManga : ParsedHttpSource() {
// Popular // Popular
override fun popularMangaRequest(page: Int): Request { override fun popularMangaRequest(page: Int): Request =
return GET("$baseUrl/manga-list/") GET("$baseUrl/manga-list/?title=&order=popular&status=&type=")
}
override fun popularMangaSelector() = "article.animpost" override fun popularMangaSelector() = "article.animpost"
override fun popularMangaFromElement(element: Element): SManga { override fun popularMangaFromElement(element: Element): SManga =
return SManga.create().apply { SManga.create().apply {
element.select("a").let { setUrlWithoutDomain(element.select("a").attr("abs:href"))
setUrlWithoutDomain(it.attr("href")) element.select("img").let {
thumbnail_url = element.select("img").attr("abs:src") thumbnail_url = it.attr("abs:src")
title = element.select("img").attr("title") title = it.attr("title")
}
} }
} }
@ -44,20 +44,20 @@ class REManga : ParsedHttpSource() {
// Latest // Latest
override fun latestUpdatesRequest(page: Int): Request { override fun latestUpdatesRequest(page: Int): Request =
return GET(baseUrl) GET("$baseUrl/manga-list/?title=&order=update&status=&type=")
}
override fun latestUpdatesSelector() = popularMangaSelector() override fun latestUpdatesSelector() = popularMangaSelector()
override fun latestUpdatesFromElement(element: Element): SManga = popularMangaFromElement(element) override fun latestUpdatesFromElement(element: Element): SManga = popularMangaFromElement(element)
override fun latestUpdatesNextPageSelector(): String? = null override fun latestUpdatesNextPageSelector(): String? = popularMangaNextPageSelector()
// Search // Search
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
val url = "$baseUrl/manga-list/?title=$query".toHttpUrlOrNull()!!.newBuilder() val url = "$baseUrl/manga-list/?".toHttpUrl().newBuilder()
.addQueryParameter("title", query)
filters.forEach { filter -> filters.forEach { filter ->
when (filter) { when (filter) {
is SortFilter -> url.addQueryParameter("order", filter.toUriPart()) is SortFilter -> url.addQueryParameter("order", filter.toUriPart())
@ -77,9 +77,10 @@ class REManga : ParsedHttpSource() {
.filter { it.state != Filter.TriState.STATE_IGNORE } .filter { it.state != Filter.TriState.STATE_IGNORE }
.forEach { url.addQueryParameter("years[]", it.id) } .forEach { url.addQueryParameter("years[]", it.id) }
} }
else -> {}
} }
} }
return GET(url.build().toString(), headers) return GET(url.toString(), headers)
} }
override fun searchMangaSelector() = popularMangaSelector() override fun searchMangaSelector() = popularMangaSelector()
@ -108,12 +109,23 @@ class REManga : ParsedHttpSource() {
// Chapters // Chapters
override fun chapterListSelector() = "li" override fun chapterListSelector() = ".lsteps li"
override fun chapterFromElement(element: Element): SChapter { override fun chapterFromElement(element: Element): SChapter {
return SChapter.create().apply { return SChapter.create().apply {
name = element.select("div.epsright span.eps > a > chapter").text() setUrlWithoutDomain(element.select("a").first()!!.attr("abs:href"))
setUrlWithoutDomain(element.select("div.epsright span.eps a").attr("abs:href"))
val chNum = element.select(".eps > a").first()!!.text()
val chTitle = element.select(".lchx > a").first()!!.text()
name = when {
chTitle.startsWith("الفصل ") -> chTitle
else -> "الفصل $chNum - $chTitle"
}
element.select(".date").first()?.text()?.let { date ->
date_upload = DATE_FORMATTER.parse(date)?.time ?: 0L
}
} }
} }
@ -237,4 +249,10 @@ class REManga : ParsedHttpSource() {
Filter.Select<String>(displayName, vals.map { it.second }.toTypedArray()) { Filter.Select<String>(displayName, vals.map { it.second }.toTypedArray()) {
fun toUriPart() = vals[state].first fun toUriPart() = vals[state].first
} }
companion object {
private val DATE_FORMATTER by lazy {
SimpleDateFormat("MMM d, yyy", Locale("ar"))
}
}
} }