From eea8c6b0abc69a7ce17974f5b14e5c32a345141c Mon Sep 17 00:00:00 2001 From: Nova Server Date: Mon, 9 Nov 2026 22:49:25 +0530 Subject: [PATCH 1/4] feat(tv): enable TV download support and Nova server offload --- .../ui/result/ResultFragmentTv.kt | 2 +- .../ui/result/ResultViewModel2.kt | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragmentTv.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragmentTv.kt index c316fae1715..9540a599595 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragmentTv.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragmentTv.kt @@ -430,7 +430,7 @@ class ResultFragmentTv : BaseFragment( resultEpisodes.setRecycledViewPool(EpisodeAdapter.sharedPool) resultEpisodes.adapter = EpisodeAdapter( - false, + true, { episodeClick -> viewModel.handleAction(episodeClick) }, diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt index 17a698de2df..f3f65fedcfb 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt @@ -1376,6 +1376,7 @@ class ResultViewModel2 : ViewModel() { listOf( txt(R.string.episode_action_auto_download) to ACTION_DOWNLOAD_EPISODE, txt(R.string.episode_action_download_mirror) to ACTION_DOWNLOAD_MIRROR, + txt("Send to Nova Server (192.168.1.9)") to 9999, txt(R.string.episode_action_download_subtitle) to ACTION_DOWNLOAD_EPISODE_SUBTITLE_MIRROR, txt(R.string.episode_action_reload_links) to ACTION_RELOAD_EPISODE, ) @@ -1488,6 +1489,57 @@ class ResultViewModel2 : ViewModel() { ) } + 9999 -> { + val response = currentResponse ?: return@launchSafe + acquireSingleLink( + click.data, + LOADTYPE_INAPP_DOWNLOAD, + txt("Send to Nova Server (Choose Source & Quality)") + ) { (result, index) -> + ioSafe { + val link = result.links[index] + val fullTitle = activity?.getNameFull( + click.data.name, + click.data.episode, + click.data.season + ) ?: response.name + + val success = try { + val payload = org.json.JSONObject().apply { + put("title", fullTitle) + put("url", link.url) + put("referer", link.referer) + put("quality", Qualities.getStringByInt(link.quality)) + put("type", link.type.name) + val headersJson = org.json.JSONObject() + link.headers.forEach { (k, v) -> headersJson.put(k, v) } + put("headers", headersJson) + } + val res = app.post( + "http://192.168.1.9:8765/api/download", + headers = mapOf( + "Authorization" to "Bearer nova-cloudstream-secure-token-2026", + "Content-Type" to "application/json" + ), + data = payload.toString() + ) + res.isSuccessful + } catch (e: Exception) { + com.lagradost.cloudstream3.mvvm.logError(e) + false + } + + main { + if (success) { + showToast("Queued on Nova Server: " + fullTitle, Toast.LENGTH_LONG) + } else { + showToast("Failed to connect to Nova Server", Toast.LENGTH_SHORT) + } + } + } + } + } + ACTION_DOWNLOAD_MIRROR -> { val response = currentResponse ?: return acquireSingleLink( From 329bd05f9016e20da10fad1e8f45c90bce217836 Mon Sep 17 00:00:00 2001 From: Nova Server Date: Mon, 9 Nov 2026 22:53:29 +0530 Subject: [PATCH 2/4] chore: sync library.api with updated declarations --- library/api/jvm/library.api | 118 ++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) diff --git a/library/api/jvm/library.api b/library/api/jvm/library.api index 389c8e83f32..429e3d8e809 100644 --- a/library/api/jvm/library.api +++ b/library/api/jvm/library.api @@ -946,6 +946,8 @@ public final class com/lagradost/cloudstream3/MainAPIKt { public static final fun newTvSeriesSearchResponse (Lcom/lagradost/cloudstream3/MainAPI;Ljava/lang/String;Ljava/lang/String;Lcom/lagradost/cloudstream3/TvType;ZLkotlin/jvm/functions/Function1;)Lcom/lagradost/cloudstream3/TvSeriesSearchResponse; public static synthetic fun newTvSeriesSearchResponse$default (Lcom/lagradost/cloudstream3/MainAPI;Ljava/lang/String;Ljava/lang/String;Lcom/lagradost/cloudstream3/TvType;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lcom/lagradost/cloudstream3/TvSeriesSearchResponse; public static final fun sortUrls (Ljava/util/Set;)Ljava/util/List; + public static final fun splitUrlParameters (Lio/ktor/http/Url;)Ljava/util/Map; + public static final fun splitUrlParameters (Ljava/lang/String;)Ljava/util/Map; public static final fun toNewSearchResponseList (Ljava/util/List;Ljava/lang/Boolean;)Lcom/lagradost/cloudstream3/SearchResponseList; public static synthetic fun toNewSearchResponseList$default (Ljava/util/List;Ljava/lang/Boolean;ILjava/lang/Object;)Lcom/lagradost/cloudstream3/SearchResponseList; public static final fun toRatingInt (Ljava/lang/String;)Ljava/lang/Integer; @@ -1781,6 +1783,11 @@ public final class com/lagradost/cloudstream3/extractors/Aico : com/lagradost/cl public fun getName ()Ljava/lang/String; } +public final class com/lagradost/cloudstream3/extractors/Antarcticadocs : com/lagradost/cloudstream3/extractors/Vidara { + public fun ()V + public fun getMainUrl ()Ljava/lang/String; +} + public final class com/lagradost/cloudstream3/extractors/Asnwish : com/lagradost/cloudstream3/extractors/StreamWishExtractor { public fun ()V public fun getMainUrl ()Ljava/lang/String; @@ -2506,6 +2513,11 @@ public class com/lagradost/cloudstream3/extractors/Firestream : com/lagradost/cl public fun getUrl (Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } +public final class com/lagradost/cloudstream3/extractors/FirestreamSite : com/lagradost/cloudstream3/extractors/Firestream { + public fun ()V + public fun getMainUrl ()Ljava/lang/String; +} + public final class com/lagradost/cloudstream3/extractors/FlaswishCom : com/lagradost/cloudstream3/extractors/StreamWishExtractor { public fun ()V public fun getMainUrl ()Ljava/lang/String; @@ -2961,12 +2973,25 @@ public final class com/lagradost/cloudstream3/extractors/Habetar : com/lagradost public fun getName ()Ljava/lang/String; } +public final class com/lagradost/cloudstream3/extractors/Handfacesnap : com/lagradost/cloudstream3/extractors/Vidara { + public fun ()V + public fun getMainUrl ()Ljava/lang/String; +} + public final class com/lagradost/cloudstream3/extractors/Haxloppd : com/lagradost/cloudstream3/extractors/VidHidePro { public fun ()V public fun getMainUrl ()Ljava/lang/String; public fun getName ()Ljava/lang/String; } +public final class com/lagradost/cloudstream3/extractors/Hexload : com/lagradost/cloudstream3/utils/ExtractorApi { + public fun ()V + public fun getMainUrl ()Ljava/lang/String; + public fun getName ()Ljava/lang/String; + public fun getRequiresReferer ()Z + public fun getUrl (Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + public final class com/lagradost/cloudstream3/extractors/Hgcloudto : com/lagradost/cloudstream3/extractors/StreamWishExtractor { public fun ()V public fun getMainUrl ()Ljava/lang/String; @@ -3007,6 +3032,14 @@ public final class com/lagradost/cloudstream3/extractors/HubCloud : com/lagrados public fun getUrl (Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } +public class com/lagradost/cloudstream3/extractors/HubuCloud : com/lagradost/cloudstream3/utils/ExtractorApi { + public fun ()V + public fun getMainUrl ()Ljava/lang/String; + public fun getName ()Ljava/lang/String; + public fun getRequiresReferer ()Z + public fun getUrl (Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + public class com/lagradost/cloudstream3/extractors/Hxfile : com/lagradost/cloudstream3/utils/ExtractorApi { public fun ()V public fun getMainUrl ()Ljava/lang/String; @@ -3531,6 +3564,16 @@ public final class com/lagradost/cloudstream3/extractors/MyVidPlay : com/lagrado public fun setMainUrl (Ljava/lang/String;)V } +public final class com/lagradost/cloudstream3/extractors/Namefacesnap : com/lagradost/cloudstream3/extractors/Vidara { + public fun ()V + public fun getMainUrl ()Ljava/lang/String; +} + +public final class com/lagradost/cloudstream3/extractors/Nameitweb : com/lagradost/cloudstream3/extractors/Vidara { + public fun ()V + public fun getMainUrl ()Ljava/lang/String; +} + public final class com/lagradost/cloudstream3/extractors/NathanFromSubject : com/lagradost/cloudstream3/extractors/Voe { public fun ()V public fun getMainUrl ()Ljava/lang/String; @@ -3605,6 +3648,11 @@ public final class com/lagradost/cloudstream3/extractors/Odnoklassniki$OkRuVideo public final fun serializer ()Lkotlinx/serialization/KSerializer; } +public final class com/lagradost/cloudstream3/extractors/Odysseusa : com/lagradost/cloudstream3/extractors/Vidara { + public fun ()V + public fun getMainUrl ()Ljava/lang/String; +} + public class com/lagradost/cloudstream3/extractors/OkRuHTTP : com/lagradost/cloudstream3/extractors/Odnoklassniki { public fun ()V public fun getMainUrl ()Ljava/lang/String; @@ -3982,6 +4030,14 @@ public final class com/lagradost/cloudstream3/extractors/Playerwish : com/lagrad public fun getName ()Ljava/lang/String; } +public final class com/lagradost/cloudstream3/extractors/Playmate : com/lagradost/cloudstream3/utils/ExtractorApi { + public fun ()V + public fun getMainUrl ()Ljava/lang/String; + public fun getName ()Ljava/lang/String; + public fun getRequiresReferer ()Z + public fun getUrl (Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + public final class com/lagradost/cloudstream3/extractors/Playmogo : com/lagradost/cloudstream3/extractors/DoodLaExtractor { public fun ()V public fun getMainUrl ()Ljava/lang/String; @@ -4982,6 +5038,11 @@ public final class com/lagradost/cloudstream3/extractors/Techinmind : com/lagrad public fun getRequiresReferer ()Z } +public final class com/lagradost/cloudstream3/extractors/Thebesthostertv : com/lagradost/cloudstream3/extractors/Vidara { + public fun ()V + public fun getMainUrl ()Ljava/lang/String; +} + public final class com/lagradost/cloudstream3/extractors/Tubeless : com/lagradost/cloudstream3/extractors/Voe { public fun ()V public fun getMainUrl ()Ljava/lang/String; @@ -5139,6 +5200,11 @@ public class com/lagradost/cloudstream3/extractors/Vicloud : com/lagradost/cloud public fun getUrl (Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } +public final class com/lagradost/cloudstream3/extractors/VidChampions : com/lagradost/cloudstream3/extractors/Vidara { + public fun ()V + public fun getMainUrl ()Ljava/lang/String; +} + public final class com/lagradost/cloudstream3/extractors/VidHideHub : com/lagradost/cloudstream3/extractors/VidHidePro { public fun ()V public fun getMainUrl ()Ljava/lang/String; @@ -5408,6 +5474,11 @@ public class com/lagradost/cloudstream3/extractors/VidhideExtractor : com/lagrad public fun setName (Ljava/lang/String;)V } +public final class com/lagradost/cloudstream3/extractors/Vidmatrixa : com/lagradost/cloudstream3/extractors/Vidara { + public fun ()V + public fun getMainUrl ()Ljava/lang/String; +} + public class com/lagradost/cloudstream3/extractors/Vidmoly : com/lagradost/cloudstream3/utils/ExtractorApi { public fun ()V public fun getMainUrl ()Ljava/lang/String; @@ -5457,6 +5528,15 @@ public class com/lagradost/cloudstream3/extractors/Vids : com/lagradost/cloudstr public fun getUrl (Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } +public class com/lagradost/cloudstream3/extractors/Vidsonic : com/lagradost/cloudstream3/utils/ExtractorApi { + public fun ()V + public fun extractEncodedVideoUrl (Lcom/lagradost/nicehttp/NiceResponse;)Ljava/lang/String; + public fun getMainUrl ()Ljava/lang/String; + public fun getName ()Ljava/lang/String; + public fun getRequiresReferer ()Z + public fun getUrl (Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + public final class com/lagradost/cloudstream3/extractors/VinovoSi : com/lagradost/cloudstream3/extractors/VinovoTo { public fun ()V public fun getMainUrl ()Ljava/lang/String; @@ -5473,6 +5553,7 @@ public class com/lagradost/cloudstream3/extractors/VinovoTo : com/lagradost/clou public class com/lagradost/cloudstream3/extractors/Vixeo : com/lagradost/cloudstream3/extractors/Vidsonic { public fun ()V + public fun extractEncodedVideoUrl (Lcom/lagradost/nicehttp/NiceResponse;)Ljava/lang/String; public fun getMainUrl ()Ljava/lang/String; public fun getName ()Ljava/lang/String; } @@ -8197,21 +8278,25 @@ public abstract class com/lagradost/cloudstream3/utils/ExtractorApi { public final class com/lagradost/cloudstream3/utils/ExtractorApiKt { public static final fun fixUrl (Lcom/lagradost/cloudstream3/utils/ExtractorApi;Ljava/lang/String;)Ljava/lang/String; public static final fun getAndUnpack (Ljava/lang/String;)Ljava/lang/String; + public static final fun getCLEARKEY_DRM_UUID ()Lkotlin/uuid/Uuid; public static final fun getCLEARKEY_UUID ()Ljava/util/UUID; public static final fun getExtractorApiFromName (Ljava/lang/String;)Lcom/lagradost/cloudstream3/utils/ExtractorApi; public static final fun getExtractorApis ()Lcom/lagradost/cloudstream3/utils/AtomicMutableList; public static final fun getINFER_TYPE ()Lcom/lagradost/cloudstream3/utils/ExtractorLinkType; + public static final fun getPLAYREADY_DRM_UUID ()Lkotlin/uuid/Uuid; public static final fun getPLAYREADY_UUID ()Ljava/util/UUID; public static final fun getPacked (Ljava/lang/String;)Ljava/lang/String; public static final fun getPostForm (Ljava/lang/String;Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static final fun getQualityFromName (Ljava/lang/String;)I public static final fun getSchemaStripRegex ()Lkotlin/text/Regex; + public static final fun getWIDEVINE_DRM_UUID ()Lkotlin/uuid/Uuid; public static final fun getWIDEVINE_UUID ()Ljava/util/UUID; public static final fun httpsify (Ljava/lang/String;)Ljava/lang/String; public static final fun loadExtractor (Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static final fun loadExtractor (Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun loadExtractor$default (Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public static final fun newDrmExtractorLink (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/lagradost/cloudstream3/utils/ExtractorLinkType;Ljava/util/UUID;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static final fun newDrmExtractorLink (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/lagradost/cloudstream3/utils/ExtractorLinkType;Lkotlin/uuid/Uuid;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun newDrmExtractorLink$default (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/lagradost/cloudstream3/utils/ExtractorLinkType;Ljava/util/UUID;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public static final fun newExtractorLink (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/lagradost/cloudstream3/utils/ExtractorLinkType;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun newExtractorLink$default (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/lagradost/cloudstream3/utils/ExtractorLinkType;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; @@ -8968,11 +9053,44 @@ public final class com/lagradost/cloudstream3/utils/SubtitleHelperPlatform_jvmKt public static final fun localizedLanguageName (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; } +public final class com/lagradost/cloudstream3/utils/serializers/FloatAsIntSerializer : kotlinx/serialization/KSerializer { + public static final field INSTANCE Lcom/lagradost/cloudstream3/utils/serializers/FloatAsIntSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Integer; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;I)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +} + +public final class com/lagradost/cloudstream3/utils/serializers/FloatAsLongSerializer : kotlinx/serialization/KSerializer { + public static final field INSTANCE Lcom/lagradost/cloudstream3/utils/serializers/FloatAsLongSerializer; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Long; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public fun serialize (Lkotlinx/serialization/encoding/Encoder;J)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +} + +public abstract class com/lagradost/cloudstream3/utils/serializers/JsonTransformSerializer : kotlinx/serialization/json/JsonTransformingSerializer { + public fun (Lkotlinx/serialization/KSerializer;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;)V + public synthetic fun (Lkotlinx/serialization/KSerializer;Ljava/util/Set;Ljava/util/Set;Ljava/util/Set;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + protected fun transformDeserialize (Lkotlinx/serialization/json/JsonElement;)Lkotlinx/serialization/json/JsonElement; +} + public abstract class com/lagradost/cloudstream3/utils/serializers/NonEmptySerializer : kotlinx/serialization/json/JsonTransformingSerializer { public fun (Lkotlinx/serialization/KSerializer;)V protected fun transformSerialize (Lkotlinx/serialization/json/JsonElement;)Lkotlinx/serialization/json/JsonElement; } +public final class com/lagradost/cloudstream3/utils/serializers/NullableStringSerializer : kotlinx/serialization/KSerializer { + public static final field INSTANCE Lcom/lagradost/cloudstream3/utils/serializers/NullableStringSerializer; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/String; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/String;)V +} + public abstract class com/lagradost/cloudstream3/utils/serializers/WriteOnlySerializer : kotlinx/serialization/json/JsonTransformingSerializer { public fun (Lkotlinx/serialization/KSerializer;Ljava/util/Set;)V protected fun transformSerialize (Lkotlinx/serialization/json/JsonElement;)Lkotlinx/serialization/json/JsonElement; From 282a615f32c2da10e7000ed9bc33458b5438b28e Mon Sep 17 00:00:00 2001 From: Nova Server Date: Mon, 9 Nov 2026 22:55:55 +0530 Subject: [PATCH 3/4] chore: add newDrmExtractorLink to library.api --- library/api/jvm/library.api | 1 + 1 file changed, 1 insertion(+) diff --git a/library/api/jvm/library.api b/library/api/jvm/library.api index 429e3d8e809..dc2cdf24908 100644 --- a/library/api/jvm/library.api +++ b/library/api/jvm/library.api @@ -8298,6 +8298,7 @@ public final class com/lagradost/cloudstream3/utils/ExtractorApiKt { public static final fun newDrmExtractorLink (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/lagradost/cloudstream3/utils/ExtractorLinkType;Ljava/util/UUID;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static final fun newDrmExtractorLink (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/lagradost/cloudstream3/utils/ExtractorLinkType;Lkotlin/uuid/Uuid;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun newDrmExtractorLink$default (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/lagradost/cloudstream3/utils/ExtractorLinkType;Ljava/util/UUID;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public static synthetic fun newDrmExtractorLink$default (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/lagradost/cloudstream3/utils/ExtractorLinkType;Lkotlin/uuid/Uuid;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public static final fun newExtractorLink (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/lagradost/cloudstream3/utils/ExtractorLinkType;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static synthetic fun newExtractorLink$default (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/lagradost/cloudstream3/utils/ExtractorLinkType;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; public static final fun requireReferer (Ljava/lang/String;)Z From e973cb2c514f15530d05b47672e0dae9ac97bc52 Mon Sep 17 00:00:00 2001 From: Nova Server Date: Mon, 9 Nov 2026 23:14:47 +0530 Subject: [PATCH 4/4] fix: resolve label and use HttpURLConnection in ResultViewModel2 --- .../ui/result/ResultViewModel2.kt | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt index f3f65fedcfb..b71a5f0452a 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt @@ -1490,7 +1490,7 @@ class ResultViewModel2 : ViewModel() { } 9999 -> { - val response = currentResponse ?: return@launchSafe + val response = currentResponse ?: return acquireSingleLink( click.data, LOADTYPE_INAPP_DOWNLOAD, @@ -1515,15 +1515,20 @@ class ResultViewModel2 : ViewModel() { link.headers.forEach { (k, v) -> headersJson.put(k, v) } put("headers", headersJson) } - val res = app.post( - "http://192.168.1.9:8765/api/download", - headers = mapOf( - "Authorization" to "Bearer nova-cloudstream-secure-token-2026", - "Content-Type" to "application/json" - ), - data = payload.toString() - ) - res.isSuccessful + val conn = (java.net.URL("http://192.168.1.9:8765/api/download").openConnection() as java.net.HttpURLConnection).apply { + requestMethod = "POST" + setRequestProperty("Authorization", "Bearer nova-cloudstream-secure-token-2026") + setRequestProperty("Content-Type", "application/json") + doOutput = true + connectTimeout = 5000 + readTimeout = 5000 + } + conn.outputStream.use { os -> + os.write(payload.toString().toByteArray(Charsets.UTF_8)) + } + val code = conn.responseCode + conn.disconnect() + code in 200..299 } catch (e: Exception) { com.lagradost.cloudstream3.mvvm.logError(e) false