Merge WPMangaReader and WPMangaStream (#12918)

This commit is contained in:
AntsyLich 2022-08-16 17:24:35 +06:00 committed by GitHub
parent 23d8aa7895
commit 476f156643
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
549 changed files with 1159 additions and 2511 deletions

View File

@ -1,11 +1,11 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="WPMangaStreamGenerator" type="JetRunConfigurationType" nameIsGenerated="true">
<configuration default="false" name="MangaThemesiaGenerator" type="JetRunConfigurationType" nameIsGenerated="true">
<module name="tachiyomi-extensions.multisrc.main" />
<option name="MAIN_CLASS_NAME" value="eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStreamGenerator" />
<option name="MAIN_CLASS_NAME" value="eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesiaGenerator" />
<method v="2">
<option name="Make" enabled="true" />
<option name="Gradle.BeforeRunTask" enabled="true" tasks="ktFormat" externalProjectPath="$PROJECT_DIR$/multisrc" vmOptions="" scriptParameters="-Ptheme=wpmangastream" />
<option name="Gradle.BeforeRunTask" enabled="true" tasks="ktLint" externalProjectPath="$PROJECT_DIR$/multisrc" vmOptions="" scriptParameters="-Ptheme=wpmangastream" />
<option name="Gradle.BeforeRunTask" enabled="true" tasks="ktFormat" externalProjectPath="$PROJECT_DIR$/multisrc" vmOptions="" scriptParameters="-Ptheme=mangathemesia" />
<option name="Gradle.BeforeRunTask" enabled="true" tasks="ktLint" externalProjectPath="$PROJECT_DIR$/multisrc" vmOptions="" scriptParameters="-Ptheme=mangathemesia" />
</method>
</configuration>
</component>

View File

@ -1,11 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="WPMangaReaderGenerator" type="JetRunConfigurationType" nameIsGenerated="true">
<module name="tachiyomi-extensions.multisrc.main" />
<option name="MAIN_CLASS_NAME" value="eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReaderGenerator" />
<method v="2">
<option name="Make" enabled="true" />
<option name="Gradle.BeforeRunTask" enabled="true" tasks="ktFormat" externalProjectPath="$PROJECT_DIR$/multisrc" vmOptions="" scriptParameters="-Ptheme=wpmangareader" />
<option name="Gradle.BeforeRunTask" enabled="true" tasks="ktLint" externalProjectPath="$PROJECT_DIR$/multisrc" vmOptions="" scriptParameters="-Ptheme=wpmangareader" />
</method>
</configuration>
</component>

View File

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 120 KiB

View File

@ -0,0 +1,5 @@
package eu.kanade.tachiyomi.extension.en.acescans
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
class AceScans : MangaThemesia("Ace Scans", "https://acescans.xyz", "en")

View File

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 71 KiB

View File

@ -4,7 +4,7 @@ import android.app.Application
import android.content.SharedPreferences
import androidx.preference.PreferenceScreen
import androidx.preference.SwitchPreferenceCompat
import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.source.ConfigurableSource
import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.model.MangasPage
@ -14,7 +14,7 @@ import rx.Observable
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
open class AlphaScans : WPMangaReader("Alpha Scans", "https://alpha-scans.org", "en"), ConfigurableSource {
open class AlphaScans : MangaThemesia("Alpha Scans", "https://alpha-scans.org", "en"), ConfigurableSource {
private val preferences: SharedPreferences by lazy {
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)

View File

@ -0,0 +1,5 @@
package eu.kanade.tachiyomi.extension.en.animatedglitchedscans
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
class AnimatedGlitchedScans : MangaThemesia("Animated Glitched Scans", "https://anigliscans.com", "en", mangaUrlDirectory = "/series")

View File

Before

Width:  |  Height:  |  Size: 177 KiB

After

Width:  |  Height:  |  Size: 177 KiB

View File

@ -1,10 +1,10 @@
package eu.kanade.tachiyomi.extension.fr.arcanescan
import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import java.text.SimpleDateFormat
import java.util.Locale
class Arcanescan : WPMangaReader(
class Arcanescan : MangaThemesia(
"Arcane scan",
"https://arcanescan.fr",
"fr",

View File

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 116 KiB

View File

@ -4,7 +4,7 @@ import android.app.Application
import android.content.SharedPreferences
import androidx.preference.PreferenceScreen
import androidx.preference.SwitchPreferenceCompat
import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import eu.kanade.tachiyomi.source.ConfigurableSource
import eu.kanade.tachiyomi.source.model.FilterList
@ -21,11 +21,11 @@ open class AsuraScans(
override val baseUrl: String,
override val lang: String,
dateFormat: SimpleDateFormat
) : WPMangaStream(
) : MangaThemesia(
"Asura Scans",
baseUrl,
lang,
dateFormat
dateFormat = dateFormat
),
ConfigurableSource {

View File

@ -0,0 +1,46 @@
package eu.kanade.tachiyomi.extension.all.asurascans
import eu.kanade.tachiyomi.source.SourceFactory
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SManga
import org.jsoup.nodes.Document
import java.text.SimpleDateFormat
import java.util.Locale
class AsuraScansFactory : SourceFactory {
override fun createSources() = listOf(
AsuraScansEn(),
AsuraScansTr()
)
}
class AsuraScansEn : AsuraScans("https://www.asurascans.com", "en", SimpleDateFormat("MMM d, yyyy", Locale.US)) {
override val seriesDescriptionSelector = "div.desc p, div.entry-content p, div[itemprop=description]:not(:has(p))"
override val pageSelector = "div.rdminimal > img, div.rdminimal > p > img, div.rdminimal > a > img, div.rdminimal > p > a > img"
// Skip scriptPages
override fun pageListParse(document: Document): List<Page> {
return document.select(pageSelector)
.filterNot { it.attr("src").isNullOrEmpty() }
.mapIndexed { i, img -> Page(i, "", img.attr("src")) }
}
}
class AsuraScansTr : AsuraScans("https://tr.asurascans.com", "tr", SimpleDateFormat("MMM d, yyyy", Locale("tr"))) {
override val seriesArtistSelector = ".fmed b:contains(Çizer)+span"
override val seriesAuthorSelector = ".fmed b:contains(Yazar)+span"
override val seriesStatusSelector = ".imptdt:contains(Durum) i"
override val seriesTypeSelector = ".imptdt:contains(Tür) a"
override val altNamePrefix: String = "Alternatif isim: "
override fun String?.parseStatus(): Int = when {
this == null -> SManga.UNKNOWN
this.contains("Devam Ediyor", ignoreCase = true) -> SManga.ONGOING
this.contains("Tamamlandı", ignoreCase = true) -> SManga.COMPLETED
else -> SManga.UNKNOWN
}
}

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

View File

@ -0,0 +1,7 @@
package eu.kanade.tachiyomi.extension.en.batotoscans
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
class BatotoScans : MangaThemesia("Snudae Scans", "https://snudaescans.com", "en") {
override val id = 4418350353197826372L
}

View File

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 137 KiB

View File

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 64 KiB

View File

@ -1,11 +1,11 @@
package eu.kanade.tachiyomi.extension.id.boosei
import eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStream
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import okhttp3.OkHttpClient
import java.util.concurrent.TimeUnit
class Boosei : WPMangaStream("Boosei", "https://boosei.com", "id") {
class Boosei : MangaThemesia("Boosei", "https://boosei.com", "id") {
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
.connectTimeout(10, TimeUnit.SECONDS)

View File

@ -4,7 +4,7 @@
<application>
<activity
android:name="eu.kanade.tachiyomi.multisrc.wpmangastream.WPMangaStreamUrlActivity"
android:name="eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesiaUrlActivity"
android:excludeFromRecents="true"
android:exported="true"
android:theme="@android:style/Theme.NoDisplay">

View File

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 81 KiB

View File

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 92 KiB

View File

@ -8,7 +8,7 @@ import android.graphics.Canvas
import android.graphics.Rect
import androidx.preference.PreferenceScreen
import androidx.preference.SwitchPreferenceCompat
import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.source.ConfigurableSource
import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.model.MangasPage
@ -35,7 +35,7 @@ open class FlameScans(
override val lang: String,
mangaUrlDirectory: String,
dateFormat: SimpleDateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale.US)
) : WPMangaReader(
) : MangaThemesia(
"Flame Scans",
baseUrl,
lang,

View File

@ -20,9 +20,10 @@ class FlameScansAr : FlameScans("https://ar.flamescans.org", "ar", "/series") {
override val id: Long = 6053688312544266540
override fun parseStatus(status: String) = when {
status.contains("مستمر") -> SManga.ONGOING
status.contains("مكتمل") -> SManga.COMPLETED
override fun String?.parseStatus() = when {
this == null -> SManga.UNKNOWN
this.contains("مستمر") -> SManga.ONGOING
this.contains("مكتمل") -> SManga.COMPLETED
else -> SManga.UNKNOWN
}
}

View File

@ -1,15 +1,13 @@
package eu.kanade.tachiyomi.extension.pt.franxxmangas
import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import eu.kanade.tachiyomi.source.model.SManga
import okhttp3.OkHttpClient
import org.jsoup.nodes.Element
import java.text.SimpleDateFormat
import java.util.Locale
import java.util.concurrent.TimeUnit
class FranxxMangas : WPMangaReader(
class FranxxMangas : MangaThemesia(
"Franxx Mangás",
"https://franxxmangas.net",
"pt-BR",
@ -20,11 +18,5 @@ class FranxxMangas : WPMangaReader(
.rateLimit(1, 2, TimeUnit.SECONDS)
.build()
override val altName = "Nomes alternativos: "
override fun searchMangaFromElement(element: Element) = SManga.create().apply {
thumbnail_url = element.select("img").attr("abs:data-src")
title = element.select("a").attr("title")
setUrlWithoutDomain(element.select("a").attr("href"))
}
override val altNamePrefix = "Nomes alternativos: "
}

View File

@ -1,13 +1,13 @@
package eu.kanade.tachiyomi.extension.es.fusionscanlation
import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import okhttp3.OkHttpClient
import java.text.SimpleDateFormat
import java.util.Locale
import java.util.concurrent.TimeUnit
class FusionScanlation : WPMangaReader("Fusion Scanlation", "https://fusionscanlation.com", "es", dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("es"))) {
class FusionScanlation : MangaThemesia("Fusion Scanlation", "https://fusionscanlation.com", "es", dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("es"))) {
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
.connectTimeout(10, TimeUnit.SECONDS)

View File

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 118 KiB

View File

@ -1,37 +1,27 @@
package eu.kanade.tachiyomi.extension.id.gabutscans
import eu.kanade.tachiyomi.multisrc.wpmangareader.WPMangaReader
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 org.jsoup.nodes.Element
import java.text.SimpleDateFormat
import java.util.Locale
class GabutScans : WPMangaReader(
class GabutScans : MangaThemesia(
"Gabut Scans", "https://gabutscans.com", "id",
dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("id"))
) {
override val hasProjectPage = true
override fun searchMangaFromElement(element: Element) =
super.searchMangaFromElement(element).apply {
thumbnail_url = element.select("img").attr("abs:data-src")
}
override fun mangaDetailsParse(document: Document) = super.mangaDetailsParse(document).apply {
thumbnail_url = document.select(seriesThumbnailSelector).attr("abs:data-src")
}
override fun pageListParse(document: Document): List<Page> {
// Prefer using sources loaded from javascript
// because current CDN (Statically) can't load old images.
// Example: https://gabutscans.com/cinderella-wa-sagasanai-chapter-41-end-bahasa-indonesia/
val docString = document.toString()
val imageListRegex = Regex("""\"images.*?:.*?(\[.*?])""")
val imageListRegex = Regex("\"images.*?:.*?(\\[.*?])")
val (imageListJson) = imageListRegex.find(docString)!!.destructured
val imageList = json.parseToJsonElement(imageListJson).jsonArray

View File

Before

Width:  |  Height:  |  Size: 99 KiB

After

Width:  |  Height:  |  Size: 99 KiB

Some files were not shown because too many files have changed in this diff Show More