From c208e3375267b6cdc8a8133c463171d618ac7a5d Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 8 Sep 2020 23:04:47 -0500 Subject: [PATCH] Arbitrary: strip all namespaced elements This is `fb:like` and similar, which break some epub readers. Refs: #41, #43 --- sites/arbitrary.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sites/arbitrary.py b/sites/arbitrary.py index 228d856..caebf57 100644 --- a/sites/arbitrary.py +++ b/sites/arbitrary.py @@ -4,6 +4,7 @@ import logging import attr import datetime import json +import re import os.path from . import register, Site, Section, Chapter @@ -103,6 +104,12 @@ class Arbitrary(Site): if not soup.select(definition.content_selector): return chapters + # clean up a few things which will definitely break epubs: + # TODO: expand this greatly, or make it configurable + for namespaced in soup.find_all(re.compile(r'[a-z]+:[a-z]+')): + # Namespaced elements are going to cause validation errors + namespaced.decompose() + for content in soup.select(definition.content_selector): if definition.filter_selector: for filtered in content.select(definition.filter_selector):