By @kepano
Combiantion of original and a revision by halostatue with compliance of my folder and file naming structure.
By @kepano
Combiantion of original and a revision by halostatue with compliance of my folder and file naming structure.
| javascript: Promise.all([ | |
| import("https://unpkg.com/[email protected]?module"), | |
| import("https://unpkg.com/@tehshrike/[email protected]"), | |
| ]).then(([{ default: Turndown }, { default: Readability }]) => { | |
| const vault = ""; | |
| const folder = "quick"; | |
| const tags = "#clippings"; | |
| 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 getFileName(fileName) { | |
| var userAgent = window.navigator.userAgent, | |
| platform = window.navigator.platform, | |
| windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE']; | |
| 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 dateFileName = new Date().toISOString().replace(/:/g, '-').replace(/-\d\d\..+/, '').replace(/T/, '-'); | |
| const fileContent = | |
| "author:: " + byline + "\n" | |
| + "source:: [" + title + "](" + document.URL + ")\n" | |
| + "clipped:: [[" + today + "]]\n" | |
| + "published:: \n\n" | |
| + tags + "\n\n" | |
| + markdownBody; | |
| document.location.href = "obsidian://new?" | |
| + "file=" + encodeURIComponent(folder + dateFileName + "-" + fileName) | |
| + "&content=" + encodeURIComponent(fileContent) | |
| + vaultName; | |
| }) | |
| javascript: Promise.all([ | |
| import("https://unpkg.com/[email protected]?module"), | |
| import("https://unpkg.com/@tehshrike/[email protected]"), | |
| ]).then(([{ default: Turndown }, { default: Readability }]) => { | |
| const vault = ""; | |
| const folder = "quick/"; | |
| const tags = "clippings"; | |
| const getSelectionHtml = () => { | |
| let html = ""; | |
| if (typeof window.getSelection != "undefined") { | |
| const sel = window.getSelection(); | |
| if (sel.rangeCount) { | |
| const container = document.createElement("div"); | |
| for (let 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 getFileName = (fileName) => { | |
| const platform = window.navigator.platform; | |
| const windowsPlatforms = ["Win32", "Win64", "Windows", "WinCE"]; | |
| if (windowsPlatforms.indexOf(platform) !== -1) { | |
| fileName = fileName.replace(":", "").replace(/[/\\?%*|"<>]/g, "-"); | |
| } else { | |
| fileName = fileName.replace(":", "").replace(/\//g, "-").replace( | |
| /\\/g, | |
| "-", | |
| ); | |
| } | |
| return fileName; | |
| }; | |
| const selection = getSelectionHtml(); | |
| const { | |
| title, | |
| byline, | |
| content, | |
| } = new Readability(document.cloneNode(true)).parse(); | |
| const fileName = getFileName(title); | |
| const markdownify = selection ?? content; | |
| const vaultName = vault ? `&vault=${encodeURIComponent(`${vault}`)}` : ""; | |
| const markdownBody = new Turndown({ | |
| headingStyle: "atx", | |
| hr: "---", | |
| bulletListMarker: "-", | |
| codeBlockStyle: "fenced", | |
| emDelimiter: "*", | |
| }).turndown(markdownify); | |
| const today = new Date().toISOString().split("T")[0]; | |
| const dateFileName = new Date().toISOString().replace(/:/g, '-').replace(/-\d\d\..+/, '').replace(/T/, '-'); | |
| const fileContent = | |
| "---\n" | |
| + "author: " + byline + "\n" | |
| + "title: " + title + "\n" | |
| + "source: " + document.URL + "\n" | |
| + "clipped: " + today + "\n" | |
| + "tags: " + tags + "\n" | |
| + "---\n\n" | |
| + markdownBody; | |
| document.location.href = [ | |
| "obsidian://new?", | |
| `file=${encodeURIComponent(folder + dateFileName + " " + fileName)}`, | |
| `&content=${encodeURIComponent(fileContent)}`, | |
| vaultName, | |
| ].join(""); | |
| }); |