Make extensions use FembedExtractor lib (#973)

This commit is contained in:
Claudemirovsky
2022-10-23 17:18:12 -03:00
committed by GitHub
parent b148566ac1
commit d3ea848346
67 changed files with 88 additions and 735 deletions

View File

@ -10,6 +10,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-fembed-extractor'))
implementation(project(':lib-streamtape-extractor')) implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-streamsb-extractor')) implementation(project(':lib-streamsb-extractor'))
implementation(project(':lib-dood-extractor')) implementation(project(':lib-dood-extractor'))

View File

@ -4,7 +4,6 @@ import android.app.Application
import android.content.SharedPreferences import android.content.SharedPreferences
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.ar.animerco.extractors.FembedExtractor
import eu.kanade.tachiyomi.animeextension.ar.animerco.extractors.MpforuploadExtractor import eu.kanade.tachiyomi.animeextension.ar.animerco.extractors.MpforuploadExtractor
import eu.kanade.tachiyomi.animeextension.ar.animerco.extractors.SharedExtractor import eu.kanade.tachiyomi.animeextension.ar.animerco.extractors.SharedExtractor
import eu.kanade.tachiyomi.animeextension.ar.animerco.extractors.UQLoadExtractor import eu.kanade.tachiyomi.animeextension.ar.animerco.extractors.UQLoadExtractor
@ -16,6 +15,7 @@ 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.doodextractor.DoodExtractor import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor
import eu.kanade.tachiyomi.lib.fembedextractor.FembedExtractor
import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor
import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
@ -225,6 +225,7 @@ class Animerco : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
-> { -> {
val fUrl = embedUrl.replace("\\/", "/") val fUrl = embedUrl.replace("\\/", "/")
.replace("https://www.fembed.com", "https://suzihaza.com")
val videos = FembedExtractor(client).videosFromUrl(embedUrl) val videos = FembedExtractor(client).videosFromUrl(embedUrl)
videoList.addAll(videos) videoList.addAll(videos)
} }

View File

@ -1,49 +0,0 @@
package eu.kanade.tachiyomi.animeextension.ar.animerco.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.network.POST
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonObject
import kotlinx.serialization.json.jsonArray
import kotlinx.serialization.json.jsonObject
import okhttp3.OkHttpClient
class FembedExtractor(private val client: OkHttpClient) {
fun videosFromUrl(url: String): List<Video> {
val videoApi = url.replace("/v/", "/api/source/").replace("https://www.fembed.com", "https://suzihaza.com")
// val jsonR = Json.decodeFromString<JSONObject>(client.newCall(POST(videoApi)).execute().body!!.string())
/*val jsonR = Json.decodeFromString<JsonObject>(
Jsoup.connect(videoApi).ignoreContentType(true)
.execute().body()
)*/
val jsonR = Json.decodeFromString<JsonObject>(
client.newCall(POST(videoApi)).execute().body!!.string()
)
val jsonText = client.newCall(POST(videoApi)).execute().body!!.string()
val videoList = mutableListOf<Video>()
if (jsonR["success"].toString() == "true") {
val videoList = mutableListOf<Video>()
jsonR["data"]!!.jsonArray.forEach() {
val videoUrl = it.jsonObject["file"].toString().trim('"')
val quality = "Fembed:" + it.jsonObject["label"].toString().trim('"')
videoList.add(Video(videoUrl, quality, videoUrl))
}
/*val jsonArray = json.getJSONArray("data")
Log.i("jsoon", "$jsonArray")
for (i in 0 until jsonArray.length()) {
val `object` = jsonArray.getJSONObject(i)
val videoUrl = `object`.getString("file")
val quality = "Fembed:" + `object`.getString("label")
videoList.add(Video(videoUrl, quality, videoUrl))
}*/
return videoList
} else {
val videoUrl = "not used"
val quality = "Video taken down for dmca"
videoList.add(Video(videoUrl, quality, videoUrl))
}
return videoList
}
}

View File

@ -10,6 +10,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-fembed-extractor'))
implementation(project(':lib-streamsb-extractor')) implementation(project(':lib-streamsb-extractor'))
} }

View File

@ -6,7 +6,6 @@ import android.util.Log
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.ar.animetitans.extractors.AnimeTitansExtractor import eu.kanade.tachiyomi.animeextension.ar.animetitans.extractors.AnimeTitansExtractor
import eu.kanade.tachiyomi.animeextension.ar.animetitans.extractors.FembedExtractor
import eu.kanade.tachiyomi.animeextension.ar.animetitans.extractors.SharedExtractor import eu.kanade.tachiyomi.animeextension.ar.animetitans.extractors.SharedExtractor
import eu.kanade.tachiyomi.animeextension.ar.animetitans.extractors.VidBomExtractor import eu.kanade.tachiyomi.animeextension.ar.animetitans.extractors.VidBomExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
@ -17,6 +16,7 @@ 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.fembedextractor.FembedExtractor
import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup import eu.kanade.tachiyomi.util.asJsoup

View File

@ -1,43 +0,0 @@
package eu.kanade.tachiyomi.animeextension.ar.animetitans.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.network.POST
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonObject
import kotlinx.serialization.json.jsonArray
import kotlinx.serialization.json.jsonObject
import okhttp3.OkHttpClient
class FembedExtractor(private val client: OkHttpClient) {
fun videosFromUrl(url: String): List<Video> {
val videoApi = url.replace("/v/", "/api/source/")
val jsonR = Json.decodeFromString<JsonObject>(
client.newCall(POST(videoApi)).execute().body!!.string()
)
val videoList = mutableListOf<Video>()
if (jsonR["success"].toString() == "true") {
val videoList = mutableListOf<Video>()
jsonR["data"]!!.jsonArray.forEach() {
val videoUrl = it.jsonObject["file"].toString().trim('"')
val quality = "Fembed:" + it.jsonObject["label"].toString().trim('"')
videoList.add(Video(videoUrl, quality, videoUrl))
}
/*val jsonArray = json.getJSONArray("data")
Log.i("jsoon", "$jsonArray")
for (i in 0 until jsonArray.length()) {
val `object` = jsonArray.getJSONObject(i)
val videoUrl = `object`.getString("file")
val quality = "Fembed:" + `object`.getString("label")
videoList.add(Video(videoUrl, quality, videoUrl))
}*/
return videoList
} else {
val videoUrl = "not used"
val quality = "Video taken down for dmca"
videoList.add(Video(videoUrl, quality, videoUrl))
}
return videoList
}
}

View File

@ -10,6 +10,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-fembed-extractor'))
implementation(project(':lib-streamtape-extractor')) implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-okru-extractor')) implementation(project(':lib-okru-extractor'))
implementation(project(':lib-dood-extractor')) implementation(project(':lib-dood-extractor'))

View File

@ -4,7 +4,6 @@ import android.app.Application
import android.content.SharedPreferences import android.content.SharedPreferences
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.ar.asia2tv.extractors.FembedExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilter
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
@ -13,6 +12,7 @@ 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.doodextractor.DoodExtractor import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor
import eu.kanade.tachiyomi.lib.fembedextractor.FembedExtractor
import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor
import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET

View File

