Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 67 additions & 11 deletions library/api/jvm/library.api
Original file line number Diff line number Diff line change
Expand Up @@ -1968,20 +1968,37 @@ public class com/lagradost/cloudstream3/extractors/Dailymotion : com/lagradost/c
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/Dailymotion$MetaData {
public final class com/lagradost/cloudstream3/extractors/Dailymotion$Metadata {
public static final field Companion Lcom/lagradost/cloudstream3/extractors/Dailymotion$Metadata$Companion;
public fun <init> (Ljava/util/Map;Lcom/lagradost/cloudstream3/extractors/Dailymotion$SubtitlesWrapper;)V
public final fun component1 ()Ljava/util/Map;
public final fun component2 ()Lcom/lagradost/cloudstream3/extractors/Dailymotion$SubtitlesWrapper;
public final fun copy (Ljava/util/Map;Lcom/lagradost/cloudstream3/extractors/Dailymotion$SubtitlesWrapper;)Lcom/lagradost/cloudstream3/extractors/Dailymotion$MetaData;
public static synthetic fun copy$default (Lcom/lagradost/cloudstream3/extractors/Dailymotion$MetaData;Ljava/util/Map;Lcom/lagradost/cloudstream3/extractors/Dailymotion$SubtitlesWrapper;ILjava/lang/Object;)Lcom/lagradost/cloudstream3/extractors/Dailymotion$MetaData;
public final fun copy (Ljava/util/Map;Lcom/lagradost/cloudstream3/extractors/Dailymotion$SubtitlesWrapper;)Lcom/lagradost/cloudstream3/extractors/Dailymotion$Metadata;
public static synthetic fun copy$default (Lcom/lagradost/cloudstream3/extractors/Dailymotion$Metadata;Ljava/util/Map;Lcom/lagradost/cloudstream3/extractors/Dailymotion$SubtitlesWrapper;ILjava/lang/Object;)Lcom/lagradost/cloudstream3/extractors/Dailymotion$Metadata;
public fun equals (Ljava/lang/Object;)Z
public final fun getQualities ()Ljava/util/Map;
public final fun getSubtitles ()Lcom/lagradost/cloudstream3/extractors/Dailymotion$SubtitlesWrapper;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final synthetic class com/lagradost/cloudstream3/extractors/Dailymotion$Metadata$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Lcom/lagradost/cloudstream3/extractors/Dailymotion$Metadata$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/lagradost/cloudstream3/extractors/Dailymotion$Metadata;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/lagradost/cloudstream3/extractors/Dailymotion$Metadata;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}

public final class com/lagradost/cloudstream3/extractors/Dailymotion$Metadata$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}

public final class com/lagradost/cloudstream3/extractors/Dailymotion$Quality {
public static final field Companion Lcom/lagradost/cloudstream3/extractors/Dailymotion$Quality$Companion;
public fun <init> (Ljava/lang/String;Ljava/lang/String;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Ljava/lang/String;
Expand All @@ -1994,7 +2011,23 @@ public final class com/lagradost/cloudstream3/extractors/Dailymotion$Quality {
public fun toString ()Ljava/lang/String;
}

public final synthetic class com/lagradost/cloudstream3/extractors/Dailymotion$Quality$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Lcom/lagradost/cloudstream3/extractors/Dailymotion$Quality$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/lagradost/cloudstream3/extractors/Dailymotion$Quality;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/lagradost/cloudstream3/extractors/Dailymotion$Quality;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}

public final class com/lagradost/cloudstream3/extractors/Dailymotion$Quality$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}

public final class com/lagradost/cloudstream3/extractors/Dailymotion$SubtitleData {
public static final field Companion Lcom/lagradost/cloudstream3/extractors/Dailymotion$SubtitleData$Companion;
public fun <init> (Ljava/lang/String;Ljava/util/List;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Ljava/util/List;
Expand All @@ -2007,7 +2040,23 @@ public final class com/lagradost/cloudstream3/extractors/Dailymotion$SubtitleDat
public fun toString ()Ljava/lang/String;
}

public final synthetic class com/lagradost/cloudstream3/extractors/Dailymotion$SubtitleData$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Lcom/lagradost/cloudstream3/extractors/Dailymotion$SubtitleData$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/lagradost/cloudstream3/extractors/Dailymotion$SubtitleData;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/lagradost/cloudstream3/extractors/Dailymotion$SubtitleData;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}

public final class com/lagradost/cloudstream3/extractors/Dailymotion$SubtitleData$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}

public final class com/lagradost/cloudstream3/extractors/Dailymotion$SubtitlesWrapper {
public static final field Companion Lcom/lagradost/cloudstream3/extractors/Dailymotion$SubtitlesWrapper$Companion;
public fun <init> (ZLjava/util/Map;)V
public final fun component1 ()Z
public final fun component2 ()Ljava/util/Map;
Expand All @@ -2020,6 +2069,21 @@ public final class com/lagradost/cloudstream3/extractors/Dailymotion$SubtitlesWr
public fun toString ()Ljava/lang/String;
}

public final synthetic class com/lagradost/cloudstream3/extractors/Dailymotion$SubtitlesWrapper$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Lcom/lagradost/cloudstream3/extractors/Dailymotion$SubtitlesWrapper$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/lagradost/cloudstream3/extractors/Dailymotion$SubtitlesWrapper;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/lagradost/cloudstream3/extractors/Dailymotion$SubtitlesWrapper;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}

public final class com/lagradost/cloudstream3/extractors/Dailymotion$SubtitlesWrapper$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}

public final class com/lagradost/cloudstream3/extractors/DatabaseGdrive : com/lagradost/cloudstream3/extractors/Gdriveplayer {
public fun <init> ()V
public fun getMainUrl ()Ljava/lang/String;
Expand Down Expand Up @@ -2435,8 +2499,6 @@ public class com/lagradost/cloudstream3/extractors/GDMirrorbot : com/lagradost/c
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 fun setMainUrl (Ljava/lang/String;)V
public fun setName (Ljava/lang/String;)V
}

public class com/lagradost/cloudstream3/extractors/GUpload : com/lagradost/cloudstream3/utils/ExtractorApi {
Expand Down Expand Up @@ -3701,7 +3763,6 @@ public final class com/lagradost/cloudstream3/extractors/Simpulumlamerop : com/l
public fun <init> ()V
public fun getMainUrl ()Ljava/lang/String;
public fun getName ()Ljava/lang/String;
public fun setMainUrl (Ljava/lang/String;)V
}

public class com/lagradost/cloudstream3/extractors/Slmaxed : com/lagradost/cloudstream3/utils/ExtractorApi {
Expand Down Expand Up @@ -4203,9 +4264,6 @@ public final class com/lagradost/cloudstream3/extractors/Techinmind : com/lagrad
public fun getMainUrl ()Ljava/lang/String;
public fun getName ()Ljava/lang/String;
public fun getRequiresReferer ()Z
public fun setMainUrl (Ljava/lang/String;)V
public fun setName (Ljava/lang/String;)V
public fun setRequiresReferer (Z)V
}

public final class com/lagradost/cloudstream3/extractors/Tubeless : com/lagradost/cloudstream3/extractors/Voe {
Expand Down Expand Up @@ -4296,7 +4354,6 @@ public final class com/lagradost/cloudstream3/extractors/Urochsunloath : com/lag
public fun <init> ()V
public fun getMainUrl ()Ljava/lang/String;
public fun getName ()Ljava/lang/String;
public fun setMainUrl (Ljava/lang/String;)V
}

public class com/lagradost/cloudstream3/extractors/Userload : com/lagradost/cloudstream3/utils/ExtractorApi {
Expand Down Expand Up @@ -4743,7 +4800,6 @@ public final class com/lagradost/cloudstream3/extractors/Yipsu : com/lagradost/c
public fun <init> ()V
public fun getMainUrl ()Ljava/lang/String;
public fun getName ()Ljava/lang/String;
public fun setMainUrl (Ljava/lang/String;)V
}

public class com/lagradost/cloudstream3/extractors/YourUpload : com/lagradost/cloudstream3/utils/ExtractorApi {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
package com.lagradost.cloudstream3.extractors

import com.google.gson.Gson
import com.fasterxml.jackson.annotation.JsonProperty
import com.lagradost.cloudstream3.SubtitleFile
import com.lagradost.cloudstream3.app
import com.lagradost.cloudstream3.newSubtitleFile
import com.lagradost.cloudstream3.utils.AppUtils.parseJson
import com.lagradost.cloudstream3.utils.ExtractorApi
import com.lagradost.cloudstream3.utils.ExtractorLink
import com.lagradost.cloudstream3.utils.newExtractorLink
import com.lagradost.cloudstream3.utils.ExtractorLinkType
import io.ktor.http.Url
import io.ktor.http.decodeURLPart
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

class Geodailymotion : Dailymotion() {
override val name = "GeoDailymotion"
Expand All @@ -28,25 +31,25 @@ open class Dailymotion : ExtractorApi() {
url: String,
referer: String?,
subtitleCallback: (SubtitleFile) -> Unit,
callback: (ExtractorLink) -> Unit
callback: (ExtractorLink) -> Unit,
) {
val embedUrl = getEmbedUrl(url) ?: return
val id = getVideoId(embedUrl) ?: return
val metaDataUrl = "$baseUrl/player/metadata/video/$id"

val response = app.get(metaDataUrl, referer = embedUrl).text
val gson = Gson()
val meta = gson.fromJson(response, MetaData::class.java)
val metadataUrl = "$baseUrl/player/metadata/video/$id"

val response = app.get(metadataUrl, referer = embedUrl).text
val meta = parseJson<Metadata>(response)
meta.qualities?.get("auto")?.forEach { quality ->
val videoUrl = quality.url
if (!videoUrl.isNullOrEmpty() && videoUrl.contains(".m3u8")) {
callback.invoke(newExtractorLink(
name,
name,
videoUrl,
ExtractorLinkType.M3U8
))
callback.invoke(
newExtractorLink(
name,
name,
videoUrl,
ExtractorLinkType.M3U8,
)
)
}
}

Expand All @@ -55,7 +58,7 @@ open class Dailymotion : ExtractorApi() {
subtitleCallback(
newSubtitleFile(
subData.label,
subUrl
subUrl,
)
)
}
Expand All @@ -68,6 +71,7 @@ open class Dailymotion : ExtractorApi() {
val videoId = url.substringAfter("video=")
return "$baseUrl/embed/video/$videoId"
}

return null
}

Expand All @@ -77,23 +81,27 @@ open class Dailymotion : ExtractorApi() {
return if (id.matches(videoIdRegex)) id else null
}

data class MetaData(
val qualities: Map<String, List<Quality>>?,
val subtitles: SubtitlesWrapper?
@Serializable
data class Metadata(
@JsonProperty("qualities") @SerialName("qualities") val qualities: Map<String, List<Quality>>?,
@JsonProperty("subtitles") @SerialName("subtitles") val subtitles: SubtitlesWrapper?,
)

@Serializable
data class Quality(
val type: String?,
val url: String?
@JsonProperty("type") @SerialName("type") val type: String?,
@JsonProperty("url") @SerialName("url") val url: String?,
)

@Serializable
data class SubtitlesWrapper(
val enable: Boolean,
val data: Map<String, SubtitleData>?
@JsonProperty("enable") @SerialName("enable") val enable: Boolean,
@JsonProperty("data") @SerialName("data") val data: Map<String, SubtitleData>?,
)

@Serializable
data class SubtitleData(
val label: String,
val urls: List<String>
@JsonProperty("label") @SerialName("label") val label: String,
@JsonProperty("urls") @SerialName("urls") val urls: List<String>,
)
}
}
Loading