add rudimentary support for enclosures & featured images
This commit is contained in:
parent
6e64d64772
commit
fecf5cd64e
@ -85,6 +85,11 @@ def create_frontmatter(entry):
|
|||||||
for t in entry.tags:
|
for t in entry.tags:
|
||||||
tags.append(t['term'])
|
tags.append(t['term'])
|
||||||
|
|
||||||
|
if "featured_image" in entry:
|
||||||
|
featured_image = entry.featured_image
|
||||||
|
else:
|
||||||
|
featured_image = ''
|
||||||
|
|
||||||
card_type = "network"
|
card_type = "network"
|
||||||
if entry.feed_name == "pen.lumbung.space":
|
if entry.feed_name == "pen.lumbung.space":
|
||||||
card_type = "pen"
|
card_type = "pen"
|
||||||
@ -110,7 +115,8 @@ def create_frontmatter(entry):
|
|||||||
'original_link': entry.link,
|
'original_link': entry.link,
|
||||||
'feed_name': entry['feed_name'],
|
'feed_name': entry['feed_name'],
|
||||||
'tags': str(tags),
|
'tags': str(tags),
|
||||||
'card_type': card_type
|
'card_type': card_type,
|
||||||
|
'featured_image': featured_image
|
||||||
}
|
}
|
||||||
|
|
||||||
return frontmatter
|
return frontmatter
|
||||||
@ -136,11 +142,30 @@ def sanitize_yaml (frontmatter):
|
|||||||
|
|
||||||
return frontmatter
|
return frontmatter
|
||||||
|
|
||||||
|
def parse_enclosures(post_dir, entry):
|
||||||
|
"""
|
||||||
|
Parses feed enclosures which are featured media
|
||||||
|
Can be featured image but also podcast entries
|
||||||
|
https://pythonhosted.org/feedparser/reference-entry-enclosures.html
|
||||||
|
"""
|
||||||
|
#TODO parse more than images
|
||||||
|
#TODO handle the fact it could be multiple items
|
||||||
|
|
||||||
|
for e in entry.enclosures:
|
||||||
|
print("found enclosed media", e.type)
|
||||||
|
if "image/" in e.type:
|
||||||
|
featured_image = grab_media(post_dir, e.href)
|
||||||
|
entry["featured_image"] = featured_image
|
||||||
|
return entry
|
||||||
|
|
||||||
|
|
||||||
def create_post(post_dir, entry):
|
def create_post(post_dir, entry):
|
||||||
"""
|
"""
|
||||||
write hugo post based on RSS entry
|
write hugo post based on RSS entry
|
||||||
"""
|
"""
|
||||||
|
if "enclosures" in entry:
|
||||||
|
entry = parse_enclosures(post_dir, entry)
|
||||||
|
|
||||||
frontmatter = create_frontmatter(entry)
|
frontmatter = create_frontmatter(entry)
|
||||||
|
|
||||||
if not os.path.exists(post_dir):
|
if not os.path.exists(post_dir):
|
||||||
@ -202,6 +227,7 @@ def parse_posts(post_dir, post_content):
|
|||||||
|
|
||||||
for img in soup(["img", "object"]):
|
for img in soup(["img", "object"]):
|
||||||
if img.get("src") != None:
|
if img.get("src") != None:
|
||||||
|
|
||||||
local_image = grab_media(post_dir, img["src"])
|
local_image = grab_media(post_dir, img["src"])
|
||||||
if img["src"] != local_image:
|
if img["src"] != local_image:
|
||||||
img["src"] = local_image
|
img["src"] = local_image
|
||||||
|
@ -8,6 +8,7 @@ original_link: "{{ frontmatter.original_link }}"
|
|||||||
feed_name: "{{ frontmatter.feed_name}}"
|
feed_name: "{{ frontmatter.feed_name}}"
|
||||||
categories: ["{{ frontmatter.card_type }}", "{{ frontmatter.feed_name}}"]
|
categories: ["{{ frontmatter.card_type }}", "{{ frontmatter.feed_name}}"]
|
||||||
tags: {{ frontmatter.tags }}
|
tags: {{ frontmatter.tags }}
|
||||||
|
{% if frontmatter.featured_image %}featured_image: "{{frontmatter.featured_image}}"{% endif %}
|
||||||
---
|
---
|
||||||
|
|
||||||
{{ content }}
|
{{ content }}
|
||||||
|
Loading…
Reference in New Issue
Block a user