Skip to content

Commit

Permalink
fix(pt/Pobreflix): Update extension (#112)
Browse files Browse the repository at this point in the history
  • Loading branch information
Dark25 authored Oct 18, 2024
1 parent eae235f commit 0f1eeaf
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 81 deletions.
5 changes: 3 additions & 2 deletions src/pt/pobreflix/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,16 @@ ext {
extName = 'Pobreflix'
extClass = '.Pobreflix'
themePkg = 'dooplay'
baseUrl = 'https://pobreflix4.art'
overrideVersionCode = 13
baseUrl = 'https://pobreflix.global'
overrideVersionCode = 14
isNsfw = true
}

apply from: "$rootDir/common.gradle"

dependencies {
implementation(project(":lib:filemoon-extractor"))
implementation(project(':lib:fireplayer-extractor'))
implementation(project(":lib:streamwish-extractor"))
implementation(project(":lib:streamtape-extractor"))
implementation(project(":lib:playlist-utils"))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
package eu.kanade.tachiyomi.animeextension.pt.pobreflix

import android.util.Base64
import eu.kanade.tachiyomi.animeextension.pt.pobreflix.extractors.FireplayerExtractor
import eu.kanade.tachiyomi.animeextension.pt.pobreflix.extractors.MyStreamExtractor
import eu.kanade.tachiyomi.animeextension.pt.pobreflix.extractors.PlayerFlixExtractor
import eu.kanade.tachiyomi.animeextension.pt.pobreflix.extractors.SuperFlixExtractor
import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.lib.filemoonextractor.FilemoonExtractor
import eu.kanade.tachiyomi.lib.fireplayerextractor.FireplayerExtractor
import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor
import eu.kanade.tachiyomi.lib.streamwishextractor.StreamWishExtractor
import eu.kanade.tachiyomi.multisrc.dooplay.DooPlay
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup
import eu.kanade.tachiyomi.util.parallelCatchingFlatMapBlocking
import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.Response

class Pobreflix : DooPlay(
"pt-BR",
"Pobreflix",
"https://pobreflix4.art",
"https://pobreflix.global",
) {
// ============================== Popular ===============================
override fun popularAnimeSelector() = "div.featured div.poster"
Expand All @@ -26,53 +28,52 @@ class Pobreflix : DooPlay(
override fun latestUpdatesRequest(page: Int) = GET("$baseUrl/series/page/$page/", headers)

// ============================ Video Links =============================
private val embedplayerExtractor by lazy { FireplayerExtractor(client) }
private val brbeastExtractor by lazy { FireplayerExtractor(client, "https://brbeast.com") }
private val superembedsExtractor by lazy { FireplayerExtractor(client, "https://superembeds.com/") }
private val fireplayerExtractor by lazy { FireplayerExtractor(client) }
private val filemoonExtractor by lazy { FilemoonExtractor(client) }
private val mystreamExtractor by lazy { MyStreamExtractor(client, headers) }
private val streamtapeExtractor by lazy { StreamTapeExtractor(client) }
private val streamwishExtractor by lazy { StreamWishExtractor(client, headers) }
private val playerflixExtractor by lazy { PlayerFlixExtractor(client, headers, ::genericExtractor) }
private val superflixExtractor by lazy { SuperFlixExtractor(client, headers, ::genericExtractor) }
private val supercdnExtractor by lazy { SuperFlixExtractor(client, headers, ::genericExtractor, "https://supercdn.org") }

override fun videoListParse(response: Response): List<Video> {
val doc = response.asJsoup()
return doc.select("div.source-box > a").flatMap {
runCatching {
val data = it.attr("href").toHttpUrl().queryParameter("auth")
?.let { Base64.decode(it, Base64.DEFAULT) }
?.let(::String)
?: return@flatMap emptyList()
val url = data.replace("\\", "").substringAfter("url\":\"").substringBefore('"')
genericExtractor(url)
}.getOrElse { emptyList() }
return doc.select("div.source-box > a").parallelCatchingFlatMapBlocking {
val data = it.attr("href").trim().toHttpUrl().queryParameter("auth")
?.let { Base64.decode(it, Base64.DEFAULT) }
?.let(::String)
?: return@parallelCatchingFlatMapBlocking emptyList()
val url = data.replace("\\", "").substringAfter("url\":\"").substringBefore('"')
genericExtractor(url)
}
}

private fun genericExtractor(url: String, language: String = ""): List<Video> {
val langSubstr = "[$language]"
val langSubstr = if (language.isBlank()) "" else "[$language] "
return when {
url.contains("superflix") ->
superflixExtractor.videosFromUrl(url)
url.contains("supercdn") ->
supercdnExtractor.videosFromUrl(url)
url.contains("filemoon") ->
filemoonExtractor.videosFromUrl(url, "$langSubstr Filemoon - ", headers = headers)
filemoonExtractor.videosFromUrl(url, "${langSubstr}Filemoon - ", headers = headers)
url.contains("watch.brplayer") || url.contains("/watch?v=") ->
mystreamExtractor.videosFromUrl(url, language)
url.contains("brbeast") ->
brbeastExtractor.videosFromUrl(url, language)
fireplayerExtractor.videosFromUrl(url = url, videoNameGen = { "${langSubstr}BrBeast - $it" })
url.contains("embedplayer") ->
embedplayerExtractor.videosFromUrl(url, language)
fireplayerExtractor.videosFromUrl(url = url, videoNameGen = { "${langSubstr}EmbedPlayer - $it" })
url.contains("superembeds") ->
superembedsExtractor.videosFromUrl(url, language)
fireplayerExtractor.videosFromUrl(url = url, videoNameGen = { "${langSubstr}SuperEmbeds - $it" })
url.contains("streamtape") ->
streamtapeExtractor.videosFromUrl(url, "$langSubstr Streamtape")
streamtapeExtractor.videosFromUrl(url, "${langSubstr}Streamtape")
url.contains("filelions") ->
streamwishExtractor.videosFromUrl(url, videoNameGen = { "$langSubstr FileLions - $it" })
streamwishExtractor.videosFromUrl(url, videoNameGen = { "${langSubstr}FileLions - $it" })
url.contains("streamwish") ->
streamwishExtractor.videosFromUrl(url, videoNameGen = { "$langSubstr Streamwish - $it" })
streamwishExtractor.videosFromUrl(url, videoNameGen = { "${langSubstr}Streamwish - $it" })
url.contains("playerflix") ->
playerflixExtractor.videosFromUrl(url)
else -> emptyList()
}
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package eu.kanade.tachiyomi.animeextension.pt.pobreflix.extractors

import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup
import eu.kanade.tachiyomi.util.parallelCatchingFlatMapBlocking
import okhttp3.Headers
import okhttp3.OkHttpClient

class PlayerFlixExtractor(
private val client: OkHttpClient,
private val defaultHeaders: Headers,
private val genericExtractor: (String, String) -> List<Video>,
) {
fun videosFromUrl(url: String): List<Video> {
val doc = client.newCall(GET(url, defaultHeaders)).execute().asJsoup()

val items = doc.select("#hostList div.buttonLoadHost").mapNotNull {
val url = it.attr("onclick")
.substringAfter('"', "")
.substringBefore('"')
?: return@mapNotNull null

val language = if (it.hasClass("hostDub")) {
"Dublado"
} else {
"Legendado"
}

language to url // (Language, videoId)
}

return items.parallelCatchingFlatMapBlocking { genericExtractor(it.second, it.first) }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class SuperFlixExtractor(
private val client: OkHttpClient,
private val defaultHeaders: Headers,
private val genericExtractor: (String, String) -> List<Video>,
private val host: String = "https://superflixapi.top",
private val host: String = "https://superflixapi.dev",
) {
private val json: Json by injectLazy()

Expand Down

0 comments on commit 0f1eeaf

Please sign in to comment.