diff --git a/src/es/eflee/build.gradle b/src/es/eflee/build.gradle new file mode 100644 index 000000000..4a1aabe33 --- /dev/null +++ b/src/es/eflee/build.gradle @@ -0,0 +1,9 @@ +ext { + extName = 'Edens Fairy' + extClass = '.Eflee' + themePkg = 'zeistmanga' + baseUrl = 'https://www.eflee.co' + overrideVersionCode = 0 +} + +apply from: "$rootDir/common.gradle" diff --git a/src/es/eflee/res/mipmap-hdpi/ic_launcher.png b/src/es/eflee/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..83271b71d Binary files /dev/null and b/src/es/eflee/res/mipmap-hdpi/ic_launcher.png differ diff --git a/src/es/eflee/res/mipmap-mdpi/ic_launcher.png b/src/es/eflee/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..a009a0444 Binary files /dev/null and b/src/es/eflee/res/mipmap-mdpi/ic_launcher.png differ diff --git a/src/es/eflee/res/mipmap-xhdpi/ic_launcher.png b/src/es/eflee/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..4186a5dc7 Binary files /dev/null and b/src/es/eflee/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/src/es/eflee/res/mipmap-xxhdpi/ic_launcher.png b/src/es/eflee/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..fc7cf5dfe Binary files /dev/null and b/src/es/eflee/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/src/es/eflee/res/mipmap-xxxhdpi/ic_launcher.png b/src/es/eflee/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..052a91e07 Binary files /dev/null and b/src/es/eflee/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/src/es/eflee/src/eu/kanade/tachiyomi/extension/es/eflee/Eflee.kt b/src/es/eflee/src/eu/kanade/tachiyomi/extension/es/eflee/Eflee.kt new file mode 100644 index 000000000..2e53c97eb --- /dev/null +++ b/src/es/eflee/src/eu/kanade/tachiyomi/extension/es/eflee/Eflee.kt @@ -0,0 +1,79 @@ +package eu.kanade.tachiyomi.extension.es.eflee + +import eu.kanade.tachiyomi.multisrc.zeistmanga.Genre +import eu.kanade.tachiyomi.multisrc.zeistmanga.GenreList +import eu.kanade.tachiyomi.multisrc.zeistmanga.Type +import eu.kanade.tachiyomi.multisrc.zeistmanga.ZeistManga +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.source.model.Filter +import eu.kanade.tachiyomi.source.model.FilterList +import eu.kanade.tachiyomi.util.asJsoup +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import org.jsoup.nodes.Document + +class Eflee : ZeistManga( + "Edens Fairy", + "https://www.eflee.co", + "es", +) { + override val popularMangaSelector = "#PopularPosts3 article" + override val popularMangaSelectorTitle = ".post-title a" + override val popularMangaSelectorUrl = popularMangaSelectorTitle + + override val useNewChapterFeed = true + override val chapterCategory = "Cap" + + override val hasFilters = true + override val hasLanguageFilter = false + override val hasGenreFilter = false + override val hasStatusFilter = false + + private var genresList: List = emptyList() + private var fetchGenresAttempts: Int = 0 + + override fun getFilterList(): FilterList { + CoroutineScope(Dispatchers.IO).launch { fetchGenres() } + val filters = super.getFilterList().list.toMutableList() + if (genresList.isNotEmpty()) { + filters += GenreList( + title = "Generos", + genres = genresList, + ) + } else { + filters += listOf( + Filter.Separator(), + Filter.Header("Presione 'Restablecer' para intentar mostrar los géneros"), + ) + } + return FilterList(filters) + } + + override fun getTypeList(): List = listOf( + Type("Todos", ""), + Type("Manga", "Manga"), + Type("Manhua", "Manhua"), + Type("Manhwa", "Manhwa"), + ) + + private fun fetchGenres() { + if (fetchGenresAttempts < 3 && genresList.isEmpty()) { + try { + genresList = client.newCall(GET(baseUrl, headers)).execute() + .use { parseGenres(it.asJsoup()) } + .sortedBy { it.value } + } catch (_: Exception) { + } finally { + fetchGenresAttempts++ + } + } + } + + private fun parseGenres(document: Document): List { + return document.select(".filters .filter:first-child input:not(.hidden)") + .map { element -> + Genre(element.attr("id"), element.attr("value")) + } + } +}