Add ARESManga/ARESNOV (#699)

* Add ARESManga

* Fix author selector

* Split ARESManga and ARESNOV

* remove unused imports
This commit is contained in:
beerpsi 2024-01-27 16:26:05 +07:00 committed by GitHub
parent 676e76790a
commit daa4a98f82
13 changed files with 87 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -0,0 +1,41 @@
package eu.kanade.tachiyomi.extension.ar.aresnov
import android.util.Base64
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.source.model.Page
import kotlinx.serialization.json.jsonArray
import kotlinx.serialization.json.jsonPrimitive
import org.jsoup.nodes.Document
import java.lang.IllegalArgumentException
import java.text.SimpleDateFormat
import java.util.Locale
class ARESNOV : MangaThemesia(
"ARESNOV",
"https://aresnov.org",
"ar",
mangaUrlDirectory = "/series",
dateFormat = SimpleDateFormat("MMMMM dd, yyyy", Locale("ar")),
) {
override val seriesAuthorSelector = ".imptdt:contains(المؤلف) i"
override val seriesArtistSelector = ".imptdt:contains(الرسام) i"
override val seriesTypeSelector = ".imptdt:contains(النوع) i"
override val seriesStatusSelector = ".imptdt:contains(الحالة) i"
override fun pageListParse(document: Document): List<Page> {
// "ts_reader.run({" in base64
val script = document.selectFirst("script[src^=data:text/javascript;base64,dHNfcmVhZGVyLnJ1bih7]")
?: return super.pageListParse(document)
val data = Base64.decode(script.attr("src").substringAfter("base64,"), Base64.DEFAULT).toString(Charsets.UTF_8)
val imageListJson = JSON_IMAGE_LIST_REGEX.find(data)?.destructured?.toList()?.get(0).orEmpty()
val imageList = try {
json.parseToJsonElement(imageListJson).jsonArray
} catch (_: IllegalArgumentException) {
emptyList()
}
return imageList.mapIndexed { i, jsonEl ->
Page(i, imageUrl = jsonEl.jsonPrimitive.content)
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -0,0 +1,44 @@
package eu.kanade.tachiyomi.extension.ar.iimanga
import android.util.Base64
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.source.model.Page
import kotlinx.serialization.json.jsonArray
import kotlinx.serialization.json.jsonPrimitive
import org.jsoup.nodes.Document
import java.lang.IllegalArgumentException
import java.text.SimpleDateFormat
import java.util.Locale
class ARESManga : MangaThemesia(
"ARESManga",
"https://en-aresmanga.com",
"ar",
mangaUrlDirectory = "/series",
dateFormat = SimpleDateFormat("MMMMM dd, yyyy", Locale("ar")),
) {
// Source renamed a while back
override val id = 230017529540228175
override val seriesAuthorSelector = ".imptdt:contains(المؤلف) i"
override val seriesArtistSelector = ".imptdt:contains(الرسام) i"
override val seriesTypeSelector = ".imptdt:contains(النوع) i"
override val seriesStatusSelector = ".imptdt:contains(الحالة) i"
override fun pageListParse(document: Document): List<Page> {
// "ts_reader.run({" in base64
val script = document.selectFirst("script[src^=data:text/javascript;base64,dHNfcmVhZGVyLnJ1bih7]")
?: return super.pageListParse(document)
val data = Base64.decode(script.attr("src").substringAfter("base64,"), Base64.DEFAULT).toString(Charsets.UTF_8)
val imageListJson = JSON_IMAGE_LIST_REGEX.find(data)?.destructured?.toList()?.get(0).orEmpty()
val imageList = try {
json.parseToJsonElement(imageListJson).jsonArray
} catch (_: IllegalArgumentException) {
emptyList()
}
return imageList.mapIndexed { i, jsonEl ->
Page(i, imageUrl = jsonEl.jsonPrimitive.content)
}
}
}

View File

@ -19,6 +19,8 @@ class MangaThemesiaGenerator : ThemeSourceGenerator {
SingleLang("Alceascan", "https://alceascan.my.id", "id"),
SingleLang("Animated Glitched Comics", "https://agscomics.com", "en"),
SingleLang("Animated Glitched Scans", "https://anigliscans.xyz", "en", overrideVersionCode = 1),
SingleLang("ARESManga", "https://en-aresmanga.com", "ar", pkgName = "iimanga", className = "ARESManga", overrideVersionCode = 2),
SingleLang("ARESNOV", "https://aresnov.org", "ar"),
SingleLang("Arven Scans", "https://arvenscans.com", "en"),
SingleLang("AscalonScans", "https://ascalonscans.com", "en", overrideVersionCode = 1),
SingleLang("Asura Scans", "https://asuratoon.com", "en", overrideVersionCode = 1),