From e568dd0bbcd4ca260cdf33ccd6b1eaa2c2652657 Mon Sep 17 00:00:00 2001 From: Gauthier Roebroeck Date: Mon, 4 Sep 2023 17:42:55 +0800 Subject: [PATCH] fix: strip accents from series sort title in metadata providers Closes: #1199 --- .../kotlin/org/gotson/komga/domain/service/SeriesLifecycle.kt | 3 +-- .../infrastructure/metadata/comicrack/ComicInfoProvider.kt | 3 ++- .../infrastructure/metadata/epub/EpubMetadataProvider.kt | 3 ++- .../infrastructure/metadata/mylar/MylarSeriesProvider.kt | 3 ++- .../metadata/comicrack/ComicInfoProviderTest.kt | 4 ++-- .../infrastructure/metadata/mylar/MylarSeriesProviderTest.kt | 4 ++-- 6 files changed, 11 insertions(+), 9 deletions(-) diff --git a/komga/src/main/kotlin/org/gotson/komga/domain/service/SeriesLifecycle.kt b/komga/src/main/kotlin/org/gotson/komga/domain/service/SeriesLifecycle.kt index 4e5e400b..acbe611e 100644 --- a/komga/src/main/kotlin/org/gotson/komga/domain/service/SeriesLifecycle.kt +++ b/komga/src/main/kotlin/org/gotson/komga/domain/service/SeriesLifecycle.kt @@ -2,7 +2,6 @@ package org.gotson.komga.domain.service import mu.KotlinLogging import net.greypanther.natsort.CaseInsensitiveSimpleNaturalComparator -import org.apache.commons.lang3.StringUtils import org.gotson.komga.application.events.EventPublisher import org.gotson.komga.application.tasks.TaskEmitter import org.gotson.komga.domain.model.Book @@ -150,7 +149,7 @@ class SeriesLifecycle( seriesMetadataRepository.insert( SeriesMetadata( title = series.name, - titleSort = StringUtils.stripAccents(series.name), + titleSort = series.name.stripAccents(), seriesId = series.id, ), ) diff --git a/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ComicInfoProvider.kt b/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ComicInfoProvider.kt index b263fd1a..b08192c2 100644 --- a/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ComicInfoProvider.kt +++ b/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ComicInfoProvider.kt @@ -18,6 +18,7 @@ import org.gotson.komga.infrastructure.metadata.BookMetadataProvider import org.gotson.komga.infrastructure.metadata.SeriesMetadataFromBookProvider import org.gotson.komga.infrastructure.metadata.comicrack.dto.ComicInfo import org.gotson.komga.infrastructure.metadata.comicrack.dto.Manga +import org.gotson.komga.language.stripAccents import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service import java.net.URI @@ -131,7 +132,7 @@ class ComicInfoProvider( return SeriesMetadataPatch( title = series, - titleSort = series, + titleSort = series?.stripAccents(), status = null, summary = null, readingDirection = readingDirection, diff --git a/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/epub/EpubMetadataProvider.kt b/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/epub/EpubMetadataProvider.kt index 9d438153..58992608 100644 --- a/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/epub/EpubMetadataProvider.kt +++ b/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/epub/EpubMetadataProvider.kt @@ -14,6 +14,7 @@ import org.gotson.komga.domain.model.SeriesMetadataPatch import org.gotson.komga.infrastructure.mediacontainer.EpubExtractor import org.gotson.komga.infrastructure.metadata.BookMetadataProvider import org.gotson.komga.infrastructure.metadata.SeriesMetadataFromBookProvider +import org.gotson.komga.language.stripAccents import org.jsoup.Jsoup import org.jsoup.parser.Parser import org.jsoup.safety.Safelist @@ -107,7 +108,7 @@ class EpubMetadataProvider( return SeriesMetadataPatch( title = series, - titleSort = series, + titleSort = series?.stripAccents(), status = null, readingDirection = direction, publisher = publisher, diff --git a/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/mylar/MylarSeriesProvider.kt b/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/mylar/MylarSeriesProvider.kt index 611a5819..44b10e13 100644 --- a/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/mylar/MylarSeriesProvider.kt +++ b/komga/src/main/kotlin/org/gotson/komga/infrastructure/metadata/mylar/MylarSeriesProvider.kt @@ -11,6 +11,7 @@ import org.gotson.komga.domain.model.Sidecar import org.gotson.komga.infrastructure.metadata.SeriesMetadataProvider import org.gotson.komga.infrastructure.metadata.mylar.dto.Status import org.gotson.komga.infrastructure.sidecar.SidecarSeriesConsumer +import org.gotson.komga.language.stripAccents import org.springframework.stereotype.Service import kotlin.io.path.notExists import org.gotson.komga.infrastructure.metadata.mylar.dto.Series as MylarSeries @@ -43,7 +44,7 @@ class MylarSeriesProvider( return SeriesMetadataPatch( title = title, - titleSort = title, + titleSort = title.stripAccents(), status = when (metadata.status) { Status.Ended -> SeriesMetadata.Status.ENDED Status.Continuing -> SeriesMetadata.Status.ONGOING diff --git a/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ComicInfoProviderTest.kt b/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ComicInfoProviderTest.kt index 24b0f254..8c2058f8 100644 --- a/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ComicInfoProviderTest.kt +++ b/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/comicrack/ComicInfoProviderTest.kt @@ -343,7 +343,7 @@ class ComicInfoProviderTest { @Test fun `given comicInfo when getting series metadata then metadata patch is valid`() { val comicInfo = ComicInfo().apply { - series = "series" + series = "séries" seriesGroup = "multiple,collections" publisher = "publisher" ageRating = AgeRating.MA_15 @@ -358,7 +358,7 @@ class ComicInfoProviderTest { val patch = comicInfoProvider.getSeriesMetadataFromBook(BookWithMedia(book, media), library)!! with(patch) { - assertThat(title).isEqualTo("series") + assertThat(title).isEqualTo("séries") assertThat(titleSort).isEqualTo("series") assertThat(status).isNull() assertThat(collections).containsExactlyInAnyOrder("collections", "multiple") diff --git a/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/mylar/MylarSeriesProviderTest.kt b/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/mylar/MylarSeriesProviderTest.kt index 73daf961..c821000c 100644 --- a/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/mylar/MylarSeriesProviderTest.kt +++ b/komga/src/test/kotlin/org/gotson/komga/infrastructure/metadata/mylar/MylarSeriesProviderTest.kt @@ -37,7 +37,7 @@ class MylarSeriesProviderTest { type = "comicSeries", publisher = "DC", imprint = "Vertigo", - name = "Sandman", + name = "Sàndman", comicid = "12345", year = 1990, descriptionText = "Sandman comics", @@ -57,7 +57,7 @@ class MylarSeriesProviderTest { val patch = mylarSeriesProvider.getSeriesMetadata(series)!! with(patch) { - assertThat(title).isEqualTo("Sandman") + assertThat(title).isEqualTo("Sàndman") assertThat(titleSort).isEqualTo("Sandman") assertThat(status).isEqualTo(SeriesMetadata.Status.ENDED) assertThat(summary).isEqualTo("Sandman comics formatted")