handling some more block types
This commit is contained in:
parent
cc2accb81c
commit
3711944640
|
@ -5,6 +5,7 @@ import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
import re
|
import re
|
||||||
import stat
|
import stat
|
||||||
|
from urllib.parse import urlparse, parse_qs
|
||||||
|
|
||||||
from notion.client import NotionClient
|
from notion.client import NotionClient
|
||||||
from notion.markdown import notion_to_markdown
|
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)
|
# Set the variables we'll be allowing for (as CL arg or environment variable)
|
||||||
vars = {
|
vars = {
|
||||||
"syllabus_db": "https://www.notion.so/memoryspace/594e40c85f2844b5911f14e7db21850f?v=2a2e8a86e8a74d29844f5eef41d18b3f",
|
"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",
|
"token_v2": "Find the value of 'token_v2' in your browser cookies when logged into Notion",
|
||||||
"hugo_path": "hugo",
|
"hugo_path": "hugo",
|
||||||
"hugo_site_path": "/mnt/d/dev/websites/arche-syllabus-test", # The Hugo site
|
"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)
|
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):
|
def get_record_text(post, level=0):
|
||||||
""" Generates the markdown text of a Notion page
|
""" Generates the markdown text of a Notion page
|
||||||
see: # https://github.com/brentbaum/brentbaum-notion-publishing/blob/master/notion/get_posts.py """
|
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"
|
text += f"![{caption}]({child.display_source})\n"
|
||||||
else:
|
else:
|
||||||
text += f"![{caption}]({child.source})\n"
|
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":
|
elif child.type == "divider":
|
||||||
text += "---"
|
text += "---"
|
||||||
elif child.type == "bulleted_list":
|
elif child.type == "bulleted_list":
|
||||||
|
@ -119,7 +145,7 @@ def get_record_text(post, level=0):
|
||||||
else:
|
else:
|
||||||
prefix = prefixes.get(child.type, "")
|
prefix = prefixes.get(child.type, "")
|
||||||
text += prefix + child.title.encode('utf-8').decode('utf-8') + "\n\n"
|
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)
|
text = re.sub('`(bib|session|topic):([a-zA-Z0-9-]+)`', r'![](\1:\2)', text)
|
||||||
return text
|
return text
|
||||||
|
|
||||||
|
@ -190,7 +216,7 @@ def notion_to_md(id, filepath=None, yaml_func=None):
|
||||||
# print(page_data)
|
# print(page_data)
|
||||||
if filepath:
|
if filepath:
|
||||||
os.umask(0)
|
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)
|
f.write(page_content)
|
||||||
return page_data
|
return page_data
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue