From 340edf19dce5feb324965a93499eae0c068f7f97 Mon Sep 17 00:00:00 2001 From: AwkwardPeak7 <48650614+AwkwardPeak7@users.noreply.github.com> Date: Mon, 8 Apr 2024 06:33:47 +0500 Subject: [PATCH] FuzzyDoodle: Make CloudRecess a multisrc and add/fix some sources (#2290) * CloudRecess multisrc * ScyllaScans: move to cloudrecess multisrc * FleksyScans: new source * remove baseUrl * simplify popular always use /manga which isn't technically popular but list of all manga which is good enough * HentaiSlayer (ar): move to cloudrecess * remove CloudRecess (en): site appears to be dead * small change * rename * review changes why do I forget headers * add alternative titles to description * parse filters from popular and search response avoid extra call * remove placeholder author/artist * LelscanVF: move to FuzzyDoodle also improve date parsing * add icons to lelscanvf * flexyScans: change icon other one is of Aksy Scan which also posts on the site --- lib-multisrc/fuzzydoodle/build.gradle.kts | 5 + .../tachiyomi/multisrc/fuzzydoodle/Filters.kt | 62 ++++ .../multisrc/fuzzydoodle/FuzzyDoodle.kt | 317 ++++++++++++++++++ src/ar/hentaislayer/build.gradle | 3 +- .../extension/ar/hentaislayer/HentaiSlayer.kt | 179 +--------- .../ar/hentaislayer/HentaiSlayerFilters.kt | 81 ----- src/en/cloudrecess/AndroidManifest.xml | 22 -- src/en/cloudrecess/build.gradle | 8 - .../res/mipmap-hdpi/ic_launcher.png | Bin 5741 -> 0 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 3179 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 8743 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 16283 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 25519 -> 0 bytes .../extension/en/cloudrecess/CloudRecess.kt | 175 ---------- .../en/cloudrecess/CloudRecessFilters.kt | 163 --------- .../en/cloudrecess/CloudRecessUrlActivity.kt | 41 --- src/en/fleksyscans/build.gradle | 9 + .../res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3788 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2008 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4977 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 8248 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 12461 bytes .../extension/en/fleksyscans/FleksyScans.kt | 5 + src/en/scyllascans/build.gradle | 5 +- .../extension/en/scyllascans/ScyllaScans.kt | 12 +- src/fr/lelscanvf/build.gradle | 5 +- .../lelscanvf/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 4239 bytes .../lelscanvf/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2489 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 6682 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 12370 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 17961 bytes .../extension/fr/lelscanvf/LelscanVF.kt | 15 +- 32 files changed, 423 insertions(+), 684 deletions(-) create mode 100644 lib-multisrc/fuzzydoodle/build.gradle.kts create mode 100644 lib-multisrc/fuzzydoodle/src/eu/kanade/tachiyomi/multisrc/fuzzydoodle/Filters.kt create mode 100644 lib-multisrc/fuzzydoodle/src/eu/kanade/tachiyomi/multisrc/fuzzydoodle/FuzzyDoodle.kt delete mode 100644 src/ar/hentaislayer/src/eu/kanade/tachiyomi/extension/ar/hentaislayer/HentaiSlayerFilters.kt delete mode 100644 src/en/cloudrecess/AndroidManifest.xml delete mode 100644 src/en/cloudrecess/build.gradle delete mode 100644 src/en/cloudrecess/res/mipmap-hdpi/ic_launcher.png delete mode 100644 src/en/cloudrecess/res/mipmap-mdpi/ic_launcher.png delete mode 100644 src/en/cloudrecess/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 src/en/cloudrecess/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 src/en/cloudrecess/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 src/en/cloudrecess/src/eu/kanade/tachiyomi/extension/en/cloudrecess/CloudRecess.kt delete mode 100644 src/en/cloudrecess/src/eu/kanade/tachiyomi/extension/en/cloudrecess/CloudRecessFilters.kt delete mode 100644 src/en/cloudrecess/src/eu/kanade/tachiyomi/extension/en/cloudrecess/CloudRecessUrlActivity.kt create mode 100644 src/en/fleksyscans/build.gradle create mode 100644 src/en/fleksyscans/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/en/fleksyscans/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/en/fleksyscans/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/en/fleksyscans/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/en/fleksyscans/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/en/fleksyscans/src/eu/kanade/tachiyomi/extension/en/fleksyscans/FleksyScans.kt create mode 100644 src/fr/lelscanvf/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/fr/lelscanvf/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/fr/lelscanvf/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/fr/lelscanvf/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/fr/lelscanvf/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/lib-multisrc/fuzzydoodle/build.gradle.kts b/lib-multisrc/fuzzydoodle/build.gradle.kts new file mode 100644 index 000000000..dc076cc37 --- /dev/null +++ b/lib-multisrc/fuzzydoodle/build.gradle.kts @@ -0,0 +1,5 @@ +plugins { + id("lib-multisrc") +} + +baseVersionCode = 1 diff --git a/lib-multisrc/fuzzydoodle/src/eu/kanade/tachiyomi/multisrc/fuzzydoodle/Filters.kt b/lib-multisrc/fuzzydoodle/src/eu/kanade/tachiyomi/multisrc/fuzzydoodle/Filters.kt new file mode 100644 index 000000000..3b3ec3cfc --- /dev/null +++ b/lib-multisrc/fuzzydoodle/src/eu/kanade/tachiyomi/multisrc/fuzzydoodle/Filters.kt @@ -0,0 +1,62 @@ +package eu.kanade.tachiyomi.multisrc.fuzzydoodle + +import eu.kanade.tachiyomi.source.model.Filter +import okhttp3.HttpUrl + +interface UrlPartFilter { + fun addUrlParameter(url: HttpUrl.Builder) +} + +abstract class SelectFilter( + name: String, + private val options: List>, + private val urlParameter: String, +) : UrlPartFilter, Filter.Select( + name, + options.map { it.first }.toTypedArray(), +) { + override fun addUrlParameter(url: HttpUrl.Builder) { + url.addQueryParameter(urlParameter, options[state].second) + } +} + +class CheckBoxFilter(name: String, val value: String) : Filter.CheckBox(name) + +abstract class CheckBoxGroup( + name: String, + options: List>, + private val urlParameter: String, +) : UrlPartFilter, Filter.Group( + name, + options.map { CheckBoxFilter(it.first, it.second) }, +) { + override fun addUrlParameter(url: HttpUrl.Builder) { + state.filter { it.state }.forEach { + url.addQueryParameter(urlParameter, it.value) + } + } +} + +class TypeFilter( + options: List>, +) : SelectFilter( + "Type", + options, + "type", +) + +class StatusFilter( + options: List>, +) : SelectFilter( + "Status", + options, + "status", +) + +class GenreFilter( + options: List>, +) : CheckBoxGroup( + "Genres", + options, + "genre[]", +) diff --git a/lib-multisrc/fuzzydoodle/src/eu/kanade/tachiyomi/multisrc/fuzzydoodle/FuzzyDoodle.kt b/lib-multisrc/fuzzydoodle/src/eu/kanade/tachiyomi/multisrc/fuzzydoodle/FuzzyDoodle.kt new file mode 100644 index 000000000..57883f155 --- /dev/null +++ b/lib-multisrc/fuzzydoodle/src/eu/kanade/tachiyomi/multisrc/fuzzydoodle/FuzzyDoodle.kt @@ -0,0 +1,317 @@ +package eu.kanade.tachiyomi.multisrc.fuzzydoodle + +import android.util.Log +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.await +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.Page +import eu.kanade.tachiyomi.source.model.SChapter +import eu.kanade.tachiyomi.source.model.SManga +import eu.kanade.tachiyomi.source.online.ParsedHttpSource +import eu.kanade.tachiyomi.util.asJsoup +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.Request +import okhttp3.Response +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element +import java.lang.Exception +import java.util.Calendar + +/* + * https://github.com/jhin1m/fuzzy-doodle + */ +abstract class FuzzyDoodle( + override val name: String, + override val baseUrl: String, + override val lang: String, +) : ParsedHttpSource() { + + override val supportsLatest = true + + override val client = network.cloudflareClient + + override fun headersBuilder() = super.headersBuilder() + .add("Referer", "$baseUrl/") + + // Popular + override fun popularMangaRequest(page: Int) = + GET("$baseUrl/manga?page=$page", headers) + + override fun popularMangaSelector() = "div#card-real" + override fun popularMangaNextPageSelector() = "ul.pagination > li:last-child:not(.pagination-disabled)" + + override fun popularMangaParse(response: Response): MangasPage { + val document = response.asJsoup() + + launchIO { fetchFilters(document) } + + val entries = document.select(popularMangaSelector()) + .map(::popularMangaFromElement) + val hasNextPage = document.selectFirst(popularMangaNextPageSelector()) != null + + return MangasPage(entries, hasNextPage) + } + + override fun popularMangaFromElement(element: Element) = SManga.create().apply { + setUrlWithoutDomain(element.selectFirst("a")!!.absUrl("href")) + title = element.selectFirst("h2.text-sm")!!.text() + thumbnail_url = element.selectFirst("img")?.imgAttr() + } + + // latest + protected open val latestFromHomePage = false + + override fun latestUpdatesRequest(page: Int) = + if (latestFromHomePage) { + latestHomePageRequest(page) + } else { + latestPageRequest(page) + } + + protected open fun latestHomePageRequest(page: Int) = + GET("$baseUrl/?page=$page", headers) + + protected open fun latestPageRequest(page: Int) = + GET("$baseUrl/latest?page=$page", headers) + + override fun latestUpdatesSelector() = + if (latestFromHomePage) { + "section:has(h2:containsOwn(Recent Chapters)) div#card-real," + + " section:has(h2:containsOwn(Chapitres récents)) div#card-real" + } else { + popularMangaSelector() + } + + override fun latestUpdatesNextPageSelector() = popularMangaNextPageSelector() + override fun latestUpdatesFromElement(element: Element) = popularMangaFromElement(element) + + override fun latestUpdatesParse(response: Response): MangasPage { + launchIO { fetchFilters() } + + return super.latestUpdatesParse(response) + } + + // search + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + val url = "$baseUrl/manga".toHttpUrl().newBuilder().apply { + addQueryParameter("title", query.trim()) + filters.filterIsInstance().forEach { + it.addUrlParameter(this) + } + if (page > 1) { + addQueryParameter("page", page.toString()) + } + }.build() + + return GET(url, headers) + } + + override fun searchMangaParse(response: Response) = popularMangaParse(response) + override fun searchMangaSelector() = popularMangaSelector() + override fun searchMangaFromElement(element: Element) = popularMangaFromElement(element) + override fun searchMangaNextPageSelector() = popularMangaNextPageSelector() + + // filters + protected var typeList = listOf>() + protected var statusList = listOf>() + protected var genreList = listOf>() + private var fetchFilterAttempts = 0 + + protected suspend fun fetchFilters(document: Document? = null) { + if (fetchFilterAttempts < 3 && (typeList.isEmpty() || statusList.isEmpty() || genreList.isEmpty())) { + try { + val doc = document ?: client.newCall(filtersRequest()) + .await() + .asJsoup() + + parseFilters(doc) + } catch (e: Exception) { + Log.e("$name: Filters", e.stackTraceToString()) + } + fetchFilterAttempts++ + } + } + + protected open fun filtersRequest() = GET("$baseUrl/manga", headers) + + protected open fun parseFilters(document: Document) { + typeList = document.select("select[name=type] > option").map { + it.ownText() to it.attr("value") + } + statusList = document.select("select[name=status] > option").map { + it.ownText() to it.attr("value") + } + genreList = document.select("div.grid > div.flex:has(> input[name=genre[]])").mapNotNull { + val label = it.selectFirst("label")?.ownText() + ?: return@mapNotNull null + val value = it.selectFirst("input")?.attr("value") + ?: return@mapNotNull null + + label to value + } + } + + override fun getFilterList(): FilterList { + val filters = mutableListOf>() + + if (typeList.isNotEmpty()) { + filters.add(TypeFilter(typeList)) + } + if (statusList.isNotEmpty()) { + filters.add(StatusFilter(statusList)) + } + if (genreList.isNotEmpty()) { + filters.add(GenreFilter(genreList)) + } + if (filters.size < 3) { + filters.add(0, Filter.Header("Press 'reset' to load more filters")) + } + + return FilterList(filters) + } + + private val scope = CoroutineScope(Dispatchers.IO) + + protected fun launchIO(block: suspend () -> Unit) = scope.launch { block() } + + // details + override fun mangaDetailsParse(document: Document) = SManga.create().apply { + val genres = mutableListOf() + with(document.selectFirst("main > section > div")!!) { + thumbnail_url = selectFirst("div.relative img")?.imgAttr() + title = selectFirst("div.flex > h1, div.flex > h2")!!.ownText() + genres.addAll(select("div.flex > a.inline-block").eachText()) + description = buildString { + selectFirst("div:has(> p#description)")?.let { + it.selectFirst("span.font-semibold")?.remove() + it.select("#show-more").remove() + append(it.text()) + } + selectFirst("div.flex > h1 + div > span.text-sm, div.flex > h2 + div > span.text-sm")?.text()?.let { + if (it.isNotEmpty()) { + append("\n\n") + append("Alternative Title: ") + append(it.trim()) + } + } + }.trim() + } + document.selectFirst("div#buttons + div.hidden, div:has(> div#buttons) + div.flex")?.run { + status = (getInfo("Status") ?: getInfo("Statut")).parseStatus() + artist = (getInfo("Artist") ?: getInfo("المؤلف") ?: getInfo("Artiste")).removePlaceHolder() + author = (getInfo("Author") ?: getInfo("الرسام") ?: getInfo("Auteur")).removePlaceHolder() + (getInfo("Type") ?: getInfo("النوع"))?.also { genres.add(0, it) } + } + genre = genres.joinToString() + } + + protected open fun String?.parseStatus(): Int { + this ?: return SManga.UNKNOWN + + return when { + listOf("ongoing", "مستمر", "en cours").any { contains(it, true) } -> SManga.ONGOING + listOf("dropped", "cancelled", "متوقف").any { contains(it, true) } -> SManga.CANCELLED + listOf("completed", "مكتمل", "terminé").any { contains(it, true) } -> SManga.COMPLETED + listOf("hiatus").any { contains(it, true) } -> SManga.ON_HIATUS + else -> SManga.UNKNOWN + } + } + + protected fun Element.getInfo(text: String): String? = + selectFirst("p:has(span:containsOwn($text)) span.capitalize") + ?.ownText() + ?.trim() + + protected fun String?.removePlaceHolder(): String? = + takeUnless { it == "-" } + + // chapters + override fun chapterListParse(response: Response): List { + val originalUrl = response.request.url.toString() + + val chapterList = buildList { + var page = 1 + do { + val doc = when { + isEmpty() -> response // First page + else -> { + page++ + client.newCall(GET("$originalUrl?page=$page", headers)).execute() + } + }.asJsoup() + + addAll(doc.select(chapterListSelector()).map(::chapterFromElement)) + } while (doc.selectFirst(chapterListNextPageSelector()) != null) + } + + return chapterList + } + + override fun chapterListSelector() = "div#chapters-list > a[href]" + protected fun chapterListNextPageSelector() = latestUpdatesNextPageSelector() + + override fun chapterFromElement(element: Element) = SChapter.create().apply { + setUrlWithoutDomain(element.attr("href")) + name = element.selectFirst("#item-title, span")!!.ownText() + date_upload = element.selectFirst("span.text-gray-500")?.text().parseRelativeDate() + } + + // from madara + protected open fun String?.parseRelativeDate(): Long { + this ?: return 0L + + val number = Regex("""(\d+)""").find(this)?.value?.toIntOrNull() ?: return 0L + val cal = Calendar.getInstance() + + return when { + listOf("detik", "segundo", "second", "วินาที").any { contains(it, true) } -> { + cal.apply { add(Calendar.SECOND, -number) }.timeInMillis + } + listOf("menit", "dakika", "min", "minute", "minuto", "นาที", "دقائق").any { contains(it, true) } -> { + cal.apply { add(Calendar.MINUTE, -number) }.timeInMillis + } + listOf("jam", "saat", "heure", "hora", "hour", "ชั่วโมง", "giờ", "ore", "ساعة", "小时").any { contains(it, true) } -> { + cal.apply { add(Calendar.HOUR, -number) }.timeInMillis + } + listOf("hari", "gün", "jour", "día", "dia", "day", "วัน", "ngày", "giorni", "أيام", "天").any { contains(it, true) } -> { + cal.apply { add(Calendar.DAY_OF_YEAR, -number) }.timeInMillis + } + listOf("week", "sema").any { contains(it, true) } -> { + cal.apply { add(Calendar.WEEK_OF_YEAR, -number) }.timeInMillis + } + listOf("month", "mes").any { it in this } -> { + cal.apply { add(Calendar.MONTH, -number) }.timeInMillis + } + listOf("year", "año").any { it in this } -> { + cal.apply { add(Calendar.YEAR, -number) }.timeInMillis + } + else -> 0L + } + } + + // pages + override fun pageListParse(document: Document): List { + return document.select("div#chapter-container > img").mapIndexed { idx, img -> + Page(idx, imageUrl = img.imgAttr()) + } + } + + private fun Element.imgAttr(): String { + return when { + hasAttr("srcset") -> attr("srcset").substringBefore(" ") + hasAttr("data-cfsrc") -> absUrl("data-cfsrc") + hasAttr("data-src") -> absUrl("data-src") + hasAttr("data-lazy-src") -> absUrl("data-lazy-src") + else -> absUrl("src") + } + } + + override fun imageUrlParse(document: Document): String { + throw UnsupportedOperationException() + } +} diff --git a/src/ar/hentaislayer/build.gradle b/src/ar/hentaislayer/build.gradle index d7314b400..44980fecf 100644 --- a/src/ar/hentaislayer/build.gradle +++ b/src/ar/hentaislayer/build.gradle @@ -1,7 +1,8 @@ ext { extName = 'Hentai Slayer' extClass = '.HentaiSlayer' - extVersionCode = 2 + themePkg = 'fuzzydoodle' + overrideVersionCode = 2 isNsfw = true } diff --git a/src/ar/hentaislayer/src/eu/kanade/tachiyomi/extension/ar/hentaislayer/HentaiSlayer.kt b/src/ar/hentaislayer/src/eu/kanade/tachiyomi/extension/ar/hentaislayer/HentaiSlayer.kt index 1a7dafbc4..67ed88b60 100644 --- a/src/ar/hentaislayer/src/eu/kanade/tachiyomi/extension/ar/hentaislayer/HentaiSlayer.kt +++ b/src/ar/hentaislayer/src/eu/kanade/tachiyomi/extension/ar/hentaislayer/HentaiSlayer.kt @@ -4,199 +4,28 @@ import android.app.Application import android.widget.Toast import androidx.preference.ListPreference import androidx.preference.PreferenceScreen +import eu.kanade.tachiyomi.multisrc.fuzzydoodle.FuzzyDoodle import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.interceptor.rateLimit import eu.kanade.tachiyomi.source.ConfigurableSource -import eu.kanade.tachiyomi.source.model.FilterList -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.source.online.ParsedHttpSource -import okhttp3.HttpUrl.Companion.toHttpUrl -import okhttp3.Request -import org.jsoup.nodes.Document -import org.jsoup.nodes.Element import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get -import java.util.Calendar -class HentaiSlayer : ParsedHttpSource(), ConfigurableSource { +class HentaiSlayer : FuzzyDoodle("هنتاي سلاير", "https://hentaislayer.net", "ar"), ConfigurableSource { - override val name = "هنتاي سلاير" - - override val baseUrl = "https://hentaislayer.net" - - override val lang = "ar" - - override val supportsLatest = true - - override val client = network.cloudflareClient.newBuilder() + override val client = super.client.newBuilder() .rateLimit(2) .build() override fun headersBuilder() = super.headersBuilder() - .set("Referer", "$baseUrl/") .set("Origin", baseUrl) private val preferences by lazy { Injekt.get().getSharedPreferences("source_$id", 0x0000) } - // ============================== Popular =============================== - override fun popularMangaRequest(page: Int) = GET("$baseUrl/manga?page=$page", headers) + override fun latestPageRequest(page: Int) = GET("$baseUrl/latest-${getLatestTypes()}?page=$page", headers) - override fun popularMangaSelector() = "div > div:has(div#card-real)" - - override fun popularMangaFromElement(element: Element) = SManga.create().apply { - with(element.selectFirst("div#card-real a")!!) { - setUrlWithoutDomain(absUrl("href")) - with(selectFirst("figure")!!) { - with(selectFirst("img.object-cover")!!) { - thumbnail_url = imgAttr() - title = attr("alt") - } - genre = select("span p.drop-shadow-sm").text() - } - } - } - - override fun popularMangaNextPageSelector() = "ul.pagination > li:last-child:not(.pagination-disabled)" - - // =============================== Latest =============================== - override fun latestUpdatesRequest(page: Int) = GET("$baseUrl/latest-${getLatestTypes()}?page=$page", headers) - - override fun latestUpdatesSelector() = popularMangaSelector() - - override fun latestUpdatesFromElement(element: Element) = popularMangaFromElement(element) - - override fun latestUpdatesNextPageSelector() = popularMangaNextPageSelector() - - // =============================== Search =============================== - override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/manga?title=$query".toHttpUrl().newBuilder() - filters.forEach { filter -> - when (filter) { - is TypeFilter -> url.addQueryParameter("type", filter.toUriPart()) - is StatusFilter -> url.addQueryParameter("status", filter.toUriPart()) - is GenresFilter -> - filter.state - .filter { it.state } - .forEach { url.addQueryParameter("genre[]", it.uriPart) } - else -> {} - } - } - - url.addQueryParameter("page", page.toString()) - return GET(url.build(), headers) - } - - override fun searchMangaSelector() = popularMangaSelector() - - override fun searchMangaFromElement(element: Element) = popularMangaFromElement(element) - - override fun searchMangaNextPageSelector() = popularMangaNextPageSelector() - - // =========================== Manga Details ============================ - override fun mangaDetailsParse(document: Document) = SManga.create().apply { - with(document.selectFirst("main section")!!) { - thumbnail_url = selectFirst("img#manga-cover")!!.imgAttr() - with(selectFirst("section > div:nth-child(1) > div:nth-child(1) > div:nth-child(2) > div:nth-child(2)")!!) { - status = parseStatus(select("a[href*='?status=']").text()) - genre = select("a[href*='?type=']").text() - author = select("p:has(span:contains(المؤلف)) span:nth-child(2)").text() - artist = select("p:has(span:contains(الرسام)) span:nth-child(2)").text() - } - var desc = "\u061C" - with(selectFirst("section > div:nth-child(1) > div:nth-child(2)")!!) { - title = selectFirst("h1")!!.text() - genre = select("a[href*='?genre=']") - .map { it.text() } - .let { - listOf(genre) + it - } - .joinToString() - select("h2").text().takeIf { it.isNotEmpty() }?.let { - desc += "أسماء أُخرى: $it\n" - } - } - description = desc + select("#description").text() - } - } - - private fun parseStatus(status: String) = when { - status.contains("مستمر") -> SManga.ONGOING - status.contains("متوقف") -> SManga.CANCELLED - status.contains("مكتمل") -> SManga.COMPLETED - else -> SManga.UNKNOWN - } - - // ============================== Chapters ============================== - override fun chapterListSelector() = "main section #chapters-list a#chapter-item" - - override fun chapterFromElement(element: Element) = SChapter.create().apply { - setUrlWithoutDomain(element.attr("href")) - name = "\u061C" + element.select("#item-title").text() // Add unicode ARABIC LETTER MARK to ensure all titles are right to left - - date_upload = parseRelativeDate(element.select("#item-title + span").text()) ?: 0L - } - - /** - * Parses dates in this form: - * `11 days ago` - */ - private fun parseRelativeDate(date: String): Long? { - val trimmedDate = date.split(" ") - - if (trimmedDate[2] != "ago") return null - - val number = trimmedDate[0].toIntOrNull() ?: return null - val unit = trimmedDate[1].removeSuffix("s") // Remove 's' suffix - - val now = Calendar.getInstance() - - // Map English unit to Java unit - val javaUnit = when (unit) { - "year", "yr" -> Calendar.YEAR - "month" -> Calendar.MONTH - "week", "wk" -> Calendar.WEEK_OF_MONTH - "day" -> Calendar.DAY_OF_MONTH - "hour", "hr" -> Calendar.HOUR - "minute", "min" -> Calendar.MINUTE - "second", "sec" -> Calendar.SECOND - else -> return null - } - - now.add(javaUnit, -number) - - return now.timeInMillis - } - - // =============================== Pages ================================ - override fun pageListParse(document: Document): List { - return document.select("img.chapter-image").mapIndexed { index, item -> - Page(index = index, imageUrl = item.imgAttr()) - } - } - - override fun imageUrlParse(document: Document): String = throw UnsupportedOperationException() - - private fun Element.imgAttr(): String? { - return when { - hasAttr("srcset") -> attr("abs:srcset").substringBefore(" ") - hasAttr("data-cfsrc") -> attr("abs:data-cfsrc") - hasAttr("data-src") -> attr("abs:data-src") - hasAttr("data-lazy-src") -> attr("abs:data-lazy-src") - else -> attr("abs:src") - } - } - - override fun getFilterList() = FilterList( - GenresFilter(), - TypeFilter(), - StatusFilter(), - ) - - // ============================== Settings ============================== companion object { private const val LATEST_PREF = "LatestType" private val LATEST_PREF_ENTRIES get() = arrayOf( diff --git a/src/ar/hentaislayer/src/eu/kanade/tachiyomi/extension/ar/hentaislayer/HentaiSlayerFilters.kt b/src/ar/hentaislayer/src/eu/kanade/tachiyomi/extension/ar/hentaislayer/HentaiSlayerFilters.kt deleted file mode 100644 index 4025d028b..000000000 --- a/src/ar/hentaislayer/src/eu/kanade/tachiyomi/extension/ar/hentaislayer/HentaiSlayerFilters.kt +++ /dev/null @@ -1,81 +0,0 @@ -package eu.kanade.tachiyomi.extension.ar.hentaislayer - -import eu.kanade.tachiyomi.source.model.Filter - -class StatusFilter : UriPartFilter( - "الحالة", - arrayOf( - Pair("الكل", ""), - Pair("مستمر", "مستمر"), - Pair("متوقف", "متوقف"), - Pair("مكتمل", "مكتمل"), - ), -) - -class TypeFilter : UriPartFilter( - "النوع", - arrayOf( - Pair("الكل", ""), - Pair("مانجا", "مانجا"), - Pair("مانهوا", "مانهوا"), - Pair("كوميكس", "كوميكس"), - ), -) - -private val genres = listOf( - Genre("أكشن", "أكشن"), - Genre("ألعاب جنسية", "ألعاب جنسية"), - Genre("إذلال", "إذلال"), - Genre("إيلف", "إيلف"), - Genre("ابتزاز", "ابتزاز"), - Genre("استعباد", "استعباد"), - Genre("اغتصاب", "اغتصاب"), - Genre("بدون حجب", "بدون حجب"), - Genre("بشرة سمراء", "بشرة سمراء"), - Genre("تاريخي", "تاريخي"), - Genre("تحكم بالعقل", "تحكم بالعقل"), - Genre("تراب", "تراب"), - Genre("تسوندري", "تسوندري"), - Genre("تصوير", "تصوير"), - Genre("جنس بالقدم", "جنس بالقدم"), - Genre("جنس جماعي", "جنس جماعي"), - Genre("جنس شرجي", "جنس شرجي"), - Genre("حريم", "حريم"), - Genre("حمل", "حمل"), - Genre("خادمة", "خادمة"), - Genre("خيال", "خيال"), - Genre("خيانة", "خيانة"), - Genre("دراغون بول", "دراغون بول"), - Genre("دراما", "دراما"), - Genre("رومانسي", "رومانسي"), - Genre("سحر", "سحر"), - Genre("شوتا", "شوتا"), - Genre("شيطانة", "شيطانة"), - Genre("شيميل", "شيميل"), - Genre("طالبة مدرسة", "طالبة مدرسة"), - Genre("عمة", "عمة"), - Genre("فوتا", "فوتا"), - Genre("لولي", "لولي"), - Genre("محارم", "محارم"), - Genre("مدرسي", "مدرسي"), - Genre("مكان عام", "مكان عام"), - Genre("ملون", "ملون"), - Genre("ميلف", "ميلف"), - Genre("ناروتو", "ناروتو"), - Genre("هجوم العمالقة", "هجوم العمالقة"), - Genre("ون بيس", "ون بيس"), - Genre("ياوي", "ياوي"), - Genre("يوري", "يوري"), -) - -class Genre(val name: String, val uriPart: String) - -class GenreCheckBox(name: String, val uriPart: String) : Filter.CheckBox(name) - -class GenresFilter : - Filter.Group("التصنيفات", genres.map { GenreCheckBox(it.name, it.uriPart) }) - -open class UriPartFilter(displayName: String, private val pairs: Array>) : - Filter.Select(displayName, pairs.map { it.first }.toTypedArray()) { - fun toUriPart() = pairs[state].second -} diff --git a/src/en/cloudrecess/AndroidManifest.xml b/src/en/cloudrecess/AndroidManifest.xml deleted file mode 100644 index a4e695313..000000000 --- a/src/en/cloudrecess/AndroidManifest.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/en/cloudrecess/build.gradle b/src/en/cloudrecess/build.gradle deleted file mode 100644 index 2e032ca49..000000000 --- a/src/en/cloudrecess/build.gradle +++ /dev/null @@ -1,8 +0,0 @@ -ext { - extName = 'CloudRecess' - extClass = '.CloudRecess' - extVersionCode = 2 - isNsfw = true -} - -apply from: "$rootDir/common.gradle" diff --git a/src/en/cloudrecess/res/mipmap-hdpi/ic_launcher.png b/src/en/cloudrecess/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 7c811df20ae288a82d36e4b94d7785533e49617c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5741 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 diff --git a/src/en/cloudrecess/res/mipmap-mdpi/ic_launcher.png b/src/en/cloudrecess/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index a0a18641d7bbdbe2386b0d2d0af53754eb5f0da7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3179 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
VBwV8U0x>QwOc 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 { - return if (query.startsWith(PREFIX_SEARCH)) { // URL intent handler - val id = query.removePrefix(PREFIX_SEARCH) - client.newCall(GET("$baseUrl/manga/$id")) - .asObservableSuccess() - .map(::searchMangaByIdParse) - } else { - super.fetchSearchManga(page, query, filters) - } - } - - private fun searchMangaByIdParse(response: Response): MangasPage { - val details = mangaDetailsParse(response.use { it.asJsoup() }) - return MangasPage(listOf(details), false) - } - - override fun getFilterList() = CloudRecessFilters.FILTER_LIST - - override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/manga?title=$query&page=$page".toHttpUrl().newBuilder().apply { - val params = CloudRecessFilters.getSearchParameters(filters) - if (params.type.isNotEmpty()) addQueryParameter("type", params.type) - if (params.status.isNotEmpty()) addQueryParameter("status", params.status) - params.genres.forEach { addQueryParameter("genre[]", it) } - }.build() - return GET(url, headers) - } - - override fun searchMangaSelector() = "main div#card-real > a" - - override fun searchMangaFromElement(element: Element) = popularMangaFromElement(element) - - override fun searchMangaNextPageSelector() = latestUpdatesNextPageSelector() - - // =========================== Manga Details ============================ - override fun mangaDetailsParse(document: Document) = SManga.create().apply { - // Absolutely required element, so throwing a NPE when it's not present - // seems reasonable. - with(document.selectFirst("main > section > div")!!) { - thumbnail_url = selectFirst("div.relative img")?.absUrl("src") - title = selectFirst("div.flex > h2")?.ownText() ?: "No name" - genre = select("div.flex > a.inline-block").eachText().joinToString() - description = selectFirst("div.comicInfoExtend__synopsis")?.text() - } - - document.selectFirst("div#buttons + div.hidden")?.run { - status = when (getInfo("Status").orEmpty()) { - "Cancelled" -> SManga.CANCELLED - "Completed" -> SManga.COMPLETED - "Hiatus" -> SManga.ON_HIATUS - "Ongoing" -> SManga.ONGOING - else -> SManga.UNKNOWN - } - - artist = getInfo("Artist") - author = getInfo("Author") - } - } - - private fun Element.getInfo(text: String): String? = - selectFirst("p:has(span:containsOwn($text)) span.capitalize") - ?.ownText() - ?.trim() - - // ============================== Chapters ============================== - override fun chapterListSelector() = "div#chapters-list > a[href]" - - override fun chapterListParse(response: Response): List { - val originalUrl = response.request.url.toString() - - val chapterList = buildList { - var page = 1 - do { - val doc = when { - isEmpty() -> response // First page - else -> { - page++ - client.newCall(GET("$originalUrl?page=$page", headers)).execute() - } - }.use { it.asJsoup() } - - addAll(doc.select(chapterListSelector()).map(::chapterFromElement)) - } while (doc.selectFirst(latestUpdatesNextPageSelector()) != null) - } - - return chapterList - } - - override fun chapterFromElement(element: Element) = SChapter.create().apply { - setUrlWithoutDomain(element.attr("href")) - name = element.selectFirst("span")?.ownText() ?: "Chapter" - } - - // =============================== Pages ================================ - override fun pageListParse(document: Document): List { - return document.select("div#chapter-container > img").map { element -> - val id = element.attr("data-id").toIntOrNull() ?: 0 - val url = element.run { - absUrl("data-src").ifEmpty { absUrl("src") } - } - Page(id, "", url) - } - } - - override fun imageUrlParse(document: Document): String { - throw UnsupportedOperationException() - } - - companion object { - const val PREFIX_SEARCH = "id:" - } -} diff --git a/src/en/cloudrecess/src/eu/kanade/tachiyomi/extension/en/cloudrecess/CloudRecessFilters.kt b/src/en/cloudrecess/src/eu/kanade/tachiyomi/extension/en/cloudrecess/CloudRecessFilters.kt deleted file mode 100644 index d0c78dcbf..000000000 --- a/src/en/cloudrecess/src/eu/kanade/tachiyomi/extension/en/cloudrecess/CloudRecessFilters.kt +++ /dev/null @@ -1,163 +0,0 @@ -package eu.kanade.tachiyomi.extension.en.cloudrecess - -import eu.kanade.tachiyomi.source.model.Filter -import eu.kanade.tachiyomi.source.model.FilterList - -object CloudRecessFilters { - open class QueryPartFilter( - displayName: String, - val vals: Array>, - ) : Filter.Select( - displayName, - vals.map { it.first }.toTypedArray(), - ) { - fun toQueryPart() = vals[state].second - } - - private inline fun FilterList.asQueryPart(): String { - return (first { it is R } as QueryPartFilter).toQueryPart() - } - - open class CheckBoxFilterList(name: String, val items: List) : - Filter.Group(name, items.map(::CheckBoxVal)) - - private class CheckBoxVal(name: String) : Filter.CheckBox(name, false) - - private inline fun FilterList.checkedItems(): List { - return (first { it is R } as CheckBoxFilterList).state - .filter { it.state } - .map { it.name } - } - - internal class TypeFilter : QueryPartFilter("Type", FiltersData.TYPE_LIST) - internal class StatusFilter : QueryPartFilter("Status", FiltersData.STATUS_LIST) - - internal class GenresFilter : CheckBoxFilterList("Genres", FiltersData.GENRES_LIST) - - val FILTER_LIST get() = FilterList( - TypeFilter(), - StatusFilter(), - GenresFilter(), - ) - - data class FilterSearchParams( - val type: String = "", - val status: String = "", - val genres: List = emptyList(), - ) - - internal fun getSearchParameters(filters: FilterList): FilterSearchParams { - if (filters.isEmpty()) return FilterSearchParams() - - return FilterSearchParams( - filters.asQueryPart(), - filters.asQueryPart(), - filters.checkedItems(), - ) - } - - private object FiltersData { - val TYPE_LIST = arrayOf( - Pair("All Types", ""), - Pair("Manga", "manga"), - Pair("Manhwa", "manhwa"), - Pair("OEL/Original", "oel"), - Pair("One Shot", "one-shot"), - Pair("Webtoon", "webtoon"), - ) - - val STATUS_LIST = arrayOf( - Pair("All Status", ""), - Pair("Cancelled", "cancelled"), - Pair("Completed", "completed"), - Pair("Hiatus", "hiatus"), - Pair("Ongoing", "ongoing"), - Pair("Pending", "pending"), - ) - - val GENRES_LIST = listOf( - "3P Relationship/s", - "Action", - "Adventure", - "Age Gap", - "Amnesia/Memory Loss", - "Art/s or Creative/s", - "BL", - "Bloody", - "Boss/Employee", - "Childhood Friend/s", - "Comedy", - "Coming of Age", - "Contractual Relationship", - "Crime", - "Cross Dressing", - "Crush", - "Depraved", - "Drama", - "Enemies to Lovers", - "Family Life", - "Fantasy", - "Fetish", - "First Love", - "Food", - "Friends to Lovers", - "Fxckbuddy", - "GL", - "Games", - "Guideverse", - "Hardcore", - "Harem", - "Historical", - "Horror", - "Idols/Celeb/Showbiz", - "Infidelity", - "Intense", - "Isekai", - "Josei", - "Light Hearted", - "Living Together", - "Love Triangle", - "Love/Hate", - "Manipulative", - "Master/Servant", - "Mature", - "Military", - "Music", - "Mystery", - "Nameverse", - "Obsessive", - "Omegaverse", - "On Campus/College Life", - "One Sided Love", - "Part Timer", - "Photography", - "Psychological", - "Rebirth/Reincarnation", - "Red Light", - "Retro", - "Revenge", - "Rich Kids", - "Romance", - "Royalty/Nobility/Gentry", - "SM/BDSM/SUB-DOM", - "School Life", - "Sci-Fi", - "Self-Discovery", - "Shounen Ai", - "Slice of Life", - "Smut", - "Sports", - "Step Family", - "Supernatural", - "Teacher/Student", - "Thriller", - "Tragedy", - "Tsundere", - "Uncensored", - "Violence", - "Voyeur", - "Work Place/Office Workers", - "Yakuza/Gangsters", - ) - } -} diff --git a/src/en/cloudrecess/src/eu/kanade/tachiyomi/extension/en/cloudrecess/CloudRecessUrlActivity.kt b/src/en/cloudrecess/src/eu/kanade/tachiyomi/extension/en/cloudrecess/CloudRecessUrlActivity.kt deleted file mode 100644 index ea9194f49..000000000 --- a/src/en/cloudrecess/src/eu/kanade/tachiyomi/extension/en/cloudrecess/CloudRecessUrlActivity.kt +++ /dev/null @@ -1,41 +0,0 @@ -package eu.kanade.tachiyomi.extension.en.cloudrecess - -import android.app.Activity -import android.content.ActivityNotFoundException -import android.content.Intent -import android.os.Bundle -import android.util.Log -import kotlin.system.exitProcess - -/** - * Springboard that accepts https://cloudrecess.io/manga/ intents - * and redirects them to the main Tachiyomi process. - */ -class CloudRecessUrlActivity : Activity() { - - private val tag = javaClass.simpleName - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - val pathSegments = intent?.data?.pathSegments - if (pathSegments != null && pathSegments.size > 1) { - val item = pathSegments[1] - val mainIntent = Intent().apply { - action = "eu.kanade.tachiyomi.SEARCH" - putExtra("query", "${CloudRecess.PREFIX_SEARCH}$item") - putExtra("filter", packageName) - } - - try { - startActivity(mainIntent) - } catch (e: ActivityNotFoundException) { - Log.e(tag, e.toString()) - } - } else { - Log.e(tag, "could not parse uri from intent $intent") - } - - finish() - exitProcess(0) - } -} diff --git a/src/en/fleksyscans/build.gradle b/src/en/fleksyscans/build.gradle new file mode 100644 index 000000000..0181511fa --- /dev/null +++ b/src/en/fleksyscans/build.gradle @@ -0,0 +1,9 @@ +ext { + extName = 'FleksyScans' + extClass = '.FleksyScans' + themePkg = 'fuzzydoodle' + overrideVersionCode = 0 + isNsfw = true +} + +apply from: "$rootDir/common.gradle" diff --git a/src/en/fleksyscans/res/mipmap-hdpi/ic_launcher.png b/src/en/fleksyscans/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..5ef28852a87d4e8b38ae4a7dea2b7ba1fcc07bbf GIT binary patch literal 3788 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 literal 0 HcmV?d00001 diff --git a/src/en/fleksyscans/res/mipmap-xxhdpi/ic_launcher.png b/src/en/fleksyscans/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..02ef49d201d209d336b8c5e76caa926e579caffb GIT binary patch literal 8248 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 z z6*_24@4L~D1Wi*}R(tV&vW*BCYM(0fZ0U14MCUdOj{}Ywp)ny~4O0#ITlS_73O86> za$KH3M+dSgVNS2!E2khVcj2bU@BguRYyxFeH5XeSGd6xXeR_@jG)* z&at}Z5Wc>io3~%VUOd3c^BL#9202YoV`<2SOV5kGdGu?{51^DMpCff8dPh~j`+Rxm zP?eMX-OtxGc^Rk<**KA6#K^I#yf@5SX|#Rtho9u~SZX~)F|3D-=)Tm!fsDIICZ(zS z#>an!NJb5ZCJPA-?fM06@Y=)IpT{fI%7A)A7+i>dtfpeYd;TYh`E4;zHt+{KX9D^J z^a#`YZ)0}&)y#!Q6XDUQl}mX&ntj{926eqH6un?TL(RPdX>Az7?TI{zhlai2a>XZ@9)E$1y$YWY4L1NG3wM?<~|NWn`h^E?a6|{P)Bbz|Q?` zl(ZLro*u6kKQ)gP{C6Py_lNvhk6)}F6Gu}sK@2z4r~%aBWcXNtTt;b)Fh&{Zx7OM~ z6YJMMA8~MC?(~uu@lsoBYy%EU5-hrfNaymcp~#&-bEtP2G#gT|Uy&`Fb)vO(jcdKe zh^sLRYTae&CHrsye==O$-20M%Vt89g?t@}Anj#^|;WjGLH7?A{*mApNrg}EVC+*fn zZnUc9il|d4V4H_kBM2X$v@4WsguH8bt%;~KaC<0_^*lg;su%Wg^zoh-a0>Yz{rE`h zeY&XMdC-X%CEm&$3oPjOpvyN2G|bz~7D|Q!Gy$=Iv9Qa*O8s(za}=5;5no|({TyNx zWW3u!L#$?aD3ZLajD7Y{HA`R0llZi09)ZvOgP+k*crM}rTC2^ zVLvLCZTd6j&EHkY?A!NOaZvlz-v24LN-~}#Zk40~+9ll7$%26~>0hj<0eVhtb6FyH zr{azuoa&SKgD93TfGo}?RPZ(KWud(Ind49=^RWBbLZ|g|TuQ~qn;Rcw5b)vw{>U|^ zjut#P;tomuz;a3TECv#5qY|yqemZ?!ZcuWz&0C@7_Sa=@grcEUOM$v-GcVsm5{JrG zZB!0gms6@T?0_#Zc19u`E2Kn%GXLU+f2}OojE*^4< z%6HYBfc39_X}87oPg|&>eyC>Quwx`zv{c31qd+XX*4x9G+Ph>`^o%$VDjIrv2^=n( z{H61&(pR=uK_t{i#q0Az_gD161YEkuF#Co2l=<~wdh8kICJY69VboDUBV-k!Ki zw`n?Ne2~scLcCtMnB}(IP}$u~MP&s`j_HS{hl0k8AAU0K^!>;SqiNJ|axU%r$J-aA zZodzoP%Laf&5C9yfL88D&O)9RD39=ptrpAGv=&hknIh&E*ZZJr?sgs>1T}{ke{ywu zfyVb?{m?aF9o28VQoUFWE)OtAVC3Q=j;ui+kd&@?rJ=3A7nPtiC~0}OYMew#2*U!2 z>{Rfd{@9Wtr~vloa5G`?u^@*|E$V_J8Wb4B-iLu(mb<%OT?S`bI_B<0YH&vJJV|#r zdVD$y*54%sKv&>=4BUUYt<`B@*h^bvuyjSUr2?dLHQ3hr7y*lwK3GPMoXomBY;pog zW{1cGmEUXt#t^`Z_D;${tMI;|Uwh*yiN(s{r~)-}vfIOZZ=CztdgVBr8Cp-|2wsCP zd(QL-o(HJ~tSIh4e(|#XCGM2^UgPwK?dgL9^aO4#+A+P=KaUkq!KVvzjy;+?K)rgA z97(we`bGHnW72nw-L5PN1VfK96d2KeJY?6+-~W1q=mlAKr{R&(uJ{p`Kueh<>vY(S zosr9GqN(3_r)9EKW4~ET7j?<)}6LWb;Jn{&6f@37w!GV0i zNYY@w;JH6Syz&UNAf7&gJQ~cre;R$vyc@@{=t)UMX!Kh-7DX8=8U{%jE3r&ob3PnA y8uRzKXj3@l*y*xaUGs4dd;h*607`OdvQ^S%f&T}!c fuzzydoodle + override val versionId = 2 + + override val latestFromHomePage = true } diff --git a/src/fr/lelscanvf/build.gradle b/src/fr/lelscanvf/build.gradle index ede73e46e..c72ae37e2 100644 --- a/src/fr/lelscanvf/build.gradle +++ b/src/fr/lelscanvf/build.gradle @@ -1,9 +1,8 @@ ext { extName = 'Lelscan-VF' extClass = '.LelscanVF' - themePkg = 'mmrcms' - baseUrl = 'https://lelscanvf.cc' - overrideVersionCode = 2 + themePkg = 'fuzzydoodle' + overrideVersionCode = 13 } apply from: "$rootDir/common.gradle" diff --git a/src/fr/lelscanvf/res/mipmap-hdpi/ic_launcher.png b/src/fr/lelscanvf/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..53249204131af98e29328f2eee9c9857057f1acc GIT binary patch literal 4239 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 Dp);&A literal 0 HcmV?d00001 diff --git a/src/fr/lelscanvf/res/mipmap-xhdpi/ic_launcher.png b/src/fr/lelscanvf/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e6b1b9fbc1b661214d488530cd48038aa99934 GIT binary patch literal 6682 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 koPt(rkbs~;E3V=H1>vD6YO?-L3nuhrTzW= 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 Ef)@7Z_y7O^ literal 0 HcmV?d00001 diff --git a/src/fr/lelscanvf/res/mipmap-xxxhdpi/ic_launcher.png b/src/fr/lelscanvf/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e20635a281b3d1e980f4bfb29b77bee6e37fc57e GIT binary patch literal 17961 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 literal 0 HcmV?d00001 diff --git a/src/fr/lelscanvf/src/eu/kanade/tachiyomi/extension/fr/lelscanvf/LelscanVF.kt b/src/fr/lelscanvf/src/eu/kanade/tachiyomi/extension/fr/lelscanvf/LelscanVF.kt index 07d51af0c..1e13199e6 100644 --- a/src/fr/lelscanvf/src/eu/kanade/tachiyomi/extension/fr/lelscanvf/LelscanVF.kt +++ b/src/fr/lelscanvf/src/eu/kanade/tachiyomi/extension/fr/lelscanvf/LelscanVF.kt @@ -1,10 +1,11 @@ package eu.kanade.tachiyomi.extension.fr.lelscanvf -import eu.kanade.tachiyomi.multisrc.mmrcms.MMRCMS +import eu.kanade.tachiyomi.multisrc.fuzzydoodle.FuzzyDoodle -class LelscanVF : MMRCMS( - "Lelscan-VF", - "https://lelscanvf.cc", - "fr", - supportsAdvancedSearch = false, -) +class LelscanVF : FuzzyDoodle("Lelscan-VF", "https://lelscanfr.com", "fr") { + + // mmrcms -> FuzzyDoodle + override val versionId = 2 + + override val latestFromHomePage = true +}