Yugen Mangás: Update domain and fix pagelist (#3736)

* Update domain and fix pagelist

* minor change

* minor change
This commit is contained in:
Yush0DAN 2024-06-26 05:43:51 -06:00 committed by Draff
parent c8825e0bc4
commit 445ce09211
No known key found for this signature in database
GPG Key ID: E8A89F3211677653
3 changed files with 21 additions and 14 deletions

View File

@ -1,7 +1,7 @@
ext { ext {
extName = 'Yugen Mangás' extName = 'Yugen Mangás'
extClass = '.YugenMangas' extClass = '.YugenMangas'
extVersionCode = 39 extVersionCode = 40
} }
apply from: "$rootDir/common.gradle" apply from: "$rootDir/common.gradle"

View File

@ -9,7 +9,6 @@ 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.HttpSource import eu.kanade.tachiyomi.source.online.HttpSource
import eu.kanade.tachiyomi.util.asJsoup
import kotlinx.serialization.decodeFromString import kotlinx.serialization.decodeFromString
import kotlinx.serialization.encodeToString import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json
@ -29,7 +28,7 @@ class YugenMangas : HttpSource() {
override val name = "Yugen Mangás" override val name = "Yugen Mangás"
override val baseUrl = "https://yugenmangas.net.br" override val baseUrl = "https://yugenapp.lat"
override val lang = "pt-BR" override val lang = "pt-BR"
@ -103,6 +102,13 @@ class YugenMangas : HttpSource() {
return POST("$API_BASE_URL/chapters/get_chapters_by_serie/", newHeaders, payload) return POST("$API_BASE_URL/chapters/get_chapters_by_serie/", newHeaders, payload)
} }
override fun pageListRequest(chapter: SChapter): Request {
val slug = chapter.url.removePrefix("/series/").substringBefore("/")
val chapterSlug = chapter.url.substringAfterLast("/")
return POST("$API_BASE_URL/serie/$slug/chapter/$chapterSlug/images/imgs/get/", apiHeaders)
}
override fun chapterListParse(response: Response): List<SChapter> { override fun chapterListParse(response: Response): List<SChapter> {
val (seriesSlug) = response.request.body!!.parseAs<YugenGetChaptersBySeriesDto>() val (seriesSlug) = response.request.body!!.parseAs<YugenGetChaptersBySeriesDto>()
@ -114,12 +120,9 @@ class YugenMangas : HttpSource() {
override fun getChapterUrl(chapter: SChapter) = baseUrl + chapter.url override fun getChapterUrl(chapter: SChapter) = baseUrl + chapter.url
override fun pageListParse(response: Response): List<Page> { override fun pageListParse(response: Response): List<Page> {
val json = response.asJsoup().selectFirst("script#__NUXT_DATA__")!!.data() val result = response.parseAs<YugenPageList>()
return CHAPTER_PAGES_REGEX.findAll(json)
.mapIndexed { index, image -> return result.chapterImages.mapIndexed { index, url -> Page(index, baseUrl, "$API_HOST/$url") }
Page(index, baseUrl, "$API_HOST/${image.value}")
}
.toList()
} }
override fun imageUrlParse(response: Response) = "" override fun imageUrlParse(response: Response) = ""
@ -142,9 +145,8 @@ class YugenMangas : HttpSource() {
} }
companion object { companion object {
private const val API_HOST = "https://api.yugenmangas.net.br" private const val API_HOST = "https://api.yugenapp.lat"
private const val API_BASE_URL = "$API_HOST/api" private const val API_BASE_URL = "$API_HOST/api"
private val CHAPTER_PAGES_REGEX = """(media/series[^"]+)""".toRegex()
private val JSON_MEDIA_TYPE = "application/json".toMediaType() private val JSON_MEDIA_TYPE = "application/json".toMediaType()
} }
} }

View File

@ -9,7 +9,7 @@ import java.text.SimpleDateFormat
import java.util.Locale import java.util.Locale
@Serializable @Serializable
data class YugenMangaDto( class YugenMangaDto(
val name: String, val name: String,
@JsonNames("capa", "cover") val cover: String, @JsonNames("capa", "cover") val cover: String,
val slug: String, val slug: String,
@ -42,10 +42,10 @@ data class YugenMangaDto(
} }
@Serializable @Serializable
data class YugenChapterListDto(val chapters: List<YugenChapterDto>) class YugenChapterListDto(val chapters: List<YugenChapterDto>)
@Serializable @Serializable
data class YugenChapterDto( class YugenChapterDto(
val name: String, val name: String,
val season: Int, val season: Int,
@SerialName("upload_date") val uploadDate: String, @SerialName("upload_date") val uploadDate: String,
@ -76,3 +76,8 @@ data class YugenChapterDto(
data class YugenGetChaptersBySeriesDto( data class YugenGetChaptersBySeriesDto(
@SerialName("serie_slug") val seriesSlug: String, @SerialName("serie_slug") val seriesSlug: String,
) )
@Serializable
class YugenPageList(
@SerialName("chapter_images") val chapterImages: List<String>,
)