Skip to content

Commit 3ed3c0c

Browse files
committed
✨ Added duration to anime, episodes ✨
1 parent 2106335 commit 3ed3c0c

File tree

7 files changed

+24
-3
lines changed

7 files changed

+24
-3
lines changed

src/main/kotlin/club/anifox/backend/domain/dto/anime/kitsu/episode/KitsuEpisodeAttributesDto.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ data class KitsuEpisodeAttributesDto(
1515
val relativeNumber: Int? = null,
1616
@SerialName("airdate")
1717
val airDate: String? = null,
18+
@SerialName("length")
19+
val length: Int? = null,
1820
@SerialName("thumbnail")
1921
val thumbnail: KitsuEpisodeThumbnail? = null,
2022
)

src/main/kotlin/club/anifox/backend/jpa/entity/anime/AnimeTable.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ data class AnimeTable(
7878
@BatchSize(size = 10)
7979
@JoinTable(schema = "anime")
8080
val episodes: MutableSet<AnimeEpisodeTable> = mutableSetOf(),
81+
@Column(nullable = true)
82+
var duration: Int? = null,
8183
@OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.ALL], orphanRemoval = true)
8284
@BatchSize(size = 10)
8385
@JoinTable(schema = "anime")

src/main/kotlin/club/anifox/backend/jpa/entity/anime/episodes/AnimeEpisodeTable.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ data class AnimeEpisodeTable(
2727
var description: String? = "",
2828
@Column(nullable = false)
2929
val number: Int = 0,
30+
@Column(nullable = true)
31+
val duration: Int? = null,
3032
@Column(nullable = false)
3133
var image: String = "",
3234
@Column(nullable = true)

src/main/kotlin/club/anifox/backend/service/anime/components/episodes/EpisodesComponent.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,7 @@ class EpisodesComponent {
338338
description = descriptionRu,
339339
descriptionEn = kitsuEpisode?.attributes?.description.orEmpty(),
340340
number = kitsuNumber,
341+
duration = kitsuEpisode?.attributes?.length,
341342
image = imageEpisode.takeIf { it.length > 5 } ?: imageDefault,
342343
filler = jikanEpisode?.filler ?: false,
343344
recap = jikanEpisode?.recap ?: false,

src/main/kotlin/club/anifox/backend/service/anime/components/kodik/KodikComponent.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import io.ktor.http.*
1010
import org.springframework.beans.factory.annotation.Autowired
1111
import org.springframework.beans.factory.annotation.Value
1212
import org.springframework.stereotype.Component
13-
import java.time.LocalDate
1413

1514
@Component
1615
class KodikComponent {

src/main/kotlin/club/anifox/backend/service/anime/components/parser/AnimeParseComponent.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ class AnimeParseComponent(
170170
fun integrations() {
171171
runBlocking {
172172
val integrationJobs = listOf(
173-
async { integrateSimilarRelatedFranchise() },
173+
// async { integrateSimilarRelatedFranchise() },
174174
async { integrateCharacters() },
175175
)
176176
integrationJobs.awaitAll()
@@ -791,9 +791,11 @@ class AnimeParseComponent(
791791
)
792792

793793
val translationsCountReady = episodesComponent.translationsCount(episodesReady)
794-
795794
val translations = translationsCountReady.map { it.translation }
796795

796+
val durations = episodesReady.map { it.duration ?: 0 }
797+
val duration = durations.sumOf { it }
798+
797799
val videos = try {
798800
videosShikimoriDeferred.await().let { videosList ->
799801
animeVideoRepository.saveAll(
@@ -927,6 +929,11 @@ class AnimeParseComponent(
927929
medium = images.medium,
928930
cover = images.cover ?: "",
929931
),
932+
duration = if (episodesReady.size * 16 < duration && status == AnimeStatus.Released) {
933+
duration
934+
} else {
935+
null
936+
},
930937
screenshots = screenshots,
931938
shikimoriRating = shikimoriRating,
932939
shikimoriVotes = userRatesStats,

src/main/kotlin/club/anifox/backend/service/anime/components/update/AnimeUpdateComponent.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,14 @@ class AnimeUpdateComponent(
228228

229229
translationsCountEpisodes.clear()
230230
translationsCountEpisodes.addAll(translationsCount)
231+
232+
this.duration = this.duration?.let { duration ->
233+
if (this.status == AnimeStatus.Released && episodes.size * 16 < duration) {
234+
duration
235+
} else {
236+
null
237+
}
238+
}
231239
}
232240
} catch (e: Exception) {
233241
logError(anime.shikimoriId, "EPISODES_UPDATE_FAILED", e.message)

0 commit comments

Comments
 (0)