Skip to content

Instantly share code, notes, and snippets.

@nfd9001
Created October 17, 2021 08:19
Show Gist options
  • Save nfd9001/678ca92ea99b9acbd9a39d3a4c7124e4 to your computer and use it in GitHub Desktop.
Save nfd9001/678ca92ea99b9acbd9a39d3a4c7124e4 to your computer and use it in GitHub Desktop.
Use sabidib/remarking to put your Remarkable highlights in Markdown, ready for use in Obsidian
#! /bin/python3
import json
from datetime import datetime
import sys
import subprocess
import os
def readJson(s):
j = json.loads(s)
return (j["documents"], j["highlights"])
def getHighlightDictsForDoc(docdict, highlightdictlist):
return [i for i in highlightdictlist if i["document_id"] == docdict["id"]]
def highlightsForDoc(docdict, highlightdictlist):
l = ["# Highlights for " + docdict["name"]]
hls = getHighlightDictsForDoc(docdict, highlightdictlist)
for hl in hls:
l.append("- On page " + str(hl["page_number"]))
l.append(" - " + hl["text"])
l.append("")
return l
def generateOneMegalist(docs, highlights, rmtag):
l = ["---", "generated: " + str(datetime.now()), "rmtag: " + rmtag,
"---", "", "Linkback to [[highlight hub]]"]
for doc in docs:
l = l + (highlightsForDoc(doc, highlights))
return (rmtag + "-highlights-megalist.md", "\n".join(l))
def generateSeveralLists(docs, highlights, rmtag):
ls = []
frontmatter = ["---", "generated: " + str(datetime.now()), "rmtag: " + rmtag,
"---", "", "Linkback to [[highlight hub]]"]
for doc in docs:
l = []
l = l + frontmatter
l = l + (highlightsForDoc(doc, highlights))
ls.append(("highlights-" + doc["name"] + ".md", "\n".join(l)))
return ls
def main():
if len(sys.argv) != 3:
print("Usage: gen-md-remarkable-highlights.py (search tag) (save dir)")
rmtag = sys.argv[1]
savedir = sys.argv[2]
print(rmtag)
print(savedir)
print("Getting results from remarking... (this may take a bit)")
result = subprocess.run(
['remarking', 'run', 'json', rmtag],
stdout=subprocess.PIPE)
outputrawjson = result.stdout.decode('utf-8')
o = readJson(outputrawjson)
documents = o[0]
highlights = o[1]
lists = generateSeveralLists(documents, highlights, rmtag)
lists.append(generateOneMegalist(documents,highlights,rmtag))
try:
os.makedirs(savedir)
except FileExistsError:
pass
print("Writing files...")
for item in lists:
filename = item[0]
data = item[1]
print(" - Writing to " + savedir + "/" + filename)
f = open(savedir + "/" + filename, "w")
f.write(data)
f.close()
print("Done.")
if __name__ == '__main__':
sys.exit(main())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment