Show illustration upload time

This commit is contained in:
blankie 2023-04-09 21:30:07 +07:00
parent 64f8060a9f
commit 04e34a6e3a
Signed by: blankie
GPG Key ID: CC15FC822C7F61F5
2 changed files with 22 additions and 5 deletions

View File

@ -4,10 +4,11 @@
#include "../pixivclient.h" #include "../pixivclient.h"
static inline bool is_true(const std::string& str); static inline bool is_true(const std::string& str);
static inline std::string time_to_string(time_t time);
static inline Element generate_user_link(const httplib::Request& req, const Config& config, const Illust& illust); static inline Element generate_user_link(const httplib::Request& req, const Config& config, const Illust& illust);
static inline Element generate_images(const httplib::Request& req, const Config& config, const Illust& illust); static inline Element generate_images(const httplib::Request& req, const Config& config, const Illust& illust);
static inline Element generate_preview_images(const httplib::Request& req, const Config& config, const Illust& illust); static inline Element generate_preview_images(const httplib::Request& req, const Config& config, const Illust& illust);
static inline Element generate_illust_metadata(const Illust& illust); static inline Element generate_illust_tags(const Illust& illust);
void artworks_route(const httplib::Request& req, httplib::Response& res, const Config& config, PixivClient& pixiv_client) { void artworks_route(const httplib::Request& req, httplib::Response& res, const Config& config, PixivClient& pixiv_client) {
uint64_t illust_id = to_ull(req.matches.str(1)); uint64_t illust_id = to_ull(req.matches.str(1));
@ -36,7 +37,8 @@ void artworks_route(const httplib::Request& req, httplib::Response& res, const C
generate_user_link(req, config, illust), generate_user_link(req, config, illust),
!preview ? generate_images(req, config, illust) : generate_preview_images(req, config, illust), !preview ? generate_images(req, config, illust) : generate_preview_images(req, config, illust),
Element("br"), Element("br"),
generate_illust_metadata(illust) generate_illust_tags(illust),
Element("p", {time_to_string(illust.upload_time)})
}); });
serve(req, res, config, std::move(illust.title), std::move(body)); serve(req, res, config, std::move(illust.title), std::move(body));
} }
@ -101,8 +103,8 @@ static inline Element generate_preview_images(const httplib::Request& req, const
return div; return div;
} }
static inline Element generate_illust_metadata(const Illust& illust) { static inline Element generate_illust_tags(const Illust& illust) {
Element div("div", {{"class", "illustmetadata"}}, {}); Element div("div", {{"class", "illusttags"}}, {});
if (illust.ai_generated) { if (illust.ai_generated) {
div.nodes.push_back(Element("b", {"AI-Generated "})); div.nodes.push_back(Element("b", {"AI-Generated "}));
@ -124,3 +126,18 @@ static inline Element generate_illust_metadata(const Illust& illust) {
static inline bool is_true(const std::string& str) { static inline bool is_true(const std::string& str) {
return !str.empty() && str != "0" && str != "false" && str != "no"; return !str.empty() && str != "0" && str != "false" && str != "no";
} }
static inline std::string time_to_string(time_t time) {
struct tm tm;
char str[1024] = {0};
if (!gmtime_r(&time, &tm)) {
return std::to_string(time);
}
size_t len = strftime(str, 1024, "%F %H:%M:%S %z", &tm);
if (len == 0) {
return std::to_string(time);
}
return std::string(str, len);
}

View File

@ -79,7 +79,7 @@ void css_route(const httplib::Request& req, httplib::Response& res) {
} }
/* ILLUSTRATIONS PAGE */ /* ILLUSTRATIONS PAGE */
.illustmetadata { .illusttags {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
gap: 1em; gap: 1em;