Skip to content
Open
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
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ import com.lagradost.cloudstream3.utils.AppUtils.parseJson
import com.lagradost.cloudstream3.utils.AppUtils.toJson
import com.lagradost.cloudstream3.utils.SubtitleHelper.fromCodeToLangTagIETF
import com.lagradost.cloudstream3.utils.SubtitleHelper.fromCodeToOpenSubtitlesTag
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

class OpenSubtitlesApi : SubtitleAPI() {
override val name = "OpenSubtitles"
Expand Down Expand Up @@ -97,7 +99,7 @@ class OpenSubtitlesApi : SubtitleAPI() {
/**
* Fetch subtitles using token authenticated on previous method (see authorize).
* Returns list of Subtitles which user can select to download (see load).
* */
*/
override suspend fun search(
auth : AuthData?,
query: AbstractSubtitleEntities.SubtitleSearch
Expand Down Expand Up @@ -177,16 +179,15 @@ class OpenSubtitlesApi : SubtitleAPI() {
return results
}

/*
Process data returned from search.
Returns string url for the subtitle file.
*/

/**
* Process data returned from search.
* Returns string url for the subtitle file.
*/
override suspend fun load(
auth : AuthData?,
subtitle: AbstractSubtitleEntities.SubtitleEntity
): String? {
if(auth == null) return null
if (auth == null) return null
throwIfCantDoRequest()

val req = app.post(
Expand Down Expand Up @@ -218,57 +219,64 @@ class OpenSubtitlesApi : SubtitleAPI() {
return null
}

@Serializable
data class OAuthToken(
@JsonProperty("token") var token: String? = null,
@JsonProperty("status") var status: Int? = null
@SerialName("token") var token: String? = null,
@SerialName("status") var status: Int? = null,
)

@Serializable
data class Results(
@JsonProperty("data") var data: List<ResultData>? = listOf()
@SerialName("data") var data: List<ResultData>? = listOf(),
)

@Serializable
data class ResultData(
@JsonProperty("id") var id: String? = null,
@JsonProperty("type") var type: String? = null,
@JsonProperty("attributes") var attributes: ResultAttributes? = ResultAttributes()
@SerialName("id") var id: String? = null,
@SerialName("type") var type: String? = null,
@SerialName("attributes") var attributes: ResultAttributes? = ResultAttributes(),
)

@Serializable
data class ResultAttributes(
@JsonProperty("subtitle_id") var subtitleId: String? = null,
@JsonProperty("language") var language: String? = null,
@JsonProperty("release") var release: String? = null,
@JsonProperty("url") var url: String? = null,
@JsonProperty("files") var files: List<ResultFiles>? = listOf(),
@JsonProperty("feature_details") var featDetails: ResultFeatureDetails? = ResultFeatureDetails(),
@JsonProperty("hearing_impaired") var hearingImpaired: Boolean? = null,
@JsonProperty("subtitle_id") @SerialName("subtitle_id") var subtitleId: String? = null,
@SerialName("language") var language: String? = null,
@SerialName("release") var release: String? = null,
@SerialName("url") var url: String? = null,
@SerialName("files") var files: List<ResultFiles>? = listOf(),
@JsonProperty("feature_details") @SerialName("feature_details") var featDetails: ResultFeatureDetails? = ResultFeatureDetails(),
@JsonProperty("hearing_impaired") @SerialName("hearing_impaired") var hearingImpaired: Boolean? = null,
)

@Serializable
data class ResultFiles(
@JsonProperty("file_id") var fileId: Int? = null,
@JsonProperty("file_name") var fileName: String? = null
@JsonProperty("file_id") @SerialName("file_id") var fileId: Int? = null,
@JsonProperty("file_name") @SerialName("file_name") var fileName: String? = null,
)

@Serializable
data class ResultDownloadLink(
@JsonProperty("link") var link: String? = null,
@JsonProperty("file_name") var fileName: String? = null,
@JsonProperty("requests") var requests: Int? = null,
@JsonProperty("remaining") var remaining: Int? = null,
@JsonProperty("message") var message: String? = null,
@JsonProperty("reset_time") var resetTime: String? = null,
@JsonProperty("reset_time_utc") var resetTimeUtc: String? = null
@SerialName("link") var link: String? = null,
@JsonProperty("file_name") @SerialName("file_name") var fileName: String? = null,
@SerialName("requests") var requests: Int? = null,
@SerialName("remaining") var remaining: Int? = null,
@SerialName("message") var message: String? = null,
@JsonProperty("reset_time") @SerialName("reset_time") var resetTime: String? = null,
@JsonProperty("reset_time_utc") @SerialName("reset_time_utc") var resetTimeUtc: String? = null,
)

@Serializable
data class ResultFeatureDetails(
@JsonProperty("year") var year: Int? = null,
@JsonProperty("title") var title: String? = null,
@JsonProperty("movie_name") var movieName: String? = null,
@JsonProperty("imdb_id") var imdbId: Int? = null,
@JsonProperty("tmdb_id") var tmdbId: Int? = null,
@JsonProperty("season_number") var seasonNumber: Int? = null,
@JsonProperty("episode_number") var episodeNumber: Int? = null,
@JsonProperty("parent_imdb_id") var parentImdbId: Int? = null,
@JsonProperty("parent_title") var parentTitle: String? = null,
@JsonProperty("parent_tmdb_id") var parentTmdbId: Int? = null,
@JsonProperty("parent_feature_id") var parentFeatureId: Int? = null
@SerialName("year") var year: Int? = null,
@SerialName("title") var title: String? = null,
@JsonProperty("movie_name") @SerialName("movie_name") var movieName: String? = null,
@JsonProperty("imdb_id") @SerialName("imdb_id") var imdbId: Int? = null,
@JsonProperty("tmdb_id") @SerialName("tmdb_id") var tmdbId: Int? = null,
@JsonProperty("season_number") @SerialName("season_number") var seasonNumber: Int? = null,
@JsonProperty("episode_number") @SerialName("episode_number") var episodeNumber: Int? = null,
@JsonProperty("parent_imdb_id") @SerialName("parent_imdb_id") var parentImdbId: Int? = null,
@JsonProperty("parent_title") @SerialName("parent_title") var parentTitle: String? = null,
@JsonProperty("parent_tmdb_id") @SerialName("parent_tmdb_id") var parentTmdbId: Int? = null,
@JsonProperty("parent_feature_id") @SerialName("parent_feature_id") var parentFeatureId: Int? = null,
)
}