lucasrla / remarks

Extract annotations (highlights and scribbles) from PDF, EPUB, and notebooks marked with reMarkable tablets. Export to Markdown, PDF, PNG, SVG
GNU General Public License v3.0
347 stars 20 forks source link

Upgrade to reMarkable 3.0 #58

Open ErikaRS opened 1 year ago

ErikaRS commented 1 year ago

The upgrade to reMarkable 3.0 has broken this extractor. The first issue I found was that the pages are now more structured and nested in a "cPages" field. I was able to add a local fix for that but the more fundamental issue is that the binary .rm file seems pretty fundamentally different.

Are there any plans to modify remarks to work with 3.0? Is there any information I can provide which would help? (Also, if there are pointers to how the binary format was reverse engineered in the past, then I am happy to help do so for 3.0.)

ErikaRS commented 1 year ago

This is the furthest along updated parsing code I've been able to find for reMarkable 3.0: https://github.com/ricklupton/rmscene

lucasrla commented 1 year ago

Hi @ErikaRS, I haven't delved into the new v6 .rm format myself. But I am very open to merging any contributions related to reMarkable >= 3.0.

A potentially useful pointer is "Updates regarding reverse engineering ReMarkable version 3/ .rm v6 files" that has been posted by u/Combinatorilliance at r/reMarkableTablet. The person mentions they're working on the scrybble sync tool – so they might be Laura (@Azeirah).

Azeirah commented 1 year ago

I wrote that, yes. It's my understanding of how ddvk's parser as well as ricklupton's more readable parser work.

I have a private branch of remarks that depends on rmscene to parse v3 files, using remarks to perform the pdf manipulation and drawing. It still has a couple of glaring issues and definitely needs more testing, but it does have the basics down.

Ricklupton also has an exporter tool for v3 specifically, I haven't checked that one out yet. Though afaik he hasn't made any additional progress in that tool compared to what's otherwise publicly available.

Some considerations for adding v6 .rm file support

Given this, I don't think it's a good idea to implement a custom parser for remarks, and instead depend on rmscene to do the parsing and writing an interface/adapter for it like I did in my private branch.

I'll link my private branch as well. It's not ready for merging whatsoever, but it can definitely serve as a good starting point for v3/.rmv6 support

lucasrla commented 1 year ago

Hey, Laura! That's some good news! Yes, let's rely on ricklupton's rmscene parser.

I'm more than happy to merge your interface/adapter into this repo, just let me know.

Also, I might be able to help a bit (and maybe Erika as well).

Thanks again!

Azeirah commented 1 year ago

@ErikaRS I opened a pull request which serves as an entry point to work towards merging my v6 implementation to master. I made a checklist to split up the code into individual pull-requests as well.

https://github.com/lucasrla/remarks/pull/59

jakeisnt commented 7 months ago

Has any progress been made here? Would like to take this on if not!!

iacore commented 3 months ago

Has any progress been made here? Would like to take this on if not!!

See https://github.com/ricklupton/rmc/. It's usable.

Azeirah commented 3 months ago

Has any progress been made here? Would like to take this on if not!!

I think the main maintainer of this repository is not active. I'm still maintaining a fork of remarks that is mostly compatible with v6: https://github.com/Azeirah/remarks/tree/v6_with_rmscene

YMMV

iacore commented 3 months ago

@Azeirah can you update the project readme to mention that it supports .rm v6? You can also use the main branch and enable Issues so people can contribute to your repo.

Azeirah commented 3 months ago

@Azeirah can you update the project readme to mention that it supports .rm v6? You can also use the main branch and enable Issues so people can contribute to your repo.

I created the main branch, updated the README and opened up Issues (I wasn't aware that issues could be turned off at all! Good call)