mirror of
https://github.com/gotson/komga.git
synced 2025-12-20 07:23:34 +01:00
feat(opds): support lastRead attribute on OPSD PSE links
part of OPDS PSE 1.1
This commit is contained in:
parent
e55f493632
commit
ce51373344
2 changed files with 13 additions and 12 deletions
|
|
@ -582,6 +582,14 @@ class OpdsController(
|
|||
}
|
||||
|
||||
private fun BookDto.toOpdsEntry(media: Media, prependNumber: Boolean, prepend: Int? = null): OpdsEntryAcquisition {
|
||||
val mediaTypes = media.pages.map { it.mediaType }.distinct()
|
||||
|
||||
val opdsLinkPageStreaming = if (mediaTypes.size == 1 && mediaTypes.first() in opdsPseSupportedFormats) {
|
||||
OpdsLinkPageStreaming(mediaTypes.first(), "${routeBase}books/$id/pages/{pageNumber}?zero_based=true", media.pages.size, readProgress?.page)
|
||||
} else {
|
||||
OpdsLinkPageStreaming("image/jpeg", "${routeBase}books/$id/pages/{pageNumber}?convert=jpeg&zero_based=true", media.pages.size, readProgress?.page)
|
||||
}
|
||||
|
||||
val pre = prepend?.let { decimalFormat.format(it) + " - " } ?: ""
|
||||
return OpdsEntryAcquisition(
|
||||
title = "$pre${if (prependNumber) "${decimalFormat.format(metadata.numberSort)} - " else ""}${metadata.title}",
|
||||
|
|
@ -598,21 +606,11 @@ class OpdsController(
|
|||
OpdsLinkImageThumbnail("image/jpeg", uriBuilder("books/$id/thumbnail").toUriString()),
|
||||
OpdsLinkImage(media.pages[0].mediaType, uriBuilder("books/$id/pages/1").toUriString()),
|
||||
OpdsLinkFileAcquisition(media.mediaType, uriBuilder("books/$id/file/${sanitize(FilenameUtils.getName(url))}").toUriString()),
|
||||
media.toOpdsLinkPageStreaming(id),
|
||||
opdsLinkPageStreaming,
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
private fun Media.toOpdsLinkPageStreaming(bookId: String): OpdsLinkPageStreaming {
|
||||
val mediaTypes = pages.map { it.mediaType }.distinct()
|
||||
|
||||
return if (mediaTypes.size == 1 && mediaTypes.first() in opdsPseSupportedFormats) {
|
||||
OpdsLinkPageStreaming(mediaTypes.first(), "${routeBase}books/$bookId/pages/{pageNumber}?zero_based=true", pages.size)
|
||||
} else {
|
||||
OpdsLinkPageStreaming("image/jpeg", "${routeBase}books/$bookId/pages/{pageNumber}?convert=jpeg&zero_based=true", pages.size)
|
||||
}
|
||||
}
|
||||
|
||||
private fun Library.toOpdsEntry(): OpdsEntryNavigation =
|
||||
OpdsEntryNavigation(
|
||||
title = name,
|
||||
|
|
|
|||
|
|
@ -61,7 +61,10 @@ class OpdsLinkPageStreaming(
|
|||
href: String,
|
||||
|
||||
@get:JacksonXmlProperty(isAttribute = true, namespace = OPDS_PSE)
|
||||
val count: Int
|
||||
val count: Int,
|
||||
|
||||
@get:JacksonXmlProperty(isAttribute = true, namespace = OPDS_PSE)
|
||||
val lastRead: Int?,
|
||||
) : OpdsLink(
|
||||
type = mediaType,
|
||||
rel = "http://vaemendis.net/opds-pse/stream",
|
||||
|
|
|
|||
Loading…
Reference in a new issue