handling some more block types

This commit is contained in:
Sean Dockray 2020-06-08 23:02:09 +10:00
parent cc2accb81c
commit 3711944640
1 changed files with 29 additions and 3 deletions

View File

@ -5,6 +5,7 @@ import shutil
import subprocess
import re
import stat
from urllib.parse import urlparse, parse_qs
from notion.client import NotionClient
from notion.markdown import notion_to_markdown
@ -13,7 +14,7 @@ from notion.markdown import notion_to_markdown
# Set the variables we'll be allowing for (as CL arg or environment variable)
vars = {
"syllabus_db": "https://www.notion.so/memoryspace/594e40c85f2844b5911f14e7db21850f?v=2a2e8a86e8a74d29844f5eef41d18b3f",
"syllabus_title": "Pirate Care",
"syllabus_title": "Machine Listening",
"token_v2": "Find the value of 'token_v2' in your browser cookies when logged into Notion",
"hugo_path": "hugo",
"hugo_site_path": "/mnt/d/dev/websites/arche-syllabus-test", # The Hugo site
@ -94,6 +95,25 @@ def hugo(hugo_site_path, dest, hugo_environment='gitea', base_url=None):
hugo_output = cmd([HUGO_PATH, '-e', hugo_environment, '-d', dest, '--noTimes'], cwd=hugo_site_path, env=env)
def hugo_video_shortcode(url):
""" Returns the Hugo shortcode for a YouTube or Vimeo url """
if "youtube.com" in url:
try:
url_data = urlparse(url)
query = parse_qs(url_data.query)
video = query["v"][0]
return "{{< youtube " + video + " >}}"
except:
pass
elif "vimeo.com" in url:
try:
video = urlparse(url).path.lstrip("/")
return "{{< vimeo " + video + " >}}"
except:
pass
return f"[{url}]({url})"
def get_record_text(post, level=0):
""" Generates the markdown text of a Notion page
see: # https://github.com/brentbaum/brentbaum-notion-publishing/blob/master/notion/get_posts.py """
@ -109,6 +129,12 @@ def get_record_text(post, level=0):
text += f"![{caption}]({child.display_source})\n"
else:
text += f"![{caption}]({child.source})\n"
elif child.type == "video":
caption = f"\n_{child.caption}_" if child.caption else ""
text += f"{hugo_video_shortcode(child.source)}{caption}\n\n"
elif child.type == "bookmark":
caption = f"\n_{child.caption}_" if child.caption else ""
text += f"[{child.title}]({child.link}){caption}\n\n"
elif child.type == "divider":
text += "---"
elif child.type == "bulleted_list":
@ -119,7 +145,7 @@ def get_record_text(post, level=0):
else:
prefix = prefixes.get(child.type, "")
text += prefix + child.title.encode('utf-8').decode('utf-8') + "\n\n"
print(text)
text = re.sub('`(bib|session|topic):([a-zA-Z0-9-]+)`', r'![](\1:\2)', text)
return text
@ -190,7 +216,7 @@ def notion_to_md(id, filepath=None, yaml_func=None):
# print(page_data)
if filepath:
os.umask(0)
with open(os.open(filepath, os.O_CREAT | os.O_WRONLY, 0o777), 'w', encoding="utf-8") as f:
with open(os.open(filepath, os.O_CREAT | os.O_WRONLY, 0o777), 'w') as f:
f.write(page_content)
return page_data