hamburgchimps / apple-notes-liberator Goto Github PK
View Code? Open in Web Editor NEWFree your Apple Notes data from Notes.app
License: MIT License
Free your Apple Notes data from Notes.app
License: MIT License
It appears that it can also be in ZMERGABLEDATA1 or perhaps even ZMERGABLEDATA2
If the data is in ZMERGABLEDATA1 or ZMERGABLEDATA2 and not in ZMERGABLEDATA, then it is currently not found and as such the embedded object data is null, even though data actually exists, just not in the expected column.
Useful for #19.
For #14
Set of .md files that references exported images as files in .md file:
# Title
text
![[ image name .png ]]
That would make it very easy to to import exported .md files and images into Obsidian and other apps that use Markdown
Maybe a duplicate of #47, but I'm filing an explicit issue just in case it's not the same.
I don't know what other details to share, but when I run the app with apple-notes-liberator -m
, I get:
Cannot invoke "java.lang.Integer.intValue()" because "rowIndex" is null
Thank you!
I feel very defeated - it seems as if I should be able to figure it out, but I can't seem to get the command line right to pass the necessary arguments to either the JBang or the plain .jar file installation.
With the JBang installation, I've tried several different permutations of the following as the command line (Windows PowerShell v7.3.4.0):
PS C:\Downloads\Application Groups\com.apple.notes> apple-notes-liberator -j -f=.\Notes.sqlite
PS C:\Downloads\Application Groups\com.apple.notes> apple-notes-liberator -j -f=Notes.sqlite
Which gives me an error: "Unmatched argument at index 2: '.sqlite'", followed by the usage statement.
With the .jar file installation, I've tried several different variations on:
PS C:\Downloads\Application Groups\com.apple.notes> java -jar C:\Downloads\apple-notes-liberator.jar -j -f=Notes.sqlite
PS C:\Downloads\Application Groups\com.apple.notes> java -jar C:\Downloads\apple-notes-liberator.jar --json --file=Notes.sqlite
Which results in the error: "Cannot automatically find notes database, you will have to manually provide the file path via the -f (--file) option.", NOT followed by the usage statement.
What am I doing wrong?
Hello, I tried to download my notes using the markdown command and it worked for a few of them. However, for some others, when I open the markdown file, the only thing written is "#null". Any idea how to fix this?
unnamed-note-1.md
unnamed-note-2.md
unnamed-note-3.md
unnamed-note-4.md
See #14
I'm getting the following error when I run the jar:
Cannot invoke "de.hamburgchimps.apple.notes.liberator.entity.NotesCloudObject.getzTypeUti()" because "notesCloudObject" is null
apple-notes-liberator
appears to have found the correct database since it copied notes.sqlite
into the liberated-notes
folder. I manually queried that database using the following command:
sqlite3 notes.sqlite "SELECT writefile('note_data.gz', zdata) FROM zicnotedata WHERE znote = 100"
The extracted data includes the text of one of my notes, so I don't think the problem is with the source data.
My configuration:
Here's some additional information from the log:
ERROR [de.ham.app.not.lib.dat.Table] (main) Failed to parse table: java.lang.RuntimeException: no data to parse
Any ideas of what might be tripping it up?
when I run I get:
"Cannot copy notes database, do you have read and execute permissions for /Users/myuser/Library/Group Containers/group.com.apple.notes/notestore.sqlite"
and I can't see how to even copy/modify the permissions to try using another file.
Any tips for how to get it copied?
(Thank you for working on this tool!)
I'm getting the following error when executing apple-notes-liberator
:
Cannot invoke "de.hamburgchimps.apple.notes.liberator.entity.NotesCloudObject.getzTitle2()" because the return value of "de.hamburgchimps.apple.notes.liberator.entity.NotesCloudObject.getzFolder()" is null
The situation seems similar to #25: a notes.sqlite
was generated and apparently filled with the correct data.
Running version 2.1.0.
I tried fiddling with different versions of protoc, but had no luck.
This is with openjdk and maven installed by homebrew.
base) # javac -version
javac 19.0.2
(base) # mvn --version
Apache Maven 3.9.1 (2e178502fcdbffc201671fb2537d0cb4b4cc58f8)
Maven home: /opt/homebrew/Cellar/maven/3.9.1/libexec
Java version: 19.0.2, vendor: Homebrew, runtime: /opt/homebrew/Cellar/openjdk/19.0.2/libexec/openjdk.jdk/Contents/Home
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "13.2.1", arch: "aarch64", family: "mac"
(base) # mvn compile
[INFO] Scanning for projects...
[INFO]
[INFO] ---------------< de.hamburgchimps:apple-notes-liberator >---------------
[INFO] Building apple-notes-liberator 0.1.0
[INFO] from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- protoc-jar:3.11.4:run (default) @ apple-notes-liberator ---
[WARNING] Parameter 'localRepository' is deprecated core expression; Avoid use of ArtifactRepository type. If you need access to local repository, switch to '${repositorySystemSession}' expression and get LRM from it instead.
[INFO] Protoc version: 3.11.4
protoc-jar: protoc version: 3.11.4, detected platform: osx-aarch_64 (mac os x/aarch64)
protoc-jar: using default maven settings, didn't find user settings.xml
protoc-jar: cached: /var/folders/61/myftlcwd4c12gbfm5nv7zzs80000gn/T/protocjar.webcache/com/google/protobuf/protoc/maven-metadata.xml
protoc-jar: using default maven settings, didn't find user settings.xml
protoc-jar: cached: /var/folders/61/myftlcwd4c12gbfm5nv7zzs80000gn/T/protocjar.webcache/com/github/os72/protoc/maven-metadata.xml
protoc-jar: using default maven settings, didn't find user settings.xml
protoc-jar: cached: /var/folders/61/myftlcwd4c12gbfm5nv7zzs80000gn/T/protocjar.webcache/com/google/protobuf/protoc/maven-metadata.xml
protoc-jar: downloading: https://repo.maven.apache.org/maven2/com/google/protobuf/protoc/3.11.4/protoc-3.11.4-osx-aarch_64.exe
protoc-jar: using default maven settings, didn't find user settings.xml
protoc-jar: cached: /var/folders/61/myftlcwd4c12gbfm5nv7zzs80000gn/T/protocjar.webcache/com/github/os72/protoc/maven-metadata.xml
protoc-jar: downloading: https://repo.maven.apache.org/maven2/com/github/os72/protoc/3.11.4/protoc-3.11.4-osx-aarch_64.exe
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.956 s
[INFO] Finished at: 2023-03-26T13:10:00-07:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.github.os72:protoc-jar-maven-plugin:3.11.4:run (default) on project apple-notes-liberator: Error extracting protoc for version 3.11.4: Unsupported platform: protoc-3.11.4-osx-aarch_64.exe -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
tried to run the v0.1.0 release on ARM mac and got error
Cannot invoke "String.isEmpty()" because "typeIdentifier" is null
here is the terminal history:
~ ₿ java -version
openjdk version "19.0.1" 2022-10-18
OpenJDK Runtime Environment Homebrew (build 19.0.1)
OpenJDK 64-Bit Server VM Homebrew (build 19.0.1, mixed mode, sharing)
~ ₿ java -jar ~/Downloads/apple-notes-liberator.jar
Cannot invoke "String.isEmpty()" because "typeIdentifier" is null
Liberating apple notes, is a project I think about since a long time myself.
However I wouldn't have implemented the project like you, that's why I have a few questions.
I didn't find any discussion section on this repo so I will ask them here.
Why java ? Java is old and slow, require an interpreter to be installed (which can be buggy) and make project release as a jar.
I would personally have chosen a language such as swift for performance and "Apple friendly" that would have produced a optimised binary.
A binary could then be published to macOS package manager: brew. Making installation, upgrade easy.
I'm not sure this can be achieved with a jar but currently user has track updates manually and call it with java -jar apple-notes-liberator.jar
which is not user friendly.
So is there a technical reason why you chose java ?
If a binary is achieved and published to brew. I can help you with the publication process and provide the formula file. Using GitHub workflows (CI/CD) to auto-update this formula file would also be a good idea.
Why output as a minified json ? I would have done an option to export as HTML, markdown and maybe even an format that allow import to other notes apps (the popular FOSS ones)
Is there any plan to make it possible to import notes that were previously exported ? If json is not human readable, its main utility would be a backup (which could be restored later)
Hey @adam-fallon, would you mind helping here? :)
I am happy to do it as well, but I am not sure how exactly the sha256 hash is being generated/what is being hashed. When I use openssl
to generate a sha256 hash for the 1.1.0 jar it is nothing like the one in nix.shell
. Any tips you could share?
Thank you!
I am trying to extract notes from my daughter's ipad. I recovered the NoteStore file and am trying to run this on my mac which also has Notes. But my local notes are not the desired NoteStore. I am using thie -f
and --file
option, but it is always only extracting the default notes file.
I have them in a folder on my desktop. I am in that directory. This is the command I'm running.
apple-notes-liberator --file=NoteStore.sqlite --json
have also used
apple-notes-liberator --file=./NoteStore.sqlite --json
Have tried -f with above paths with same result.
Have also tried --markdown output with same result.
Version is
xxxxxx@xxxxxx LizRecoveredNotes % apple-notes-liberator --version
2.2.3
I broke this/introduced this bug trying to fix #40.
See this comment on #19.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.