diff options
| author | Michael Christen <Orbiter@users.noreply.github.com> | 2025-06-19 11:27:33 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-19 11:27:33 +0200 |
| commit | 087d924e95e6064a35cc7a219cb5143807698d96 (patch) | |
| tree | 1035bc3ab80a88d3b07b2abb1bc9e232177c6ada | |
| parent | 02f1d722bba66d988f0ef668491e0ddbb74bd1ea (diff) | |
| parent | d93c0765e39d11ecc4ab9b9250408fbbc349002c (diff) | |
Merge pull request #715 from 3ele-projects/piep/fix_bookmarks_json_api
Fix bookmarks json api #713
| -rw-r--r-- | htroot/api/bookmarks/get_bookmarks.json | 17 | ||||
| -rw-r--r-- | source/net/yacy/data/BookmarksDB.java | 73 | ||||
| -rw-r--r-- | source/net/yacy/htroot/api/bookmarks/get_bookmarks.java | 5 |
3 files changed, 81 insertions, 14 deletions
diff --git a/htroot/api/bookmarks/get_bookmarks.json b/htroot/api/bookmarks/get_bookmarks.json index b535f1723..95bb86f6d 100644 --- a/htroot/api/bookmarks/get_bookmarks.json +++ b/htroot/api/bookmarks/get_bookmarks.json @@ -1,12 +1,19 @@ #(display)# { -page: #[page]#, -total: #[total]#, -posts: [ +"page": #[page]#, +"total": #[total]#, +"posts": { #{bookmarks}# -{bookmark:["#[hash]#",#(public)#"public"::"private"#(/public)#,"#[title]#","#[link]#","#[tags]#","#[folders]#","#[date]#"]}#[comma]# +"#[hash]#":{ + "public": #(public)#"public"::"private"#(/public)#, + "title":"#[title]#", + "link":"#[link]#", + "tags":"#[tagsjson]#", + "folders":"#[folders]#", + "date":"#[date]#" + }#[comma]# #{/bookmarks}# -] +} } :: { diff --git a/source/net/yacy/data/BookmarksDB.java b/source/net/yacy/data/BookmarksDB.java index fd5854925..fc4d7bcb7 100644 --- a/source/net/yacy/data/BookmarksDB.java +++ b/source/net/yacy/data/BookmarksDB.java @@ -527,27 +527,84 @@ public class BookmarksDB { return this.tagNames; } - public String getTagsString() { + public String getTagsString() { + final String s[] = CommonPattern.COMMA.split(ListManager.collection2string(getTags())); + StringBuilder stringBuilder = new StringBuilder(); + int currentTag = 1; + int tagCount = s.length; + for (final String element : s){ + if (!element.startsWith("/")) { + stringBuilder.append(element); // Append the element + currentTag++; + + if (currentTag < tagCount) { + stringBuilder.append(","); // Add comma if it's not the last element + } + } + } + + return stringBuilder.toString(); + } + public String getTagsJsonList() { + final String s[] = CommonPattern.COMMA.split(ListManager.collection2string(getTags())); + StringBuilder stringBuilder = new StringBuilder(); + int currentTag = 1; + int tagCount = s.length; + stringBuilder.append("["); + for (final String element : s){ + if (!element.startsWith("/")) { + stringBuilder.append("\""); + stringBuilder.append(element); // Append the element + stringBuilder.append("\""); + currentTag++; + + if (currentTag < tagCount) { + stringBuilder.append(","); // Add comma if it's not the last element + } + } + } + stringBuilder.append("]"); + + return stringBuilder.toString(); + } + + public String getFoldersString(){ final String s[] = CommonPattern.COMMA.split(ListManager.collection2string(getTags())); final StringBuilder stringBuilder = new StringBuilder(); + int currentTag = 1; + int tagCount = s.length; for (final String element : s){ - if(!element.startsWith("/")){ + if(element.startsWith("/")){ + currentTag++; stringBuilder.append(element); - stringBuilder.append(","); + if (currentTag < tagCount) { + stringBuilder.append(","); // Add comma if it's not the last element + } } } return stringBuilder.toString(); } - public String getFoldersString(){ + public String getFolderJsonList() { final String s[] = CommonPattern.COMMA.split(ListManager.collection2string(getTags())); - final StringBuilder stringBuilder = new StringBuilder(); + StringBuilder stringBuilder = new StringBuilder(); + int currentTag = 1; + int tagCount = s.length; + stringBuilder.append("["); for (final String element : s){ - if(element.startsWith("/")){ - stringBuilder.append(element); - stringBuilder.append(","); + if (!element.startsWith("/")) { + stringBuilder.append("\""); + stringBuilder.append(element); // Append the element + stringBuilder.append("\""); + currentTag++; + + if (currentTag < tagCount) { + stringBuilder.append(","); // Add comma if it's not the last element + } } } + stringBuilder.append("]"); + return stringBuilder.toString(); } diff --git a/source/net/yacy/htroot/api/bookmarks/get_bookmarks.java b/source/net/yacy/htroot/api/bookmarks/get_bookmarks.java index fc52cbc96..0ee2a9799 100644 --- a/source/net/yacy/htroot/api/bookmarks/get_bookmarks.java +++ b/source/net/yacy/htroot/api/bookmarks/get_bookmarks.java @@ -186,12 +186,15 @@ public class get_bookmarks { prop.put("display_bookmarks_"+count+"_tags", bookmark.getTagsString()); prop.put("display_bookmarks_"+count+"_folders", (bookmark.getFoldersString())); + + prop.put("display_bookmarks_"+count+"_tagsjson", bookmark.getTagsJsonList()); + count++; } } // eliminate the trailing comma for Json output - prop.put("display_bookmarks_" + (itemsPerPage - 1) + "_comma", ""); + prop.put("display_bookmarks_" + (count - 1) + "_comma", ""); prop.put("display_bookmarks", count); while(it.hasNext()){ |
