Compare commits

...

35 Commits

Author SHA1 Message Date
mohamedotaku 1699cece9f override mangaSubString for "GateManga" (#1069)
CI / Prepare job (push) Successful in 3s Details
CI / Build multisrc modules (push) Successful in 3m15s Details
CI / Build individual modules (push) Successful in 36s Details
CI / Publish repo (push) Successful in 38s Details
override mangaSubString
2024-02-06 22:44:39 +00:00
beerpsi 09a2cea4e7 DocTruyen5s: Get better icons (#1066)
* DocTruyen5s: Get better icons

* bump version
2024-02-06 22:44:39 +00:00
AwkwardPeak7 06fba60056 make LikeManga into multisrc and add zinmanga.io (#1048) 2024-02-06 22:44:39 +00:00
AwkwardPeak7 f513fe60c6 fix build again (#1050)
unresolved reference
2024-02-06 22:44:26 +00:00
AwkwardPeak7 aedb09de84 fix lint (#1049)
* fix lint

* '/manga' is already default
2024-02-06 22:44:26 +00:00
devil6venom 85fc0dc390 Hentai20 Theme Changed Fix (#1043)
* hentai20 Theme Changed

* Create hentai20.kt

Added Rate limit !!

* Add files via upload

* Delete multisrc/overrides/mangathemesia/hentai20/src/hentai20.kt

Removed old class

* Update Hentai20.kt
2024-02-06 22:44:26 +00:00
Cuong M. Tran fba5cbc5d5 Add Manhua AZ (#1023)
* Add Manhua AZ, it's apparently spined off from Manhua ES so we set version same as Manhua ES

* Reset Manhua AZ version

Co-authored-by: beerpsi <92439990+beerpiss@users.noreply.github.com>

---------

Co-authored-by: beerpsi <92439990+beerpiss@users.noreply.github.com>
2024-02-06 22:44:26 +00:00
beerpsi 9237c48aca Clean up Komga (#1012)
* Clean up Komga

* le version bump
2024-02-06 22:44:26 +00:00
Cuong M. Tran cdc6d67473 Mark NSFW: Bakaman (#1015)
* Mark NSFW: Bakaman, CoffeeManga, MangaFoxFull, ManHuaGui. Not update version.

* bump version

* Revert "bump version"

This reverts commit ae09983b1e02755db7edfa0d5b628244ea1ed19e.

* Revert "Mark NSFW: Bakaman, CoffeeManga, MangaFoxFull, ManHuaGui. Not update version."

This reverts commit 2503dbab6456c7dfd01dae47fbb6b397cf693003.

# Conflicts:
#	multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt
2024-02-06 22:44:26 +00:00
Mike 8cf1485c31 CreepyScans - add query search (#1036)
* CreepyScans - add query search

* Boolean
2024-02-06 22:44:26 +00:00
Cuong M. Tran 7d94375027 Remove dead sources, update Ổ Cú Mèo URL (#1021)
* Remove MangaGo Yaoi, it's redirecting to another source already available

* Remove dead source 1stKissManga.tv

* Remove dead source: ZinManga.top

* Remove dead source: TruyenChon

* Remove dead source: ReadAdult

* Remove dead source: O Cu Meo

it’s redirecting to another existed source

* Revert "Remove dead source: O Cu Meo"

This reverts commit b91f1684799099db3818af37a934481dbc907fe0.

* Update domain for "O Cu Meo"
2024-02-06 22:44:07 +00:00
bapeey 82842fd186 LectorTMO: Fix preferences (#1040)
Fix preferences
2024-02-06 22:44:07 +00:00
AlphaBoom 01424d5efb Jinman Tiantang: Fix cover not display by cloudflare (#1033)
* Jinman Tiantang: Fix cover not display by cloudflare

* refactor to when condition
2024-02-06 22:44:07 +00:00
beerpsi fffbf22430 add Kingdom Brasil Scantrad (#1018)
* add Kingdom Brasil Scantrad

* Use an interceptor to fetch WiX cookies

* optimize icons
2024-02-06 22:44:07 +00:00
mohamedotaku 504b409a99 Add source Manga-Link "ar" (#1032) 2024-02-06 22:44:07 +00:00
beerpsi 0b3d1e6aeb Add MIC MIC IDOL (#1013)
* Add MIC MIC IDOL

* Mark as NSFW

* no need to convert to httpurl

* spelling mistake

* Add all tags to filter
2024-02-06 22:44:06 +00:00
AlphaBoom 0bc4035bfe Manga1000: Fix page list parse (#1031) 2024-02-06 22:44:06 +00:00
yemenihandsome b15cd836c5 HizoManga domain change (#1024)
Update MadaraGenerator.kt
2024-02-06 22:44:06 +00:00
Cuong M. Tran 75219a5613 Update URL: A3 Manga & Team Lanh Lung (#1022) 2024-02-06 22:44:06 +00:00
yemenihandsome 4103f858ca Zinmanhwa domain change (#1006)
* Update Zinmanhwa.kt

* Update MadaraGenerator.kt

Signed-off-by: yemenihandsome <144265316+yemenihandsome@users.noreply.github.com>

* Update MadaraGenerator.kt

Signed-off-by: yemenihandsome <144265316+yemenihandsome@users.noreply.github.com>

---------

Signed-off-by: yemenihandsome <144265316+yemenihandsome@users.noreply.github.com>
2024-02-06 22:44:06 +00:00
AwkwardPeak7 aae435c058 add Masonry multisrc (#1007)
* Masonry Multisrc

* fixes

* explicit `imageUrl`

Co-authored-by: beerpsi <92439990+beerpiss@users.noreply.github.com>

---------

Co-authored-by: beerpsi <92439990+beerpiss@users.noreply.github.com>
2024-02-06 22:44:06 +00:00
AwkwardPeak7 c023c40f54 FlixScans: fix search (#1010) 2024-02-06 22:44:06 +00:00
AwkwardPeak7 97dde3f788 HentaiCosplay: fix pages and remove keyword filter (#1009) 2024-02-06 22:44:06 +00:00
Claudemirovsky 00e4bed8ab all/SimplyHentai: Fix http 404 (#1008)
* fix: Fix popular manga page

* fix: Fix latest manga page

* fix: Fix search manga page

* chore: Minor changes to prevent future issues

* refactor: Minor refactoration

* chore: Bump version

* chore: Follow suggestion - re-add cloudflareClient

* refactor: Commit suggestion - remove unnecessary chapter_number

Co-authored-by: AwkwardPeak7 <48650614+AwkwardPeak7@users.noreply.github.com>

---------

Co-authored-by: AwkwardPeak7 <48650614+AwkwardPeak7@users.noreply.github.com>
2024-02-06 22:44:06 +00:00
bapeey ac1575dd81 Move TMO and LectorManga to multisrc (#1002)
* Theme-lib when

* Lint

* Order generator

* Apply no-nsfw pref on request instead of init
2024-02-06 22:44:06 +00:00
beerpsi 873a88cbbb Add scanvf.org (#985)
* Add scanvf

* move stuff

* fr.scanvf already exists (under mmrcms)

* insert ending newline
2024-02-06 22:44:06 +00:00
Secozzi 81d3247afb add sectscans (#998) 2024-02-06 22:44:06 +00:00
98Hani 8a1c09e6bf domain change TeamX (#990)
* Update TeamX.kt

* domain change TeamX
2024-02-06 22:44:06 +00:00
98Hani 64f75e413e domain change MangaNoon (#984)
* Update MangaNoon.kt

* Update MangaThemesiaGenerator.kt
2024-02-06 22:44:06 +00:00
beerpsi 419206b59e PeachScan: Add workaround for TachiyomiJ2K (#954)
* PeachScan: Add workaround for TachiyomiJ2K

* Add rationale for reflection bullshit

* Remove unused imports
2024-02-06 22:44:06 +00:00
bapeey 8b19765288 Add MangaEsp (#970)
* Add MangaEsp

* Remove log

* Move filtering

* Suggested changes

* Change messages

---------

Co-authored-by: Axel Vargas <avargasr@unitru.edu.pe>
2024-02-06 22:44:06 +00:00
beerpsi 8b850be8b9 New multisrc: Makaru (#980)
* New multisrc: Makaru

* remove YumeKomik from MangaThemesia

* Also remove from generator

* extension sdk is 21 actually
2024-02-06 22:44:06 +00:00
bapeey a4e43fbe93 Ragnarok Scanlation: Update domain and add icon (#982)
* Update domain

* Add icon
2024-02-06 22:44:06 +00:00
2Loong6 155e01f474 fix kisslove altName (#978) 2024-02-06 22:44:06 +00:00
Mike c286c4bc7a Mangahub update (#966)
* Mangahub update

* lint

* Constructor
2024-02-06 22:43:49 +00:00
243 changed files with 3014 additions and 1631 deletions

View File

@ -11,6 +11,9 @@ import org.jsoup.nodes.Element
import java.util.Calendar
class KissLove : FMReader("KissLove", "https://klz9.com", "ja") {
override val altNameSelector = "li:contains(Other name (s))"
override fun latestUpdatesRequest(page: Int) =
GET("$baseUrl/manga-list.html?page=$page&sort=last_update")

View File

@ -59,12 +59,12 @@ class Manga1000 : FMReader("Manga1000", "https://manga1000.top", "ja") {
}
override fun pageListParse(document: Document): List<Page> {
return document.select("script:containsData(imgsListchap)")
return document.select("script:containsData(imgsChapter)")
.html()
.substringAfter("(")
.substringBefore(",")
.let { cid ->
client.newCall(GET("$baseUrl/app/manga/controllers/cont.imgsList.php?cid=$cid", headers)).execute().asJsoup()
client.newCall(GET("$baseUrl/app/manga/controllers/cont.Showimage.php?cid=$cid", headers)).execute().asJsoup()
}
.select(".lazyload")
.mapIndexed { i, e ->

View File

@ -3,7 +3,7 @@
<application>
<activity
android:name=".es.tumangaonline.TuMangaOnlineUrlActivity"
android:name="eu.kanade.tachiyomi.multisrc.lectortmo.LectorTmoUrlActivity"
android:excludeFromRecents="true"
android:exported="true"
android:theme="@android:style/Theme.NoDisplay">
@ -12,11 +12,10 @@
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="visortmo.com"
android:host="${SOURCEHOST}"
android:pathPattern="/library/..*/..*/..*"
android:scheme="https" />
android:scheme="${SOURCESCHEME}" />
</intent-filter>
</activity>
</application>

View File

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -0,0 +1,72 @@
package eu.kanade.tachiyomi.extension.es.lectormanga
import eu.kanade.tachiyomi.multisrc.lectortmo.LectorTmo
import eu.kanade.tachiyomi.network.GET
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.util.asJsoup
import okhttp3.Response
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
class LectorManga : LectorTmo("LectorManga", "https://lectormanga.com", "es") {
override val id = 7925520943983324764
override fun popularMangaSelector() = ".col-6 .card"
override fun popularMangaFromElement(element: Element) = SManga.create().apply {
setUrlWithoutDomain(element.select("a").attr("href"))
title = element.select("a").text()
thumbnail_url = element.select("img").attr("src")
}
override fun mangaDetailsParse(document: Document) = SManga.create().apply {
document.selectFirst("h1:has(small)")?.let { title = it.ownText() }
genre = document.select("a.py-2").joinToString(", ") {
it.text()
}
description = document.select(".col-12.mt-2").text()
status = parseStatus(document.select(".status-publishing").text())
thumbnail_url = document.select(".text-center img.img-fluid").attr("src")
}
override fun chapterListParse(response: Response): List<SChapter> = mutableListOf<SChapter>().apply {
val document = response.asJsoup()
// One-shot
if (document.select("#chapters").isEmpty()) {
return document.select(oneShotChapterListSelector).map { chapterFromElement(it, oneShotChapterName) }
}
// Regular list of chapters
val chapterNames = document.select("#chapters h4.text-truncate")
val chapterInfos = document.select("#chapters .chapter-list")
chapterNames.forEachIndexed { index, _ ->
val scanlator = chapterInfos[index].select("li")
if (getScanlatorPref()) {
scanlator.forEach { add(chapterFromElement(it, chapterNames[index].text())) }
} else {
scanlator.last { add(chapterFromElement(it, chapterNames[index].text())) }
}
}
}
override fun chapterFromElement(element: Element, chName: String) = SChapter.create().apply {
url = element.select("div.row > .text-right > a").attr("href")
name = chName
scanlator = element.select("div.col-12.text-truncate span").text()
date_upload = element.select("span.badge.badge-primary.p-2").first()?.text()?.let {
parseChapterDate(it)
} ?: 0
}
override fun imageRequest(page: Page) = GET(
url = page.imageUrl!!,
headers = headers.newBuilder()
.set("Referer", page.url.substringBefore("news/"))
.build(),
)
}

View File

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,8 @@
package eu.kanade.tachiyomi.extension.es.tumangaonline
import eu.kanade.tachiyomi.multisrc.lectortmo.LectorTmo
class TuMangaOnline : LectorTmo("TuMangaOnline", "https://visortmo.com", "es") {
override val id = 4146344224513899730
}

View File

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1,10 @@
package eu.kanade.tachiyomi.extension.en.likemanga
import eu.kanade.tachiyomi.multisrc.likemanga.LikeManga
import eu.kanade.tachiyomi.network.interceptor.rateLimit
class LikeMangaIO : LikeManga("LikeManga", "https://likemanga.io", "en") {
override val client = super.client.newBuilder()
.rateLimit(1, 2)
.build()
}

View File

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,7 @@
package eu.kanade.tachiyomi.extension.en.zinmanhwa
import eu.kanade.tachiyomi.multisrc.likemanga.LikeManga
class ZinMangaIO : LikeManga("ZinManga.io", "https://zinmanga.io", "en") {
override val versionId = 2
}

View File

@ -2,15 +2,25 @@ package eu.kanade.tachiyomi.extension.en.creepyscans
import eu.kanade.tachiyomi.multisrc.madara.Madara
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.network.asObservableSuccess
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import eu.kanade.tachiyomi.source.model.Filter
import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.model.MangasPage
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga
import kotlinx.serialization.json.boolean
import kotlinx.serialization.json.jsonArray
import kotlinx.serialization.json.jsonObject
import kotlinx.serialization.json.jsonPrimitive
import okhttp3.CacheControl
import okhttp3.FormBody
import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.OkHttpClient
import okhttp3.Request
import org.jsoup.nodes.Document
import rx.Observable
import java.util.concurrent.TimeUnit
class CreepyScans : Madara(
@ -47,9 +57,37 @@ class CreepyScans : Madara(
// Search
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
if (query.isNotBlank()) throw Exception("Search not available")
override fun fetchSearchManga(
page: Int,
query: String,
filters: FilterList,
): Observable<MangasPage> {
return if (query.isNotBlank()) {
val form = FormBody.Builder()
.add("action", "wp-manga-search-manga")
.add("title", query)
.build()
client.newCall(POST("$baseUrl/wp-admin/admin-ajax.php", headers, form)).asObservableSuccess().map { res ->
json.parseToJsonElement(res.body.string()).jsonObject.let { obj ->
if (!obj["success"]!!.jsonPrimitive.boolean) {
MangasPage(emptyList(), false)
} else {
val mangas = obj["data"]!!.jsonArray.map {
SManga.create().apply {
title = it.jsonObject["title"]!!.jsonPrimitive.content
setUrlWithoutDomain(it.jsonObject["url"]!!.jsonPrimitive.content)
}
}
MangasPage(mangas, false)
}
}
}
} else {
super.fetchSearchManga(page, query, filters)
}
}
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
val url = "$baseUrl/$mangaSubString/".toHttpUrl().newBuilder()
filters.forEach { filter ->
when (filter) {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@ -1,9 +0,0 @@
package eu.kanade.tachiyomi.extension.en.firstkissmangatv
import eu.kanade.tachiyomi.multisrc.madara.Madara
class FirstKissMangaTv : Madara("1stKissManga.tv", "https://1stkissmanga.tv", "en") {
override val useNewChapterEndpoint = false
override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/"
}

View File

@ -0,0 +1,14 @@
package eu.kanade.tachiyomi.extension.ar.gatemanga
import eu.kanade.tachiyomi.multisrc.madara.Madara
import java.text.SimpleDateFormat
import java.util.Locale
class Gatemanga : Madara(
"Gatemanga",
"https://gatemanga.com",
"ar",
dateFormat = SimpleDateFormat("d MMMM، yyyy", Locale("ar")),
) {
override val mangaSubString = "ar"
}

View File

@ -1,13 +0,0 @@
package eu.kanade.tachiyomi.extension.en.hentai20
import eu.kanade.tachiyomi.multisrc.madara.Madara
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import okhttp3.OkHttpClient
import java.util.concurrent.TimeUnit
class Hentai20 : Madara("Hentai20", "https://hentai20.io", "en") {
override val client: OkHttpClient = super.client.newBuilder()
.rateLimit(1, 1, TimeUnit.SECONDS)
.build()
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

View File

@ -1,9 +0,0 @@
package eu.kanade.tachiyomi.extension.en.mangagoyaoi
import eu.kanade.tachiyomi.multisrc.madara.Madara
class MangaGoYaoi : Madara("MangaGo Yaoi", "https://mangagoyaoi.com", "en") {
override val useNewChapterEndpoint = true
override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,51 @@
package eu.kanade.tachiyomi.extension.ar.mangalink
import android.app.Application
import android.content.SharedPreferences
import android.widget.Toast
import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.extension.BuildConfig
import eu.kanade.tachiyomi.multisrc.madara.Madara
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.text.SimpleDateFormat
import java.util.Locale
class Mangalink : Madara("مانجا لينك", "https://manga-link.net", "ar", SimpleDateFormat("MMMM dd, yyyy", Locale("ar"))) {
override val chapterUrlSuffix = ""
private val defaultBaseUrl = "https://manga-link.net"
override val baseUrl by lazy { getPrefBaseUrl() }
private val preferences: SharedPreferences by lazy {
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
}
companion object {
private const val RESTART_TACHIYOMI = ".لتطبيق الإعدادات الجديدة Tachiyomi أعد تشغيل"
private const val BASE_URL_PREF_TITLE = "تعديل الرابط"
private const val BASE_URL_PREF = "overrideBaseUrl_v${BuildConfig.VERSION_CODE}"
private const val BASE_URL_PREF_SUMMARY = ".للاستخدام المؤقت. تحديث التطبيق سيؤدي الى حذف الإعدادات"
}
override fun setupPreferenceScreen(screen: PreferenceScreen) {
val baseUrlPref = androidx.preference.EditTextPreference(screen.context).apply {
key = BASE_URL_PREF
title = BASE_URL_PREF_TITLE
summary = BASE_URL_PREF_SUMMARY
this.setDefaultValue(defaultBaseUrl)
dialogTitle = BASE_URL_PREF_TITLE
dialogMessage = "Default: $defaultBaseUrl"
setOnPreferenceChangeListener { _, _ ->
Toast.makeText(screen.context, RESTART_TACHIYOMI, Toast.LENGTH_LONG).show()
true
}
}
screen.addPreference(baseUrlPref)
super.setupPreferenceScreen(screen)
}
private fun getPrefBaseUrl(): String = preferences.getString(BASE_URL_PREF, defaultBaseUrl)!!
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,34 @@
package eu.kanade.tachiyomi.extension.en.manhuaaz
import eu.kanade.tachiyomi.multisrc.madara.Madara
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.Response
class ManhuaAZ : Madara("Manhua AZ", "https://manhuaaz.com", "en") {
// The website does not flag the content.
override val filterNonMangaItems = false
override fun chapterListParse(response: Response): List<SChapter> {
var chapterList = super.chapterListParse(response)
// the site adds a ghost chapter for some entries
chapterList.firstOrNull()?.let {
if (!isReleasedChapter(it)) {
chapterList = chapterList.subList(1, chapterList.size)
}
}
return chapterList
}
private fun isReleasedChapter(chapter: SChapter): Boolean {
val document = client.newCall(
GET(chapter.url, headersBuilder().build()),
).execute().asJsoup()
return document.select(pageListParseSelector).isNotEmpty()
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

View File

@ -4,4 +4,4 @@ import eu.kanade.tachiyomi.multisrc.madara.Madara
import java.text.SimpleDateFormat
import java.util.Locale
class RagnarokScanlation : Madara("Ragnarok Scanlation", "https://ragnarokscanlation.com", "es", SimpleDateFormat("MMMM d, yyyy", Locale("es")))
class RagnarokScanlation : Madara("Ragnarok Scanlation", "https://ragnarokscanlation.net", "es", SimpleDateFormat("MMMM d, yyyy", Locale("es")))

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,63 @@
package eu.kanade.tachiyomi.extension.en.sectscans
import eu.kanade.tachiyomi.multisrc.madara.Madara
import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.FormBody
import okhttp3.HttpUrl.Companion.toHttpUrl
import org.jsoup.nodes.Document
class SectScans : Madara("SectScans", "https://sectscans.com", "en") {
override val client = super.client.newBuilder()
.rateLimit(2)
.build()
override val mangaSubString = "comics"
override val useNewChapterEndpoint = true
override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/"
// =========================== Manga Details ============================
override val mangaDetailsSelectorTitle = ".post-title"
override val mangaDetailsSelectorAuthor = ".item_authors .summary-content"
override val mangaDetailsSelectorArtist = ".item_artists .summary-content"
override val mangaDetailsSelectorThumbnail = "img"
override val mangaDetailsSelectorGenre = ".genres-content a"
override fun mangaDetailsParse(document: Document): SManga {
val postId = document.selectFirst("script:containsData(manga_id)")
?.data()
?.substringAfter("manga_id\":\"")
?.substringBefore("\"")
?: return super.mangaDetailsParse(document)
val formBody = FormBody.Builder().apply {
add("action", "madara_hover_load_post")
add("postid", postId)
}.build()
val formHeaders = headersBuilder().apply {
add("Accept", "text/html, */*; q=0.01")
add("Host", baseUrl.toHttpUrl().host)
add("Origin", baseUrl)
add("X-Requested-With", "XMLHttpRequest")
}.build()
val resp = client.newCall(
POST("$baseUrl/wp-admin/admin-ajax.php", formHeaders, formBody),
).execute()
return super.mangaDetailsParse(resp.asJsoup()).apply {
description = buildString {
append(document.selectFirst(".manga-summary")?.text())
append("\n\n")
append(description)
}
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

View File

@ -1,9 +0,0 @@
package eu.kanade.tachiyomi.extension.en.zinmangatop
import eu.kanade.tachiyomi.multisrc.madara.Madara
class ZinMangaTop : Madara("ZinManga.top (unoriginal)", "https://zinmanga.top", "en") {
override val useNewChapterEndpoint = true
override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/"
}

View File

@ -1,12 +0,0 @@
package eu.kanade.tachiyomi.extension.en.zinmanhwa
import eu.kanade.tachiyomi.multisrc.madara.Madara
import java.text.SimpleDateFormat
import java.util.Locale
class Zinmanhwa : Madara(
"Zinmanhwa",
"https://zinmanhwa.com",
"en",
dateFormat = SimpleDateFormat("dd/MM/yy", Locale.US),
)

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

@ -0,0 +1,5 @@
package eu.kanade.tachiyomi.extension.en.mangafoxfun
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
class MangaFoxFun : MangaHub("MangaFox.fun", "https://mangafox.fun", "en", "mf01")

View File

@ -0,0 +1,5 @@
package eu.kanade.tachiyomi.extension.en.mangahereonl
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
class MangaHereOnl : MangaHub("MangaHere.onl", "https://mangahere.onl", "en", "mh01")

View File

@ -0,0 +1,5 @@
package eu.kanade.tachiyomi.extension.en.mangahubio
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
class MangaHubIo : MangaHub("MangaHub", "https://mangahub.io", "en", "m01")

View File

@ -0,0 +1,5 @@
package eu.kanade.tachiyomi.extension.en.mangakakalotfun
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
class MangakakalotFun : MangaHub("Mangakakalot.fun", "https://mangakakalot.fun", "en", "mn01")

View File

@ -0,0 +1,5 @@
package eu.kanade.tachiyomi.extension.en.manganel
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
class MangaNel : MangaHub("MangaNel", "https://manganel.me", "en", "mn05")

View File

@ -0,0 +1,5 @@
package eu.kanade.tachiyomi.extension.en.mangaonlinefun
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
class MangaOnlineFun : MangaHub("MangaOnline.fun", "https://mangaonline.fun", "en", "m02")

View File

@ -0,0 +1,5 @@
package eu.kanade.tachiyomi.extension.en.mangapandaonl
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
class MangaPandaOnl : MangaHub("MangaPanda.onl", "https://mangapanda.onl", "en", "mr02")

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