@ -1,39 +0,0 @@
package eu.kanade.tachiyomi.animeextension.ar.asia2tv.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.network.POST
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonObject
import kotlinx.serialization.json.jsonArray
import kotlinx.serialization.json.jsonObject
import okhttp3.OkHttpClient
class FembedExtractor(private val client: OkHttpClient) {
fun videosFromUrl(url: String): List<Video> {
val videoApi = url.replace("/v/", "/api/source/")
// val jsonR = Json.decodeFromString<JSONObject>(client.newCall(POST(videoApi)).execute().body!!.string())
/*val jsonR = Json.decodeFromString<JsonObject>(
Jsoup.connect(videoApi).ignoreContentType(true)
.execute().body()
)*/
val jsonR = Json.decodeFromString<JsonObject>(
client.newCall(POST(videoApi)).execute().body!!.string()
)
val videoList = mutableListOf<Video>()
if (jsonR["success"].toString() == "true") {
jsonR["data"]!!.jsonArray.forEach() {
val videoUrl = it.jsonObject["file"].toString().trim('"')
val quality = "Fembed:" + it.jsonObject["label"].toString().trim('"')
videoList.add(Video(videoUrl, quality, videoUrl))
}
return videoList
} else {
val videoUrl = "not used"
val quality = "Video taken down for dmca"
videoList.add(Video(videoUrl, quality, videoUrl))
}
return videoList
}
}

View File

@ -10,6 +10,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-fembed-extractor'))
implementation(project(':lib-streamsb-extractor')) implementation(project(':lib-streamsb-extractor'))
implementation(project(':lib-dood-extractor')) implementation(project(':lib-dood-extractor'))
} }

View File

@ -4,7 +4,6 @@ import android.app.Application
import android.content.SharedPreferences import android.content.SharedPreferences
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.en.animension.extractors.FembedExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
import eu.kanade.tachiyomi.animesource.model.AnimesPage import eu.kanade.tachiyomi.animesource.model.AnimesPage
@ -13,6 +12,7 @@ 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.AnimeHttpSource import eu.kanade.tachiyomi.animesource.online.AnimeHttpSource
import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor
import eu.kanade.tachiyomi.lib.fembedextractor.FembedExtractor
import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup import eu.kanade.tachiyomi.util.asJsoup
@ -114,15 +114,12 @@ class Animension() : ConfigurableAnimeSource, AnimeHttpSource() {
} }
} }
url.contains("fembed") url.contains("fembed") -> {
-> { val videos = FembedExtractor(client).videosFromUrl(url)
val videos = FembedExtractor().videosFromUrl(url)
if (videos != null) {
videoList.addAll(videos) videoList.addAll(videos)
} }
} }
} }
}
return videoList return videoList
} }

View File

@ -1,28 +0,0 @@
package eu.kanade.tachiyomi.animeextension.en.animension.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import org.json.JSONObject
import org.jsoup.Connection
import org.jsoup.Jsoup
class FembedExtractor {
fun videosFromUrl(url: String): List<Video>? {
val videoApi = url.replace("/v/", "/api/source/")
val json = JSONObject(Jsoup.connect(videoApi).ignoreContentType(true).method(Connection.Method.POST).execute().body())
val videoList = mutableListOf<Video>()
return if (json.getBoolean("success")) {
val jsonArray = json.getJSONArray("data")
for (i in 0 until jsonArray.length()) {
val `object` = jsonArray.getJSONObject(i)
val videoUrl = `object`.getString("file")
val quality = "Fembed: " + `object`.getString("label")
videoList.add(Video(videoUrl, quality, videoUrl))
}
videoList
} else {
null
}
}
}

View File

@ -10,6 +10,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-fembed-extractor'))
implementation(project(':lib-streamtape-extractor')) implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-streamsb-extractor')) implementation(project(':lib-streamsb-extractor'))
implementation(project(':lib-dood-extractor')) implementation(project(':lib-dood-extractor'))

View File

