From 9d1bb86d976919eb2419e159f6d89945dd5c7f12 Mon Sep 17 00:00:00 2001 From: lifegpc Date: Sun, 23 Oct 2022 08:34:03 +0000 Subject: [PATCH] Add tags to json data file --- src/data/data.rs | 16 ++++++++++++++++ src/data/json.rs | 17 +++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/data/data.rs b/src/data/data.rs index 5293d77..0b55966 100644 --- a/src/data/data.rs +++ b/src/data/data.rs @@ -18,6 +18,8 @@ pub struct PixivData { /// The author pub author: Option, pub description: Option, + /// Tags (Original, translated) + pub tags: Option)>>, } impl PixivData { @@ -31,6 +33,7 @@ impl PixivData { title: None, author: None, description: None, + tags: None, }) } @@ -84,6 +87,19 @@ impl PixivData { } } } + let mut tags = Vec::new(); + for tag in value["tags"]["tags"].members() { + if let Some(ori) = tag["tag"].as_str() { + tags.push(( + ori.to_owned(), + match tag["translation"]["en"].as_str() { + Some(s) => Some(s.to_owned()), + None => None, + }, + )); + } + } + self.tags.replace(tags); } } diff --git a/src/data/json.rs b/src/data/json.rs index ff26146..b06345d 100644 --- a/src/data/json.rs +++ b/src/data/json.rs @@ -105,6 +105,23 @@ impl From<&PixivData> for JSONDataFile { f.add("parsed_description", pd.unwrap()).unwrap(); } } + match p.tags.as_ref() { + Some(tags) => { + let mut t = JsonValue::new_array(); + for tag in tags { + t.push(json::array![ + tag.0.as_str(), + match &tag.1 { + Some(s) => JsonValue::String(s.to_owned()), + None => JsonValue::Null, + } + ]) + .unwrap(); + } + f.add("tags", t).unwrap(); + } + None => {} + } f } }