From e22201cb0ca797e67c8be5363ae0ca3a9d1a076b Mon Sep 17 00:00:00 2001 From: wasu-code <61418403+wasu-code@users.noreply.github.com> Date: Thu, 27 Mar 2025 18:50:26 +0100 Subject: [PATCH 01/20] new source: NewGrounds --- src/all/newgrounds/build.gradle | 7 + src/all/newgrounds/res/web_hi_res_512.png | Bin 0 -> 64023 bytes .../all/newgrounds/DateUtils.kt | 13 + .../all/newgrounds/NewGrounds.kt | 292 ++++++++++++++++++ 4 files changed, 312 insertions(+) create mode 100644 src/all/newgrounds/build.gradle create mode 100644 src/all/newgrounds/res/web_hi_res_512.png create mode 100644 src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/DateUtils.kt create mode 100644 src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGrounds.kt diff --git a/src/all/newgrounds/build.gradle b/src/all/newgrounds/build.gradle new file mode 100644 index 00000000..6e9669fb --- /dev/null +++ b/src/all/newgrounds/build.gradle @@ -0,0 +1,7 @@ +ext { + extName = 'Newgrounds' + extClass = '.NewGrounds' + extVersionCode = 1 +} + +apply from: "$rootDir/common.gradle" diff --git a/src/all/newgrounds/res/web_hi_res_512.png b/src/all/newgrounds/res/web_hi_res_512.png new file mode 100644 index 0000000000000000000000000000000000000000..6041cf5129fb9ddd98a676c53100650e9c1b4bae GIT binary patch literal 64023 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.getSharedPreferences("source_$id", 0x0000) + } + + private val videoListHeaders by lazy { + headers.newBuilder() + .add("Accept", "application/json, text/javascript, */*; q=0.01") + .add("X-Requested-With", "XMLHttpRequest") + .add("Referer", "https://www.newgrounds.com") + .build() + } + + private fun creatorUrl(username: String) = baseUrl.replaceFirst("www", username) + + private fun animeFromElement(element: Element, section: String): SAnime { + return if (section == PREF_SECTIONS["Your Feed"]) { + SAnime.create().apply { + title = element.selectFirst(".detail-title h4")!!.text() + author = element.selectFirst(".detail-title strong")?.text() + description = element.selectFirst(".detail-description")?.text() + thumbnail_url = element.selectFirst(".item-icon img")?.absUrl("src") + setUrlWithoutDomain(element.selectFirst("a")!!.absUrl("href")) + } + } else { + SAnime.create().apply { + title = element.selectFirst(".card-title h4")!!.text() + author = element.selectFirst(".card-title span")?.text()?.replace("By ", "") + description = element.selectFirst("a")?.attr("title") + thumbnail_url = element.selectFirst("img")?.absUrl("src") + setUrlWithoutDomain(element.selectFirst("a")!!.absUrl("href")) + } + } + } + + // Latest + + private val latestSection = preferences.getString("LATEST", PREF_SECTIONS["Latest"])!! + + override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/$latestSection", headers) + + override fun latestUpdatesNextPageSelector(): String? = null + + override fun latestUpdatesSelector(): String { + return if (latestSection == PREF_SECTIONS["Your Feed"]) { + "a.item-portalsubmission" + } else { + "a.inline-card-portalsubmission" + } + } + + override fun latestUpdatesFromElement(element: Element): SAnime { + return animeFromElement(element, latestSection) + } + +// override suspend fun getLatestUpdates(page: Int): AnimesPage { +// val data = client.newCall(GET("$baseUrl")).awaitSuccess() +// val document = data.parseAs() +// +// val animeList = document.select(latestUpdatesSelector()).map { element -> +// animeFromElement(element, latestSection) +// } +// +// return AnimesPage(animeList, hasNextPage = true) +// +// } + + // Browse + + private val popularSection = preferences.getString("POPULAR", PREF_SECTIONS["Popular"])!! + + override fun popularAnimeRequest(page: Int): Request = GET("$baseUrl/$popularSection", headers) + + override fun popularAnimeNextPageSelector(): String? = null + + override suspend fun getPopularAnime(page: Int): AnimesPage { + val offset = 20 + //TODO + return super.getPopularAnime(page) + } + + override fun popularAnimeSelector(): String { + return if (latestSection == PREF_SECTIONS["Your Feed"]) { + "a.item-portalsubmission" + } else { + "a.inline-card-portalsubmission" + } + } + + override fun popularAnimeFromElement(element: Element): SAnime { + return animeFromElement(element, popularSection) + } + + // Search + + override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { + TODO("Not yet implemented") + } + + override fun searchAnimeNextPageSelector(): String? { + TODO("Not yet implemented") + } + + override fun searchAnimeSelector(): String { + TODO("Not yet implemented") + } + + override fun searchAnimeFromElement(element: Element): SAnime { + TODO("Not yet implemented") + } + + // Etc. + + override fun animeDetailsParse(document: Document): SAnime { + return SAnime.create().apply { + title = document.selectFirst("h2[itemprop=\"name\"]")!!.text() + description = document.selectFirst("meta[itemprop=\"description\"]")?.attr("content") + author = document.selectFirst(".authorlinks > div:first-of-type .item-details-main")?.text() + artist = document.select(".authorlinks > div:not(:first-of-type) .item-details-main").joinToString { + it.text() + } + thumbnail_url = document.selectFirst("meta[itemprop=\"thumbnailUrl\"]")?.absUrl("content") + genre = document.select(".tags li a").joinToString { it.text() } + status = SAnime.COMPLETED + setUrlWithoutDomain(document.selectFirst("meta[itemprop=\"url\"]")!!.absUrl("content")) + } + } + + override fun episodeListSelector(): String = throw UnsupportedOperationException("Not Used") + + override fun episodeFromElement(element: Element): SEpisode = throw UnsupportedOperationException("Not Used") + + private fun extractEpisodeIdFromScript(element: Element?): String? { + val regex = """data-movie-id=\\\"(\d+)\\\"""" + val scriptContent = element!!.html().toString() + + val pattern = Pattern.compile(regex, Pattern.MULTILINE) + val matcher = pattern.matcher(scriptContent) + + return if (matcher.find()) { + matcher.group(1) + } else { + null + } + } + + override fun episodeListParse(response: Response): List { + val document = response.asJsoup() + val episodeIdScript = document.selectFirst("#ng-global-video-player script") + val episodeId = extractEpisodeIdFromScript(episodeIdScript) + val dateString = document.selectFirst("#sidestats > dl:nth-of-type(2) > dd:first-of-type")?.text() + + return listOf( + SEpisode.create().apply { + episode_number = 1f + date_upload = dateFormat.tryParse(dateString) + name = document.selectFirst("meta[name=\"title\"]")!!.attr("content") + setUrlWithoutDomain("$baseUrl/portal/video/$episodeId") + }, + ) + } + + override fun videoListRequest(episode: SEpisode): Request { + Log.d("Tst", videoListHeaders.toString()) + return GET("$baseUrl${episode.url}", videoListHeaders) + } + + override fun videoListParse(response: Response): List

