Add Fecomic (#3573)

* Add Fecomic

* clarify how the 301 redirect is skipped in chapterFromElement

* also https-ify thumbnail URL

* trigger CI
This commit is contained in:
Vetle Ledaal 2024-07-10 14:18:59 +02:00 committed by Draff
parent 37a6515ba7
commit 7871c9a134
No known key found for this signature in database
GPG Key ID: E8A89F3211677653
7 changed files with 74 additions and 0 deletions

View File

@ -0,0 +1,10 @@
ext {
extName = 'Fecomic'
extClass = '.Fecomic'
themePkg = 'madara'
baseUrl = 'https://fecomicc.xyz'
overrideVersionCode = 0
isNsfw = true
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View File

@ -0,0 +1,64 @@
package eu.kanade.tachiyomi.extension.vi.fecomic
import eu.kanade.tachiyomi.multisrc.madara.Madara
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga
import okhttp3.HttpUrl.Companion.toHttpUrl
import org.jsoup.nodes.Element
import java.text.SimpleDateFormat
import java.util.Locale
class Fecomic : Madara(
"Fecomic",
"https://fecomicc.xyz",
"vi",
dateFormat = SimpleDateFormat("dd/MM/yyyy", Locale.ROOT),
) {
override val useLoadMoreRequest = LoadMoreStrategy.Always
override val useNewChapterEndpoint = false
override val mangaSubString = "comic"
override val mangaDetailsSelectorStatus = "div.post-status"
override val mangaDetailsSelectorDescription = "div.desc div.more"
override val mangaDetailsSelectorGenre = "div.genres a"
override fun popularMangaFromElement(element: Element): SManga {
return super.popularMangaFromElement(element).apply {
// Skip 301 redirect
url = url.asHttps()
thumbnail_url = thumbnail_url.asHttpsOrNull()
}
}
override fun searchMangaFromElement(element: Element): SManga {
return super.searchMangaFromElement(element).apply {
// Skip 301 redirect
url = url.asHttps()
thumbnail_url = thumbnail_url.asHttpsOrNull()
}
}
override fun chapterFromElement(element: Element): SChapter {
return super.chapterFromElement(element).apply {
// Skip 301 redirect
val httpUrl = url.toHttpUrl()
// Removes trailing slash, keeps query parameters
if (httpUrl.pathSegments.lastOrNull()?.isEmpty() == true) {
url = httpUrl.newBuilder().removePathSegment(httpUrl.pathSegments.size - 1).build().toString()
}
}
}
private fun String.asHttps(): String {
return if (this.startsWith("http://")) {
"https://${this.removePrefix("http://")}"
} else {
this
}
}
private fun String?.asHttpsOrNull(): String? {
return this?.asHttps()
}
}