Compare commits

..

51 Commits

Author SHA1 Message Date
Claudemirovsky 4856f0b89e New source: en/Cutie Comics (#948)
CI / Prepare job (push) Successful in 3s Details
CI / Build multisrc modules (push) Successful in 6m6s Details
CI / Build individual modules (push) Successful in 39s Details
CI / Publish repo (push) Successful in 43s Details
* feat: Create Cutie Comics base

* feat: Implement popular manga page

* feat: Implement search manga page

* chore: Add isNsfw flag

* feat: Implement manga details page

* fix: Fix URL intent handler

* feat: Implement single-chapter "list"

* feat: Parse page list

* chore: Add source icon

* fix: Fix crash in URL intent handler

* refactor: Follow chapter name convention
2024-02-04 02:25:10 +00:00
Claudemirovsky 742027746e New source: es/HentaiMode (#949)
* feat: Create HentaiMode base

* feat: Implement popular manga page

* feat: Implement search manga page

* feat: Implement manga details page

* feat: Implement single-chapter "list"

* feat: Parse page list

* chore: Add source icons

* fix: Fix URL intent handler

* refactor: apply suggestion - >imagine using string interpolation

Thx beerpsi, i'll pay you a beer (without piss) soon

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

* refactor: Follow chapter name convention

---------

Co-authored-by: beerpsi <92439990+beerpiss@users.noreply.github.com>
2024-02-04 02:25:10 +00:00
stevenyomi dd3b5b0140 MCCMS: update sources (#956) 2024-02-04 02:25:10 +00:00
beerpsi 84453ebf50 MMRCMS: Fix chapter name cleaning logic (#951) 2024-02-04 02:25:10 +00:00
stevenyomi 46990a4d9f Add custom UA to Happymh and Jinman Tiantang (#957) 2024-02-04 02:25:10 +00:00
stevenyomi 956656cc3e Kemono: retry when fetching posts (#958)
* Kemono: retry when fetching posts

* stricter rate limit
2024-02-04 02:25:10 +00:00
Eshlender 169f83b594 [RU]Remanga fix LICENSED Hides available chapters! (#959) 2024-02-04 02:25:10 +00:00
Fermín Cirella 7e2fa5de61 Anchira - Fix pagination (#964) 2024-02-04 02:25:10 +00:00
Claudemirovsky 8f7c88a723 ru/AComics: Fix NPEs (#941)
* fix: Fix manga details

* fix: Fix chapter list

* fix: Fix page selector

* refactor: General refactoration

* chore: Set isNsfw flag

* chore: Bump version

* refactor: Apply suggestion
2024-02-04 02:25:10 +00:00
bapeey 246fe574e7 Remove YugenMangas (es) (#963)
Remove Yugen
2024-02-04 02:25:10 +00:00
Eshlender 0b214c2d89 [RU]Remanga all bookmark with custom's (#952)
* [RU]Remanga all bookmark with custom's

* auto rebeald
2024-02-04 02:25:10 +00:00
Eshlender 90f361e243 [RU]ComX title_en not anymore fix null (#953) 2024-02-04 02:25:10 +00:00
stevenyomi 3ce0383555 Kemono: update URL (#942) 2024-02-04 02:25:08 +00:00
Mike dd60a193e7 ColorlibAnime (#937)
* ColorlibAnime

* remove adaptive icons

* lint

* lint

* Optimize icons with `oxipng -omax --strip all`

---------

Co-authored-by: stevenyomi <95685115+stevenyomi@users.noreply.github.com>
2024-02-04 02:25:08 +00:00
mohamedotaku cc9a0d2b41 Add source Manga pro "ar" (#921)
* Add source MangaPro "ar"
* Update name, versionId and icons

---------

Co-authored-by: stevenyomi <95685115+stevenyomi@users.noreply.github.com>
2024-02-04 02:25:08 +00:00
Secozzi 0b7dd2f6bc update infinityscans url (#940) 2024-02-04 02:25:08 +00:00
stevenyomi 2023438856 Rename MangaFlame to Manga Flame (#939) 2024-02-04 02:25:08 +00:00
stevenyomi 579a574769 Romanize extension names (#938) 2024-02-04 02:25:08 +00:00
beerpsi 0053823dcf Rewrite MMRCMS (#931)
* Rewrite MMRCMS

* linting

* Mangas.in: Fix latest, search by query, manga details

* use HashSet instead of Set for manga detail keys

* use buildList for building filter list

* mangas.in: Copy over changes to MangasInDto

* Use a better metric for determining if filter fetching failed.

Also merged types and tags.

* Move to using named constructor parameters instead of open vals

This improves the discoverability of configurable stuff.

* use normal try/catch instead of runCatching

* Elaborate on the reason for not using Nothing

* Make most configuration options private

* forbidden -> useNamedArgumentsBelow

* Address lint failures

* Close the thingies

* <:shitting:1130237162105876490>

* <:shitting:1130237162105876490>
2024-02-04 02:25:08 +00:00
Secozzi 3c0f484afc add boxmanhwa to madtheme (#936) 2024-02-04 02:25:08 +00:00
Mike d8b551bbc9 Prune Madara part 3 (#916) 2024-02-04 02:25:08 +00:00
Mike 38322fcb0c Mangakik - update domain (#912) 2024-02-04 02:25:05 +00:00
Luqman bbeb1622ca Comic Fx: fix chapter pages (#877)
* Comic Fx: fix chapter pages

* Update src/id/comicfx/src/eu/kanade/tachiyomi/extension/id/comicfx/ComicFx.kt

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

* Update src/id/comicfx/src/eu/kanade/tachiyomi/extension/id/comicfx/ComicFx.kt

* Update ComicFx.kt

* Update ComicFx.kt

---------

Co-authored-by: beerpsi <92439990+beerpiss@users.noreply.github.com>
2024-02-04 02:25:05 +00:00
beerpsi 891f335741 MangaHub: Update CDN URL (#906) 2024-02-04 02:25:04 +00:00
mohamedotaku 8c93344f17 add source ManjaNoon "ar" (#888)
* add source ManjaNoon

* Update icon and fix source name

* Case insensitive system sucks

* Change package name

* Change class name

---------

Co-authored-by: stevenyomi <95685115+stevenyomi@users.noreply.github.com>
2024-02-04 02:25:04 +00:00
mohamedotaku 6911eb1c68 Add source ThunderScans "ar" (#886)
* Add source ThunderScans "ar"

* Update baseUrl and icons

---------

Co-authored-by: stevenyomi <95685115+stevenyomi@users.noreply.github.com>
2024-02-04 02:25:04 +00:00
stevenyomi 0926e29994 Baka Manhua: romanize extension name (#891) 2024-02-04 02:25:04 +00:00
Secozzi 617c3bf990 update kaiscans url (#885) 2024-02-04 02:25:04 +00:00
mohamedotaku 3e8dc4d05c Add source Manga Flame "ar" (#883)
* Add source Manga Flame "ar"

* Update and optimize icons

---------

Co-authored-by: stevenyomi <95685115+stevenyomi@users.noreply.github.com>
2024-02-04 02:25:04 +00:00
stevenyomi 92a44a6f6f Mangabz: fix index.json base URL (#881) 2024-02-04 02:25:04 +00:00
stevenyomi 4b309832d3 Set desktop UA and update URL for some Chinese sources (#880)
* Set desktop UA and update URL for some Chinese sources

* Update linked websites
2024-02-04 02:25:04 +00:00
Luqman 879efc332f Remove MangaMiso source (#875) 2024-02-04 02:25:04 +00:00
AwkwardPeak7 27c632af46 OPSCANS: move to Madara (#862) 2024-02-04 02:24:58 +00:00
xingyuan li 1ffe983a73 Add header for manhuagui extension (#861)
* add `Accept-Language` header for manhuagui

* update extVersionCode
2024-02-04 02:24:57 +00:00
Mike 775560e1f3 Restore Hunters Scans (#858)
* Restore Hunter Scans

* remove version bump
2024-02-04 02:24:57 +00:00
AwkwardPeak7 0737e27057 999Hentai: update api url (#857)
update api url
2024-02-04 02:24:57 +00:00
Secozzi a18a5e527c Add back manhuascan (#849)
* add back manhuascan

* bump version to 8

* stuff
2024-02-04 02:24:57 +00:00
beerpsi a200ab1081 Bato.to: Fix page list (#850)
* Bato.to: Fix page list

* Remove overengineering
2024-02-04 02:23:20 +00:00
Mike 0ca16707e2 Prune Madara part 2 (#847) 2024-02-04 02:23:20 +00:00
Luqman c851f7d7ee Add MangaYu source (#845)
Closes #795
2024-02-04 02:23:20 +00:00
Luqman 3a9c9daefc Ainz Scans ID: update domain (#839) 2024-02-04 02:23:20 +00:00
Mike 406dfe4d57 Madara - update 3 domains (#833) 2024-02-04 02:23:20 +00:00
stevenyomi ea75ef8070 SinMH: update sources (#831) 2024-02-04 02:23:20 +00:00
Mike 0b0c05fa3d Prune Madara part 1 (#817) 2024-02-04 02:23:20 +00:00
mohamedotaku 9984f5e836 add source Olaoe "ar" (#823)
* add source Olaoe

* Update icons and format

---------

Co-authored-by: stevenyomi <95685115+stevenyomi@users.noreply.github.com>
2024-02-04 02:23:20 +00:00
stevenyomi cd14304c95 Mangaforfree.com: fix package name (#832) 2024-02-04 02:23:20 +00:00
beerpsi 5d47cb7ec6 ManhwaXXL: Move off BakaManga (#818)
* Move ManhwaXXL off BakaManga

* It's joever

* isNsfw = true

* Allow genre matching
2024-02-04 02:23:20 +00:00
Secozzi 220a70b423 Infinityscans, try to solve cloudflare turnstile in webview (#821)
solve cloudflare turnstile in webview
2024-02-04 02:23:20 +00:00
Sofie 5f8099de05 Mangaforfreecom: trust all certificate (#822)
* Mangaforfreecom: trust all certificate

* clean

* small fix

* comply

* comply

---------

Co-authored-by: ghost <ghost@gmail.com>
2024-02-04 02:23:20 +00:00
gan-of-culture 4b5a4eee30 Manhwax - update domain (#827) 2024-02-04 02:23:20 +00:00
Secozzi ebf1e8b06a add aurora scan (#819) 2024-02-04 02:23:02 +00:00
463 changed files with 2694 additions and 3427 deletions

View File

@ -6,6 +6,8 @@ apply plugin: 'org.jmailen.kotlinter'
assert !ext.has("pkgNameSuffix")
assert !ext.has("libVersion")
assert extName.chars().max().asInt < 0x180 : "Extension name should be romanized"
android {
compileSdk AndroidConfig.compileSdk

View File

@ -34,7 +34,9 @@ fun SharedPreferences.getPrefCustomUA(): String? {
fun addRandomUAPreferenceToScreen(
screen: PreferenceScreen,
) {
ListPreference(screen.context).apply {
val context = screen.context
ListPreference(context).apply {
key = PREF_KEY_RANDOM_UA
title = TITLE_RANDOM_UA
entries = RANDOM_UA_ENTRIES
@ -43,28 +45,28 @@ fun addRandomUAPreferenceToScreen(
setDefaultValue("off")
}.also(screen::addPreference)
EditTextPreference(screen.context).apply {
EditTextPreference(context).apply {
key = PREF_KEY_CUSTOM_UA
title = TITLE_CUSTOM_UA
summary = CUSTOM_UA_SUMMARY
setOnPreferenceChangeListener { _, newValue ->
try {
Headers.Builder().add("User-Agent", newValue as String).build()
Headers.headersOf("User-Agent", newValue as String)
true
} catch (e: IllegalArgumentException) {
Toast.makeText(screen.context, "User Agent invalid${e.message}", Toast.LENGTH_LONG).show()
Toast.makeText(context, "Invalid user agent string: ${e.message}", Toast.LENGTH_LONG).show()
false
}
}
}.also(screen::addPreference)
}
const val TITLE_RANDOM_UA = "Random User-Agent (Requires Restart)"
const val TITLE_RANDOM_UA = "Random user agent string (requires restart)"
const val PREF_KEY_RANDOM_UA = "pref_key_random_ua_"
val RANDOM_UA_ENTRIES = arrayOf("OFF", "Desktop", "Mobile")
val RANDOM_UA_VALUES = arrayOf("off", "desktop", "mobile")
const val TITLE_CUSTOM_UA = "Custom User-Agent (Requires Restart)"
const val TITLE_CUSTOM_UA = "Custom user agent string (requires restart)"
const val PREF_KEY_CUSTOM_UA = "pref_key_custom_ua_"
const val CUSTOM_UA_SUMMARY = "Leave blank to use application default user-agent (IGNORED if Random User-Agent is enabled)"
const val CUSTOM_UA_SUMMARY = "Leave blank to use the default user agent string (ignored if random user agent string is enabled)"

View File

@ -1,68 +0,0 @@
package eu.kanade.tachiyomi.extension.en.manhwaxxl
import eu.kanade.tachiyomi.multisrc.bakamanga.BakaManga
class ManhwaXXL : BakaManga(
"Manhwa XXL",
"https://manhwaxxl.com",
"en",
) {
override fun getGenreList() = arrayOf(
Pair("All", ""),
Pair("Action", "action"),
Pair("Adaptation", "adaptation"),
Pair("Adult", "adult"),
Pair("Adventure", "adventure"),
Pair("BL", "bl"),
Pair("Comedy", "comedy"),
Pair("Cooking", "cooking"),
Pair("Demons", "demons"),
Pair("Drama", "drama"),
Pair("Ecchi", "ecchi"),
Pair("Fantasy", "fantasy"),
Pair("Full color", "full-color"),
Pair("Game", "game"),
Pair("Gender Bender", "gender-bender"),
Pair("GL", "gl"),
Pair("Harem", "harem"),
Pair("Historical", "historical"),
Pair("Horror", "horror"),
Pair("Isekai", "isekai"),
Pair("Josei", "josei"),
Pair("Live action", "live-action"),
Pair("Love & Romance", "love-romance"),
Pair("Magic", "magic"),
Pair("Manga", "manga"),
Pair("Manhua", "manhua"),
Pair("Manhwa", "manhwa"),
Pair("Martial Arts", "martial-arts"),
Pair("Mature", "mature"),
Pair("Mecha", "mecha"),
Pair("Mystery", "mystery"),
Pair("Omegaverse", "omegaverse"),
Pair("Psychological", "psychological"),
Pair("Raw", "raw"),
Pair("Reincarnation", "reincarnation"),
Pair("Romance", "romance"),
Pair("RPG", "rpg"),
Pair("School Life", "school-life"),
Pair("Sci-fi", "sci-fi"),
Pair("Seinen", "seinen"),
Pair("Shoujo", "shoujo"),
Pair("Shoujo Ai", "shoujo-ai"),
Pair("Shounen", "shounen"),
Pair("Slice of Life", "slice-of-life"),
Pair("Smut", "smut"),
Pair("Sports", "sports"),
Pair("Supernatural", "supernatural"),
Pair("Thriller", "thriller"),
Pair("Tragedy", "tragedy"),
Pair("Vampire", "vampire"),
Pair("Vanilla", "vanilla"),
Pair("Webtoon", "webtoon"),
Pair("Webtoons", "webtoons"),
Pair("Yaoi", "yaoi"),
Pair("Yuri", "yuri"),
Pair("Zombie", "zombie"),
)
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

View File

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -0,0 +1,7 @@
package eu.kanade.tachiyomi.extension.id.neumanga
import eu.kanade.tachiyomi.multisrc.colorlibanime.ColorlibAnime
class Neumanga : ColorlibAnime("Neumanga", "https://neumanga.xyz", "id") {
override val versionId = 2
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

View File

@ -1,165 +0,0 @@
package eu.kanade.tachiyomi.extension.es.yugenmangas
import android.app.Application
import android.content.SharedPreferences
import eu.kanade.tachiyomi.multisrc.heancms.Genre
import eu.kanade.tachiyomi.multisrc.heancms.HeanCms
import eu.kanade.tachiyomi.network.interceptor.rateLimitHost
import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.Interceptor
import okhttp3.ProtocolException
import okhttp3.Response
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.io.IOException
import java.text.SimpleDateFormat
import java.util.TimeZone
import java.util.concurrent.TimeUnit
class YugenMangas :
HeanCms(
"YugenMangas",
"https://yugenmangas.net",
"es",
"https://api.yugenmangas.net",
) {
// Site changed from Madara to HeanCms.
override val versionId = 2
override val baseUrl by lazy { getPrefBaseUrl() }
private val preferences by lazy {
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
}
private var lastDomain = ""
private fun domainChangeIntercept(chain: Interceptor.Chain): Response {
val request = chain.request()
if (!request.url.host.startsWith("yugenmangas")) {
return chain.proceed(request)
}
if (lastDomain.isNotEmpty()) {
val newUrl = request.url.newBuilder()
.host(preferences.baseUrlHost)
.build()
return chain.proceed(
request.newBuilder()
.url(newUrl)
.build(),
)
}
val response = try {
chain.proceed(request)
} catch (e: ProtocolException) {
if (e.message?.contains("Too many follow-up requests") == true) {
throw IOException("No se pudo obtener la nueva URL del sitio")
} else {
throw e
}
}
if (request.url.host == response.request.url.host) return response
response.close()
preferences.baseUrlHost = response.request.url.host
lastDomain = request.url.host
val newUrl = request.url.newBuilder()
.host(response.request.url.host)
.build()
return chain.proceed(
request.newBuilder()
.url(newUrl)
.build(),
)
}
override val slugStrategy = SlugStrategy.ID
override val useNewQueryEndpoint = true
override val client = super.client.newBuilder()
.connectTimeout(60, TimeUnit.SECONDS)
.readTimeout(90, TimeUnit.SECONDS)
.rateLimitHost(apiUrl.toHttpUrl(), 2, 3)
.addInterceptor(::domainChangeIntercept)
.build()
override val coverPath: String = ""
override val dateFormat: SimpleDateFormat = super.dateFormat.apply {
timeZone = TimeZone.getTimeZone("UTC")
}
override fun getGenreList(): List<Genre> = listOf(
Genre("+18", 1),
Genre("Acción", 36),
Genre("Adulto", 38),
Genre("Apocalíptico", 3),
Genre("Artes marciales (1)", 16),
Genre("Artes marciales (2)", 37),
Genre("Aventura", 2),
Genre("Boys Love", 4),
Genre("Ciencia ficción", 39),
Genre("Comedia", 5),
Genre("Demonios", 6),
Genre("Deporte", 26),
Genre("Drama", 7),
Genre("Ecchi", 8),
Genre("Familia", 9),
Genre("Fantasía", 10),
Genre("Girls Love", 11),
Genre("Gore", 12),
Genre("Harem", 13),
Genre("Harem inverso", 14),
Genre("Histórico", 48),
Genre("Horror", 41),
Genre("Isekai", 40),
Genre("Josei", 15),
Genre("Maduro", 42),
Genre("Magia", 17),
Genre("MangoScan", 35),
Genre("Mecha", 18),
Genre("Militar", 19),
Genre("Misterio", 20),
Genre("Psicológico", 21),
Genre("Realidad virtual", 46),
Genre("Recuentos de la vida", 25),
Genre("Reencarnación", 22),
Genre("Regresion", 23),
Genre("Romance", 24),
Genre("Seinen", 27),
Genre("Shonen", 28),
Genre("Shoujo", 29),
Genre("Sistema", 45),
Genre("Smut", 30),
Genre("Supernatural", 31),
Genre("Supervivencia", 32),
Genre("Tragedia", 33),
Genre("Transmigración", 34),
Genre("Vida Escolar", 47),
Genre("Yaoi", 43),
Genre("Yuri", 44),
)
companion object {
private const val defaultBaseUrlHost = "yugenmangas.net"
private const val BASE_URL_PREF = "prefOverrideBaseUrl"
}
private var SharedPreferences.baseUrlHost
get() = getString(BASE_URL_PREF, defaultBaseUrlHost) ?: defaultBaseUrlHost
set(newHost) {
edit().putString(BASE_URL_PREF, newHost).commit()
}
private fun getPrefBaseUrl(): String = preferences.baseUrlHost.let { "https://$it" }
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

View File

@ -1,9 +0,0 @@
package eu.kanade.tachiyomi.extension.en.archerscans
import eu.kanade.tachiyomi.multisrc.madara.Madara
class ArcheRScans : Madara("ArcheR Scans", "https://www.archerscans.com", "en") {
override val useNewChapterEndpoint = false
override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/"
}

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.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

View File

@ -1,17 +0,0 @@
package eu.kanade.tachiyomi.extension.en.astrallibrary
import eu.kanade.tachiyomi.multisrc.madara.Madara
import eu.kanade.tachiyomi.network.GET
import okhttp3.Request
import java.text.SimpleDateFormat
import java.util.Locale
class AstralLibrary : Madara("Astral Library", "https://www.astrallibrary.net", "en", SimpleDateFormat("d MMM", Locale.US)) {
override fun popularMangaRequest(page: Int): Request {
return GET("$baseUrl/manga-tag/manga/?m_orderby=views&page=$page", headers)
}
override fun latestUpdatesRequest(page: Int): Request {
return GET("$baseUrl/manga-tag/manga/?m_orderby=latest&page=$page", headers)
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

View File

@ -1,9 +0,0 @@
package eu.kanade.tachiyomi.extension.fr.bluesolo
import eu.kanade.tachiyomi.multisrc.madara.Madara
import java.text.SimpleDateFormat
import java.util.Locale
class BlueSolo : Madara("Blue Solo", "https://www1.bluesolo.org", "fr", dateFormat = SimpleDateFormat("d MMMM yyyy", Locale.FRENCH)) {
override val mangaDetailsSelectorStatus = "div.summary-heading:contains(Statut) + .summary-content"
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

View File

@ -1,64 +0,0 @@
package eu.kanade.tachiyomi.extension.en.coffeemangatop
import eu.kanade.tachiyomi.multisrc.madara.Madara
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.Request
import okhttp3.Response
import org.jsoup.nodes.Document
import java.text.SimpleDateFormat
import java.util.Locale
class CoffeeMangaTop : Madara(
"CoffeeManga.top (unoriginal)",
"https://coffeemanga.top",
"en",
dateFormat = SimpleDateFormat("MMM dd, HH:mm", Locale.ENGLISH),
) {
override val useNewChapterEndpoint = false
override fun searchPage(page: Int): String = "search?page=$page"
override fun popularMangaRequest(page: Int): Request =
GET("$baseUrl/popular-manga?page=$page", headers)
override fun latestUpdatesRequest(page: Int): Request =
GET("$baseUrl/latest-manga?page=$page", headers)
// Copied from IsekaiScan.top (unoriginal)
override fun chapterListParse(response: Response): List<SChapter> {
val document = response.asJsoup()
val chaptersWrapper = document.select("div[id^=manga-chapters-holder]")
var chapterElements = document.select(chapterListSelector())
if (chapterElements.isEmpty() && !chaptersWrapper.isNullOrEmpty()) {
val mangaId = chaptersWrapper.attr("data-id")
val xhrHeaders = headersBuilder()
.add("X-Requested-With", "XMLHttpRequest")
.build()
val xhrRequest = GET("$baseUrl/ajax-list-chapter?mangaID=$mangaId", xhrHeaders)
val xhrResponse = client.newCall(xhrRequest).execute()
chapterElements = xhrResponse.asJsoup().select(chapterListSelector())
xhrResponse.close()
}
countViews(document)
return chapterElements.map(::chapterFromElement)
}
// Copied from IsekaiScan.top (unoriginal)
override fun pageListParse(document: Document): List<Page> {
val stringArray = document.select("p#arraydata").text().split(",").toTypedArray()
return stringArray.mapIndexed { index, url ->
Page(
index,
document.location(),
url,
)
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

View File

@ -1,14 +0,0 @@
package eu.kanade.tachiyomi.extension.es.dokkomanga
import eu.kanade.tachiyomi.multisrc.madara.Madara
import java.text.SimpleDateFormat
import java.util.Locale
class DokkoManga : Madara(
"DokkoManga",
"https://dokkomanga.com",
"es",
SimpleDateFormat("MMMMM dd, yyyy", Locale("es")),
) {
override val useNewChapterEndpoint = true
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

View File

@ -1,7 +0,0 @@
package eu.kanade.tachiyomi.extension.en.dreammanga
import eu.kanade.tachiyomi.multisrc.madara.Madara
import java.text.SimpleDateFormat
import java.util.Locale
class DreamManga : Madara("Dream Manga", "https://www.swarmmanga.com", "en", SimpleDateFormat("dd/MM/yyyy", Locale.US))

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,22 +0,0 @@
package eu.kanade.tachiyomi.extension.ar.falconmanga
import eu.kanade.tachiyomi.multisrc.madara.Madara
import java.text.SimpleDateFormat
import java.util.Locale
class FalconManga : Madara(
"فالكون مانجا",
"https://falconmanga.com",
"ar",
dateFormat = SimpleDateFormat("dd MMMM، yyyy", Locale("ar")),
) {
override val useNewChapterEndpoint = true
override fun searchPage(page: Int): String {
return if (page > 1) {
"page/$page/"
} else {
""
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

View File

@ -1,20 +0,0 @@
package eu.kanade.tachiyomi.extension.pt.finalscans
import eu.kanade.tachiyomi.multisrc.madara.Madara
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import okhttp3.OkHttpClient
import java.text.SimpleDateFormat
import java.util.Locale
import java.util.concurrent.TimeUnit
class FinalScans : Madara(
"Final Scans",
"https://finalscans.com",
"pt-BR",
SimpleDateFormat("MMMMM dd, yyyy", Locale("pt", "BR")),
) {
override val client: OkHttpClient = super.client.newBuilder()
.rateLimit(1, 2, TimeUnit.SECONDS)
.build()
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

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