summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Christen <Orbiter@users.noreply.github.com>2025-06-19 11:27:33 +0200
committerGitHub <noreply@github.com>2025-06-19 11:27:33 +0200
commit087d924e95e6064a35cc7a219cb5143807698d96 (patch)
tree1035bc3ab80a88d3b07b2abb1bc9e232177c6ada
parent02f1d722bba66d988f0ef668491e0ddbb74bd1ea (diff)
parentd93c0765e39d11ecc4ab9b9250408fbbc349002c (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.json17
-rw-r--r--source/net/yacy/data/BookmarksDB.java73
-rw-r--r--source/net/yacy/htroot/api/bookmarks/get_bookmarks.java5
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()){