@BlackForestBoi
Had a little free time and wrote something to export the data I care about (see below). This dumps all pages (url, title, and tags) that are contained in a list. e.g.:
{
"1571755589344": {
"name": "Ideas",
"id": 1571755589344,
"pages": [
{
"url": "http://www.altx.com/manifestos/rozztox.html",
"title": "The ROZZ-TOX Manifesto",
"tags": ["philosophy", "80s", "art"]
}
]
}
}
Itās unfortunate that it had to come to this because I think the concept is great and the search works well, however the idea that users own and control their data is quite a stretch at this point. Even though data is stored locally, if it canāt easily and reliably be extracted then the dataās locality is meaningless.
Charging for features, having a smooth import process, and claiming āMemex is offline first. You have full control over your data.ā all while direct access and export of data is at best a work in progress leaves a bad taste in oneās mouth and gives the impression, whether intentional or not, of trying to retain users by locking their data in.
I sincerely wish you well and success with the hope that the companyās stated goals and values eventually manifest itself in the product you are building.
// about:devtools-toolbox?type=extension&id=info%40worldbrain.io
await Promise.all([
storageMan.backend.dexieInstance.customLists.toArray(),
storageMan.backend.dexieInstance.pageListEntries.toArray(),
storageMan.backend.dexieInstance.tags.toArray(),
]).then(async ([lists, listPages, tags]) => {
console.log('Data fetched... building export object');
let result = lists.reduce(
(result, list) => {
result[list.id] = { name: list.name, id: list.id, pages: [] };
return result;
},
{}
);
let tagIdx = tags.reduce(
(result, tagEntry) => {
let tagList = result[tagEntry.url] = result[tagEntry.url] || [];
tagList.push(tagEntry.name);
return result;
},
{}
);
listPages.forEach(async list_url => {
let url = list_url.pageUrl;
let page = await storageMan.backend.dexieInstance.pages.where('url').equals(url).first();
let list = result[list_url.listId];
list.pages.push({ url: page.fullUrl, title: page.fullTitle, tags: tagIdx[url] || [] });
});
return result;
}).then(console.log).catch(console.error);