forked from AlmightyHak/extensions-source
parent
6071dcfc85
commit
3e7022d2bd
2 changed files with 28 additions and 17 deletions
|
@ -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")
|
||||||
|
|
|
@ -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:"
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue