Megaflix fixed (#259)

Closes #257
This commit is contained in:
imper1aldev 2024-09-18 05:44:47 -06:00 committed by GitHub
parent 6071dcfc85
commit 3e7022d2bd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 28 additions and 17 deletions

View file

@ -1,7 +1,7 @@
ext { ext {
extName = 'Megaflix' extName = 'Megaflix'
extClass = '.Megaflix' extClass = '.Megaflix'
extVersionCode = 17 extVersionCode = 18
isNsfw = true isNsfw = true
} }
@ -10,6 +10,10 @@ apply from: "$rootDir/common.gradle"
dependencies { dependencies {
implementation(project(':lib:mixdrop-extractor')) implementation(project(':lib:mixdrop-extractor'))
implementation(project(":lib:streamtape-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")) implementation(project(":lib:playlist-utils"))
// for mixdrop and megaflix // for mixdrop and megaflix
implementation("dev.datlag.jsunpacker:jsunpacker:1.0.1") 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.SEpisode
import eu.kanade.tachiyomi.animesource.model.Video import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource 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.mixdropextractor.MixDropExtractor
import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor 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.GET
import eu.kanade.tachiyomi.network.await import eu.kanade.tachiyomi.network.await
import eu.kanade.tachiyomi.network.awaitSuccess import eu.kanade.tachiyomi.network.awaitSuccess
@ -148,11 +152,7 @@ class Megaflix : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
name = element.selectFirst("h2.entry-title")!!.text() name = element.selectFirst("h2.entry-title")!!.text()
setUrlWithoutDomain(element.selectFirst("a.lnk-blk")!!.attr("href")) setUrlWithoutDomain(element.selectFirst("a.lnk-blk")!!.attr("href"))
episode_number = element.selectFirst("span.num-epi")?.run { episode_number = element.selectFirst("span.num-epi")?.run {
text().split("x").let { text().split("x").last().toFloatOrNull() ?: 0F
val season = it.first().toFloatOrNull() ?: 0F
val episode = it.last().toFloatOrNull() ?: 0F
season * 100F + episode
}
} ?: 0F } ?: 0F
} }
@ -175,28 +175,33 @@ class Megaflix : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
} }
} }
/*--------------------------------Video extractors------------------------------------*/
private val mixdropExtractor by lazy { MixDropExtractor(client) } private val mixdropExtractor by lazy { MixDropExtractor(client) }
private val streamtapeExtractor by lazy { StreamTapeExtractor(client) } private val streamtapeExtractor by lazy { StreamTapeExtractor(client) }
private val megaflixExtractor by lazy { MegaflixExtractor(client, headers) } 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> { private fun getVideoList(url: String, language: String): List<Video> {
return when { return when {
"mixdrop.co" in url -> mixdropExtractor.videoFromUrl(url, language) arrayOf("mixdrop", "mixdroop", "mix").any(url) -> mixdropExtractor.videoFromUrl(url, language)
"streamtape.com" in url -> streamtapeExtractor.videosFromUrl(url, "StreamTape - $language") arrayOf("streamtape", "stp", "stape").any(url) -> streamtapeExtractor.videosFromUrl(url, "StreamTape - $language")
"mflix.vip" in url -> megaflixExtractor.videosFromUrl(url, language) arrayOf("mflix").any(url) -> megaflixExtractor.videosFromUrl(url, language)
else -> null arrayOf("voe").any(url) -> voeExtractor.videosFromUrl(url, "$language ")
}.orEmpty() 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 videoListSelector() = "aside.video-options li a"
override fun videoFromElement(element: Element): Video { override fun videoFromElement(element: Element) = throw UnsupportedOperationException()
TODO("Not yet implemented")
}
override fun videoUrlParse(document: Document): String { override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
TODO("Not yet implemented")
}
// ============================== Settings ============================== // ============================== Settings ==============================
override fun setupPreferenceScreen(screen: PreferenceScreen) { override fun setupPreferenceScreen(screen: PreferenceScreen) {
@ -261,6 +266,8 @@ class Megaflix : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
).reversed() ).reversed()
} }
private fun Array<String>.any(url: String): Boolean = this.any { url.contains(it, ignoreCase = true) }
companion object { companion object {
const val PREFIX_SEARCH = "path:" const val PREFIX_SEARCH = "path:"