diff --git a/src/es/animeflv/build.gradle b/src/es/animeflv/build.gradle index a711372cc..0b7284071 100644 --- a/src/es/animeflv/build.gradle +++ b/src/es/animeflv/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'AnimeFLV' pkgNameSuffix = 'es.animeflv' extClass = '.AnimeFlv' - extVersionCode = 8 + extVersionCode = 9 libVersion = '12' } diff --git a/src/es/animeflv/src/eu/kanade/tachiyomi/animeextension/es/animeflv/AnimeFlv.kt b/src/es/animeflv/src/eu/kanade/tachiyomi/animeextension/es/animeflv/AnimeFlv.kt index b8882ea36..2d6cc3881 100644 --- a/src/es/animeflv/src/eu/kanade/tachiyomi/animeextension/es/animeflv/AnimeFlv.kt +++ b/src/es/animeflv/src/eu/kanade/tachiyomi/animeextension/es/animeflv/AnimeFlv.kt @@ -6,6 +6,7 @@ import androidx.preference.ListPreference import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.animeextension.es.animeflv.extractors.FembedExtractor import eu.kanade.tachiyomi.animeextension.es.animeflv.extractors.OkruExtractor +import eu.kanade.tachiyomi.animeextension.es.animeflv.extractors.StreamSBExtractor import eu.kanade.tachiyomi.animeextension.es.animeflv.extractors.StreamTapeExtractor import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.model.AnimeFilterList @@ -111,6 +112,16 @@ class AnimeFlv : ConfigurableAnimeSource, ParsedAnimeHttpSource() { for (server in sub.jsonArray) { val url = server.jsonObject["code"]!!.jsonPrimitive.content.replace("\\/", "/") val quality = server.jsonObject["title"]!!.jsonPrimitive.content + if (quality == "SB") { + val headers = headers.newBuilder() + // .set("Referer", "https://sbplay2.com/") + .set("User-Agent", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0") + .set("Accept-Language", "en-US,en;q=0.5") + .set("watchsb", "streamsb") + .build() + val videos = StreamSBExtractor(client).videosFromUrl(url, headers) + videoList.addAll(videos) + } if (quality == "Fembed") { val videos = FembedExtractor().videosFromUrl(url) videoList.addAll(videos) diff --git a/src/es/animeflv/src/eu/kanade/tachiyomi/animeextension/es/animeflv/extractors/StreamSBExtractor.kt b/src/es/animeflv/src/eu/kanade/tachiyomi/animeextension/es/animeflv/extractors/StreamSBExtractor.kt new file mode 100644 index 000000000..070254c8e --- /dev/null +++ b/src/es/animeflv/src/eu/kanade/tachiyomi/animeextension/es/animeflv/extractors/StreamSBExtractor.kt @@ -0,0 +1,56 @@ +package eu.kanade.tachiyomi.animeextension.es.animeflv.extractors + +import android.util.Log +import eu.kanade.tachiyomi.animesource.model.Video +import eu.kanade.tachiyomi.network.GET +import kotlinx.serialization.decodeFromString +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.jsonObject +import okhttp3.Headers +import okhttp3.OkHttpClient +import org.jsoup.Jsoup + +class StreamSBExtractor(private val client: OkHttpClient) { + + private val hexArray = "0123456789ABCDEF".toCharArray() + + private fun bytesToHex(bytes: ByteArray): String { + val hexChars = CharArray(bytes.size * 2) + for (j in bytes.indices) { + val v = bytes[j].toInt() and 0xFF + + hexChars[j * 2] = hexArray[v ushr 4] + hexChars[j * 2 + 1] = hexArray[v and 0x0F] + } + return String(hexChars) + } + + fun videosFromUrl(url: String, headers: Headers): List