Skip to content

Commit 4befc83

Browse files
committed
Export Booksmarks in HTML format
1 parent d49d76f commit 4befc83

File tree

1 file changed

+39
-4
lines changed
  • app/src/main/java/org/matrix/chromext/proxy

1 file changed

+39
-4
lines changed

app/src/main/java/org/matrix/chromext/proxy/Menu.kt

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,18 +116,53 @@ object MenuProxy {
116116
fun(_: Any) {
117117
val bookmark = File(ctx.getFilesDir(), "../app_chrome/Default/Bookmarks")
118118
if (bookmark.exists()) {
119+
var html =
120+
"<!DOCTYPE NETSCAPE-Bookmark-file-1>\n<!-- This is an automatically generated file. It will be read and overwritten. DO NOT EDIT! -->\n<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=UTF-8\">\n<TITLE>Bookmarks</TITLE>\n<H1>Bookmarks</H1>\n<DL><p>\n"
119121
runCatching {
120-
val data = JSONObject(FileReader(bookmark).use { it.readText() })
122+
val data =
123+
JSONObject(FileReader(bookmark).use { it.readText() })
124+
.getJSONObject("roots")
125+
126+
val DIV = 10000000
127+
fun loopChildren(folder: JSONObject, indent: String = "\t") {
128+
if (folder.optString("type") == "folder" && folder.has("children")) {
129+
val children = folder.getJSONArray("children")
130+
val length = children.length()
131+
if (length == 0) return
132+
html +=
133+
indent +
134+
"<DT><H3 ADD_DATE=\"${folder.getLong("date_added") / DIV }\" LAST_MODIFIED=\"${folder.getLong("date_modified") / DIV}\" PERSONAL_TOOLBAR_FOLDER=\"true\">${folder.getString("name")}</H3>\n"
135+
html += indent + "<DL><p>\n"
136+
for (i in 0.rangeTo(length - 1)) {
137+
val item = children.getJSONObject(i)
138+
if (item.getString("type") == "url") {
139+
html +=
140+
indent +
141+
"\t<DT><A HREF=\"${item.getString("url")}\" ADD_DATE=\"${item.getLong("date_added") / DIV }\">${item.getString("name")}</A>\n"
142+
} else if (item.getString("type") == "folder") {
143+
loopChildren(item, indent + "\t")
144+
}
145+
}
146+
html += indent + "</DL><p>\n"
147+
}
148+
}
149+
150+
val bookmarks = data.names()!!
151+
for (i in 0.rangeTo(bookmarks.length() - 1)) {
152+
loopChildren(data.getJSONObject(bookmarks.getString(i)))
153+
}
154+
155+
html += "</DL><p>"
121156
File(
122157
Environment.getExternalStoragePublicDirectory(
123158
Environment.DIRECTORY_DOWNLOADS),
124-
"Booksmarks.json")
125-
.writeText(data.getString("roots"))
159+
"Booksmarks.html")
160+
.writeText(html)
126161
Log.toast(
127162
ctx,
128163
"Bookmarks exported to " +
129164
Environment.DIRECTORY_DOWNLOADS +
130-
"/Booksmarks.json")
165+
"/Booksmarks.html")
131166
}
132167
.onFailure { Log.ex(it) }
133168
} else {

0 commit comments

Comments
 (0)