feed: compile regex once

This commit is contained in:
knoflook 2022-02-21 11:19:12 +01:00
parent 41690c0a89
commit b147d46535
Signed by untrusted user: knoflook
GPG Key ID: D6A1D0E8FC4FEF1C
1 changed files with 9 additions and 8 deletions

View File

@ -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