Synoter is designed to get data from Synology NoteStation.
Synology NoteStation is an official note-taking app for NAS system DSM. But unfortunately, unlinke other apps such as AudioStaion or FileStation, there is no official api for further development, so you can't customize your NoteStation for your own purpose.
After some rearch, I have found something useful:
-
NoteStation stores notes (only meta info here, no note content) to
PostgreSQL(in DSM) for indexing. -
Then NoteStation adds some fts (full text searching) tokens to these indexing data and copies them to a single
sqlite3file that is stored in/<volume_name>/@appstore/NoteStation/db/fts.db. -
The real stuffs are stored in
/<volume_name>/@SynoDrive/NoteStation. Each folder holds a note, and the name of folder is theobject_idin PostgreSQL.
So the only thing we need to do is:
-
Find out all notes that are tagged with "blog" or something else from
fts.dband get theirobject_id. -
Read notes from
/<volume_name>/@SynoDrive/NoteStation/<object_id>.
And now we've got everything we need.
Synoter is written in Typescript, so you should know how to code in TypeScript, or just compile them to JavaScript.
If your NAS is running node.js v4, you have to import both babel-polyfill and babel-register in your own application otherwise sqlite will keep throwing error.
-
Git clone and copy these files to your own project.
-
Rock n' roll.
// In your app.
import { getAllNotesWithTag } from './synoter/src/index'
getNotesTaggedWithBlog()
async function getNotesTaggedWithBlog () {
const notesData = await getAllNotesWithTag('Blog')
console.log(notesData) //INoteData[]. This is an array that holds all note data.
// ...
}You can check example codes in test folder.
MIT.