fix(src/pt): Megaflix fixed #259

Merged
imper1aldev merged 1 commit from main into main 2024-09-18 06:44:47 -05:00
2 changed files with 28 additions and 17 deletions

View file

@ -1,7 +1,7 @@
ext {
extName = 'Megaflix'
extClass = '.Megaflix'
extVersionCode = 17
extVersionCode = 18
isNsfw = true
}
@ -10,6 +10,10 @@ apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib:mixdrop-extractor'))
implementation(project(":lib:streamtape-extractor"))
implementation(project(":lib:voe-extractor"))
implementation(project(":lib:filemoon-extractor"))
implementation(project(":lib:vidhide-extractor"))
implementation(project(":lib:streamwish-extractor"))
implementation(project(":lib:playlist-utils"))
// for mixdrop and megaflix
implementation("dev.datlag.jsunpacker:jsunpacker:1.0.1")

View file

@ -12,8 +12,12 @@ 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.lib.filemoonextractor.FilemoonExtractor
import eu.kanade.tachiyomi.lib.mixdropextractor.MixDropExtractor
import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor
import eu.kanade.tachiyomi.lib.streamwishextractor.StreamWishExtractor
import eu.kanade.tachiyomi.lib.vidhideextractor.VidHideExtractor
import eu.kanade.tachiyomi.lib.voeextractor.VoeExtractor
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.await
import eu.kanade.tachiyomi.network.awaitSuccess
@ -148,11 +152,7 @@ class Megaflix : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
name = element.selectFirst("h2.entry-title")!!.text()
setUrlWithoutDomain(element.selectFirst("a.lnk-blk")!!.attr("href"))
episode_number = element.selectFirst("span.num-epi")?.run {
text().split("x").let {
val season = it.first().toFloatOrNull() ?: 0F
val episode = it.last().toFloatOrNull() ?: 0F
season * 100F + episode
}
text().split("x").last().toFloatOrNull() ?: 0F
} ?: 0F
}
@ -175,28 +175,33 @@ class Megaflix : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
}
}
/*--------------------------------Video extractors------------------------------------*/
private val mixdropExtractor by lazy { MixDropExtractor(client) }
private val streamtapeExtractor by lazy { StreamTapeExtractor(client) }
private val megaflixExtractor by lazy { MegaflixExtractor(client, headers) }
private val voeExtractor by lazy { VoeExtractor(client) }
private val filemoonExtractor by lazy { FilemoonExtractor(client) }
private val vidHideExtractor by lazy { VidHideExtractor(client, headers) }
private val streamWishExtractor by lazy { StreamWishExtractor(client, headers) }
private fun getVideoList(url: String, language: String): List<Video> {
return when {
"mixdrop.co" in url -> mixdropExtractor.videoFromUrl(url, language)
"streamtape.com" in url -> streamtapeExtractor.videosFromUrl(url, "StreamTape - $language")
"mflix.vip" in url -> megaflixExtractor.videosFromUrl(url, language)
else -> null
}.orEmpty()
arrayOf("mixdrop", "mixdroop", "mix").any(url) -> mixdropExtractor.videoFromUrl(url, language)
arrayOf("streamtape", "stp", "stape").any(url) -> streamtapeExtractor.videosFromUrl(url, "StreamTape - $language")
arrayOf("mflix").any(url) -> megaflixExtractor.videosFromUrl(url, language)
arrayOf("voe").any(url) -> voeExtractor.videosFromUrl(url, "$language ")
arrayOf("filemoon", "moonplayer").any(url) -> filemoonExtractor.videosFromUrl(url, prefix = "$language Filemoon:")
arrayOf("vidhide", "vid.").any(url) -> vidHideExtractor.videosFromUrl(url, videoNameGen = { "$language VidHide:$it" })
arrayOf("wishembed", "streamwish", "strwish", "wish", "jwplayerhls").any(url) -> streamWishExtractor.videosFromUrl(url, videoNameGen = { "$language StreamWish:$it" })
else -> emptyList()
}
}
override fun videoListSelector() = "aside.video-options li a"
override fun videoFromElement(element: Element): Video {
TODO("Not yet implemented")
}
override fun videoFromElement(element: Element) = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document): String {
TODO("Not yet implemented")
}
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
// ============================== Settings ==============================
override fun setupPreferenceScreen(screen: PreferenceScreen) {
@ -261,6 +266,8 @@ class Megaflix : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
).reversed()
}
private fun Array<String>.any(url: String): Boolean = this.any { url.contains(it, ignoreCase = true) }
companion object {
const val PREFIX_SEARCH = "path:"