From 39f83d1d7742ff3f89e8a4f0d71cfd07a8523590 Mon Sep 17 00:00:00 2001 From: Chaos Pjeles Date: Mon, 5 Aug 2024 15:01:57 +0100 Subject: [PATCH] foamgirl impl (#4407) * impl * Update src/all/foamgirl/src/eu/kanade/tachiyomi/extension/all/foamgirl/FoamGirl.kt Co-authored-by: AwkwardPeak7 <48650614+AwkwardPeak7@users.noreply.github.com> * resolve suggestions --------- Co-authored-by: AwkwardPeak7 <48650614+AwkwardPeak7@users.noreply.github.com> --- src/all/foamgirl/build.gradle | 8 ++ .../foamgirl/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3628 bytes .../foamgirl/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2025 bytes .../foamgirl/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4892 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 9807 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 14359 bytes .../extension/all/foamgirl/FoamGirl.kt | 127 ++++++++++++++++++ 7 files changed, 135 insertions(+) create mode 100644 src/all/foamgirl/build.gradle create mode 100644 src/all/foamgirl/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/all/foamgirl/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/all/foamgirl/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/all/foamgirl/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/all/foamgirl/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/all/foamgirl/src/eu/kanade/tachiyomi/extension/all/foamgirl/FoamGirl.kt diff --git a/src/all/foamgirl/build.gradle b/src/all/foamgirl/build.gradle new file mode 100644 index 000000000..34056cc00 --- /dev/null +++ b/src/all/foamgirl/build.gradle @@ -0,0 +1,8 @@ +ext { + extName = 'FoamGirl' + extClass = '.FoamGirl' + extVersionCode = 1 + isNsfw = true +} + +apply from: "$rootDir/common.gradle" diff --git a/src/all/foamgirl/res/mipmap-hdpi/ic_launcher.png b/src/all/foamgirl/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..769a960cabf4d12e640bb8a61db3a551bba02e8e GIT binary patch literal 3628 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 Hu0mjf3o5*U literal 0 HcmV?d00001 diff --git a/src/all/foamgirl/res/mipmap-xhdpi/ic_launcher.png b/src/all/foamgirl/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..3959209be2e119f83299c9f5bd09f4676388f3c6 GIT binary patch literal 4892 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≪m2}k34{~(w4V_ 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 Rts?*c002ovPDHLkV1l}nB*p*$ literal 0 HcmV?d00001 diff --git a/src/all/foamgirl/src/eu/kanade/tachiyomi/extension/all/foamgirl/FoamGirl.kt b/src/all/foamgirl/src/eu/kanade/tachiyomi/extension/all/foamgirl/FoamGirl.kt new file mode 100644 index 000000000..022a2e68c --- /dev/null +++ b/src/all/foamgirl/src/eu/kanade/tachiyomi/extension/all/foamgirl/FoamGirl.kt @@ -0,0 +1,127 @@ +package eu.kanade.tachiyomi.extension.all.foamgirl + +import eu.kanade.tachiyomi.network.GET +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 rx.Observable +import java.text.ParseException +import java.text.SimpleDateFormat +import java.util.Locale + +class FoamGirl() : ParsedHttpSource() { + override val baseUrl = "https://foamgirl.net" + override val lang = "all" + override val name = "FoamGirl" + override val supportsLatest = false + + override fun headersBuilder() = super.headersBuilder() + .add("Referer", "$baseUrl/") + + // Popular + override fun popularMangaFromElement(element: Element) = SManga.create().apply { + thumbnail_url = element.select("img").attr("data-original") + title = element.select("a.meta-title").text() + setUrlWithoutDomain(element.select("a").attr("href")) + initialized = true + } + + override fun fetchMangaDetails(manga: SManga): Observable { + return Observable.just(manga) + } + + override fun mangaDetailsParse(document: Document): SManga { + throw UnsupportedOperationException() + } + override fun popularMangaNextPageSelector() = "a.next" + override fun popularMangaRequest(page: Int): Request { + return GET("$baseUrl/page/$page", headers) + } + + override fun popularMangaSelector() = ".update_area .i_list" + + // Search + + override fun searchMangaFromElement(element: Element) = popularMangaFromElement(element) + override fun searchMangaNextPageSelector() = popularMangaNextPageSelector() + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + return GET( + baseUrl.toHttpUrl().newBuilder().apply { + addPathSegment("page") + addPathSegment("$page") + addQueryParameter("post_type", "post") + addQueryParameter("s", query) + }.build(), + headers, + ) + } + + override fun searchMangaSelector() = popularMangaSelector() + + override fun pageListParse(document: Document): List { + val pages = mutableListOf() + val imageCount = document.select(".post_title_topimg").text().substringAfter("(").substringBefore("P").toInt() + val imageUrl = document.select(".imageclick-imgbox").attr("href").toHttpUrl() + val imagePrefix = imageUrl.pathSegments.last().substringBefore(".").toLong() / 10 + for (i in 0 until imageCount) { + pages.add( + Page( + i, + imageUrl = imageUrl.newBuilder().apply { + removePathSegment(imageUrl.pathSize - 1) + addPathSegment("${imagePrefix}${i + 2}.jpg") + }.build().toString(), + ), + ) + } + return pages + } + + override fun chapterFromElement(element: Element) = SChapter.create().apply { + setUrlWithoutDomain(element.select("link[rel=canonical]").attr("abs:href")) + chapter_number = 0F + name = "GALLERY" + date_upload = getDate(element.select("span.image-info-time").text().substring(1)) + } + + override fun chapterListSelector() = "html" + + // Pages + override fun imageUrlParse(document: Document): String = throw UnsupportedOperationException() + + override fun latestUpdatesFromElement(element: Element): SManga { + throw UnsupportedOperationException() + } + + override fun latestUpdatesNextPageSelector(): String? { + throw UnsupportedOperationException() + } + + override fun latestUpdatesRequest(page: Int): Request { + throw UnsupportedOperationException() + } + + override fun latestUpdatesSelector(): String { + throw UnsupportedOperationException() + } + + private fun getDate(str: String): Long { + return try { + DATE_FORMAT.parse(str)?.time ?: 0L + } catch (e: ParseException) { + 0L + } + } + + companion object { + private val DATE_FORMAT by lazy { + SimpleDateFormat("yyyy.M.d", Locale.ENGLISH) + } + } +}