forked from ruangrupa/konfluks
feed: compile regex once #1
@ -12,7 +12,8 @@ import jinja2
|
||||
import requests
|
||||
from bs4 import BeautifulSoup
|
||||
from slugify import slugify
|
||||
from re import sub
|
||||
from re import compile as re_compile
|
||||
yamlre = re_compile('"')
|
||||
|
||||
|
||||
def write_etag(feed_name, feed_data):
|
||||
@ -48,7 +49,7 @@ def get_etag(feed_name):
|
||||
|
||||
def create_frontmatter(entry):
|
||||
"""
|
||||
parse RSS metadata and return as frontmatter
|
||||
parse RSS metadata and return as frontmatter
|
||||
"""
|
||||
if 'published' in entry:
|
||||
published = entry.published_parsed
|
||||
@ -61,7 +62,7 @@ def create_frontmatter(entry):
|
||||
author = entry.author
|
||||
else:
|
||||
author = ''
|
||||
|
||||
|
||||
if 'authors' in entry:
|
||||
authors = []
|
||||
for a in entry.authors:
|
||||
@ -119,12 +120,12 @@ def sanitize_yaml (frontmatter):
|
||||
#some fields are lists
|
||||
l = []
|
||||
for i in v:
|
||||
i = sub('"', '\\"', i)
|
||||
i = yamlre.sub('\\"', i)
|
||||
l.append(i)
|
||||
frontmatter[k] = l
|
||||
|
||||
else:
|
||||
v = sub('"', '\\"', v)
|
||||
v = yamlre.sub('\\"', v)
|
||||
frontmatter[k] = v
|
||||
|
||||
return frontmatter
|
||||
@ -348,7 +349,7 @@ def main():
|
||||
entry["feed_name"] = feed_name
|
||||
|
||||
post_name = slugify(entry.title)
|
||||
|
||||
|
||||
# pixelfed returns the whole post text as the post name. max
|
||||
# filename length is 255 on many systems. here we're shortening
|
||||
# the name and adding a hash to it to avoid a conflict in a
|
||||
@ -356,7 +357,7 @@ def main():
|
||||
if len(post_name) > 150:
|
||||
post_hash = md5(bytes(post_name, "utf-8"))
|
||||
post_name = post_name[:150] + "-" + post_hash.hexdigest()
|
||||
|
||||
|
||||
if opds_feed:
|
||||
entry['opds'] = True
|
||||
#format: Beyond-Debiasing-Report_Online-75535a4886e3
|
||||
@ -376,7 +377,7 @@ def main():
|
||||
if opds_feed:
|
||||
create_opds_post(post_dir, entry)
|
||||
else:
|
||||
create_post(post_dir, entry)
|
||||
create_post(post_dir, entry)
|
||||
existing_posts.remove(
|
||||
post_name
|
||||
) # create list of posts which have not been returned by the feed
|
||||
|
Loading…
Reference in New Issue
Block a user