{"id":13771306,"url":"https://github.com/opal06/zotero2remarkable_bridge","last_synced_at":"2025-05-11T03:33:11.689Z","repository":{"id":210676695,"uuid":"475771895","full_name":"opal06/zotero2remarkable_bridge","owner":"opal06","description":null,"archived":false,"fork":false,"pushed_at":"2024-11-06T14:11:40.000Z","size":40,"stargazers_count":22,"open_issues_count":3,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-11-17T06:40:43.244Z","etag":null,"topics":["remarkable-tablet","sync","zotero"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/opal06.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-03-30T07:42:41.000Z","updated_at":"2024-11-11T11:33:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"926f7f0c-d360-4d8c-b6a4-e16e337b35c0","html_url":"https://github.com/opal06/zotero2remarkable_bridge","commit_stats":null,"previous_names":["opal06/zotero2remarkable_bridge"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opal06%2Fzotero2remarkable_bridge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opal06%2Fzotero2remarkable_bridge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opal06%2Fzotero2remarkable_bridge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opal06%2Fzotero2remarkable_bridge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opal06","download_url":"https://codeload.github.com/opal06/zotero2remarkable_bridge/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253514352,"owners_count":21920327,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["remarkable-tablet","sync","zotero"],"created_at":"2024-08-03T17:00:50.050Z","updated_at":"2025-05-11T03:33:11.439Z","avatar_url":"https://github.com/opal06.png","language":"Python","funding_links":[],"categories":["Cloud Tools"],"sub_categories":["Launchers"],"readme":"# Zotero2reMarkable Bridge\n\nThis program can be used to sync attachments from Zotero to your ReMarkable\n*and* sync them back to Zotero again.\nIt relies on on both Zotero's and reMarkable's cloud APIs for Python. This means\nsync must be enabled in Zotero to use this program. Both Zotero's storage and external WebDAV storage is supported, \nalthough Zotero's own cloud support is largely untested. Testing and bug reports/pull requests are highly appreciated.\n\n## Usage \n\n### How it works\n\nThe program makes use of Zotero's tag system to determine which files should be processed.\nTo designate attachments that should be synced, add the tag \"to_sync\" to the entry.\n\nAfter the files are synced, this tag is automatically removed and set to \"synced\".\nDo not remove these tags as they are used to determine which files should be synced back.\n\nOn the reMarkable, the program uses folders to keep track of files. ~~Unfortunately, there\nis no tag system on reMarkable, so that is the best way I could come up with.~~ Although there now is a tag system, this is – as far as I am aware of – not yet supported by third party API implementations. So for now, the folder approach remains the easiest. This might change in the future. You can specify the folder names\nduring setup.\n\nThe program now uses [remarks](https://github.com/lucasrla/remarks.git) to render files from ReMarkable and therefore has support both for scribbles as well as smart highlights. Colors are supported. Unlike its previous implementation, it also should not create multiple highlights when a highlighted string appears multiple times on a page. It does not however have support for the new format introduces with firmware v3. Hopefully, as development on `remarks`progresses, this will change.\n\nThe program will preserve the original file and add the marked file as new attachment with \"(Annot) \" added in front of the file name.\nEntries that have been synced back will have the tag \"read\" added to them, so you can easily search for them.\n\n### Support for new reMarkable cloud API\n~~Due to changes made by reMarkable to its cloud API that have not yet been implemented in [rmapy](https://github.com/subutux/rmapy/), on which this program relies, some users may have issues getting this program to work. This will mostly affect users that have signed up for the cloud after the API change.~~\nDependency on rmapy has been removed and the program now relies on [rmapi](https://github.com/ddvk/rmapi) by default, as it has been proven functional and allows to support the new reMarkable cloud API without sacrificing backwards compatibility to the older API. Therefore, a working install of `rmapi` is now required. \n\n\u003e [!IMPORTANT]\n\u003e The [original version](https://github.com/juruen/rmapi) of `rmapi` by juruen has been discontinued, but a working [fork](https://github.com/ddvk/rmapi) maintained by ddvk now exists and should be used instead.\n\n### Setup\n\n#### On reMarkable:\n- Create a folder named `Zotero` through the UI on your reMarkable. This folder must be on the top level of the file system and cannot be nested under other folders.\n- Create two folders inside the `Zotero` folder, one for your unread documents (this is where new files from Zotero will land) and your read documents (this is where the program looks for files to be synced back to Zotero). \n\n#### On your PC:\n```bash\n# 1. Clone repository to your computer:\ngit clone https://github.com/opal06/zotero2remarkable_bridge.git\n\n# Note: The program requires rmapi to be installed and properly configured. Please refer to rmapi's [Readme](https://github.com/juruen/rmapi/blob/master/README.md) for instructions.\n\n# 2. Add required packages through pip:\npip3 install -r requirements.txt\n\n# 3. (Only on Linux) Allow execution of the program:\nsudo chmod +x zotero2remarkable_bridge.py\n\n# 4. On Linux, run the program with:\n./zotero2remarkable_bridge.py\n\n# Or on any other OS with:\npython3 zotero2remarkable_bridge.py\n\n# At first run, it will guide you through creating a working\n# config. It will help you setup authentication with Zotero, WebDAV (optional), and\n# ReMarkable.\n```\n\n### Arguments\n\nThe program accepts the following arguments:\n\n```\n./zotero2remarkable_bridge.py [-m push|pull|both]\n\n-m: Mode\npush: Only push to ReMarkable\n\npull: Only pull from ReMarkable and sync to Zotero\n\nboth: Go both ways, adding new files to ReMarkable and syncing back\n        to ReMarkable.\n        \nDefaults to \"both\".\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopal06%2Fzotero2remarkable_bridge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopal06%2Fzotero2remarkable_bridge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopal06%2Fzotero2remarkable_bridge/lists"}