From e5168d8b3d9397342fb23c62d10b80d37b093940 Mon Sep 17 00:00:00 2001 From: Veloman Yunkan Date: Mon, 5 Jul 2021 23:50:54 +0400 Subject: [PATCH] Support for multiple illustrations in OPDS entry --- src/opds_dumper.cpp | 17 +++++++++++++++++ static/templates/catalog_entries.xml | 6 +++++- static/templates/catalog_v2_entries.xml | 6 +++++- test/server.cpp | 12 +++++++++--- 4 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/opds_dumper.cpp b/src/opds_dumper.cpp index 440272c30..bfbe61c84 100644 --- a/src/opds_dumper.cpp +++ b/src/opds_dumper.cpp @@ -52,6 +52,22 @@ namespace typedef kainjow::mustache::data MustacheData; typedef kainjow::mustache::list BookData; +typedef kainjow::mustache::list IllustrationInfo; + +IllustrationInfo getBookIllustrationInfo(const Book& book) +{ + kainjow::mustache::list illustrations; + if ( book.isPathValid() ) { + for ( auto illustration_size : zim::Archive(book.getPath()).getIllustrationSizes() ) { + illustrations.push_back(kainjow::mustache::object{ + {"icon_width", to_string(illustration_size)}, + {"icon_height", to_string(illustration_size)}, + {"icon_scale", "1"}, + }); + } + } + return illustrations; +} BookData getBookData(const Library* library, const std::vector& bookIds) { @@ -78,6 +94,7 @@ BookData getBookData(const Library* library, const std::vector& boo {"publisher_name", book.getPublisher()}, {"url", bookUrl}, {"size", to_string(book.getSize())}, + {"icons", getBookIllustrationInfo(book)}, }); } diff --git a/static/templates/catalog_entries.xml b/static/templates/catalog_entries.xml index 32754d5b0..0a6a05dde 100644 --- a/static/templates/catalog_entries.xml +++ b/static/templates/catalog_entries.xml @@ -22,7 +22,11 @@ {{tags}} {{article_count}} {{media_count}} - /meta?name=favicon&content={{{content_id}}} + {{#icons}} + + {{/icons}} {{author_name}} diff --git a/static/templates/catalog_v2_entries.xml b/static/templates/catalog_v2_entries.xml index 05cbb5054..098744d86 100644 --- a/static/templates/catalog_v2_entries.xml +++ b/static/templates/catalog_v2_entries.xml @@ -34,7 +34,11 @@ {{tags}} {{article_count}} {{media_count}} - /meta?name=favicon&content={{{content_id}}} + {{#icons}} + + {{/icons}} {{author_name}} diff --git a/test/server.cpp b/test/server.cpp index f900cd938..fbe62cb0a 100644 --- a/test/server.cpp +++ b/test/server.cpp @@ -626,7 +626,9 @@ std::string maskVariableOPDSFeedData(std::string s) " unittest;wikipedia;_category:jazz;_pictures:no;_videos:no;_details:no;_ftindex:yes\n" \ " 284\n" \ " 2\n" \ - " /meta?name=favicon&content=zimfile\n" \ + " \n" \ " \n" \ " \n" \ " Wikipedia\n" \ @@ -650,7 +652,9 @@ std::string maskVariableOPDSFeedData(std::string s) " unittest;wikipedia;_category:wikipedia;_pictures:no;_videos:no;_details:no;_ftindex:yes\n" \ " 284\n" \ " 2\n" \ - " /meta?name=favicon&content=zimfile\n" \ + " \n" \ " \n" \ " \n" \ " Wikipedia\n" \ @@ -674,7 +678,9 @@ std::string maskVariableOPDSFeedData(std::string s) " unittest;wikipedia;_pictures:no;_videos:no;_details:no\n" \ " 284\n" \ " 2\n" \ - " /meta?name=favicon&content=zimfile\n" \ + " \n" \ " \n" \ " \n" \ " Wikipedia\n" \