From bab0fd3d4fb5dd9a3ab2c2439b51f89ed96f518d Mon Sep 17 00:00:00 2001 From: Matthieu Gautier Date: Tue, 7 Apr 2020 12:21:36 +0200 Subject: [PATCH 1/2] Correctly initialize members' value of book. Fix #333 --- include/book.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/book.h b/include/book.h index 8d137f302..2baeab921 100644 --- a/include/book.h +++ b/include/book.h @@ -98,7 +98,7 @@ class Book std::string m_id; std::string m_downloadId; std::string m_path; - bool m_pathValid; + bool m_pathValid = false; std::string m_title; std::string m_description; std::string m_language; @@ -110,10 +110,10 @@ class Book std::string m_flavour; std::string m_tags; std::string m_origId; - uint64_t m_articleCount; - uint64_t m_mediaCount; - bool m_readOnly; - uint64_t m_size; + uint64_t m_articleCount = 0; + uint64_t m_mediaCount = 0; + bool m_readOnly = false; + uint64_t m_size = 0; mutable std::string m_favicon; std::string m_faviconUrl; std::string m_faviconMimeType; From 533541cf4592db041c7759a6a8384a054f4a13c0 Mon Sep 17 00:00:00 2001 From: Matthieu Gautier Date: Tue, 7 Apr 2020 12:22:44 +0200 Subject: [PATCH 2/2] Write the articleCount and mediaCount metadata in the OPDS stream. This is not standard OPDS. But clients need this information. --- src/book.cpp | 2 ++ src/opds_dumper.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/book.cpp b/src/book.cpp index d8e90d7ca..beb3b5eba 100644 --- a/src/book.cpp +++ b/src/book.cpp @@ -156,6 +156,8 @@ void Book::updateFromOpds(const pugi::xml_node& node, const std::string& urlHost m_name = VALUE("name"); m_flavour = VALUE("flavour"); m_tags = VALUE("tags"); + m_articleCount = strtoull(VALUE("articleCount"), 0, 0); + m_mediaCount = strtoull(VALUE("mediaCount"), 0, 0); for(auto linkNode = node.child("link"); linkNode; linkNode = linkNode.next_sibling("link")) { std::string rel = linkNode.attribute("rel").value(); diff --git a/src/opds_dumper.cpp b/src/opds_dumper.cpp index dd584e29f..115ba4c38 100644 --- a/src/opds_dumper.cpp +++ b/src/opds_dumper.cpp @@ -78,6 +78,8 @@ pugi::xml_node OPDSDumper::handleBook(Book book, pugi::xml_node root_node) { ADD_TEXT_ENTRY(entry_node, "name", book.getName()); ADD_TEXT_ENTRY(entry_node, "flavour", book.getFlavour()); ADD_TEXT_ENTRY(entry_node, "tags", book.getTags()); + ADD_TEXT_ENTRY(entry_node, "articleCount", to_string(book.getArticleCount())); + ADD_TEXT_ENTRY(entry_node, "mediaCount", to_string(book.getMediaCount())); ADD_TEXT_ENTRY(entry_node, "icon", rootLocation + "/meta?name=favicon&content=" + book.getHumanReadableIdFromPath()); auto content_node = entry_node.append_child("link");