diff --git a/lib/fembed-extractor/build.gradle.kts b/lib/fembed-extractor/build.gradle.kts
new file mode 100644
index 000000000..724f2aea6
--- /dev/null
+++ b/lib/fembed-extractor/build.gradle.kts
@@ -0,0 +1,26 @@
+plugins {
+ id("com.android.library")
+ id("kotlinx-serialization") // for the DTO
+ kotlin("android")
+}
+
+android {
+ compileSdk = AndroidConfig.compileSdk
+
+ defaultConfig {
+ minSdk = AndroidConfig.minSdk
+ targetSdk = AndroidConfig.targetSdk
+ }
+}
+
+repositories {
+ mavenCentral()
+}
+
+dependencies {
+ compileOnly(libs.kotlin.stdlib)
+ compileOnly(libs.kotlin.json)
+ compileOnly(libs.okhttp)
+ compileOnly(libs.aniyomi.lib)
+}
+// BUMPS: 0
\ No newline at end of file
diff --git a/lib/fembed-extractor/src/main/AndroidManifest.xml b/lib/fembed-extractor/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..22569d804
--- /dev/null
+++ b/lib/fembed-extractor/src/main/AndroidManifest.xml
@@ -0,0 +1,2 @@
+
diff --git a/lib/fembed-extractor/src/main/java/eu/kanade/tachiyomi/lib/fembedextractor/FembedExtractor.kt b/lib/fembed-extractor/src/main/java/eu/kanade/tachiyomi/lib/fembedextractor/FembedExtractor.kt
new file mode 100644
index 000000000..0fff6a1eb
--- /dev/null
+++ b/lib/fembed-extractor/src/main/java/eu/kanade/tachiyomi/lib/fembedextractor/FembedExtractor.kt
@@ -0,0 +1,28 @@
+package eu.kanade.tachiyomi.lib.fembedextractor
+
+import eu.kanade.tachiyomi.animesource.model.Video
+import eu.kanade.tachiyomi.network.POST
+import kotlinx.serialization.decodeFromString
+import kotlinx.serialization.json.Json
+import okhttp3.OkHttpClient
+
+class FembedExtractor(private val client: OkHttpClient) {
+ fun videosFromUrl(url: String, prefix: String = ""): List