fix(opds): add summary and authors to book entries

This commit is contained in:
Gauthier Roebroeck 2020-03-25 11:28:40 +08:00
parent 15d95ac442
commit 241479292a
3 changed files with 39 additions and 28 deletions

View file

@ -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"),

View file

@ -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
)

View file

@ -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", "<br/>")
}
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<OpdsAuthor> = emptyList(),
@JacksonXmlElementWrapper(useWrapping = false)
@JacksonXmlProperty(localName = "link", namespace = ATOM)
val links: List<OpdsLink>
@JacksonXmlElementWrapper(useWrapping = false)
@JacksonXmlProperty(localName = "link", namespace = ATOM)
val links: List<OpdsLink>
) : OpdsEntry(title, updated, id, content)