Fix 404 errors on chapter list in NS. (#11559)

This commit is contained in:
Alessandro Jean 2022-04-21 16:41:27 -03:00 committed by GitHub
parent d46e7b60c7
commit a775cc23a9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 37 additions and 9 deletions

View File

@ -14,9 +14,11 @@ import eu.kanade.tachiyomi.network.asObservable
import eu.kanade.tachiyomi.source.ConfigurableSource import eu.kanade.tachiyomi.source.ConfigurableSource
import eu.kanade.tachiyomi.source.model.MangasPage import eu.kanade.tachiyomi.source.model.MangasPage
import eu.kanade.tachiyomi.source.model.Page 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.model.SManga
import okhttp3.Headers import okhttp3.Headers
import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
import okhttp3.Interceptor import okhttp3.Interceptor
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
import okhttp3.Request import okhttp3.Request
@ -111,10 +113,23 @@ class NeoxScanlator :
} }
override fun mangaDetailsRequest(manga: SManga): Request { override fun mangaDetailsRequest(manga: SManga): Request {
val mangaSlug = manga.url.removePrefix("/").substringAfter("/") val fixedUrl = (baseUrl + manga.url).toHttpUrl().newBuilder()
val mangaUrl = "/" + (titleCollectionPath ?: TITLE_PATH_PLACEHOLDER) + "/" + mangaSlug .setPathSegment(0, titleCollectionPath ?: TITLE_PATH_PLACEHOLDER)
.toString()
return GET(baseUrl + mangaUrl, headers) return GET(fixedUrl, headers)
}
override fun fetchChapterList(manga: SManga): Observable<List<SChapter>> {
return client.newCall(chapterListRequest(manga))
.asObservable()
.doOnNext { response ->
if (!response.isSuccessful) {
response.close()
throw Exception(if (response.code == 404) MIGRATION_MESSAGE else "HTTP error ${response.code}")
}
}
.map(::chapterListParse)
} }
override fun xhrChaptersRequest(mangaUrl: String): Request { override fun xhrChaptersRequest(mangaUrl: String): Request {
@ -123,10 +138,23 @@ class NeoxScanlator :
.add("X-Requested-With", "XMLHttpRequest") .add("X-Requested-With", "XMLHttpRequest")
.build() .build()
val mangaSlug = mangaUrl.toHttpUrl().pathSegments[1] val fixedUrl = mangaUrl.toHttpUrl().newBuilder()
val fixedUrl = (titleCollectionPath ?: TITLE_PATH_PLACEHOLDER) + "/" + mangaSlug .setPathSegment(0, titleCollectionPath ?: TITLE_PATH_PLACEHOLDER)
.addPathSegments("ajax/chapters")
.toString()
return POST("$baseUrl/$fixedUrl/ajax/chapters", xhrHeaders) return POST(fixedUrl, xhrHeaders)
}
override fun pageListRequest(chapter: SChapter): Request {
val chapterUrl = (baseUrl + chapter.url.removePrefix(baseUrl)).toHttpUrlOrNull()
?: return super.pageListRequest(chapter)
val fixedUrl = chapterUrl.newBuilder()
.setPathSegment(0, titleCollectionPath ?: TITLE_PATH_PLACEHOLDER)
.toString()
return GET(fixedUrl, headers)
} }
override fun imageRequest(page: Page): Request { override fun imageRequest(page: Page): Request {
@ -193,8 +221,8 @@ class NeoxScanlator :
} }
companion object { companion object {
private const val MIGRATION_MESSAGE = "O URL deste mangá mudou. " + private const val MIGRATION_MESSAGE = "A URL deste mangá mudou. " +
"Faça a migração do Neox para o Neox para atualizar a URL." "Faça a migração da Neox para a Neox para atualizar a URL."
private const val ACCEPT = "text/html,application/xhtml+xml,application/xml;q=0.9," + private const val ACCEPT = "text/html,application/xhtml+xml,application/xml;q=0.9," +
"image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" "image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"

View File

@ -339,7 +339,7 @@ class MadaraGenerator : ThemeSourceGenerator {
SingleLang("NeatManga", "https://neatmanga.com", "en", overrideVersionCode = 2), SingleLang("NeatManga", "https://neatmanga.com", "en", overrideVersionCode = 2),
SingleLang("NekoBreaker Scan", "https://nekobreakerscan.com", "pt-BR", overrideVersionCode = 1), SingleLang("NekoBreaker Scan", "https://nekobreakerscan.com", "pt-BR", overrideVersionCode = 1),
SingleLang("NekoScan", "https://nekoscan.com", "en", overrideVersionCode = 2), SingleLang("NekoScan", "https://nekoscan.com", "en", overrideVersionCode = 2),
SingleLang("Neox Scanlator", "https://neoxscans.net", "pt-BR", overrideVersionCode = 9), SingleLang("Neox Scanlator", "https://neoxscans.net", "pt-BR", overrideVersionCode = 10),
SingleLang("Night Comic", "https://www.nightcomic.com", "en", overrideVersionCode = 1), SingleLang("Night Comic", "https://www.nightcomic.com", "en", overrideVersionCode = 1),
SingleLang("Niji Translations", "https://niji-translations.com", "ar", overrideVersionCode = 1), SingleLang("Niji Translations", "https://niji-translations.com", "ar", overrideVersionCode = 1),
SingleLang("Ninja Scan", "https://ninjascan.xyz", "pt-BR", overrideVersionCode = 1), SingleLang("Ninja Scan", "https://ninjascan.xyz", "pt-BR", overrideVersionCode = 1),