-
-
Save jasondavis/0d7fd971f08c4582110ba8c64aee558c to your computer and use it in GitHub Desktop.
Raindrop / Obsidian Integration
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // PUT YOUR TEST TOKEN IN QUOTES BELOW | |
| // You can get one here by creating an app and copying the test token: | |
| // https://app.raindrop.io/settings/integrations | |
| // THIS GIVES YOU ACCESS TO YOUR ACCOUNT AND SHOULD NEVER BE SHARED | |
| // WITH OTHERS | |
| let authToken = ""; | |
| class raindrop { | |
| static header = { | |
| 'Authorization': 'Bearer ' + authToken | |
| }; | |
| static async collections() { | |
| let url = "https://api.raindrop.io/rest/v1/collections"; | |
| const options = { | |
| url: url, | |
| headers: this.header | |
| }; | |
| return request(options) | |
| .then(result => { | |
| let items = JSON.parse(result).items; | |
| // Unsorted is a special non-collection that | |
| // isn't returned, so add it. | |
| items.push({ | |
| "_id": -1, | |
| "title": "Unsorted" | |
| }) | |
| return items; | |
| }); | |
| } | |
| static async raindrops(collectionId) { | |
| // TODO: Not bothering with pagination at the moment | |
| let url = "https://api.raindrop.io/rest/v1/raindrops/" + collectionId; | |
| const options = { | |
| url: url, | |
| headers: this.header | |
| }; | |
| return request(options) | |
| .then(result => JSON.parse(result).items); | |
| } | |
| static async raindrop(id) { | |
| let url = "https://api.raindrop.io/rest/v1/raindrop/" + id | |
| console.log(url); | |
| const options = { | |
| url: url, | |
| headers: this.header | |
| }; | |
| return request(options).then(result => JSON.parse(result).item); | |
| } | |
| static async updateRaindrop(raindrop) { | |
| let url = "https://api.raindrop.io/rest/v1/raindrop/" + raindrop._id | |
| const options = { | |
| url: url, | |
| headers: { | |
| 'Authorization': 'Bearer ' + authToken, | |
| "Content-Type": "application/json" | |
| }, | |
| method: "PUT", | |
| body: JSON.stringify(raindrop), | |
| json: true | |
| }; | |
| return request(options); | |
| } | |
| static splitText(text) { | |
| return text.split(/\r?\n/); | |
| } | |
| }; | |
| module.exports = raindrop; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <%* | |
| let raindrop = tp.user.raindrop; | |
| let collections = await raindrop.collections(); | |
| let collection = await tp.system.suggester((item) => item.title, collections); | |
| let raindrops = await raindrop.raindrops(collection._id); | |
| let drop = await tp.system.suggester((item) => item.title, raindrops); | |
| drop = await raindrop.raindrop(drop._id); | |
| let title = drop.title | |
| let url = drop.link | |
| let raindropUrl = "https://app.raindrop.io/my/0/item/" + drop._id | |
| tR += "---" | |
| %> | |
| tags: [document,raindrop,<% drop.tags.join(",") %>] | |
| url: "<% url %>" | |
| title: "<% title %>" | |
| raindropUrl: "<% raindropUrl %>" | |
| created: <% drop.created %> | |
| --- | |
| # [<% title %>](<% url %>) | |
| <%* | |
| for (let i = 0; i < drop.highlights.length; i++) { | |
| let highlight = drop.highlights[i]; | |
| let callout = "quote"; | |
| switch(highlight.color) { | |
| case "red": | |
| callout = "person" | |
| break; | |
| case "green": | |
| callout = "reference" | |
| break; | |
| case "blue": | |
| callout = "info" | |
| break; | |
| } | |
| tR += "\n>[!" + callout + "]+"; | |
| let text = raindrop.splitText(highlight.text); | |
| for (let i = 0; i < text.length; i++) { | |
| tR += "\n>" + text[i]; | |
| } | |
| tR += "\n ^" + i + "\n"; | |
| if (highlight.note == "") { | |
| continue; | |
| } | |
| tR += "\n>[!note]+" | |
| let note = raindrop.splitText(highlight.note); | |
| for (let i = 0; i < note.length; i++) { | |
| tR += "\n>" + note[i]; | |
| } | |
| tR += "\n ^note"+1 + "\n"; | |
| } | |
| %> | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment