From b06865f0c480fa97a5d2e99babc450757926cca8 Mon Sep 17 00:00:00 2001 From: Theray Tharow <80534152+Tharow@users.noreply.github.com> Date: Sat, 2 Sep 2023 19:06:36 -0400 Subject: [PATCH] Add Comic Fury Extension (#17479) * Add ComicFury Extension Signed-off-by: Theray Tharow * Change pt to pt-BR as per alessandrojean Updated Request Builders as per alessandrojean added fun getMangaUrl to point to the archive page instead of the detail page to help with nfsw comic requiring to click accept on the archive page to allow tachiyomi to read the chapter/comic list Signed-off-by: Theray Tharow * Use new siteLang as override for lang code for Manga Search as suggested by alessandrojean Change notext lang to No-Text as commented by alessandrojean Signed-off-by: Theray Tharow * Change No-Text lang to other-notext as suggested by alessandrojean now shows up as Other (NOTEXT) Signed-off-by: Theray Tharow * correct implementation misunderstanding and use extraName for the No text source, based on https://github.com/tachiyomiorg/tachiyomi-extensions/pull/6337 Signed-off-by: Theray Tharow --------- Signed-off-by: Theray Tharow Co-authored-by: Theray Tharow --- src/all/comicfury/AndroidManifest.xml | 2 + src/all/comicfury/build.gradle | 17 + .../comicfury/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3383 bytes .../comicfury/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1936 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4432 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7787 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10830 bytes src/all/comicfury/res/web_hi_res_512.png | Bin 0 -> 48063 bytes .../extension/all/comicfury/ComicFury.kt | 290 ++++++++++++++++++ .../all/comicfury/ComicFuryFactory.kt | 23 ++ 10 files changed, 332 insertions(+) create mode 100644 src/all/comicfury/AndroidManifest.xml create mode 100644 src/all/comicfury/build.gradle create mode 100644 src/all/comicfury/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/all/comicfury/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/all/comicfury/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/all/comicfury/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/all/comicfury/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/all/comicfury/res/web_hi_res_512.png create mode 100644 src/all/comicfury/src/eu/kanade/tachiyomi/extension/all/comicfury/ComicFury.kt create mode 100644 src/all/comicfury/src/eu/kanade/tachiyomi/extension/all/comicfury/ComicFuryFactory.kt diff --git a/src/all/comicfury/AndroidManifest.xml b/src/all/comicfury/AndroidManifest.xml new file mode 100644 index 000000000..30deb7f79 --- /dev/null +++ b/src/all/comicfury/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/src/all/comicfury/build.gradle b/src/all/comicfury/build.gradle new file mode 100644 index 000000000..daf7c52bd --- /dev/null +++ b/src/all/comicfury/build.gradle @@ -0,0 +1,17 @@ +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply plugin: 'kotlinx-serialization' + +ext { + extName = 'Comic Fury' + pkgNameSuffix = 'all.comicfury' + extClass = '.ComicFuryFactory' + extVersionCode = 1 + isNsfw = true +} + +dependencies { + implementation(project(':lib-textinterceptor')) +} + +apply from: "$rootDir/common.gradle" diff --git a/src/all/comicfury/res/mipmap-hdpi/ic_launcher.png b/src/all/comicfury/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..865ccdc5f5b992dbd57689c5066e652f8f536c83 GIT binary patch literal 3383 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 N002ovPDHLkV1m_NM0)@L literal 0 HcmV?d00001 diff --git a/src/all/comicfury/res/mipmap-mdpi/ic_launcher.png b/src/all/comicfury/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..436075be258223e925b1874a9f0c5a681c254976 GIT binary patch literal 1936 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 Y4>X$vbdFPTcmMzZ07*qoM6N<$g83}baR2}S literal 0 HcmV?d00001 diff --git a/src/all/comicfury/res/web_hi_res_512.png b/src/all/comicfury/res/web_hi_res_512.png new file mode 100644 index 0000000000000000000000000000000000000000..9f721a498c2c1a11bcda13d14e3a11ac731791c9 GIT binary patch literal 48063 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 literal 0 HcmV?d00001 diff --git a/src/all/comicfury/src/eu/kanade/tachiyomi/extension/all/comicfury/ComicFury.kt b/src/all/comicfury/src/eu/kanade/tachiyomi/extension/all/comicfury/ComicFury.kt new file mode 100644 index 000000000..dc7b3b82a --- /dev/null +++ b/src/all/comicfury/src/eu/kanade/tachiyomi/extension/all/comicfury/ComicFury.kt @@ -0,0 +1,290 @@ +package eu.kanade.tachiyomi.extension.all.comicfury + +import android.app.Application +import android.content.SharedPreferences +import androidx.preference.PreferenceScreen +import androidx.preference.SwitchPreferenceCompat +import eu.kanade.tachiyomi.lib.textinterceptor.TextInterceptor +import eu.kanade.tachiyomi.lib.textinterceptor.TextInterceptorHelper +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.source.ConfigurableSource +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.HttpSource +import eu.kanade.tachiyomi.util.asJsoup +import okhttp3.HttpUrl +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.Request +import okhttp3.Response +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get +import java.text.SimpleDateFormat +import java.util.Locale + +class ComicFury( + override val lang: String, + private val siteLang: String = lang, // override lang string used in MangaSearch + private val extraName: String = "", +) : HttpSource(), ConfigurableSource { + override val baseUrl: String = "https://comicfury.com" + override val name: String = "Comic Fury$extraName" //Used for No Text + override val supportsLatest: Boolean = true + private val dateFormat = SimpleDateFormat("dd MMM yyyy hh:mm aa", Locale.US) + private val dateFormatSlim = SimpleDateFormat("dd MMM yyyy", Locale.US) + + override val client = super.client.newBuilder().addInterceptor(TextInterceptor()).build() + + /** + * Archive is on a separate page from manga info + */ + override fun chapterListRequest(manga: SManga): Request = + GET("$baseUrl/read/${manga.url.substringAfter("?url=")}/archive") + + /** + * Open Archive Url instead of the details page + * Helps with getting past the nfsw pages + */ + override fun getMangaUrl(manga: SManga): String { + return "$baseUrl/read/" + manga.url.substringAfter("?url=") + "/archive" + } + + /** + * There are two different ways chapters are setup + * First Way if (true) + * Manga -> Chapter -> Comic -> Pages + * The Second Way if (false) + * Manga -> Comic -> Pages + * + * Importantly the Chapter And Comic Pages can be easy distinguished + * by the name of the list elements in this case archive-chapter/archive-comic + * + * For Manga that doesn't have "chapters" skip the loop. Including All Sub-Comics of Chapters + * + * Put the chapter name into scanlator so read can know what chapter it is. + * + * Chapter Number is handled as Chapter dot Comic. Ex. Chapter 6, Comic 4: chapter_number = 6.4 + * + */ + override fun chapterListParse(response: Response): List { + val jsp = response.asJsoup() + if (jsp.selectFirst("div.archive-chapter") != null) { + val chapters: MutableList = arrayListOf() + for (chapter in jsp.select("div.archive-chapter").parents().reversed()) { + val name = chapter.text() + chapters.addAll( + client.newCall( + GET("$baseUrl${chapter.attr("href")}"), + ).execute() + .use { chapterListParse(it) } + .mapIndexed { i, it -> + it.apply { + scanlator = name + chapter_number += i + } + }, + ) + } + return chapters + } else { + return jsp.select("div.archive-comic").mapIndexed { i, it -> + SChapter.create().apply { + url = it.parent()!!.attr("href") + name = it.child(0).ownText() + date_upload = it.child(1).ownText().toDate() + chapter_number = "0.$i".toFloat() + } + }.toList().reversed() + } + } + + override fun pageListParse(response: Response): List { + val jsp = response.asJsoup() + val pages: MutableList = arrayListOf() + val comic = jsp.selectFirst("div.is--comic-page") + for (child in comic!!.select("div.is--image-segment div img")) { + pages.add( + Page( + pages.size, + response.request.url.toString(), + child.attr("src"), + ), + ) + } + if (showAuthorsNotesPref()) { + for (child in comic.select("div.is--author-notes div.is--comment-box").withIndex()) { + pages.add( + Page( + pages.size, + response.request.url.toString(), + TextInterceptorHelper.createUrl( + jsp.selectFirst("a.is--comment-author")?.ownText() + ?: "Error No Author For Comment Found", + jsp.selectFirst("div.is--comment-content")?.html() + ?: "Error No Comment Content Found", + ), + ), + ) + } + } + return pages + } + + /** + * Author name joining maybe redundant. + * + * Manga Status is available but not currently implemented. + */ + override fun mangaDetailsParse(response: Response): SManga { + val jsp = response.asJsoup() + val desDiv = jsp.selectFirst("div.description-tags") + return SManga.create().apply { + setUrlWithoutDomain(response.request.url.toString()) + description = desDiv?.parent()?.ownText() + genre = desDiv?.children()?.eachText()?.joinToString(", ") + author = jsp.select("a.authorname").eachText().joinToString(", ") + initialized = true + } + } + + override fun searchMangaParse(response: Response): MangasPage { + val jsp = response.asJsoup() + val list: MutableList = arrayListOf() + for (result in jsp.select("div.webcomic-result")) { + list.add( + SManga.create().apply { + url = result.selectFirst("div.webcomic-result-avatar a")!!.attr("href") + title = result.selectFirst("div.webcomic-result-title")!!.attr("title") + thumbnail_url = result.selectFirst("div.webcomic-result-avatar a img")!!.absUrl("src") + }, + ) + } + return MangasPage(list, (jsp.selectFirst("div.search-next-page") != null)) + } + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + val req: HttpUrl.Builder = "$baseUrl/search.php".toHttpUrl().newBuilder() + req.addQueryParameter("page", page.toString()) + req.addQueryParameter("language", siteLang) + filters.forEach { + when (it) { + is TagsFilter -> req.addEncodedQueryParameter( + "tags", + it.state.replace(", ", ","), + ) + is SortFilter -> req.addQueryParameter("sort", it.state.toString()) + is CompletedComicFilter -> req.addQueryParameter( + "completed", + it.state.toInt().toString(), + ) + is LastUpdatedFilter -> req.addQueryParameter( + "lastupdate", + it.state.toString(), + ) + is ViolenceFilter -> req.addQueryParameter("fv", it.state.toString()) + is NudityFilter -> req.addQueryParameter("fn", it.state.toString()) + is StrongLangFilter -> req.addQueryParameter("fl", it.state.toString()) + is SexualFilter -> req.addQueryParameter("fs", it.state.toString()) + else -> {} + } + } + + return Request.Builder().url(req.build()).build() + } + + // START OF AUTHOR NOTES // + private val preferences: SharedPreferences by lazy { + Injekt.get().getSharedPreferences("source_$id", 0x0000) + } + companion object { + private const val SHOW_AUTHORS_NOTES_KEY = "showAuthorsNotes" + } + private fun showAuthorsNotesPref() = + preferences.getBoolean(SHOW_AUTHORS_NOTES_KEY, false) + + override fun setupPreferenceScreen(screen: PreferenceScreen) { + val authorsNotesPref = SwitchPreferenceCompat(screen.context).apply { + key = SHOW_AUTHORS_NOTES_KEY; title = "Show author's notes" + summary = "Enable to see the author's notes at the end of chapters (if they're there)." + setDefaultValue(false) + } + screen.addPreference(authorsNotesPref) + } + // END OF AUTHOR NOTES // + + // START OF FILTERS // + override fun getFilterList(): FilterList = getFilterList(0) + private fun getFilterList(sortIndex: Int): FilterList = FilterList( + TagsFilter(), + Filter.Separator(), + SortFilter(sortIndex), + Filter.Separator(), + LastUpdatedFilter(), + CompletedComicFilter(), + Filter.Separator(), + Filter.Header("Flags"), + ViolenceFilter(), + NudityFilter(), + StrongLangFilter(), + SexualFilter(), + ) + + internal class SortFilter(index: Int) : Filter.Select( + "Sort By", + arrayOf("Relevance", "Popularity", "Last Update"), + index, + ) + internal class CompletedComicFilter : Filter.CheckBox("Comic Completed", false) + internal class LastUpdatedFilter : Filter.Select( + "Last Updated", + arrayOf("All Time", "This Week", "This Month", "This Year", "Completed Only"), + 0, + ) + internal class ViolenceFilter : Filter.Select( + "Violence", + arrayOf("None / Minimal", "Violent Content", "Gore / Graphic"), + 2, + ) + internal class NudityFilter : Filter.Select( + "Frontal Nudity", + arrayOf("None", "Occasional", "Frequent"), + 2, + ) + internal class StrongLangFilter : Filter.Select( + "Strong Language", + arrayOf("None", "Occasional", "Frequent"), + 2, + ) + internal class SexualFilter : Filter.Select( + "Sexual Content", + arrayOf("No Sexual Content", "Sexual Situations", "Strong Sexual Themes"), + 2, + ) + internal class TagsFilter : Filter.Text("Tags") + + // END OF FILTERS // + + override fun popularMangaRequest(page: Int): Request = + searchMangaRequest(page, "", getFilterList(1)) + override fun popularMangaParse(response: Response): MangasPage = searchMangaParse(response) + + override fun latestUpdatesRequest(page: Int): Request = + searchMangaRequest(page, "", getFilterList(2)) + override fun latestUpdatesParse(response: Response): MangasPage = searchMangaParse(response) + + override fun imageUrlParse(response: Response): String = + throw UnsupportedOperationException("Not Used") + + private fun String.toDate(): Long { + val ret = this.replace("st", "") + .replace("nd", "") + .replace("rd", "") + .replace("th", "") + .replace(",", "") + return dateFormat.parse(ret)?.time ?: dateFormatSlim.parse(ret)!!.time + } + + private fun Boolean.toInt(): Int = if (this) { 0 } else { 1 } +} diff --git a/src/all/comicfury/src/eu/kanade/tachiyomi/extension/all/comicfury/ComicFuryFactory.kt b/src/all/comicfury/src/eu/kanade/tachiyomi/extension/all/comicfury/ComicFuryFactory.kt new file mode 100644 index 000000000..cb18b496d --- /dev/null +++ b/src/all/comicfury/src/eu/kanade/tachiyomi/extension/all/comicfury/ComicFuryFactory.kt @@ -0,0 +1,23 @@ +package eu.kanade.tachiyomi.extension.all.comicfury + +import eu.kanade.tachiyomi.source.Source +import eu.kanade.tachiyomi.source.SourceFactory + +class ComicFuryFactory : SourceFactory { + override fun createSources(): List = listOf( + ComicFury("all"), + ComicFury("en"), + ComicFury("es"), + ComicFury("pt-BR", "pt"), + ComicFury("de"), + ComicFury("fr"), + ComicFury("it"), + ComicFury("pl"), + ComicFury("ja"), + ComicFury("zh"), + ComicFury("ru"), + ComicFury("fi"), + ComicFury("other"), + ComicFury("other", "notext", " (No Text)"), + ) +}