Last active
February 6, 2022 14:07
-
-
Save asifr/978e5ed70bd68fda85af3fc5b90bf1a3 to your computer and use it in GitHub Desktop.
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
| javascript: Promise.all([import('https://unpkg.com/turndown@6.0.0?module'), import('https://unpkg.com/@tehshrike/readability@0.2.0'),]).then(async ([{ | |
| default: Turndown | |
| }, { | |
| default: Readability | |
| }]) => { | |
| /* Optional vault name */ | |
| const vault = ""; | |
| /* Optional folder name such as "Clippings/" */ | |
| const folder = "Bookmarks/"; | |
| /* Optional tags */ | |
| const tags = "#bookmark"; | |
| function getSelectionHtml() { | |
| var html = ""; | |
| if (typeof window.getSelection != "undefined") { | |
| var sel = window.getSelection(); | |
| if (sel.rangeCount) { | |
| var container = document.createElement("div"); | |
| for (var i = 0, len = sel.rangeCount; i < len; ++i) { | |
| container.appendChild(sel.getRangeAt(i).cloneContents()); | |
| } | |
| html = container.innerHTML; | |
| } | |
| } else if (typeof document.selection != "undefined") { | |
| if (document.selection.type == "Text") { | |
| html = document.selection.createRange().htmlText; | |
| } | |
| } | |
| return html; | |
| } | |
| const selection = getSelectionHtml(); | |
| const { | |
| title, | |
| byline, | |
| content | |
| } = new Readability(document.cloneNode(true)).parse(); | |
| function slugify(text) { | |
| return text.toString().toLowerCase() | |
| .replace(/\s+/g, '-') | |
| .replace(/[^\w\-]+/g, '') | |
| .replace(/\-\-+/g, '-') | |
| .replace(/^-+/, '') | |
| .replace(/-+$/, ''); | |
| } | |
| function getFileName(fileName) { | |
| var userAgent = window.navigator.userAgent, | |
| platform = window.navigator.platform, | |
| windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE']; | |
| fileName = slugify(fileName); | |
| if (windowsPlatforms.indexOf(platform) !== -1) { | |
| fileName = fileName.replace(':', '').replace(/[/\\?%*|"<>]/g, '-'); | |
| } else { | |
| fileName = fileName.replace(':', '').replace(/\//g, '-').replace(/\\/g, '-'); | |
| } | |
| return fileName; | |
| } | |
| const fileName = getFileName(title); | |
| if (selection) { | |
| var markdownify = selection; | |
| } else { | |
| var markdownify = content; | |
| } | |
| if (vault) { | |
| var vaultName = '&vault=' + encodeURIComponent(`${vault}`); | |
| } else { | |
| var vaultName = ''; | |
| } | |
| const markdownBody = new Turndown({ | |
| headingStyle: 'atx', | |
| hr: '---', | |
| bulletListMarker: '-', | |
| codeBlockStyle: 'fenced', | |
| emDelimiter: '*', | |
| }).turndown(markdownify); | |
| var date = new Date(); | |
| function convertDate(date) { | |
| var yyyy = date.getFullYear().toString(); | |
| var mm = (date.getMonth() + 1).toString(); | |
| var dd = date.getDate().toString(); | |
| var mmChars = mm.split(''); | |
| var ddChars = dd.split(''); | |
| return yyyy + '-' + (mmChars[1] ? mm : "0" + mmChars[0]) + '-' + (ddChars[1] ? dd : "0" + ddChars[0]); | |
| } | |
| const today = convertDate(date); | |
| const fileContent = "---\n" | |
| + "date: " + today + "\n" | |
| + "tags: [" + tags + "]\n" | |
| + "source: " + document.URL + "\n" | |
| + "author: " + byline + "\n" | |
| + "---\n\n" | |
| + markdownBody; | |
| fileName = today + '-' + fileName; | |
| document.location.href = "obsidian://new?" | |
| + "file=" + encodeURIComponent(folder + fileName) | |
| + "&content=" + encodeURIComponent(fileContent) | |
| + vaultName; | |
| }) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment