Skip to content

Commit 9b71819

Browse files
committed
discovery: fix tlc plugin, remove unsupported homepage entries
1 parent d20a001 commit 9b71819

File tree

3 files changed

+27
-23
lines changed

3 files changed

+27
-23
lines changed

Discovery/src/main/kotlin/com/bnyro/Dmax.kt

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,20 @@ open class Dmax : MainAPI() {
2626

2727
override var name: String = "Dmax"
2828
override var mainUrl: String = "https://dmax.de"
29-
open var serviceIdentifier: String = "dmax"
3029
open var apiUrl: String = "https://eu1-prod.disco-api.com"
3130
open var metadataApiUrl: String = "https://de-api.loma-cms.com"
32-
open var mediathekSlug: String = "sendungen"
3331

34-
private suspend fun obtainToken(realm: String): String {
32+
// service specific configuration
33+
open var serviceIdentifier: String = "dmax" // used for metadataApiUrl
34+
open var mediathekSlug: String = "sendungen" // used for metadataApiUrl
35+
open var apiTokenRealm = "dmaxde" // used for obtaining tokens from apiUrl
36+
37+
private suspend fun obtainApiToken(): String {
3538
return app.get(
36-
"$apiUrl/token?realm=$realm", headers = mapOf(
39+
"$apiUrl/token?realm=$apiTokenRealm", headers = mapOf(
3740
"X-Device-Info" to "STONEJS/1 (Unknown/Unknown; Linux/undefined; Unknown)",
3841
"X-disco-client" to "WEB:UNKNOWN:wbdatv:2.1.9",
39-
"X-disco-params" to "realm=$realm",
42+
"X-disco-params" to "realm=$apiTokenRealm",
4043
)
4144
).parsed<TokenResponse>().data.attributes.token
4245
}
@@ -46,12 +49,15 @@ open class Dmax : MainAPI() {
4649
app.get("$metadataApiUrl/feloma/page/homepage/?environment=$serviceIdentifier&v=2")
4750
.parsed<MediaResult>()
4851

49-
val pages = response.blocks.filter { it.items.isNotEmpty() }.map { block ->
50-
HomePageList(
51-
name = block.title.orEmpty(),
52-
list = block.items.filter { it.videoType != "CLIP" }.map { it.toSearchResponse() }
53-
)
54-
}.filter { it.list.isNotEmpty() }
52+
val pages =
53+
response.blocks.filter { it.items.isNotEmpty() }
54+
.map { block ->
55+
HomePageList(
56+
name = block.title.orEmpty(),
57+
list = block.items.filter { it.pageType == "showpage" }
58+
.map { it.toSearchResponse() }
59+
)
60+
}.filter { it.list.isNotEmpty() }
5561

5662
return newHomePageResponse(pages, hasNext = false)
5763
}
@@ -67,7 +73,7 @@ open class Dmax : MainAPI() {
6773
private fun MediaResult.toSearchResponse(): SearchResponse {
6874
return newMovieSearchResponse(
6975
name = title,
70-
url = "$mainUrl/mediathek/$slug",
76+
url = "$mainUrl/$mediathekSlug/$slug",
7177
type = TvType.Movie
7278
) {
7379
this.posterUrl = image?.url
@@ -78,7 +84,7 @@ open class Dmax : MainAPI() {
7884
private fun EpisodeInfo.toSearchResponse(): SearchResponse {
7985
return newMovieSearchResponse(
8086
name = title.orEmpty(),
81-
url = fixUrl(link?.url ?: "/mediathek/${alternateId ?: url}"),
87+
url = fixUrl(link?.url ?: "/$mediathekSlug/${alternateId ?: url}"),
8288
type = TvType.Movie
8389
) {
8490
this.posterUrl = poster?.src ?: image?.url
@@ -87,7 +93,7 @@ open class Dmax : MainAPI() {
8793
}
8894

8995
override suspend fun load(url: String): LoadResponse? {
90-
val slug = url.substringAfterLast("/")
96+
val slug = url.removeSuffix("/").substringAfterLast("/")
9197
val response =
9298
app.get("$metadataApiUrl/feloma/page/$slug/?environment=$serviceIdentifier&parent_slug=$mediathekSlug&v=2")
9399
.parsed<MediaResult>()
@@ -145,7 +151,7 @@ open class Dmax : MainAPI() {
145151
): Boolean {
146152
val videoId = AppUtils.parseJson<StreamInfo>(data).id
147153

148-
val authToken = obtainToken("dmaxde")
154+
val authToken = obtainApiToken()
149155

150156
val response = app.post(
151157
"$apiUrl/playback/v3/videoPlaybackInfo",
@@ -227,6 +233,7 @@ open class Dmax : MainAPI() {
227233

228234
private data class Block(
229235
val title: String?,
236+
val type: String?,
230237
val videoId: String?,
231238
val showId: String?,
232239
val items: List<EpisodeInfo> = emptyList()
@@ -252,6 +259,7 @@ open class Dmax : MainAPI() {
252259
val image: Image?,
253260
val link: Link?,
254261
val url: String?,
262+
val pageType: String?
255263
)
256264

257265
private data class Link(
@@ -340,9 +348,7 @@ open class Dmax : MainAPI() {
340348
)
341349

342350
private data class VendorAttributes(
343-
val breaks: List<Any?>,
344351
val interstitialUrl: String,
345-
val nonLinearAds: List<Any?>,
346352
val pingUrl: String,
347353
val sessionId: String,
348354
)
@@ -361,7 +367,6 @@ open class Dmax : MainAPI() {
361367
private data class Protection(
362368
val clearkeyEnabled: Boolean,
363369
val drmEnabled: Boolean,
364-
val schemes: Any?,
365370
)
366371

367372
private data class UserInfo(
@@ -376,6 +381,3 @@ open class Dmax : MainAPI() {
376381
val id: String
377382
)
378383
}
379-
380-
381-

Discovery/src/main/kotlin/com/bnyro/TLC.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ class TLC : Dmax() {
55
override var mainUrl: String = "https://tlc.de"
66
override var serviceIdentifier: String = "tlc"
77
override var mediathekSlug: String = "sendungen"
8-
}
8+
override var apiTokenRealm: String = "tlcde"
9+
}

Discovery/src/main/kotlin/com/bnyro/Tele5.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ class Tele5 : Dmax() {
55
override var mainUrl: String = "https://tele5.de"
66
override var serviceIdentifier: String = "tele5"
77
override var mediathekSlug: String = "mediathek"
8-
}
8+
override var apiTokenRealm: String = "dmaxde"
9+
}

0 commit comments

Comments
 (0)