SkillAgentSearch skills...

MoonGetter

A Kotlin-KMP library for extracting resources from popular sites like Streamtape, Google Drive, Mediafire, Fireload, Mp4Upload, Okru, Voe, Uqload, and many more.

Install / Use

/learn @darkryh/MoonGetter

README

Maven Central

MoonGetter for Kotlin

App Icon Play Store Icon

MoonGetter MoonGetter is a robust, Kotlin-first library engineered for seamless stream extraction and video hosting download logic. It offers comprehensive support for Android and is now fully Kotlin Multiplatform (KMP) ready, featuring flexible custom server integration.


✅ Features

  • Custom Server Integration — Easily build and integrate your own streaming providers.
  • Coroutine-based Architecture — Async-first design for highly scalable extraction logic.
  • Transparent HTTP Client Injection — Works seamlessly with both OkHttp and Ktor.
  • Custom Error Types — Intuitive error handling via InvalidServerException and descriptive Error enums.
  • Flexible Cookie Management — Automatic for OkHttp, configurable for Ktor.

🔄 Compatibility Table

| Feature | Android | JVM | Kotlin Multiplatform | | :--------------------- | :-----: |:----------:| :------------------: | | Core Library | ✅ | ✅ | ✅ | | Robot Servers API | ✅ | ⏳(desktop) | ⏳ (Planned) | | Server Implementations | ✅ | ✅ | ✅ |

✅ = Supported / ⏳ = In development / JVM refers to non-Android Kotlin projects.


🌐 Supported Servers (Core)

✅ Actively maintained / 💥 Deprecated

  • ✅ Google Drive
  • ✅ Mediafire
  • ✅ Streamtape
  • ✅ PixelDrain
  • ✅ Okru
  • ✅ StreamWish
  • 💥 Voe (Deprecated)
  • ✅ Senvid
  • ✅ Vihide
  • ✅ Hexload
  • ✅ YourUpload
  • ✅ Facebook
  • ✅ XTwitter
  • ✅ LuluStream
  • ✅ Mp4Upload
  • ✅ Uqload
  • ✅ Mixdrop
  • ✅ Doodstream
  • ✅ Vidguard
  • ✅ Filemoon
  • ✅ VK

🤖 Robot Servers (Optional)

These require the moongetter-core-robot module and a platform-specific Robot API.

  • 💥 Fireload (Deprecated)
  • ✅ 1CloudFile

Coming Soon: GoodStream, Gofile, Abyss


☕ Installation (Gradle)

// For stable releases, use Maven Central
repositories {
    mavenCentral()
}

Kotlin Multiplatform Project Dependencies

This section outlines the dependencies block specifically for integrating MoonGetter modules within a Kotlin Multiplatform (KMP) project structure. It focuses solely on MoonGetter-related dependencies, showing their placement for common shared code, Android-specific configurations, and iOS (Darwin) targets.

val moonGetterVersion = "2.0.0-alpha02"

dependencies {
  // --- Common Main (Shared KMP Logic) ---
  commonMain.dependencies {
    implementation("io.github.darkryh.moongetter:moongetter-core:$moonGetterVersion")
    implementation("io.github.darkryh.moongetter:moongetter-client-ktor:$moonGetterVersion")
    implementation("io.github.darkryh.moongetter:moongetter-server-bundle:$moonGetterVersion")
    implementation("io.github.darkryh.moongetter:moongetter-core-robot:$moonGetterVersion")
    implementation("io.github.darkryh.moongetter:moongetter-server-robot-bundle:$moonGetterVersion")
    // Optional: Individual server modules (instead of bundles)
    // implementation("io.github.darkryh.moongetter:moongetter-mp4upload:$moonGetterVersion")
  }

  // --- Android Specific ---
  androidMain.dependencies {
    // Choose ONE HTTP client:
    implementation("io.github.darkryh.moongetter:moongetter-client-okhttp:$moonGetterVersion") // Option 1: MoonGetter OkHttp Client
    // OR
    // implementation("io.ktor:ktor-client-okhttp:2.3.12") // Option 2: Ktor with OkHttp engine

    implementation("io.github.darkryh.moongetter:moongetter-client-cookie-java-net:$moonGetterVersion") // Cookie management
    implementation("io.github.darkryh.moongetter:moongetter-client-trustmanager-java-net:$moonGetterVersion") // Trust management
    implementation("io.github.darkryh.moongetter:moongetter-android-robot:$moonGetterVersion") // Android Robot APIs
  }

  // --- iOS Specific ---
  iosMain.dependencies {
    // REQUIRED: Ktor's Darwin engine for network requests on iOS.
    implementation("io.ktor:ktor-client-darwin:2.3.12")
  }

  // --- Desktop (JVM) Specific ---
  desktopMain.dependencies {
    // Choose ONE HTTP client:
    implementation("io.ktor:ktor-client-cio:2.3.12") // Option 1: Ktor with CIO engine
    // OR
    // implementation("io.github.darkryh.moongetter:moongetter-client-okhttp:$moonGetterVersion") // Option 2: MoonGetter OkHttp Client

    implementation("io.github.darkryh.moongetter:moongetter-client-cookie-java-net:$moonGetterVersion") // Cookie management
    implementation("io.github.darkryh.moongetter:moongetter-client-trustmanager-java-net:$moonGetterVersion") // Trust management
  }
}

