From bacc0a5b1864cef35658a1ab1e189a3793d73715 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Sun, 2 Aug 2026 13:34:14 +0200 Subject: [PATCH 1/2] feat(extractors): add vidara mirrors --- .../cloudstream3/extractors/Vidara.kt | 41 +++++++++++++++++++ .../cloudstream3/utils/ExtractorApi.kt | 16 ++++++++ 2 files changed, 57 insertions(+) diff --git a/library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/Vidara.kt b/library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/Vidara.kt index 04c60675ebd..56e956fe467 100644 --- a/library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/Vidara.kt +++ b/library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/Vidara.kt @@ -1,6 +1,7 @@ package com.lagradost.cloudstream3.extractors import com.fasterxml.jackson.annotation.JsonProperty +import com.lagradost.cloudstream3.Prerelease import com.lagradost.cloudstream3.SubtitleFile import com.lagradost.cloudstream3.app import com.lagradost.cloudstream3.newSubtitleFile @@ -43,6 +44,46 @@ class VidaraSo : Vidara() { override val mainUrl = "https://vidara.so" } +@Prerelease +class Odysseusa : Vidara() { + override val mainUrl = "https://odysseusa.cc" +} + +@Prerelease +class Handfacesnap : Vidara() { + override val mainUrl = "https://handfacesnap.cc" +} + +@Prerelease +class Namefacesnap : Vidara() { + override val mainUrl = "https://namefacesnap.cc" +} + +@Prerelease +class Thebesthostertv : Vidara() { + override val mainUrl = "https://thebesthosterv.com" +} + +@Prerelease +class Vidmatrixa : Vidara() { + override val mainUrl = "https://vidmatrixa.com" +} + +@Prerelease +class VidChampions : Vidara() { + override val mainUrl = "https://vidchampions.com/" +} + +@Prerelease +class Antarcticadocs : Vidara() { + override val mainUrl = "https://antarcticadocs.com" +} + +@Prerelease +class Nameitweb : Vidara() { + override val mainUrl = "https://nameitweb.com" +} + open class Vidara : ExtractorApi() { override val name = "Vidara" override val mainUrl = "https://vidara.to" diff --git a/library/src/commonMain/kotlin/com/lagradost/cloudstream3/utils/ExtractorApi.kt b/library/src/commonMain/kotlin/com/lagradost/cloudstream3/utils/ExtractorApi.kt index 163059a97bd..2c3fff5717a 100644 --- a/library/src/commonMain/kotlin/com/lagradost/cloudstream3/utils/ExtractorApi.kt +++ b/library/src/commonMain/kotlin/com/lagradost/cloudstream3/utils/ExtractorApi.kt @@ -11,6 +11,7 @@ import com.lagradost.cloudstream3.app import com.lagradost.cloudstream3.extractors.Acefile import com.lagradost.cloudstream3.extractors.Ahvsh import com.lagradost.cloudstream3.extractors.Aico +import com.lagradost.cloudstream3.extractors.Antarcticadocs import com.lagradost.cloudstream3.extractors.Asnwish import com.lagradost.cloudstream3.extractors.Auvexiug import com.lagradost.cloudstream3.extractors.Awish @@ -109,6 +110,7 @@ import com.lagradost.cloudstream3.extractors.HDMomPlayer import com.lagradost.cloudstream3.extractors.HDPlayerSystem import com.lagradost.cloudstream3.extractors.HDStreamAble import com.lagradost.cloudstream3.extractors.Habetar +import com.lagradost.cloudstream3.extractors.Handfacesnap import com.lagradost.cloudstream3.extractors.Haxloppd import com.lagradost.cloudstream3.extractors.Hgcloudto import com.lagradost.cloudstream3.extractors.HglinkTo @@ -158,6 +160,8 @@ import com.lagradost.cloudstream3.extractors.Multimovies import com.lagradost.cloudstream3.extractors.Mvidoo import com.lagradost.cloudstream3.extractors.MyVidPlay import com.lagradost.cloudstream3.extractors.Mwish +import com.lagradost.cloudstream3.extractors.Namefacesnap +import com.lagradost.cloudstream3.extractors.Nameitweb import com.lagradost.cloudstream3.extractors.NathanFromSubject import com.lagradost.cloudstream3.extractors.Nekostream import com.lagradost.cloudstream3.extractors.Nekowish @@ -165,6 +169,7 @@ import com.lagradost.cloudstream3.extractors.Neonime7n import com.lagradost.cloudstream3.extractors.Neonime8n import com.lagradost.cloudstream3.extractors.Obeywish import com.lagradost.cloudstream3.extractors.Odnoklassniki +import com.lagradost.cloudstream3.extractors.Odysseusa import com.lagradost.cloudstream3.extractors.OkRuHTTP import com.lagradost.cloudstream3.extractors.OkRuHTTPMobile import com.lagradost.cloudstream3.extractors.OkRuSSL @@ -269,6 +274,8 @@ import com.lagradost.cloudstream3.extractors.VidHidePro6 import com.lagradost.cloudstream3.extractors.VidHideHub import com.lagradost.cloudstream3.extractors.Ryderjet import com.lagradost.cloudstream3.extractors.Streamcash +import com.lagradost.cloudstream3.extractors.Thebesthostertv +import com.lagradost.cloudstream3.extractors.VidChampions import com.lagradost.cloudstream3.extractors.VidMoxy import com.lagradost.cloudstream3.extractors.VidStack import com.lagradost.cloudstream3.extractors.VideoSeyred @@ -295,6 +302,7 @@ import com.lagradost.cloudstream3.extractors.Vidaraw import com.lagradost.cloudstream3.extractors.Vidarax import com.lagradost.cloudstream3.extractors.Vidavaca import com.lagradost.cloudstream3.extractors.Vide0Net +import com.lagradost.cloudstream3.extractors.Vidmatrixa import com.lagradost.cloudstream3.extractors.Vids import com.lagradost.cloudstream3.extractors.Vidsonic import com.lagradost.cloudstream3.extractors.VkExtractor @@ -1181,6 +1189,14 @@ val extractorApis: AtomicMutableList = atomicListOf( Vidaratem(), VidaaraxCom(), VidaaraxNet(), + Odysseusa(), + Handfacesnap(), + Namefacesnap(), + Thebesthostertv(), + Vidmatrixa(), + VidChampions(), + Antarcticadocs(), + Nameitweb(), GamoVideo(), Gdriveplayerapi(), From 5c4c3955db3f56cbfa9f1b23f48d04508c733545 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Sun, 2 Aug 2026 13:38:27 +0200 Subject: [PATCH 2/2] fix(vidara): links with filecodes don't work --- .../kotlin/com/lagradost/cloudstream3/extractors/Vidara.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/Vidara.kt b/library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/Vidara.kt index 56e956fe467..e3a33b0cb18 100644 --- a/library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/Vidara.kt +++ b/library/src/commonMain/kotlin/com/lagradost/cloudstream3/extractors/Vidara.kt @@ -95,7 +95,9 @@ open class Vidara : ExtractorApi() { subtitleCallback: (SubtitleFile) -> Unit, callback: (ExtractorLink) -> Unit, ) { - val fileCode = url.substringAfterLast("/") + // URLs sometimes contain a mirror selector query parameter, e.g. "https://vidara.to/xkNOuHSrCNMj?24" + // that is not part of the file code and hence we must remove it + val fileCode = url.substringAfterLast("/").substringBefore("?") val fileInfo = app.post( "$mainUrl/api/stream", json = mapOf( "filecode" to fileCode,