From 241479292ae1adc50ab45b03e39ef27d25f7847a Mon Sep 17 00:00:00 2001 From: Gauthier Roebroeck Date: Wed, 25 Mar 2020 11:28:40 +0800 Subject: [PATCH] fix(opds): add summary and authors to book entries --- .../komga/interfaces/opds/OpdsController.kt | 8 ++- .../komga/interfaces/opds/dto/OpdsAuthor.kt | 8 +-- .../komga/interfaces/opds/dto/OpdsEntry.kt | 51 ++++++++++--------- 3 files changed, 39 insertions(+), 28 deletions(-) diff --git a/komga/src/main/kotlin/org/gotson/komga/interfaces/opds/OpdsController.kt b/komga/src/main/kotlin/org/gotson/komga/interfaces/opds/OpdsController.kt index aef1a74f8..0cf567b4c 100644 --- a/komga/src/main/kotlin/org/gotson/komga/interfaces/opds/OpdsController.kt +++ b/komga/src/main/kotlin/org/gotson/komga/interfaces/opds/OpdsController.kt @@ -254,7 +254,13 @@ class OpdsController( title = metadata.title, updated = lastModifiedDate?.atZone(ZoneId.systemDefault()) ?: ZonedDateTime.now(), id = id.toString(), - content = "${metadata.title} (${fileExtension().toUpperCase()}) (${fileSizeHumanReadable()})", + content = run { + var content = "${fileExtension().toUpperCase()} - ${fileSizeHumanReadable()}" + if (metadata.summary.isNotBlank()) + content += "\n\n${metadata.summary}" + content + }, + authors = metadata.authors.map { OpdsAuthor(it.name) }, links = listOf( OpdsLinkImageThumbnail("image/jpeg", "${ROUTE_BASE}books/$id/thumbnail"), OpdsLinkImage(media.pages[0].mediaType, "${ROUTE_BASE}books/$id/pages/1"), diff --git a/komga/src/main/kotlin/org/gotson/komga/interfaces/opds/dto/OpdsAuthor.kt b/komga/src/main/kotlin/org/gotson/komga/interfaces/opds/dto/OpdsAuthor.kt index 8250a37c6..3be59ac77 100644 --- a/komga/src/main/kotlin/org/gotson/komga/interfaces/opds/dto/OpdsAuthor.kt +++ b/komga/src/main/kotlin/org/gotson/komga/interfaces/opds/dto/OpdsAuthor.kt @@ -1,12 +1,14 @@ package org.gotson.komga.interfaces.opds.dto +import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty import java.net.URI data class OpdsAuthor( - @JacksonXmlProperty(namespace = ATOM) + @JacksonXmlProperty(namespace = ATOM) val name: String, - @JacksonXmlProperty(namespace = ATOM) - val uri: URI + @JsonInclude(JsonInclude.Include.NON_NULL) + @JacksonXmlProperty(namespace = ATOM) + val uri: URI? = null ) diff --git a/komga/src/main/kotlin/org/gotson/komga/interfaces/opds/dto/OpdsEntry.kt b/komga/src/main/kotlin/org/gotson/komga/interfaces/opds/dto/OpdsEntry.kt index 955e77e78..a0355c394 100644 --- a/komga/src/main/kotlin/org/gotson/komga/interfaces/opds/dto/OpdsEntry.kt +++ b/komga/src/main/kotlin/org/gotson/komga/interfaces/opds/dto/OpdsEntry.kt @@ -7,39 +7,42 @@ import java.time.ZonedDateTime @JsonInclude(JsonInclude.Include.NON_NULL) abstract class OpdsEntry( - @get:JacksonXmlProperty(namespace = ATOM) - val title: String, + @get:JacksonXmlProperty(namespace = ATOM) + val title: String, - @get:JacksonXmlProperty(namespace = ATOM) - val updated: ZonedDateTime, + @get:JacksonXmlProperty(namespace = ATOM) + val updated: ZonedDateTime, - @get:JacksonXmlProperty(namespace = ATOM) - val id: String, + @get:JacksonXmlProperty(namespace = ATOM) + val id: String, - @get:JacksonXmlProperty(namespace = ATOM) - val content: String -) + content: String +) { + @get:JacksonXmlProperty(namespace = ATOM) + val content: String = content.replace("\n", "
") +} class OpdsEntryNavigation( - title: String, - updated: ZonedDateTime, - id: String, - content: String, + title: String, + updated: ZonedDateTime, + id: String, + content: String, - @JacksonXmlProperty(namespace = ATOM) - val link: OpdsLink + @JacksonXmlProperty(namespace = ATOM) + val link: OpdsLink ) : OpdsEntry(title, updated, id, content) class OpdsEntryAcquisition( - title: String, - updated: ZonedDateTime, - id: String, - content: String, + title: String, + updated: ZonedDateTime, + id: String, + content: String, - @JacksonXmlProperty(namespace = ATOM) - val author: OpdsAuthor? = null, + @JacksonXmlElementWrapper(useWrapping = false) + @JacksonXmlProperty(localName = "author", namespace = ATOM) + val authors: List = emptyList(), - @JacksonXmlElementWrapper(useWrapping = false) - @JacksonXmlProperty(localName = "link", namespace = ATOM) - val links: List + @JacksonXmlElementWrapper(useWrapping = false) + @JacksonXmlProperty(localName = "link", namespace = ATOM) + val links: List ) : OpdsEntry(title, updated, id, content)