Java/Kotlin JVM Project Dependencies

This section outlines the dependencies block for integrating MoonGetter modules into a standard Java or Kotlin JVM project. This includes typical Android applications or standalone desktop JVM applications that do not use Kotlin Multiplatform.

val moonGetterVersion = "2.0.0-alpha02"

dependencies {
  // --- Core & Server Support ---
  implementation("io.github.darkryh.moongetter:moongetter-core:$moonGetterVersion")
  implementation("io.github.darkryh.moongetter:moongetter-server-bundle:$moonGetterVersion")
  implementation("io.github.darkryh.moongetter:moongetter-core-robot:$moonGetterVersion")
  implementation("io.github.darkryh.moongetter:moongetter-server-robot-bundle:$moonGetterVersion")
  // Optional: Individual server modules
  // implementation("io.github.darkryh.moongetter:moongetter-mp4upload:$moonGetterVersion")

  // --- HTTP Client & Utilities ---
  // Choose your client:
  implementation("io.github.darkryh.moongetter:moongetter-client-okhttp:$moonGetterVersion") // Option 1: OkHttp (recommended)
  // OR
  // implementation("io.github.darkryh.moongetter:moongetter-client-ktor:$moonGetterVersion") // Option 2: Ktor
  // + Ktor engine (e.g., "io.ktor:ktor-client-okhttp:2.3.12" or "io.ktor:ktor-client-cio:2.3.12")

  implementation("io.github.darkryh.moongetter:moongetter-client-cookie-java-net:$moonGetterVersion") // Cookie management
  implementation("io.github.darkryh.moongetter:moongetter-client-trustmanager-java-net:$moonGetterVersion") // Trust management

  // Android-specific Robot (only for Android projects)
  implementation("io.github.darkryh.moongetter:moongetter-android-robot:$moonGetterVersion")
}

🧐 Client & Cookie Management Integration

| Client Library | Module | Cookie Management | KMP Support | |-------------------|----------------------------------------------|-----------------------------------|--------------------| | OkHttp | moongetter-client-okhttp | ✅ Built-in | ⏳ Not Supported | | Ktor | moongetter-client-ktor | ⚠️ Manual setup required | ✅ Experimental | | JavaNetCookieManager | moongetter-client-cookie-java-net | ✅ (Only for Ktor, optional) | ⏳ Not Supported |

✅ = Supported / ⚠️ = Manual setup / ⏳ = Coming soon

Note:

  • OkHttp has built-in cookie support, no setup needed.

  • Ktor requires you to explicitly inject cookie management (e.g., JavaNetCookieManagement).

    Example Initialization:

MoonGetter.start(
    MoonFactory
        .Builder()
        .setClient(
            client = KtorMoonClient(
                engineFactory = httpClientEngineFactory,
                cookieManagement = cookieManagement,
                trustManager = trustManager
            )
        )
        .setTimeout(timeoutMillis = 12000)
        .setEngine(engine = engine)
)

Example with Ktor:

MoonFactory.Builder()
    .setClient(
        KtorMoonClient(
            engineFactory = CIO, //on iOS Darwin
            cookieManagement = JavaNetCookieManagement(), //on iOS MoonCookie.Management.newEmptyFactory()
            trustManager = JavaMoonTrustManager // on iOS MoonTrust.Manager.newEmptyFactory()
        )
    )

Example with OkHttp:

MoonFactory.Builder()
    .setClient(
        OkHttpClient
    )

🚀 Example Usage

ViewModel with coroutine logic:

class MyViewModel : ViewModel() {

    private val engine = Engine.Builder()
        .onCore(
            engines = arrayOf(
                Mp4UploadFactory,
                FilemoonFactory,
                StreamtapeFactory,
                StreamwishFactory,
                // CustomServerFactory (recommended to use `object`)
            )
        )
        .build()

    fun getMediaStreams(url: String) = viewModelScope.launch(Dispatchers.IO) {
        try {
            MoonGetter.start(
                MoonFactory
                    .Builder()
                    .setClient(
                        KtorMoonClient(
                            engineFactory = CIO,//jvm other option Okhttp //on iOS Darwin
                            cookieManagement = JavaNetCookieManagement(), //on iOS MoonCookie.Management.newEmptyFactory()
                            trustManager = JavaMoonTrustManager // on iOS MoonTrust.Manager.newEmptyFactory()
                        )
                    )
                    .setTimeout(8000)
                    .setEngine(engine)
            )
                
                
            val server : Server = MoonGetter.get(url) // returns server
            val serverNullable : Server? = MoonGetter.getOrNull(url) // returns server or null, in this case there's no ne
View on GitHub
GitHub Stars14
CategoryDevelopment
Updated2mo ago
Forks6

Languages

Kotlin

Security Score

95/100

Audited on Jan 15, 2026

No findings