@ -4,7 +4,6 @@ import android.app.Application
import android.content.SharedPreferences import android.content.SharedPreferences
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.en.asianload.extractors.FembedExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilter
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
@ -13,6 +12,7 @@ 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.doodextractor.DoodExtractor import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor
import eu.kanade.tachiyomi.lib.fembedextractor.FembedExtractor
import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor
import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
@ -118,9 +118,8 @@ class AsianLoad : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
videoList.add(video) videoList.add(video)
} }
} }
url.contains("fembed") url.contains("fembed") -> {
-> { val videos = FembedExtractor(client).videosFromUrl(url)
val videos = FembedExtractor().videosFromUrl(url)
videoList.addAll(videos) videoList.addAll(videos)
} }
url.contains("streamtape") -> { url.contains("streamtape") -> {

View File

@ -1,30 +0,0 @@
package eu.kanade.tachiyomi.animeextension.en.asianload.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import org.json.JSONObject
import org.jsoup.Connection
import org.jsoup.Jsoup
class FembedExtractor {
fun videosFromUrl(url: String): List<Video> {
val videoApi = url.replace("/v/", "/api/source/")
val json = JSONObject(Jsoup.connect(videoApi).ignoreContentType(true).method(Connection.Method.POST).execute().body())
val videoList = mutableListOf<Video>()
if (json.getBoolean("success")) {
val videoList = mutableListOf<Video>()
val jsonArray = json.getJSONArray("data")
for (i in 0 until jsonArray.length()) {
val `object` = jsonArray.getJSONObject(i)
val videoUrl = `object`.getString("file")
val quality = "Fembed:" + `object`.getString("label")
videoList.add(Video(videoUrl, quality, videoUrl))
}
return videoList
} else {
val videoUrl = "not used"
val quality = "Video taken down for dmca"
videoList.add(Video(videoUrl, quality, videoUrl))
}
return videoList
}
}

View File

@ -10,6 +10,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-fembed-extractor'))
implementation(project(':lib-streamtape-extractor')) implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-streamsb-extractor')) implementation(project(':lib-streamsb-extractor'))
implementation(project(':lib-dood-extractor')) implementation(project(':lib-dood-extractor'))

View File

@ -6,7 +6,6 @@ import android.widget.Toast
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.AppInfo import eu.kanade.tachiyomi.AppInfo
import eu.kanade.tachiyomi.animeextension.en.dramacool.extractors.FembedExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
import eu.kanade.tachiyomi.animesource.model.AnimesPage import eu.kanade.tachiyomi.animesource.model.AnimesPage
@ -15,6 +14,7 @@ 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.doodextractor.DoodExtractor import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor
import eu.kanade.tachiyomi.lib.fembedextractor.FembedExtractor
import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor
import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
@ -121,13 +121,10 @@ class DramaCool : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
} }
} }
url.contains("fembed") url.contains("fembed") -> {
-> { val videos = FembedExtractor(client).videosFromUrl(url)
val videos = FembedExtractor().videosFromUrl(url)
if (videos != null) {
videoList.addAll(videos) videoList.addAll(videos)
} }
}
url.contains("streamtape") -> { url.contains("streamtape") -> {
val video = StreamTapeExtractor(client).videoFromUrl(url) val video = StreamTapeExtractor(client).videoFromUrl(url)

View File

@ -1,28 +0,0 @@
package eu.kanade.tachiyomi.animeextension.en.dramacool.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import org.json.JSONObject
import org.jsoup.Connection
import org.jsoup.Jsoup
class FembedExtractor {
fun videosFromUrl(url: String): List<Video>? {
val videoApi = url.replace("/v/", "/api/source/")
val json = JSONObject(Jsoup.connect(videoApi).ignoreContentType(true).method(Connection.Method.POST).execute().body())
val videoList = mutableListOf<Video>()
return if (json.getBoolean("success")) {
val jsonArray = json.getJSONArray("data")
for (i in 0 until jsonArray.length()) {
val `object` = jsonArray.getJSONObject(i)
val videoUrl = `object`.getString("file")
val quality = "Fembed: " + `object`.getString("label")
videoList.add(Video(videoUrl, quality, videoUrl))
}
videoList
} else {
null
}
}
}

View File

@ -10,6 +10,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-fembed-extractor'))
implementation(project(':lib-streamtape-extractor')) implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-streamsb-extractor')) implementation(project(':lib-streamsb-extractor'))
implementation(project(':lib-dood-extractor')) implementation(project(':lib-dood-extractor'))

View File

@ -4,7 +4,6 @@ import android.app.Application
import android.content.SharedPreferences import android.content.SharedPreferences
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.en.genoanime.extractors.FembedExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
import eu.kanade.tachiyomi.animesource.model.SAnime import eu.kanade.tachiyomi.animesource.model.SAnime
@ -12,6 +11,7 @@ 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.doodextractor.DoodExtractor import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor
import eu.kanade.tachiyomi.lib.fembedextractor.FembedExtractor
import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor
import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
@ -159,7 +159,7 @@ class GenoAnime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
url.contains("diasfem.com") || url.contains("javpoll.com") // url.contains("") url.contains("diasfem.com") || url.contains("javpoll.com") // url.contains("")
-> { -> {
val videos = FembedExtractor().videosFromUrl(url) val videos = FembedExtractor(client).videosFromUrl(url)
videoList.addAll(videos) videoList.addAll(videos)
} }
url.contains("streamtape") -> { url.contains("streamtape") -> {

View File

@ -1,30 +0,0 @@
package eu.kanade.tachiyomi.animeextension.en.genoanime.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import org.json.JSONObject
import org.jsoup.Connection
import org.jsoup.Jsoup
class FembedExtractor {
fun videosFromUrl(url: String): List<Video> {
val videoApi = url.replace("/v/", "/api/source/")
val json = JSONObject(Jsoup.connect(videoApi).ignoreContentType(true).method(Connection.Method.POST).execute().body())
val videoList = mutableListOf<Video>()
if (json.getBoolean("success")) {
val videoList = mutableListOf<Video>()
val jsonArray = json.getJSONArray("data")
for (i in 0 until jsonArray.length()) {
val `object` = jsonArray.getJSONObject(i)
val videoUrl = `object`.getString("file")
val quality = "Fembed:" + `object`.getString("label")
videoList.add(Video(videoUrl, quality, videoUrl))
}
return videoList
} else {
val videoUrl = "not used"
val quality = "Video taken down for dmca"
videoList.add(Video(videoUrl, quality, videoUrl))
}
return videoList
}
}

View File

@ -10,6 +10,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-fembed-extractor'))
implementation(project(':lib-streamtape-extractor')) implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-okru-extractor')) implementation(project(':lib-okru-extractor'))
implementation(project(':lib-streamsb-extractor')) implementation(project(':lib-streamsb-extractor'))

View File

@ -4,7 +4,6 @@ import android.app.Application
import android.content.SharedPreferences import android.content.SharedPreferences
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.es.animefenix.extractors.FembedExtractor
import eu.kanade.tachiyomi.animeextension.es.animefenix.extractors.Mp4uploadExtractor import eu.kanade.tachiyomi.animeextension.es.animefenix.extractors.Mp4uploadExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilter
@ -13,6 +12,7 @@ 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.fembedextractor.FembedExtractor
import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor
import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor
import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor
@ -108,7 +108,8 @@ class Animefenix : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
videoList.addAll(okruVideos) videoList.addAll(okruVideos)
} }
realUrl.contains("fembed") -> { realUrl.contains("fembed") -> {
FembedExtractor().videosFromUrl(realUrl).map { videoList.add(it) } val fbedVideos = FembedExtractor(client).videosFromUrl(realUrl)
videoList.addAll(fbedVideos)
} }
realUrl.contains("/stream/amz.php?") -> { realUrl.contains("/stream/amz.php?") -> {
val video = amazonExtractor(baseUrl + realUrl.substringAfter("..")) val video = amazonExtractor(baseUrl + realUrl.substringAfter(".."))

View File

@ -1,27 +0,0 @@
package eu.kanade.tachiyomi.animeextension.es.animefenix.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import org.json.JSONObject
import org.jsoup.Connection
import org.jsoup.Jsoup
class FembedExtractor {
fun videosFromUrl(url: String, qualityPrefix: String = ""): List<Video> {
val videoList = mutableListOf<Video>()
return try {
val videoApi = url.replace("/v/", "/api/source/")
val json = JSONObject(Jsoup.connect(videoApi).ignoreContentType(true).method(Connection.Method.POST).execute().body())
val videoList = mutableListOf<Video>()
val jsonArray = json.getJSONArray("data")
for (i in 0 until jsonArray.length()) {
val `object` = jsonArray.getJSONObject(i)
val videoUrl = `object`.getString("file")
val quality = qualityPrefix + "Fembed:" + `object`.getString("label")
videoList.add(Video(videoUrl, quality, videoUrl))
}
videoList
} catch (e: Exception) {
videoList
}
}
}

View File

@ -10,6 +10,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-fembed-extractor'))
implementation(project(':lib-streamtape-extractor')) implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-okru-extractor')) implementation(project(':lib-okru-extractor'))
implementation(project(':lib-streamsb-extractor')) implementation(project(':lib-streamsb-extractor'))

View File

@ -4,7 +4,6 @@ import android.app.Application
import android.content.SharedPreferences import android.content.SharedPreferences
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.es.animeflv.extractors.FembedExtractor
import eu.kanade.tachiyomi.animeextension.es.animeflv.extractors.YourUploadExtractor import eu.kanade.tachiyomi.animeextension.es.animeflv.extractors.YourUploadExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilter
@ -14,6 +13,7 @@ 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.doodextractor.DoodExtractor import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor
import eu.kanade.tachiyomi.lib.fembedextractor.FembedExtractor
import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor
import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor
import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor
@ -121,11 +121,13 @@ class AnimeFlv : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
) )
} }
if (quality == "Fembed") { if (quality == "Fembed") {
FembedExtractor().videosFromUrl(url).map { videoList.add(it) } videoList.addAll(
FembedExtractor(client).videosFromUrl(url)
)
} }
if (quality == "Stape") { if (quality == "Stape") {
val url1 = json!!["url"]!!.jsonPrimitive!!.content val url1 = json!!["url"]!!.jsonPrimitive!!.content
val video = StreamTapeExtractor(client).videoFromUrl(url1, "StreamTape") val video = StreamTapeExtractor(client).videoFromUrl(url1)
if (video != null) videoList.add(video) if (video != null) videoList.add(video)
} }
if (quality == "Doodstream") { if (quality == "Doodstream") {

View File

@ -1,27 +0,0 @@
package eu.kanade.tachiyomi.animeextension.es.animeflv.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import org.json.JSONObject
import org.jsoup.Connection
import org.jsoup.Jsoup
class FembedExtractor {
fun videosFromUrl(url: String, qualityPrefix: String = ""): List<Video> {
val videoList = mutableListOf<Video>()
return try {
val videoApi = url.replace("/v/", "/api/source/")
val json = JSONObject(Jsoup.connect(videoApi).ignoreContentType(true).method(Connection.Method.POST).execute().body())
val videoList = mutableListOf<Video>()
val jsonArray = json.getJSONArray("data")
for (i in 0 until jsonArray.length()) {
val `object` = jsonArray.getJSONObject(i)
val videoUrl = `object`.getString("file")
val quality = qualityPrefix + "Fembed:" + `object`.getString("label")
videoList.add(Video(videoUrl, quality, videoUrl))
}
videoList
} catch (e: Exception) {
videoList
}
}
}

View File

@ -10,6 +10,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-fembed-extractor'))
implementation(project(':lib-streamtape-extractor')) implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-okru-extractor')) implementation(project(':lib-okru-extractor'))
implementation(project(':lib-streamsb-extractor')) implementation(project(':lib-streamsb-extractor'))

View File

@ -4,7 +4,6 @@ import android.app.Application
import android.content.SharedPreferences import android.content.SharedPreferences
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.es.animelatinohd.extractors.FembedExtractor
import eu.kanade.tachiyomi.animeextension.es.animelatinohd.extractors.SolidFilesExtractor import eu.kanade.tachiyomi.animeextension.es.animelatinohd.extractors.SolidFilesExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilter
@ -15,6 +14,7 @@ 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.doodextractor.DoodExtractor import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor
import eu.kanade.tachiyomi.lib.fembedextractor.FembedExtractor
import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor
import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor
import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor
@ -165,7 +165,7 @@ class AnimeLatinoHD : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
videoList.addAll(videos) videoList.addAll(videos)
} }
if (url.lowercase().contains("www.fembed.com")) { if (url.lowercase().contains("www.fembed.com")) {
val videos = FembedExtractor().videosFromUrl(url, language) val videos = FembedExtractor(client).videosFromUrl(url, language)
videoList.addAll(videos) videoList.addAll(videos)
} }
if (url.lowercase().contains("streamtape")) { if (url.lowercase().contains("streamtape")) {

View File

@ -1,27 +0,0 @@
package eu.kanade.tachiyomi.animeextension.es.animelatinohd.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import org.json.JSONObject
import org.jsoup.Connection
import org.jsoup.Jsoup
class FembedExtractor {
fun videosFromUrl(url: String, qualityPrefix: String = ""): List<Video> {
val videoList = mutableListOf<Video>()
return try {
val videoApi = url.replace("/v/", "/api/source/")
val json = JSONObject(Jsoup.connect(videoApi).ignoreContentType(true).method(Connection.Method.POST).execute().body())
val videoList = mutableListOf<Video>()
val jsonArray = json.getJSONArray("data")
for (i in 0 until jsonArray.length()) {
val `object` = jsonArray.getJSONObject(i)
val videoUrl = `object`.getString("file")
val quality = qualityPrefix + "Fembed:" + `object`.getString("label")
videoList.add(Video(videoUrl, quality, videoUrl))
}
videoList
} catch (e: Exception) {
videoList
}
}
}

View File

@ -10,6 +10,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-fembed-extractor'))
implementation(project(':lib-streamtape-extractor')) implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-streamsb-extractor')) implementation(project(':lib-streamsb-extractor'))
implementation(project(':lib-dood-extractor')) implementation(project(':lib-dood-extractor'))

View File

@ -4,7 +4,6 @@ import android.app.Application
import android.content.SharedPreferences import android.content.SharedPreferences
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.es.animeonlineninja.extractors.FembedExtractor
import eu.kanade.tachiyomi.animeextension.es.animeonlineninja.extractors.JsUnpacker import eu.kanade.tachiyomi.animeextension.es.animeonlineninja.extractors.JsUnpacker
import eu.kanade.tachiyomi.animeextension.es.animeonlineninja.extractors.UploadExtractor import eu.kanade.tachiyomi.animeextension.es.animeonlineninja.extractors.UploadExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
@ -16,6 +15,7 @@ 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.doodextractor.DoodExtractor import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor
import eu.kanade.tachiyomi.lib.fembedextractor.FembedExtractor
import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor
import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
@ -140,8 +140,8 @@ class AnimeonlineNinja : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
val langSelect = preferences.getString("preferred_lang", "SUB").toString() val langSelect = preferences.getString("preferred_lang", "SUB").toString()
when { when {
serverUrl.contains("fembed") && lang.contains(langSelect) -> { serverUrl.contains("fembed") && lang.contains(langSelect) -> {
val video = FembedExtractor().videosFromUrl(serverUrl) val video = FembedExtractor(client).videosFromUrl(serverUrl, lang)
videos.addAll(video.map { Video(it.url, "$lang ${it.quality}", it.url) }) videos.addAll(video)
} }
serverUrl.contains("streamtape") && lang.contains(langSelect) -> { serverUrl.contains("streamtape") && lang.contains(langSelect) -> {
StreamTapeExtractor(client).videoFromUrl(serverUrl, "$lang StreamTape")?.let { it1 -> videos.add(it1) } StreamTapeExtractor(client).videoFromUrl(serverUrl, "$lang StreamTape")?.let { it1 -> videos.add(it1) }

View File

@ -1,27 +0,0 @@
package eu.kanade.tachiyomi.animeextension.es.animeonlineninja.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import org.json.JSONObject
import org.jsoup.Connection
import org.jsoup.Jsoup
class FembedExtractor {
fun videosFromUrl(url: String, qualityPrefix: String = ""): List<Video> {
val videoList = mutableListOf<Video>()
return try {
val videoApi = url.replace("/v/", "/api/source/")
val json = JSONObject(Jsoup.connect(videoApi).ignoreContentType(true).method(Connection.Method.POST).execute().body())
val videoList = mutableListOf<Video>()
val jsonArray = json.getJSONArray("data")
for (i in 0 until jsonArray.length()) {
val `object` = jsonArray.getJSONObject(i)
val videoUrl = `object`.getString("file")
val quality = qualityPrefix + "Fembed:" + `object`.getString("label")
videoList.add(Video(videoUrl, quality, videoUrl))
}
videoList
} catch (e: Exception) {
videoList
}
}
}

View File

@ -10,6 +10,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-fembed-extractor'))
implementation(project(':lib-okru-extractor')) implementation(project(':lib-okru-extractor'))
implementation(project(':lib-streamsb-extractor')) implementation(project(':lib-streamsb-extractor'))
} }

View File

@ -4,7 +4,6 @@ import android.app.Application
import android.content.SharedPreferences import android.content.SharedPreferences
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.es.asialiveaction.extractors.FembedExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilter
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
@ -12,6 +11,7 @@ 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.fembedextractor.FembedExtractor
import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor
import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
@ -108,7 +108,7 @@ class AsiaLiveAction : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
} }
if (content.contains("fembed")) { if (content.contains("fembed")) {
val url = content.substringAfter(",['FD','").substringBefore("',0,0]") val url = content.substringAfter(",['FD','").substringBefore("',0,0]")
val videos = FembedExtractor().videosFromUrl(url) val videos = FembedExtractor(client).videosFromUrl(url)
videoList.addAll(videos) videoList.addAll(videos)
} }
if (content.contains("okru")) { if (content.contains("okru")) {

View File

@ -1,27 +0,0 @@
package eu.kanade.tachiyomi.animeextension.es.asialiveaction.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import org.json.JSONObject
import org.jsoup.Connection
import org.jsoup.Jsoup
class FembedExtractor {
fun videosFromUrl(url: String, qualityPrefix: String = ""): List<Video> {
val videoList = mutableListOf<Video>()
return try {
val videoApi = url.replace("/v/", "/api/source/")
val json = JSONObject(Jsoup.connect(videoApi).ignoreContentType(true).method(Connection.Method.POST).execute().body())
val videoList = mutableListOf<Video>()
val jsonArray = json.getJSONArray("data")
for (i in 0 until jsonArray.length()) {
val `object` = jsonArray.getJSONObject(i)
val videoUrl = `object`.getString("file")
val quality = qualityPrefix + "Fembed:" + `object`.getString("label")
videoList.add(Video(videoUrl, quality, videoUrl))
}
videoList
} catch (e: Exception) {
videoList
}
}
}

View File

@ -10,6 +10,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-fembed-extractor'))
implementation(project(':lib-dood-extractor')) implementation(project(':lib-dood-extractor'))
implementation project(path: ':lib-streamsb-extractor') implementation project(path: ':lib-streamsb-extractor')
implementation project(path: ':lib-okru-extractor') implementation project(path: ':lib-okru-extractor')

View File

@ -4,7 +4,6 @@ import android.app.Application
import android.content.SharedPreferences import android.content.SharedPreferences
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.es.cuevana.extractors.FembedExtractor
import eu.kanade.tachiyomi.animeextension.es.cuevana.extractors.YourUploadExtractor import eu.kanade.tachiyomi.animeextension.es.cuevana.extractors.YourUploadExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilter
@ -14,6 +13,7 @@ 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.doodextractor.DoodExtractor import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor
import eu.kanade.tachiyomi.lib.fembedextractor.FembedExtractor
import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor
import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
@ -226,7 +226,7 @@ class Cuevana : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
val videoList = mutableListOf<Video>() val videoList = mutableListOf<Video>()
val normalizeUrl = url.lowercase() val normalizeUrl = url.lowercase()
if (normalizeUrl.contains("fembed")) { if (normalizeUrl.contains("fembed")) {
val videos = FembedExtractor().videosFromUrl(url, "$prefix ") val videos = FembedExtractor(client).videosFromUrl(url, prefix)
videoList.addAll(videos) videoList.addAll(videos)
} }
if (normalizeUrl.contains("tomatomatela")) { if (normalizeUrl.contains("tomatomatela")) {

View File

@ -1,27 +0,0 @@
package eu.kanade.tachiyomi.animeextension.es.cuevana.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import org.json.JSONObject
import org.jsoup.Connection
import org.jsoup.Jsoup
class FembedExtractor {
fun videosFromUrl(url: String, qualityPrefix: String = ""): List<Video> {
val videoList = mutableListOf<Video>()
return try {
val videoApi = url.replace("/v/", "/api/source/")
val json = JSONObject(Jsoup.connect(videoApi).ignoreContentType(true).method(Connection.Method.POST).execute().body())
val videoList = mutableListOf<Video>()
val jsonArray = json.getJSONArray("data")
for (i in 0 until jsonArray.length()) {
val `object` = jsonArray.getJSONObject(i)
val videoUrl = `object`.getString("file")
val quality = qualityPrefix + "Fembed:" + `object`.getString("label")
videoList.add(Video(videoUrl, quality, videoUrl))
}
videoList
} catch (e: Exception) {
videoList
}
}
}

View File

@ -10,6 +10,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-fembed-extractor'))
implementation(project(':lib-streamtape-extractor')) implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-okru-extractor')) implementation(project(':lib-okru-extractor'))
} }

View File

@ -5,7 +5,6 @@ import android.content.SharedPreferences
import android.util.Log import android.util.Log
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.es.doramasyt.extractors.FembedExtractor
import eu.kanade.tachiyomi.animeextension.es.doramasyt.extractors.SolidFilesExtractor import eu.kanade.tachiyomi.animeextension.es.doramasyt.extractors.SolidFilesExtractor
import eu.kanade.tachiyomi.animeextension.es.doramasyt.extractors.UqloadExtractor import eu.kanade.tachiyomi.animeextension.es.doramasyt.extractors.UqloadExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
@ -15,6 +14,7 @@ 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.fembedextractor.FembedExtractor
import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor
import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
@ -94,7 +94,7 @@ class Doramasyt : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
val byte = android.util.Base64.decode(urlEncoded, android.util.Base64.DEFAULT) val byte = android.util.Base64.decode(urlEncoded, android.util.Base64.DEFAULT)
val url = String(byte, charset("UTF-8")).substringAfter("?url=") val url = String(byte, charset("UTF-8")).substringAfter("?url=")
if (server.contains("fembed")) { if (server.contains("fembed")) {
val videos = FembedExtractor().videosFromUrl(url) val videos = FembedExtractor(client).videosFromUrl(url)
videoList.addAll(videos) videoList.addAll(videos)
} }
if (server.contains("streamtape")) { if (server.contains("streamtape")) {

View File

@ -1,27 +0,0 @@
package eu.kanade.tachiyomi.animeextension.es.doramasyt.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import org.json.JSONObject
import org.jsoup.Connection
import org.jsoup.Jsoup
class FembedExtractor {
fun videosFromUrl(url: String, qualityPrefix: String = ""): List<Video> {
val videoList = mutableListOf<Video>()
return try {
val videoApi = url.replace("/v/", "/api/source/")
val json = JSONObject(Jsoup.connect(videoApi).ignoreContentType(true).method(Connection.Method.POST).execute().body())
val videoList = mutableListOf<Video>()
val jsonArray = json.getJSONArray("data")
for (i in 0 until jsonArray.length()) {
val `object` = jsonArray.getJSONObject(i)
val videoUrl = `object`.getString("file")
val quality = qualityPrefix + "Fembed:" + `object`.getString("label")
videoList.add(Video(videoUrl, quality, videoUrl))
}
videoList
} catch (e: Exception) {
videoList
}
}
}

View File

@ -11,6 +11,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-fembed-extractor'))
implementation(project(':lib-okru-extractor')) implementation(project(':lib-okru-extractor'))
} }

View File

@ -4,7 +4,6 @@ import android.app.Application
import android.content.SharedPreferences import android.content.SharedPreferences
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.es.hentaijk.extractors.FembedExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilter
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
@ -13,6 +12,7 @@ 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.fembedextractor.FembedExtractor
import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup import eu.kanade.tachiyomi.util.asJsoup
@ -175,7 +175,7 @@ class Hentaijk : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
} }
when { when {
"embedsito" in url -> FembedExtractor().videosFromUrl(url).forEach { videos.add(it) } "embedsito" in url -> FembedExtractor(client).videosFromUrl(url).forEach { videos.add(it) }
"ok" in url -> OkruExtractor(client).videosFromUrl(url).forEach { videos.add(it) } "ok" in url -> OkruExtractor(client).videosFromUrl(url).forEach { videos.add(it) }
"stream/jkmedia" in url -> videos.add(Video(url, "Xtreme S", url)) "stream/jkmedia" in url -> videos.add(Video(url, "Xtreme S", url))
"um.php" in url -> videos.add(HentaijkExtractor().videoFromUrl(url, server)) "um.php" in url -> videos.add(HentaijkExtractor().videoFromUrl(url, server))

View File

@ -1,27 +0,0 @@
package eu.kanade.tachiyomi.animeextension.es.hentaijk.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import org.json.JSONObject
import org.jsoup.Connection
import org.jsoup.Jsoup
class FembedExtractor {
fun videosFromUrl(url: String, qualityPrefix: String = ""): List<Video> {
val videoList = mutableListOf<Video>()
return try {
val videoApi = url.replace("/v/", "/api/source/")
val json = JSONObject(Jsoup.connect(videoApi).ignoreContentType(true).method(Connection.Method.POST).execute().body())
val videoList = mutableListOf<Video>()
val jsonArray = json.getJSONArray("data")
for (i in 0 until jsonArray.length()) {
val `object` = jsonArray.getJSONObject(i)
val videoUrl = `object`.getString("file")
val quality = qualityPrefix + "Fembed:" + `object`.getString("label")
videoList.add(Video(videoUrl, quality, videoUrl))
}
videoList
} catch (e: Exception) {
videoList
}
}
}

View File

@ -10,4 +10,9 @@ ext {
containsNsfw = true containsNsfw = true
} }
dependencies {
implementation(project(':lib-fembed-extractor'))
}
apply from: "$rootDir/common.gradle" apply from: "$rootDir/common.gradle"

View File

@ -4,7 +4,6 @@ import android.app.Application
import android.content.SharedPreferences import android.content.SharedPreferences
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.es.hentaila.extractors.FembedExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilter
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
@ -13,6 +12,7 @@ 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.fembedextractor.FembedExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup import eu.kanade.tachiyomi.util.asJsoup
import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.ExperimentalSerializationApi
@ -101,7 +101,7 @@ class Hentaila : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
val nameServer = server[0] val nameServer = server[0]
if (nameServer.lowercase() == "fembed") { if (nameServer.lowercase() == "fembed") {
val videos = FembedExtractor().videosFromUrl(urlServer) val videos = FembedExtractor(client).videosFromUrl(urlServer)
videoList.addAll(videos) videoList.addAll(videos)
} }
if (nameServer.lowercase() == "arc") { if (nameServer.lowercase() == "arc") {

View File

@ -1,27 +0,0 @@
package eu.kanade.tachiyomi.animeextension.es.hentaila.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import org.json.JSONObject
import org.jsoup.Connection
import org.jsoup.Jsoup
class FembedExtractor {
fun videosFromUrl(url: String, qualityPrefix: String = ""): List<Video> {
val videoList = mutableListOf<Video>()
return try {
val videoApi = url.replace("/v/", "/api/source/")
val json = JSONObject(Jsoup.connect(videoApi).ignoreContentType(true).method(Connection.Method.POST).execute().body())
val videoList = mutableListOf<Video>()
val jsonArray = json.getJSONArray("data")
for (i in 0 until jsonArray.length()) {
val `object` = jsonArray.getJSONObject(i)
val videoUrl = `object`.getString("file")
val quality = qualityPrefix + "Fembed:" + `object`.getString("label")
videoList.add(Video(videoUrl, quality, videoUrl))
}
videoList
} catch (e: Exception) {
videoList
}
}
}

View File

@ -10,6 +10,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-fembed-extractor'))
implementation(project(':lib-okru-extractor')) implementation(project(':lib-okru-extractor'))
} }

View File

@ -4,7 +4,6 @@ import android.app.Application
import android.content.SharedPreferences import android.content.SharedPreferences
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.es.jkanime.extractors.FembedExtractor
import eu.kanade.tachiyomi.animeextension.es.jkanime.extractors.JkanimeExtractor import eu.kanade.tachiyomi.animeextension.es.jkanime.extractors.JkanimeExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilter
@ -14,6 +13,7 @@ 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.fembedextractor.FembedExtractor
import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup import eu.kanade.tachiyomi.util.asJsoup
@ -95,7 +95,7 @@ class Jkanime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
.replace("/jk.php?u=", "$baseUrl/") .replace("/jk.php?u=", "$baseUrl/")
when { when {
"embedsito" in url -> FembedExtractor().videosFromUrl(url).forEach { videos.add(it) } "embedsito" in url -> FembedExtractor(client).videosFromUrl(url).forEach { videos.add(it) }
"ok" in url -> OkruExtractor(client).videosFromUrl(url).forEach { videos.add(it) } "ok" in url -> OkruExtractor(client).videosFromUrl(url).forEach { videos.add(it) }
"stream/jkmedia" in url -> videos.add(Video(url, "Xtreme S", url)) "stream/jkmedia" in url -> videos.add(Video(url, "Xtreme S", url))
"um2.php" in url -> JkanimeExtractor(client).getNozomiFromUrl(baseUrl + url).let { videos.add(it) } "um2.php" in url -> JkanimeExtractor(client).getNozomiFromUrl(baseUrl + url).let { videos.add(it) }

View File

@ -1,27 +0,0 @@
package eu.kanade.tachiyomi.animeextension.es.jkanime.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import org.json.JSONObject
import org.jsoup.Connection
import org.jsoup.Jsoup
class FembedExtractor {
fun videosFromUrl(url: String, qualityPrefix: String = ""): List<Video> {
val videoList = mutableListOf<Video>()
return try {
val videoApi = url.replace("/v/", "/api/source/")
val json = JSONObject(Jsoup.connect(videoApi).ignoreContentType(true).method(Connection.Method.POST).execute().body())
val videoList = mutableListOf<Video>()
val jsonArray = json.getJSONArray("data")
for (i in 0 until jsonArray.length()) {
val `object` = jsonArray.getJSONObject(i)
val videoUrl = `object`.getString("file")
val quality = qualityPrefix + "Fembed:" + `object`.getString("label")
videoList.add(Video(videoUrl, quality, videoUrl))
}
videoList
} catch (e: Exception) {
videoList
}
}
}

View File

@ -1,27 +0,0 @@
package eu.kanade.tachiyomi.animeextension.es.jkhentai.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import org.json.JSONObject
import org.jsoup.Connection
import org.jsoup.Jsoup
class FembedExtractor {
fun videosFromUrl(url: String, qualityPrefix: String = ""): List<Video> {
val videoList = mutableListOf<Video>()
return try {
val videoApi = url.replace("/v/", "/api/source/")
val json = JSONObject(Jsoup.connect(videoApi).ignoreContentType(true).method(Connection.Method.POST).execute().body())
val videoList = mutableListOf<Video>()
val jsonArray = json.getJSONArray("data")
for (i in 0 until jsonArray.length()) {
val `object` = jsonArray.getJSONObject(i)
val videoUrl = `object`.getString("file")
val quality = qualityPrefix + "Fembed:" + `object`.getString("label")
videoList.add(Video(videoUrl, quality, videoUrl))
}
videoList
} catch (e: Exception) {
videoList
}
}
}

View File

@ -10,6 +10,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-fembed-extractor'))
implementation(project(':lib-okru-extractor')) implementation(project(':lib-okru-extractor'))
} }

View File

@ -5,7 +5,6 @@ import android.content.SharedPreferences
import android.util.Base64 import android.util.Base64
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.es.monoschinos.extractors.FembedExtractor
import eu.kanade.tachiyomi.animeextension.es.monoschinos.extractors.Mp4uploadExtractor import eu.kanade.tachiyomi.animeextension.es.monoschinos.extractors.Mp4uploadExtractor
import eu.kanade.tachiyomi.animeextension.es.monoschinos.extractors.SolidFilesExtractor import eu.kanade.tachiyomi.animeextension.es.monoschinos.extractors.SolidFilesExtractor
import eu.kanade.tachiyomi.animeextension.es.monoschinos.extractors.UploadExtractor import eu.kanade.tachiyomi.animeextension.es.monoschinos.extractors.UploadExtractor
@ -16,6 +15,7 @@ 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.fembedextractor.FembedExtractor
import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup import eu.kanade.tachiyomi.util.asJsoup
@ -88,7 +88,7 @@ class MonosChinos : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
val urlBase64 = it.select("a").attr("data-player") val urlBase64 = it.select("a").attr("data-player")
val url = Base64.decode(urlBase64, Base64.DEFAULT).toString(Charsets.UTF_8).substringAfter("=") val url = Base64.decode(urlBase64, Base64.DEFAULT).toString(Charsets.UTF_8).substringAfter("=")
when { when {
url.contains("fembed") -> videoList.addAll(FembedExtractor().videosFromUrl(url)) url.contains("fembed") -> videoList.addAll(FembedExtractor(client).videosFromUrl(url))
url.contains("ok") -> if (!url.contains("streamcherry")) videoList.addAll(OkruExtractor(client).videosFromUrl(url)) url.contains("ok") -> if (!url.contains("streamcherry")) videoList.addAll(OkruExtractor(client).videosFromUrl(url))
url.contains("solidfiles") -> videoList.addAll(SolidFilesExtractor(client).videosFromUrl(url)) url.contains("solidfiles") -> videoList.addAll(SolidFilesExtractor(client).videosFromUrl(url))
url.contains("uqload") -> { url.contains("uqload") -> {

View File

@ -1,27 +0,0 @@
package eu.kanade.tachiyomi.animeextension.es.monoschinos.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import org.json.JSONObject
import org.jsoup.Connection
import org.jsoup.Jsoup
class FembedExtractor {
fun videosFromUrl(url: String, qualityPrefix: String = ""): List<Video> {
val videoList = mutableListOf<Video>()
return try {
val videoApi = url.replace("/v/", "/api/source/")
val json = JSONObject(Jsoup.connect(videoApi).ignoreContentType(true).method(Connection.Method.POST).execute().body())
val videoList = mutableListOf<Video>()
val jsonArray = json.getJSONArray("data")
for (i in 0 until jsonArray.length()) {
val `object` = jsonArray.getJSONObject(i)
val videoUrl = `object`.getString("file")
val quality = qualityPrefix + "Fembed:" + `object`.getString("label")
videoList.add(Video(videoUrl, quality, videoUrl))
}
videoList
} catch (e: Exception) {
videoList
}
}
}

View File

@ -9,4 +9,9 @@ ext {
libVersion = '13' libVersion = '13'
} }
dependencies {
implementation(project(':lib-fembed-extractor'))
}
apply from: "$rootDir/common.gradle" apply from: "$rootDir/common.gradle"

View File

@ -4,7 +4,6 @@ import android.app.Application
import android.content.SharedPreferences import android.content.SharedPreferences
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.es.mundodonghua.extractors.FembedExtractor
import eu.kanade.tachiyomi.animeextension.es.mundodonghua.extractors.JsUnpacker import eu.kanade.tachiyomi.animeextension.es.mundodonghua.extractors.JsUnpacker
import eu.kanade.tachiyomi.animeextension.es.mundodonghua.extractors.ProteaExtractor import eu.kanade.tachiyomi.animeextension.es.mundodonghua.extractors.ProteaExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
@ -14,6 +13,7 @@ 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.fembedextractor.FembedExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
@ -113,7 +113,9 @@ class MundoDonghua : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
fetchUrls(unpack!!.first()).map { url -> fetchUrls(unpack!!.first()).map { url ->
if (url.contains("diasfem")) { if (url.contains("diasfem")) {
var serverUrl = url.replace("diasfem", "embedsito") var serverUrl = url.replace("diasfem", "embedsito")
FembedExtractor().videosFromUrl(serverUrl).map { vid -> videoList.add(vid) } videoList.addAll(
FembedExtractor(client).videosFromUrl(serverUrl)
)
} }
} }
if (unpack!!.first()!!.contains("protea_tab")) { if (unpack!!.first()!!.contains("protea_tab")) {

View File

@ -1,27 +0,0 @@
package eu.kanade.tachiyomi.animeextension.es.mundodonghua.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import org.json.JSONObject
import org.jsoup.Connection
import org.jsoup.Jsoup
class FembedExtractor {
fun videosFromUrl(url: String, qualityPrefix: String = ""): List<Video> {
val videoList = mutableListOf<Video>()
return try {
val videoApi = url.replace("/v/", "/api/source/")
val json = JSONObject(Jsoup.connect(videoApi).ignoreContentType(true).method(Connection.Method.POST).execute().body())
val videoList = mutableListOf<Video>()
val jsonArray = json.getJSONArray("data")
for (i in 0 until jsonArray.length()) {
val `object` = jsonArray.getJSONObject(i)
val videoUrl = `object`.getString("file")
val quality = qualityPrefix + "Fembed:" + `object`.getString("label")
videoList.add(Video(videoUrl, quality, videoUrl))
}
videoList
} catch (e: Exception) {
videoList
}
}
}

View File

@ -10,6 +10,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-fembed-extractor'))
implementation(project(':lib-streamtape-extractor')) implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-dood-extractor')) implementation(project(':lib-dood-extractor'))
} }

View File

@ -5,7 +5,6 @@ import android.content.SharedPreferences
import android.util.Log import android.util.Log
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.es.pelisflix.extractors.FembedExtractor
import eu.kanade.tachiyomi.animesource.AnimeSource import eu.kanade.tachiyomi.animesource.AnimeSource
import eu.kanade.tachiyomi.animesource.AnimeSourceFactory import eu.kanade.tachiyomi.animesource.AnimeSourceFactory
import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilter
@ -13,6 +12,7 @@ import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
import eu.kanade.tachiyomi.animesource.model.SAnime import eu.kanade.tachiyomi.animesource.model.SAnime
import eu.kanade.tachiyomi.animesource.model.Video import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor
import eu.kanade.tachiyomi.lib.fembedextractor.FembedExtractor
import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup import eu.kanade.tachiyomi.util.asJsoup
@ -55,9 +55,9 @@ class SeriesflixClass : Pelisflix("Seriesflix", "https://seriesflix.video") {
fetchUrls(urlResponse).map { serverUrl -> fetchUrls(urlResponse).map { serverUrl ->
Log.i("bruh url", serverUrl) Log.i("bruh url", serverUrl)
if (serverUrl.contains("fembed") || serverUrl.contains("vanfem")) { if (serverUrl.contains("fembed") || serverUrl.contains("vanfem")) {
FembedExtractor().videosFromUrl(serverUrl, lang)!!.map { video -> videoList.addAll(
videoList.add(video) FembedExtractor(client).videosFromUrl(serverUrl, lang)
} )
} }
if (serverUrl.contains("doodstream")) { if (serverUrl.contains("doodstream")) {
val video = DoodExtractor(client).videoFromUrl(serverUrl.replace("https://doodstream.com", "https://dood.wf"), lang + "DoodStream", false) val video = DoodExtractor(client).videoFromUrl(serverUrl.replace("https://doodstream.com", "https://dood.wf"), lang + "DoodStream", false)

View File

@ -1,27 +0,0 @@
package eu.kanade.tachiyomi.animeextension.es.pelisflix.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import org.json.JSONObject
import org.jsoup.Connection
import org.jsoup.Jsoup
class FembedExtractor {
fun videosFromUrl(url: String, qualityPrefix: String = ""): List<Video> {
val videoList = mutableListOf<Video>()
return try {
val videoApi = url.replace("/v/", "/api/source/")
val json = JSONObject(Jsoup.connect(videoApi).ignoreContentType(true).method(Connection.Method.POST).execute().body())
val videoList = mutableListOf<Video>()
val jsonArray = json.getJSONArray("data")
for (i in 0 until jsonArray.length()) {
val `object` = jsonArray.getJSONObject(i)
val videoUrl = `object`.getString("file")
val quality = qualityPrefix + "Fembed:" + `object`.getString("label")
videoList.add(Video(videoUrl, quality, videoUrl))
}
videoList
} catch (e: Exception) {
videoList
}
}
}

View File

@ -10,6 +10,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-fembed-extractor'))
implementation(project(':lib-streamtape-extractor')) implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-streamsb-extractor')) implementation(project(':lib-streamsb-extractor'))
implementation(project(':lib-dood-extractor')) implementation(project(':lib-dood-extractor'))

View File

@ -5,7 +5,6 @@ import android.content.SharedPreferences
import android.util.Base64 import android.util.Base64
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.es.pelisplushd.extractors.FembedExtractor
import eu.kanade.tachiyomi.animeextension.es.pelisplushd.extractors.YourUploadExtractor import eu.kanade.tachiyomi.animeextension.es.pelisplushd.extractors.YourUploadExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilter
@ -15,6 +14,7 @@ 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.doodextractor.DoodExtractor import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor
import eu.kanade.tachiyomi.lib.fembedextractor.FembedExtractor
import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor import eu.kanade.tachiyomi.lib.streamsbextractor.StreamSBExtractor
import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
@ -154,7 +154,7 @@ class Pelisplushd : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
}.getOrNull()?.let { videoList.addAll(it) } }.getOrNull()?.let { videoList.addAll(it) }
} }
"plusto" -> { "plusto" -> {
val videos = FembedExtractor().videosFromUrl(url) val videos = FembedExtractor(client).videosFromUrl(url)
videoList.addAll(videos) videoList.addAll(videos)
} }
"stp" -> { "stp" -> {

View File

@ -1,27 +0,0 @@
package eu.kanade.tachiyomi.animeextension.es.pelisplushd.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import org.json.JSONObject
import org.jsoup.Connection
import org.jsoup.Jsoup
class FembedExtractor {
fun videosFromUrl(url: String, qualityPrefix: String = ""): List<Video> {
val videoList = mutableListOf<Video>()
return try {
val videoApi = url.replace("/v/", "/api/source/")
val json = JSONObject(Jsoup.connect(videoApi).ignoreContentType(true).method(Connection.Method.POST).execute().body())
val videoList = mutableListOf<Video>()
val jsonArray = json.getJSONArray("data")
for (i in 0 until jsonArray.length()) {
val `object` = jsonArray.getJSONObject(i)
val videoUrl = `object`.getString("file")
val quality = qualityPrefix + "Fembed:" + `object`.getString("label")
videoList.add(Video(videoUrl, quality, videoUrl))
}
videoList
} catch (e: Exception) {
videoList
}
}
}

View File

@ -10,6 +10,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-fembed-extractor'))
implementation(project(':lib-okru-extractor')) implementation(project(':lib-okru-extractor'))
} }

View File

@ -4,7 +4,6 @@ import android.app.Application
import android.content.SharedPreferences import android.content.SharedPreferences
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.es.tioanimeh.extractors.FembedExtractor
import eu.kanade.tachiyomi.animeextension.es.tioanimeh.extractors.YourUploadExtractor import eu.kanade.tachiyomi.animeextension.es.tioanimeh.extractors.YourUploadExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilter
@ -13,6 +12,7 @@ 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.fembedextractor.FembedExtractor
import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup import eu.kanade.tachiyomi.util.asJsoup
@ -86,7 +86,9 @@ open class TioanimeH(override val name: String, override val baseUrl: String) :
val serverUrl = servers[1].replace("\\/", "/") val serverUrl = servers[1].replace("\\/", "/")
when (serverName.lowercase()) { when (serverName.lowercase()) {
"fembed" -> { "fembed" -> {
FembedExtractor().videosFromUrl(serverUrl).map { vid -> videoList.add(vid) } videoList.addAll(
FembedExtractor(client).videosFromUrl(serverUrl)
)
} }
"okru" -> { "okru" -> {
OkruExtractor(client).videosFromUrl(serverUrl).map { vid -> videoList.add(vid) } OkruExtractor(client).videosFromUrl(serverUrl).map { vid -> videoList.add(vid) }

View File

@ -1,26 +0,0 @@
package eu.kanade.tachiyomi.animeextension.es.tioanimeh.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import org.json.JSONObject
import org.jsoup.Connection
import org.jsoup.Jsoup
class FembedExtractor {
fun videosFromUrl(url: String, qualityPrefix: String = ""): List<Video> {
val videoList = mutableListOf<Video>()
return try {
val videoApi = url.replace("/v/", "/api/source/")
val json = JSONObject(Jsoup.connect(videoApi).ignoreContentType(true).method(Connection.Method.POST).execute().body())
val videoList = mutableListOf<Video>()
val jsonArray = json.getJSONArray("data")
for (i in 0 until jsonArray.length()) {
val `object` = jsonArray.getJSONObject(i)
val videoUrl = `object`.getString("file")
val quality = qualityPrefix + "Fembed:" + `object`.getString("label")
videoList.add(Video(videoUrl, quality, videoUrl))
}
videoList
} catch (e: Exception) {
videoList
}
}
}