VVhxJ42gsJr4Jpx480yArs1mzW!;H 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 literal 0 HcmV?d00001 -- 2.47.2 From a7a3c5db642c2f49b04253e32d5880fb5438ee5d Mon Sep 17 00:00:00 2001 From: wasu-code <61418403+wasu-code@users.noreply.github.com> Date: Fri, 28 Mar 2025 11:01:11 +0100 Subject: [PATCH 03/20] add search and search filters --- .../all/newgrounds/NewGrounds.kt | 282 +++++++++++++----- .../all/newgrounds/NewGroundsFilters.kt | 81 +++++ 2 files changed, 281 insertions(+), 82 deletions(-) create mode 100644 src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGroundsFilters.kt diff --git a/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGrounds.kt b/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGrounds.kt index d832fa54..39864aaa 100644 --- a/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGrounds.kt +++ b/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGrounds.kt @@ -6,22 +6,20 @@ import android.widget.Toast import androidx.preference.ListPreference import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource +import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilterList -import eu.kanade.tachiyomi.animesource.model.AnimesPage import eu.kanade.tachiyomi.animesource.model.SAnime import eu.kanade.tachiyomi.animesource.model.SEpisode import eu.kanade.tachiyomi.animesource.model.Video import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.network.awaitSuccess import eu.kanade.tachiyomi.util.asJsoup -import eu.kanade.tachiyomi.util.parseAs +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Request import okhttp3.Response import org.json.JSONObject import org.jsoup.nodes.Document import org.jsoup.nodes.Element -import rx.Observable import tryParse import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get @@ -29,6 +27,8 @@ import java.text.SimpleDateFormat import java.util.Locale import java.util.regex.Pattern +private const val SEARCH_PAGE_SIZE = 20 + class NewGrounds : ParsedAnimeHttpSource(), ConfigurableAnimeSource { override val lang = "all" @@ -50,81 +50,35 @@ class NewGrounds : ParsedAnimeHttpSource(), ConfigurableAnimeSource { .build() } - private fun creatorUrl(username: String) = baseUrl.replaceFirst("www", username) - - private fun animeFromElement(element: Element, section: String): SAnime { - return if (section == PREF_SECTIONS["Your Feed"]) { - SAnime.create().apply { - title = element.selectFirst(".detail-title h4")!!.text() - author = element.selectFirst(".detail-title strong")?.text() - description = element.selectFirst(".detail-description")?.text() - thumbnail_url = element.selectFirst(".item-icon img")?.absUrl("src") - setUrlWithoutDomain(element.selectFirst("a")!!.absUrl("href")) - } - } else { - SAnime.create().apply { - title = element.selectFirst(".card-title h4")!!.text() - author = element.selectFirst(".card-title span")?.text()?.replace("By ", "") - description = element.selectFirst("a")?.attr("title") - thumbnail_url = element.selectFirst("img")?.absUrl("src") - setUrlWithoutDomain(element.selectFirst("a")!!.absUrl("href")) - } - } - } - // Latest private val latestSection = preferences.getString("LATEST", PREF_SECTIONS["Latest"])!! - override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/$latestSection", headers) - - override fun latestUpdatesNextPageSelector(): String? = null - - override fun latestUpdatesSelector(): String { - return if (latestSection == PREF_SECTIONS["Your Feed"]) { - "a.item-portalsubmission" - } else { - "a.inline-card-portalsubmission" - } + override fun latestUpdatesRequest(page: Int): Request { + val offset = (page - 1) * SEARCH_PAGE_SIZE + return GET("$baseUrl/$latestSection?offset=$offset", headers) } + override fun latestUpdatesNextPageSelector(): String = "#load-more-items a" + + override fun latestUpdatesSelector(): String = animeSelector(latestSection) + override fun latestUpdatesFromElement(element: Element): SAnime { return animeFromElement(element, latestSection) } -// override suspend fun getLatestUpdates(page: Int): AnimesPage { -// val data = client.newCall(GET("$baseUrl")).awaitSuccess() -// val document = data.parseAs() -// -// val animeList = document.select(latestUpdatesSelector()).map { element -> -// animeFromElement(element, latestSection) -// } -// -// return AnimesPage(animeList, hasNextPage = true) -// -// } - // Browse private val popularSection = preferences.getString("POPULAR", PREF_SECTIONS["Popular"])!! - override fun popularAnimeRequest(page: Int): Request = GET("$baseUrl/$popularSection", headers) - - override fun popularAnimeNextPageSelector(): String? = null - - override suspend fun getPopularAnime(page: Int): AnimesPage { - val offset = 20 - //TODO - return super.getPopularAnime(page) + override fun popularAnimeRequest(page: Int): Request { + val offset = (page - 1) * SEARCH_PAGE_SIZE + return GET("$baseUrl/$popularSection?offset=$offset", headers) } - override fun popularAnimeSelector(): String { - return if (latestSection == PREF_SECTIONS["Your Feed"]) { - "a.item-portalsubmission" - } else { - "a.inline-card-portalsubmission" - } - } + override fun popularAnimeNextPageSelector(): String = "#load-more-items a" + + override fun popularAnimeSelector(): String = animeSelector(popularSection) override fun popularAnimeFromElement(element: Element): SAnime { return animeFromElement(element, popularSection) @@ -133,27 +87,108 @@ class NewGrounds : ParsedAnimeHttpSource(), ConfigurableAnimeSource { // Search override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { - TODO("Not yet implemented") + val searchUrl = "$baseUrl/search/conduct/movies".toHttpUrl().newBuilder() + .addQueryParameter("page", page.toString()) + + if (query.isNotEmpty()) searchUrl.addQueryParameter("terms", query) + + filters.findInstance().ifFilterSet { + searchUrl.addQueryParameter("match", MATCH_AGAINST.values.elementAt(it.state)) + } + filters.findInstance()?.state + ?.findInstance().ifFilterSet { + searchUrl.addQueryParameter("exact", "1") + } + filters.findInstance()?.state + ?.findInstance().ifFilterSet { + searchUrl.addQueryParameter("any", "1") + } + filters.findInstance().ifFilterSet { + searchUrl.addQueryParameter("user", it.state) + } + filters.findInstance().ifFilterSet { + searchUrl.addQueryParameter("genre", GENRE.values.elementAt(it.state)) + } + filters.findInstance()?.state + ?.findInstance().ifFilterSet { + searchUrl.addQueryParameter("min_length", it.state) + } + filters.findInstance()?.state + ?.findInstance().ifFilterSet { + searchUrl.addQueryParameter("max_length", it.state) + } + filters.findInstance().ifFilterSet { + searchUrl.addQueryParameter("frontpaged", "1") + } + filters.findInstance()?.state + ?.findInstance().ifFilterSet { + searchUrl.addQueryParameter("after", it.state) + } + filters.findInstance()?.state + ?.findInstance().ifFilterSet { + searchUrl.addQueryParameter("before", it.state) + } +// filters.findInstance().ifFilterSet { +// searchUrl.addQueryParameter("", "") +// } + filters.findInstance().ifFilterSet { + searchUrl.addQueryParameter("sort", SORTING.values.elementAt(it.state)) + } + filters.findInstance().ifFilterSet { + searchUrl.addQueryParameter("tags", it.state) + } + + Log.d("Tst", "$searchUrl") + + return GET(searchUrl.build(), headers) } - override fun searchAnimeNextPageSelector(): String? { - TODO("Not yet implemented") - } + override fun searchAnimeNextPageSelector(): String = "#results-load-more" - override fun searchAnimeSelector(): String { - TODO("Not yet implemented") - } + override fun searchAnimeSelector(): String = "ul.itemlist li a" - override fun searchAnimeFromElement(element: Element): SAnime { - TODO("Not yet implemented") - } + override fun searchAnimeFromElement(element: Element): SAnime = animeFromListElement(element) // Etc. override fun animeDetailsParse(document: Document): SAnime { + fun getStarRating(): String { + val score: Double = document.selectFirst("#score_number")?.text()?.toDouble() ?: 0.0 + val fullStars = score.toInt() + val hasHalfStar = (score % 1) >= 0.5 + val totalStars = if (hasHalfStar) fullStars + 1 else fullStars + val emptyStars = 5 - totalStars + + return "✪".repeat(fullStars) + (if (hasHalfStar) "✪" else "") + "⬤".repeat(emptyStars) + " ($score)" + } + + fun getAdultRating(): String { + val rating = document.selectFirst("#embed_header h2")!!.className().substringAfter("rated-") + return when (rating) { + "e" -> "🟩 Everyone" + "t" -> "🟦 Ages 13+" + "m" -> "🟪 Ages 17+" + "a" -> "🟥 Adults Only" + else -> "❓" + } + } + + fun getStats(): String { + val statsElement = document.selectFirst("#sidestats > dl:first-of-type") + val views = statsElement?.selectFirst("dd:first-of-type")?.text() ?: "?" + val faves = statsElement?.selectFirst("dd:nth-of-type(2)")?.text() ?: "?" + val votes = statsElement?.selectFirst("dd:nth-of-type(3)")?.text() ?: "?" + + return "👀 $views | ❤️ $faves | 👍 $votes" + } + return SAnime.create().apply { title = document.selectFirst("h2[itemprop=\"name\"]")!!.text() - description = document.selectFirst("meta[itemprop=\"description\"]")?.attr("content") + description = """ + ${document.selectFirst("meta[itemprop=\"description\"]")?.attr("content")} + + ${getAdultRating()} | ${getStarRating()} | ${getStats()} + """.trimIndent() author = document.selectFirst(".authorlinks > div:first-of-type .item-details-main")?.text() artist = document.select(".authorlinks > div:not(:first-of-type) .item-details-main").joinToString { it.text() @@ -170,7 +205,7 @@ class NewGrounds : ParsedAnimeHttpSource(), ConfigurableAnimeSource { override fun episodeFromElement(element: Element): SEpisode = throw UnsupportedOperationException("Not Used") private fun extractEpisodeIdFromScript(element: Element?): String? { - val regex = """data-movie-id=\\\"(\d+)\\\"""" + val regex = """data-movie-id=\\"(\d+)\\"""" val scriptContent = element!!.html().toString() val pattern = Pattern.compile(regex, Pattern.MULTILINE) @@ -199,13 +234,9 @@ class NewGrounds : ParsedAnimeHttpSource(), ConfigurableAnimeSource { ) } - override fun videoListRequest(episode: SEpisode): Request { - Log.d("Tst", videoListHeaders.toString()) - return GET("$baseUrl${episode.url}", videoListHeaders) - } + override fun videoListRequest(episode: SEpisode): Request = GET("$baseUrl${episode.url}", videoListHeaders) override fun videoListParse(response: Response): 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 Date: Wed, 2 Apr 2025 17:30:42 +0200 Subject: [PATCH 09/20] remove unnecessary comment --- .../animeextension/all/newgrounds/NewGroundsFilters.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGroundsFilters.kt b/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGroundsFilters.kt index 8ab65a19..1ead1c08 100644 --- a/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGroundsFilters.kt +++ b/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGroundsFilters.kt @@ -33,14 +33,13 @@ class FrontpagedFilter : AnimeFilter.CheckBox("Frontpaged?", false) class AfterDateFilter : AnimeFilter.Text("On, or after") class BeforeDateFilter : AnimeFilter.Text("Before") class DateFilterGroup : AnimeFilter.Group( - "Dates (YYYY-MM-DD)", + "Date (YYYY-MM-DD)", listOf( AfterDateFilter(), BeforeDateFilter(), ), ) -// class SortingFilter() : AnimeFilter.Select("Sort by", SORTING.keys.toTypedArray()) class SortingFilter() : AnimeFilter.Sort("Sort by", SORTING.keys.toTypedArray(), Selection(0, true)) class TagsFilter() : AnimeFilter.Text("Tags (comma separated)") -- 2.47.2 From 188207eea05254aff067c86323ded7d37943c51c Mon Sep 17 00:00:00 2001 From: wasu-code <61418403+wasu-code@users.noreply.github.com> Date: Wed, 2 Apr 2025 17:37:56 +0200 Subject: [PATCH 10/20] add NSFW flag --- src/all/newgrounds/build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/src/all/newgrounds/build.gradle b/src/all/newgrounds/build.gradle index 6e9669fb..b835c961 100644 --- a/src/all/newgrounds/build.gradle +++ b/src/all/newgrounds/build.gradle @@ -2,6 +2,7 @@ ext { extName = 'Newgrounds' extClass = '.NewGrounds' extVersionCode = 1 + isNsfw = true } apply from: "$rootDir/common.gradle" -- 2.47.2 From da825cd735acc7c7487062c78b5dbc2304087532 Mon Sep 17 00:00:00 2001 From: wasu-code <61418403+wasu-code@users.noreply.github.com> Date: Wed, 2 Apr 2025 20:29:39 +0200 Subject: [PATCH 11/20] simplify episode url extraction --- .../all/newgrounds/NewGrounds.kt | 58 ++++++------------- 1 file changed, 18 insertions(+), 40 deletions(-) diff --git a/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGrounds.kt b/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGrounds.kt index c0fc02be..b9e6cfbb 100644 --- a/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGrounds.kt +++ b/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGrounds.kt @@ -31,10 +31,8 @@ import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import java.text.SimpleDateFormat import java.util.Locale -import java.util.regex.Pattern private const val PAGE_SIZE = 20 -private val MOVIE_ID_PATTERN = Pattern.compile("""data-movie-id=\\"(\d+)\\"""", Pattern.MULTILINE) class NewGrounds : ParsedAnimeHttpSource(), ConfigurableAnimeSource { @@ -260,14 +258,25 @@ class NewGrounds : ParsedAnimeHttpSource(), ConfigurableAnimeSource { override suspend fun getEpisodeList(anime: SAnime): List { val response = client.newCall(GET("${baseUrl}${anime.url}", headers)).execute() val document = response.asJsoup() - val relatedSeriesUrl = document.selectFirst("div[id^=\"related_playlists\"] a:not([id^=\"related_playlists\"])")?.absUrl("href") - val episodes = if (relatedSeriesUrl != null) { - val response2 = client.newCall(GET(relatedSeriesUrl, headers)).execute() + val relatedPlaylistUrl = document.selectFirst("div[id^=\"related_playlists\"] a:not([id^=\"related_playlists\"])")?.absUrl("href") + val isPartOfSeries = relatedPlaylistUrl?.startsWith("$baseUrl/series") ?: false + + val episodes = if (isPartOfSeries) { + val response2 = client.newCall(GET(relatedPlaylistUrl!!, headers)).execute() val document2 = response2.asJsoup() parseEpisodeList(document2) } else { - parseSingleEpisode(document) + val dateString = document.selectFirst("#sidestats > dl:nth-of-type(2) > dd:first-of-type")?.text() + + return listOf( + SEpisode.create().apply { + episode_number = 1f + date_upload = dateFormat.tryParse(dateString) + name = document.selectFirst("meta[name=\"title\"]")!!.attr("content") + setUrlWithoutDomain("$baseUrl${anime.url.replace("/view/","/video/")}") + }, + ) } return episodes @@ -277,31 +286,6 @@ class NewGrounds : ParsedAnimeHttpSource(), ConfigurableAnimeSource { override fun episodeListParse(response: Response): List = throw UnsupportedOperationException() - private fun parseSingleEpisode(document: Document): List { - val episodeIdScript = document.selectFirst("#ng-global-video-player script") - val episodeId = extractEpisodeIdFromScript(episodeIdScript) - val dateString = document.selectFirst("#sidestats > dl:nth-of-type(2) > dd:first-of-type")?.text() - - return listOf( - SEpisode.create().apply { - episode_number = 1f - date_upload = dateFormat.tryParse(dateString) - name = document.selectFirst("meta[name=\"title\"]")!!.attr("content") - setUrlWithoutDomain("$baseUrl/portal/video/$episodeId") - }, - ) - } - - private fun extractEpisodeIdFromScript(element: Element?): String? { - val scriptContent = element!!.html().toString() - val matcher = MOVIE_ID_PATTERN.matcher(scriptContent) - return if (matcher.find()) { - matcher.group(1) - } else { - null - } - } - private fun parseEpisodeList(document: Document): List { val ids = document.select("li.visual-link-container").map { it.attr("data-visual-link") } val formBody = FormBody.Builder() @@ -314,11 +298,7 @@ class NewGrounds : ParsedAnimeHttpSource(), ConfigurableAnimeSource { val request = Request.Builder() .url("$baseUrl/visual-links-fetch") .post(formBody) - .apply { - headers.forEach { (key, value) -> - addHeader(key, value) - } - } + .headers(headers) .build() val response = client.newCall(request).execute() @@ -339,7 +319,7 @@ class NewGrounds : ParsedAnimeHttpSource(), ConfigurableAnimeSource { episode_number = index.toFloat() name = episodeData.getString("title") scanlator = uploaderData.getString("user_name") - setUrlWithoutDomain(episodeData.getString("url")) + setUrlWithoutDomain("$baseUrl/portal/video/${episodeData.getString("id")}") } episodes.add(episode) @@ -534,9 +514,7 @@ class NewGrounds : ParsedAnimeHttpSource(), ConfigurableAnimeSource { if (!usernameCookie) { handler.post { - context.let { - Toast.makeText(it, "Log in via WebView to include adult content", Toast.LENGTH_SHORT).show() - } + Toast.makeText(context, "Log in via WebView to include adult content", Toast.LENGTH_SHORT).show() } } } -- 2.47.2 From 27596fe0e4f99a516f09f57895ef823a832cad72 Mon Sep 17 00:00:00 2001 From: wasu-code <61418403+wasu-code@users.noreply.github.com> Date: Fri, 4 Apr 2025 14:03:53 +0200 Subject: [PATCH 12/20] adjust stats summary in description --- .../tachiyomi/animeextension/all/newgrounds/NewGrounds.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGrounds.kt b/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGrounds.kt index b9e6cfbb..ddeedf96 100644 --- a/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGrounds.kt +++ b/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGrounds.kt @@ -204,7 +204,7 @@ class NewGrounds : ParsedAnimeHttpSource(), ConfigurableAnimeSource { val faves = statsElement?.selectFirst("dd:nth-of-type(2)")?.text() ?: "?" val votes = statsElement?.selectFirst("dd:nth-of-type(3)")?.text() ?: "?" - return "👀 $views | ❤️ $faves | 👍 $votes" + return "👀 $views | ❤️ $faves | 🗳️ $votes" } fun prepareDescription(): String { @@ -213,7 +213,7 @@ class NewGrounds : ParsedAnimeHttpSource(), ConfigurableAnimeSource { val shortDescription = document.selectFirst("meta[itemprop=\"description\"]")?.attr("content") val longDescription = document.selectFirst("#author_comments")?.wholeText() - val statsSummary = "${getAdultRating()} | ${getStarRating()} | ${getStats()}" + val statsSummary = "${getAdultRating()} | ${getStarRating()} | ${getStats()}" val description = StringBuilder() -- 2.47.2 From 063f3166d206559a36b4d2c104a5aa89f5475731 Mon Sep 17 00:00:00 2001 From: wasu-code <61418403+wasu-code@users.noreply.github.com> Date: Fri, 4 Apr 2025 14:46:21 +0200 Subject: [PATCH 13/20] use baseUrl in Referer header --- .../tachiyomi/animeextension/all/newgrounds/NewGrounds.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGrounds.kt b/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGrounds.kt index ddeedf96..a716691c 100644 --- a/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGrounds.kt +++ b/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGrounds.kt @@ -54,7 +54,7 @@ class NewGrounds : ParsedAnimeHttpSource(), ConfigurableAnimeSource { headers.newBuilder() .add("Accept", "application/json, text/javascript, */*; q=0.01") .add("X-Requested-With", "XMLHttpRequest") - .add("Referer", "https://www.newgrounds.com") + .add("Referer", baseUrl) .build() } -- 2.47.2 From ecf614d5eeeb51105f9c7dfeb35196d43d7b3b56 Mon Sep 17 00:00:00 2001 From: wasu-code <61418403+wasu-code@users.noreply.github.com> Date: Fri, 4 Apr 2025 15:08:51 +0200 Subject: [PATCH 14/20] eliminate the need for restart after changing preferences --- .../all/newgrounds/NewGrounds.kt | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGrounds.kt b/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGrounds.kt index a716691c..500c0406 100644 --- a/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGrounds.kt +++ b/src/all/newgrounds/src/eu/kanade/tachiyomi/animeextension/all/newgrounds/NewGrounds.kt @@ -60,11 +60,13 @@ class NewGrounds : ParsedAnimeHttpSource(), ConfigurableAnimeSource { // Latest - private val latestSection = preferences.getString("LATEST", PREF_SECTIONS["Latest"])!! + private fun getLatestSection(): String { + return preferences.getString("LATEST", PREF_SECTIONS["Latest"])!! + } override fun latestUpdatesRequest(page: Int): Request { val offset = (page - 1) * PAGE_SIZE - return GET("$baseUrl/$latestSection?offset=$offset", headers) + return GET("$baseUrl/${getLatestSection()}?offset=$offset", headers) } override fun latestUpdatesNextPageSelector(): String = "#load-more-items a" @@ -74,19 +76,21 @@ class NewGrounds : ParsedAnimeHttpSource(), ConfigurableAnimeSource { return super.latestUpdatesParse(response) } - override fun latestUpdatesSelector(): String = animeSelector(latestSection) + override fun latestUpdatesSelector(): String = animeSelector(getLatestSection()) override fun latestUpdatesFromElement(element: Element): SAnime { - return animeFromElement(element, latestSection) + return animeFromElement(element, getLatestSection()) } // Browse - private val popularSection = preferences.getString("POPULAR", PREF_SECTIONS["Popular"])!! + private fun getPopularSection(): String { + return preferences.getString("POPULAR", PREF_SECTIONS["Popular"])!! + } override fun popularAnimeRequest(page: Int): Request { val offset = (page - 1) * PAGE_SIZE - return GET("$baseUrl/$popularSection?offset=$offset", headers) + return GET("$baseUrl/${getPopularSection()}?offset=$offset", headers) } override fun popularAnimeNextPageSelector(): String = "#load-more-items a" @@ -96,10 +100,10 @@ class NewGrounds : ParsedAnimeHttpSource(), ConfigurableAnimeSource { return super.popularAnimeParse(response) } - override fun popularAnimeSelector(): String = animeSelector(popularSection) + override fun popularAnimeSelector(): String = animeSelector(getPopularSection()) override fun popularAnimeFromElement(element: Element): SAnime { - return animeFromElement(element, popularSection) + return animeFromElement(element, getPopularSection()) } // Search @@ -402,7 +406,6 @@ class NewGrounds : ParsedAnimeHttpSource(), ConfigurableAnimeSource { setOnPreferenceChangeListener { _, newValue -> val selected = newValue as String - Toast.makeText(screen.context, "Restart app to apply new setting.", Toast.LENGTH_LONG).show() preferences.edit().putString(key, selected).commit() } }.also(screen::addPreference) @@ -417,7 +420,6 @@ class NewGrounds : ParsedAnimeHttpSource(), ConfigurableAnimeSource { setOnPreferenceChangeListener { _, newValue -> val selected = newValue as String - Toast.makeText(screen.context, "Restart app to apply new setting.", Toast.LENGTH_LONG).show() preferences.edit().putString(key, selected).commit() } }.also(screen::addPreference) @@ -507,12 +509,11 @@ class NewGrounds : ParsedAnimeHttpSource(), ConfigurableAnimeSource { * If cookie is missing: displays a toast with information. */ private fun checkAdultContentFiltered(headers: Headers) { - val shouldCheck = preferences.getBoolean("PROMPT_CONTENT_FILTERED", true) - if (!shouldCheck) return + val usernameCookie: Boolean = headers.values("Set-Cookie").any { it.startsWith("NG_GG_username=") } + if (usernameCookie) return // user already logged in - val usernameCookie = headers.values("Set-Cookie").any { it.startsWith("NG_GG_username=") } - - if (!usernameCookie) { + val shouldPrompt = preferences.getBoolean("PROMPT_CONTENT_FILTERED", true) + if (shouldPrompt) { handler.post { Toast.makeText(context, "Log in via WebView to include adult content", Toast.LENGTH_SHORT).show() } -- 2.47.2 From 8d9e763dc4e089c46346b460feb66ba02c2ebe06 Mon Sep 17 00:00:00 2001 From: Cezary Date: Sun, 6 Apr 2025 20:41:23 +0200 Subject: [PATCH 15/20] fix(lib/lycoris&lulu) Repair decode json and work LuluStream (#810) * fix(lib/lycoris): fix parse json * fix(lib/lycoris): small changes * fix(lib/lycoris): small changes v2 * fix(lib/lycoris): small changes v3 * fix(lib/lycoris): small changes v4 * fix(lib/lycoris): small changes v5 * fix(lib/lycoris&lulu): big change v1 * fix(lib/lycoris&lulu): small change v2 * fix(lib/lycoris&lulu): small change v3 * fix(lib/lycoris&lulu&docchi): small change v4 * fix(pl/docchi): tiny change v1 * fix(lib/lulu): tiny change v2 --- .../lib/luluextractor/LuluExtractor.kt | 70 ++++---- .../lib/lycorisextractor/LycorisExtractor.kt | 153 +++++++++--------- src/pl/docchi/build.gradle | 2 +- .../animeextension/pl/docchi/Docchi.kt | 8 +- 4 files changed, 124 insertions(+), 109 deletions(-) diff --git a/lib/lulu-extractor/src/main/java/eu/kanade/tachiyomi/lib/luluextractor/LuluExtractor.kt b/lib/lulu-extractor/src/main/java/eu/kanade/tachiyomi/lib/luluextractor/LuluExtractor.kt index afcd99bc..550ddae9 100644 --- a/lib/lulu-extractor/src/main/java/eu/kanade/tachiyomi/lib/luluextractor/LuluExtractor.kt +++ b/lib/lulu-extractor/src/main/java/eu/kanade/tachiyomi/lib/luluextractor/LuluExtractor.kt @@ -3,16 +3,18 @@ package eu.kanade.tachiyomi.lib.luluextractor import eu.kanade.tachiyomi.animesource.model.Video import eu.kanade.tachiyomi.network.GET import okhttp3.Headers +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import java.util.regex.Pattern -class LuluExtractor(private val client: OkHttpClient) { +class LuluExtractor(private val client: OkHttpClient, headers: Headers) { - private val headers = Headers.Builder() - .add("Referer", "https://luluvdo.com") + private val headers = headers.newBuilder() + .add("Referer", "https://luluvdo.com/") .add("Origin", "https://luluvdo.com") .build() + //Credit: https://github.com/skoruppa/docchi-stremio-addon/blob/main/app/players/lulustream.py fun videosFromUrl(url: String, prefix: String): List