manifest plugin
render function
None
render source
def render(markata: "MarkataIcons") -> None:
if "icons" in markata.__dict__.keys():
icons = markata.icons
else:
icons = []
manifest = {
"name": markata.get_config("site_name") or "",
"short_name": markata.get_config("short_name") or "",
"start_url": markata.get_config("start_url") or "",
"display": markata.get_config("display") or "",
"background_color": markata.get_config("background_color") or "",
"theme_color": markata.get_config("theme_color") or "",
"description": markata.get_config("description") or "",
"icons": icons,
}
filepath = Path(markata.config["output_dir"]) / "manifest.json"
filepath.parent.mkdir(parents=True, exist_ok=True)
filepath.touch(exist_ok=True)
with open(filepath, "w+") as f:
json.dump(manifest, f, ensure_ascii=True, indent=4)
config = markata.get_plugin_config(__file__)
should_prettify = markata.config.get("prettify_html", False)
with markata.cache as cache:
for article in markata.iter_articles("add manifest link"):
key = markata.make_hash(
"seo",
"manifest",
article.content,
article.html,
)
html_from_cache = cache.get(key)
if html_from_cache is None:
soup = BeautifulSoup(article.html, features="lxml")
link = soup.new_tag("link")
link.attrs["rel"] = "manifest"
link.attrs["href"] = "/manifest.json"
soup.head.append(link)
if should_prettify:
html = soup.prettify()
else:
html = str(soup)
cache.add(key, html, expire=config["cache_expire"])
else:
html = html_from_cache
article.html = html