fix(src/en): Fixed video empty list (#212)

Closes #137
This commit is contained in:
imper1aldev 2024-09-04 11:15:36 -06:00 committed by GitHub
parent 6816676e4a
commit 395b6bef64
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 10 additions and 34 deletions

View file

@ -1,7 +1,7 @@
ext { ext {
extName = 'Oppai Stream' extName = 'Oppai Stream'
extClass = '.OppaiStream' extClass = '.OppaiStream'
extVersionCode = 4 extVersionCode = 5
isNsfw = true isNsfw = true
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

View file

@ -29,6 +29,7 @@ import org.jsoup.nodes.Element
import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get import uy.kohesive.injekt.api.get
import uy.kohesive.injekt.injectLazy import uy.kohesive.injekt.injectLazy
import java.net.URLEncoder.encode
class OppaiStream : ParsedAnimeHttpSource(), ConfigurableAnimeSource { class OppaiStream : ParsedAnimeHttpSource(), ConfigurableAnimeSource {
@ -124,11 +125,7 @@ class OppaiStream : ParsedAnimeHttpSource(), ConfigurableAnimeSource {
override fun searchAnimeFromElement(element: Element) = SAnime.create().apply { override fun searchAnimeFromElement(element: Element) = SAnime.create().apply {
thumbnail_url = element.selectFirst("img.cover-img-in")?.attr("abs:src") thumbnail_url = element.selectFirst("img.cover-img-in")?.attr("abs:src")
title = element.selectFirst(".title-ep")!!.text().replace(TITLE_CLEANUP_REGEX, "") title = element.selectFirst(".title-ep")!!.text().replace(TITLE_CLEANUP_REGEX, "")
setUrlWithoutDomain( setUrlWithoutDomain(element.attr("exur").fixLink())
element.attr("href").replace(Regex("(?<=\\?e=)(.*?)(?=&f=)")) {
java.net.URLEncoder.encode(it.groupValues[1], "UTF-8")
},
)
} }
// =========================== Anime Details ============================ // =========================== Anime Details ============================
@ -159,35 +156,13 @@ class OppaiStream : ParsedAnimeHttpSource(), ConfigurableAnimeSource {
// ============================== Episodes ============================== // ============================== Episodes ==============================
override fun episodeListParse(response: Response): List<SEpisode> { override fun episodeListParse(response: Response): List<SEpisode> {
val doc = response.asJsoup() val doc = response.asJsoup()
return buildList { return doc.select("div.more-same-eps .in-main-gr > a").map(::episodeFromElement).reversed()
doc.select(episodeListSelector())
.map(::episodeFromElement)
.let(::addAll)
add(
SEpisode.create().apply {
setUrlWithoutDomain(
doc.location().replace(Regex("(?<=\\?e=)(.*?)(?=&f=)")) {
java.net.URLEncoder.encode(it.groupValues[1], "UTF-8")
},
)
val num = doc.selectFirst("div.episode-info > h1")!!.text().substringAfter(" Ep ")
name = "Episode $num"
episode_number = num.toFloatOrNull() ?: 1F
scanlator = doc.selectFirst("div.episode-info a.red")?.text()
},
)
}.sortedByDescending { it.episode_number }
} }
override fun episodeListSelector() = "div.more-same-eps > div > div > a" override fun episodeListSelector() = "div.more-same-eps > div > div > a"
override fun episodeFromElement(element: Element) = SEpisode.create().apply { override fun episodeFromElement(element: Element) = SEpisode.create().apply {
setUrlWithoutDomain( setUrlWithoutDomain(element.attr("exur").fixLink())
element.attr("href").replace(Regex("(?<=\\?e=)(.*?)(?=&f=)")) {
java.net.URLEncoder.encode(it.groupValues[1], "UTF-8")
},
)
val num = element.selectFirst("font.ep")?.text() ?: "1" val num = element.selectFirst("font.ep")?.text() ?: "1"
name = "Episode $num" name = "Episode $num"
episode_number = num.toFloatOrNull() ?: 1F episode_number = num.toFloatOrNull() ?: 1F
@ -198,7 +173,7 @@ class OppaiStream : ParsedAnimeHttpSource(), ConfigurableAnimeSource {
override fun videoListParse(response: Response): List<Video> { override fun videoListParse(response: Response): List<Video> {
val doc = response.asJsoup() val doc = response.asJsoup()
val script = doc.selectFirst("script:containsData(var availableres)")!!.data() val script = doc.selectFirst("script:containsData(var availableres)")!!.data()
val subtitles = doc.select("track[kind=captions]").map { val subtitles = doc.select("track[kind=captions], track[kind=subtitles]").map {
Track(it.attr("src"), it.attr("label")) Track(it.attr("src"), it.attr("label"))
} }
@ -226,9 +201,7 @@ class OppaiStream : ParsedAnimeHttpSource(), ConfigurableAnimeSource {
).reversed() ).reversed()
} }
override fun videoUrlParse(document: Document): String { override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
throw UnsupportedOperationException()
}
// ============================== Settings ============================== // ============================== Settings ==============================
override fun setupPreferenceScreen(screen: PreferenceScreen) { override fun setupPreferenceScreen(screen: PreferenceScreen) {
@ -322,6 +295,9 @@ class OppaiStream : ParsedAnimeHttpSource(), ConfigurableAnimeSource {
return Pair(coverURL, studiosList) return Pair(coverURL, studiosList)
} }
private fun String.fixLink(): String =
this.replace(Regex("(?<=\\?e=)(.*?)(?=&f=)")) { encode(it.groupValues[1], "UTF-8") }
companion object { companion object {
private const val SEARCH_PATH = "actions/search.php" private const val SEARCH_PATH = "actions/search.php"
private const val SEARCH_LIMIT = 36 private const val SEARCH_LIMIT = 36