package com.streamflixreborn.streamflix.extractors import com.streamflixreborn.streamflix.models.Video import com.tanasi.retrofit_jsoup.converter.JsoupConverterFactory import okhttp3.OkHttpClient import org.jsoup.nodes.Document import retrofit2.Retrofit import retrofit2.http.GET import retrofit2.http.Url class RidooExtractor : Extractor() { override val name = "Ridoo" override val mainUrl = "https://ridoo.net" override suspend fun extract(link: String): Video { val service = Service.build(mainUrl) val document = service.get(link) val regex = Regex("""file\s*:\s*"([^"]+\.m3u8[^"]*)"""") val match = regex.find(document.toString()) val m3u8Url = match?.groups?.get(1)?.value ?: throw Exception("Can't extract m3u8 URL from embed page") val headers = mapOf( "Referer" to "https://ridoo.net/", "User-Agent" to "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:140.0) Gecko/20100101 Firefox/140.0", "Accept" to "*/*", "Accept-Language" to "de,en-US;q=0.7,en;q=0.3", "Origin" to "https://ridoo.net" ) return Video( source = m3u8Url, subtitles = listOf(), headers = headers ) } interface Service { companion object { fun build(baseUrl: String): Service { val client = OkHttpClient.Builder() .addInterceptor { chain -> val original = chain.request() val request = original.newBuilder() .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0 Safari/537.36") .header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") .header("Accept-Language", "en-US,en;q=0.9") .header("Referer", "https://ridomovies.tv/") .build() chain.proceed(request) } .build() val retrofit = Retrofit.Builder() .baseUrl(baseUrl) .client(client) .addConverterFactory(JsoupConverterFactory.create()) .build() return retrofit.create(Service::class.java) } } @GET suspend fun get(@Url url: String): Document } }