diff --git a/data/src/main/java/org/shirabox/data/content/anime/animelib/AniLibData.kt b/data/src/main/java/org/shirabox/data/content/anime/animelib/AniLibData.kt index 6e18218..83f2ddb 100644 --- a/data/src/main/java/org/shirabox/data/content/anime/animelib/AniLibData.kt +++ b/data/src/main/java/org/shirabox/data/content/anime/animelib/AniLibData.kt @@ -51,10 +51,22 @@ data class Player( val translationType: TranslationType, @SerialName("created_at") val createdAt: String, + @SerialName("timecode") + val timeCode: List, @SerialName("video") val video: Video? = null ) +@Serializable +data class TimeCode( + @SerialName("type") + val type: String, + @SerialName("from") + val from: String, + @SerialName("to") + val to: String +) + @Serializable data class Subtitle( @SerialName("filename") diff --git a/data/src/main/java/org/shirabox/data/content/anime/animelib/AniLibRepository.kt b/data/src/main/java/org/shirabox/data/content/anime/animelib/AniLibRepository.kt index c0e24fe..f647598 100644 --- a/data/src/main/java/org/shirabox/data/content/anime/animelib/AniLibRepository.kt +++ b/data/src/main/java/org/shirabox/data/content/anime/animelib/AniLibRepository.kt @@ -52,6 +52,7 @@ class AniLibRepository : AbstractContentRepository( }.singleOrNull()?.filter { it.number.toInt() in range } val formatter = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'", Locale.getDefault()) + val timeCodeFormatter = SimpleDateFormat("mm:ss", Locale.getDefault()) episodesHeaders!!.forEach { headers -> @@ -91,10 +92,12 @@ class AniLibRepository : AbstractContentRepository( val entities = filteredPlayers.map { player -> val createdAt = formatter.parse(player.createdAt)?.time ?: System.currentTimeMillis() val streams = player.video!!.quality - val logoUrl = when(player.team.cover.filename) { - null -> "" - else -> "$url${player.team.cover.thumbnail}" - } + val timeCodes = player.timeCode.firstOrNull { it.type == "opening" }?.let { + val start = timeCodeFormatter.parse(it.from)?.time ?: -1L + val end = timeCodeFormatter.parse(it.to)?.time ?: -1L + + start to end + } ?: (-1L to -1L) val logoUrl = player.team.cover.default EpisodeEntity( @@ -104,6 +107,7 @@ class AniLibRepository : AbstractContentRepository( name = name, episode = number, uploadTimestamp = createdAt, + videoMarkers = timeCodes, videos = streams.associate { Quality.valueOfInt(it.quality) to VIDEO_HOST_ENDPOINT+it.href },