Fix chapters showing when the manga is licensed at LeitorNet. (#3960)
This commit is contained in:
parent
258295c589
commit
2d02b19748
|
@ -5,7 +5,7 @@ ext {
|
||||||
extName = 'mangásPROJECT'
|
extName = 'mangásPROJECT'
|
||||||
pkgNameSuffix = 'pt.mangasproject'
|
pkgNameSuffix = 'pt.mangasproject'
|
||||||
extClass = '.MangasProjectFactory'
|
extClass = '.MangasProjectFactory'
|
||||||
extVersionCode = 11
|
extVersionCode = 12
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -177,12 +177,6 @@ abstract class MangasProject(
|
||||||
return Observable.error(Exception(MANGA_REMOVED))
|
return Observable.error(Exception(MANGA_REMOVED))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun chapterListRequest(manga: SManga): Request {
|
|
||||||
val id = manga.url.substringAfterLast("/")
|
|
||||||
|
|
||||||
return chapterListRequestPaginated(manga.url, id, 1)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun chapterListRequestPaginated(mangaUrl: String, id: String, page: Int): Request {
|
private fun chapterListRequestPaginated(mangaUrl: String, id: String, page: Int): Request {
|
||||||
val newHeaders = sourceHeadersBuilder()
|
val newHeaders = sourceHeadersBuilder()
|
||||||
.set("Referer", baseUrl + mangaUrl)
|
.set("Referer", baseUrl + mangaUrl)
|
||||||
|
@ -192,15 +186,26 @@ abstract class MangasProject(
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun chapterListParse(response: Response): List<SChapter> {
|
override fun chapterListParse(response: Response): List<SChapter> {
|
||||||
var result = response.asJsonObject()
|
val document = response.asJsoup()
|
||||||
|
val licensedMessage = document.select("div.series-blocked-img").firstOrNull()
|
||||||
|
|
||||||
|
if (licensedMessage != null) {
|
||||||
|
// If the manga is licensed and has been removed from the source,
|
||||||
|
// the extension will not fetch the chapters, even if they are returned
|
||||||
|
// by the API. This is just to mimic the website behavior.
|
||||||
|
throw Exception(MANGA_REMOVED)
|
||||||
|
}
|
||||||
|
|
||||||
|
val mangaUrl = response.request().url().toString().replace(baseUrl, "")
|
||||||
|
val mangaId = mangaUrl.substringAfterLast("/")
|
||||||
|
var page = 1
|
||||||
|
|
||||||
|
var chapterListRequest = chapterListRequestPaginated(mangaUrl, mangaId, page)
|
||||||
|
var result = client.newCall(chapterListRequest).execute().asJsonObject()
|
||||||
|
|
||||||
if (!result["chapters"]!!.isJsonArray)
|
if (!result["chapters"]!!.isJsonArray)
|
||||||
return emptyList()
|
return emptyList()
|
||||||
|
|
||||||
val mangaUrl = response.request().header("Referer")!!.replace(baseUrl, "")
|
|
||||||
val mangaId = mangaUrl.substringAfterLast("/")
|
|
||||||
var page = 1
|
|
||||||
|
|
||||||
val chapters = mutableListOf<SChapter>()
|
val chapters = mutableListOf<SChapter>()
|
||||||
|
|
||||||
while (result["chapters"]!!.isJsonArray) {
|
while (result["chapters"]!!.isJsonArray) {
|
||||||
|
@ -208,8 +213,8 @@ abstract class MangasProject(
|
||||||
.flatMap { chapterListItemParse(it.obj) }
|
.flatMap { chapterListItemParse(it.obj) }
|
||||||
.toMutableList()
|
.toMutableList()
|
||||||
|
|
||||||
val newRequest = chapterListRequestPaginated(mangaUrl, mangaId, ++page)
|
chapterListRequest = chapterListRequestPaginated(mangaUrl, mangaId, ++page)
|
||||||
result = client.newCall(newRequest).execute().asJsonObject()
|
result = client.newCall(chapterListRequest).execute().asJsonObject()
|
||||||
}
|
}
|
||||||
|
|
||||||
return chapters
|
return chapters
|
||||||
|
@ -222,8 +227,11 @@ abstract class MangasProject(
|
||||||
val release = it.value.obj
|
val release = it.value.obj
|
||||||
|
|
||||||
SChapter.create().apply {
|
SChapter.create().apply {
|
||||||
name = "Cap. ${obj["number"].string}" + (if (chapterName == "") "" else " - $chapterName")
|
name = "Cap. ${obj["number"].string}" +
|
||||||
date_upload = DATE_FORMATTER.tryParseDate(obj["date_created"].string.substringBefore("T"))
|
(if (chapterName == "") "" else " - $chapterName")
|
||||||
|
date_upload = DATE_FORMATTER.tryParseDate(
|
||||||
|
obj["date_created"].string.substringBefore("T")
|
||||||
|
)
|
||||||
scanlator = release["scanlators"]!!.array
|
scanlator = release["scanlators"]!!.array
|
||||||
.map { scanObj -> scanObj.obj["name"].string }
|
.map { scanObj -> scanObj.obj["name"].string }
|
||||||
.sorted()
|
.sorted()
|
||||||
|
@ -309,7 +317,7 @@ abstract class MangasProject(
|
||||||
|
|
||||||
private val DATE_FORMATTER by lazy { SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH) }
|
private val DATE_FORMATTER by lazy { SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH) }
|
||||||
|
|
||||||
private const val MANGA_REMOVED = "Mangá licenciado e removido pela editora."
|
private const val MANGA_REMOVED = "Mangá licenciado e removido pela fonte."
|
||||||
private const val TOKEN_NOT_FOUND = "Não foi possível obter o token de leitura."
|
private const val TOKEN_NOT_FOUND = "Não foi possível obter o token de leitura."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue